Nav Bar do usuário deslogado.

Organização

UNIDADE EMBRAPII FMRP-USP

UNIDADE EMBRAPII FMRP-USP
Grupo de Pesquisa/Universidade
FACULDADE DE MEDICINA DE RIBEIRÃO PRETO - USP
RIBEIRÃO PRETO
SP
BRASIL
  • Sobre
  • Infraestruturas
  • Demandas
  • Ofertas
  • Publicações
Sobre drop zone
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> organization.getExpandoBridge().getAttribute("journal-article")  [in template "34764#34807#null" at line 23, column 21]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: articleId = organization.getExpandoBr...  [in template "34764#34807#null" at line 23, column 9]
----
1<#assign  
2	OrganizationLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.OrganizationLocalService")  
3	JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
4/> 
5 
6<#assign  
7	viewerHasPrivileges = false 
8	userId = themeDisplay.getUserId() 
9/> 
10 
11<#if userId?? > 
12	<#assign  
13		orgId = _CUSTOM_FIELD_organization.getData()?number 
14		viewerHasPrivileges = OrganizationLocalService.hasUserOrganization(userId, orgId) 
15		organization = OrganizationLocalService.getOrganization(orgId) 
16	/> 
17</#if> 
18 
19 
20<#if viewerHasPrivileges || DDMStructure_Field04200031.getData() != "0"> 
21<#assign  
22	organization = OrganizationLocalService.getOrganization(_CUSTOM_FIELD_organization.getData()?number) 
23	articleId = organization.getExpandoBridge().getAttribute("journal-article") 
24	journalArticle = JournalArticleLocalService.getArticle(themeDisplay.getLayout().getGroupId(),articleId?c)  
25	articleXml = journalArticle.getDocument().getRootElement() 
26	 
27	setores = articleXml.selectNodes("dynamic-element[@name='Text67772680']") 
28/> 
29<#else> 
30<#assign setores = ["privado"] /> 
31</#if> 
32 
33<#assign  
34 
35	sobre = (viewerHasPrivileges || DDMStructure_Field80037203.getData()!="0")?string(DDMStructure_Text54730891.getData()!"","") 
36	competencias = (viewerHasPrivileges || DDMStructure_Field75645729.getData()!="0")?string(DDMStructure_Text51537691.getData()!"","") 
37	 
38
39 
40<div> 
41 
42				<#if viewerHasPrivileges || DDMStructure_Field80037203.getData()!="0" > 
43					<div class="bioec_org_sobre"> 
44							<label>Sobre a organização</label> 
45							<div class="bioec_org_sobre_container"> 
46								<#if sobre != ""> 
47									${sobre} 
48								<#else> 
49									<div class="bioec_org_sobre_vazio"> 
50											Nenhuma descrição foi adicionada neste perfil ainda 
51									</div> 
52								</#if> 
53							</div> 
54					</div> 
55				</#if> 
56				 
57				<#if viewerHasPrivileges || DDMStructure_Field75645729.getData()!="0" > 
58					<div class="bioec_org_sobre"> 
59							<label>Competências tecnológicas</label> 
60							<div class="bioec_org_sobre_container"> 
61									<#if competencias != ""> 
62										${competencias} 
63									<#else> 
64										<div class="bioec_org_sobre_vazio"> 
65												Nenhuma descrição foi adicionada neste perfil ainda 
66										</div> 
67									</#if> 
68							</div> 
69					</div> 
70				</#if> 
71					 
72				<#if viewerHasPrivileges || DDMStructure_Field04200031.getData()!="0" > 
73					<div class="bioec_org_sobre"> 
74							<label>Setor(es) de atuação</label> 
75							<div class="bioec_org_sobre_container"> 
76							<#if setores[0]!="privado"> 
77									<#if setores?size == 1 && setores[0].getStringValue()?trim == "" > 
78										<div class="bioec_org_sobre_vazio"> 
79												Nenhum setor foi adicionado neste perfil ainda 
80										</div> 
81									<#else> 
82										<#if setores?size != 0 > 
83											<ul> 
84												<#list setores as setor> 
85													<li>${setor.getStringValue()}</li> 
86												</#list> 
87											</ul> 
88										<#else> 
89											<div class="bioec_org_sobre_vazio"> 
90													Nenhum setor foi adicionado neste perfil ainda 
91											</div> 
92										</#if> 
93									</#if> 
94								<#else> 
95								<div class="bioec_org_sobre_vazio"> 
96									Nenhum setor foi adicionado neste perfil ainda 
97								</div> 
98								</#if> 
99							</div> 
100					</div> 
101				</#if> 
102				 
103</div> 
104 
105<style> 
106.bioec_org_sobre label { 
107	color: #5B5C61; 
108	font-weight: 700; 
109	margin-bottom: 10px; 
110	font-size: 20px; 
111	line-height: 30px; 
112
113 
114.bioec_org_sobre_container { 
115	font-size: 16px; 
116	border: 1px solid #BEBEBE; 
117	padding: 24px; 
118	color: #5B5C61; 
119	margin-bottom: 40px; 
120
121 
122.bioec_org_sobre_vazio { 
123	color: #5B5C61; 
124	font-size: 16px; 
125	text-align: center; 
126	font-weight: 700; 
127
128 
129.bioec_org_sobre_container ul { 
130	color: #5B5C61; 
131	margin: 0; 
132
133</style> 
Infraestruturas drop zone
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> autorId  [in template "34764#34807#41130" at line 84, column 46]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if autorId != "" && autorId??  [in template "34764#34807#41130" at line 84, column 41]
----
1<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
2<#assign UserLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")> 
3<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
4<#assign OrganizationLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.OrganizationLocalService") > 
5<#assign AssetTagLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService")> 
6<#-- <#assign  
7journalArticle = JournalArticleLocalService.getArticle(themeDisplay.getSiteGroupId(),.data_model["reserved-article-id"].data) 
8AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") 
9assetEntry = AssetEntryLocalService.getEntry(journalArticle.getModelClassName(), journalArticle.getResourcePrimKey()) 
10--> 
11<#assign  
12mbMessageLocalService = serviceLocator.findService("com.liferay.message.boards.service.MBMessageLocalService") 
13
14 
15<div id="upload-notice-container" style="display: none;"> 
16						<span id="close-btn-upload-container"> <i class="fa fa-xmark"></i> </span> 
17						<h5 class="upload-notice-title"> 
18							<i class="fa-sharp fa-solid fa-circle-exclamation"></i> 
19							Upload de infraestrutura em andamento 
20						</h5> 
21						<p> 
22							Caso os itens adicionados não estejam visíveis na página, aguarde um instante e <span>atualize a página</span> para visualizá-los. 
23						</p> 
24					</div> 
25				 
26<div class="bioec-profile-estrutura-main"> 
27		 
28    <div id="estruturas-lista" class="d-flex flex-column"> 
29				 
30				<#if entries?has_content> 
31					<#list entries as entry> 
32					 
33					<#assign journalArticle = JournalArticleLocalService.getLatestArticle(entry.getClassPK()) > 
34					<#assign articleXml = journalArticle.getDocument().getRootElement() > 
35					<#assign JournalArticleID = journalArticle.getId()> 
36					<#assign JournalArticleFrontId = journalArticle.getArticleId()> 
37					<#assign  
38						userIsAdmin = false 
39						orgId = "" 
40
41						<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text57816561']")??> 
42								<#assign  
43						modelo = articleXml.selectSingleNode("dynamic-element[@field-reference='Text57816561']").getStringValue()!"" 
44						modelo = modelo?replace("\n\t\t", "") 
45						modelo = modelo?replace("\n\t", "")		 
46
47						</#if> 
48							 
49						<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text23707291']")??> 
50							<#assign  
51						marca = articleXml.selectSingleNode("dynamic-element[@field-reference='Text23707291']").getStringValue()!"" 
52						marca = marca?replace("\n\t\t", "") 
53						marca = marca?replace("\n\t", "")		 
54
55						</#if> 
56							 
57						<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text74754192']")??> 
58						    <#assign  
59						funcao = articleXml.selectSingleNode("dynamic-element[@field-reference='Text74754192']").getStringValue()!"" 
60						funcao = funcao?replace("\n\t\t", "") 
61						funcao = funcao?replace("\n\t", "")		 
62
63						</#if> 
64							 
65							<#if articleXml.selectSingleNode("dynamic-element[@field-reference='CampoDeTexto02890219']")??> 
66								<#assign  
67						imageSrc = articleXml.selectSingleNode("dynamic-element[@field-reference='CampoDeTexto02890219']").getStringValue()!"" 
68												  
69
70						</#if> 
71							 
72							<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text93109394']")??> 
73								<#assign  
74						autorId = articleXml.selectSingleNode("dynamic-element[@field-reference='Text93109394']").getStringValue()!"" 
75						autorId = autorId?replace("\n\t\t", "") 
76						autorId = autorId?replace("\n\t", "")		 
77						autorArticleId = "" 
78
79						</#if> 
80								<#assign  
81						commentsCount = mbMessageLocalService.getDiscussionMessagesCount(entry.getClassName(), entry.getClassPK(), 0)!"0" 
82					/> 
83					 
84					<#if autorId != "" && autorId??> 
85						<#assign 
86							autor = UserLocalService.fetchUser(autorId?number)!"" 
87							autorArticleId = autor.getExpandoBridge().getAttribute("journal-article")!"0" 
88						/> 
89						<#if autor != ""> 
90							<#assign autor = autor.getFullName()!""> 
91						<#else> 
92							<#assign autor = "Anônimo" > 
93						</#if> 
94					<#else>  
95						<#assign autor = "Anônimo" > 
96					</#if> 
97					 
98					<#assign categorias = AssetCategoryLocalService.getCategoryNames(entry.getClassName(), entry.getClassPK())!"" > 
99					 
100					<#assign 	categorias = AssetCategoryLocalService.getCategoryNames(entry.getClassName(), entry.getClassPK())!"" > 
101 
102					<#assign urlWC = ""> 
103					<#if autorArticleId != "0" && autorArticleId != "" && autor != "Anônimo"> 
104					<#assign autorArticle = JournalArticleLocalService.getLatestArticle(themeDisplay.getLayout().getGroupId(), autorArticleId?string) > 
105					<#assign urlWC = autorArticle.getUrlTitle()!""> 
106					</#if> 
107					 
108									 
109					<#assign tags = AssetTagLocalService.getTagNames("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey()?number )  
110				 tagName = tags[0]!"" 
111				  
112
113				<#if tagName?contains("organization") && tagName != "" > 
114 
115					<#assign 
116					orgId = tagName?keep_after("organization-")				 
117					organization =  OrganizationLocalService.fetchOrganization(orgId?number)!"" 
118
119			 
120					 
121					<#if organization != "" && autor != "Anônimo" && autorArticleId != ""> 
122						<#assign	orgArticleId = organization.getExpandoBridge().getAttribute("journal-article") 
123							orgJournalArticle = JournalArticleLocalService.getArticle(themeDisplay.getLayout().getGroupId(),orgArticleId?c)  
124							urlWC = orgJournalArticle.getUrlTitle()!"" 
125							autor = organization.getName()!"" 
126
127					</#if> 
128				</#if> 
129					 
130					<#if themeDisplay.isSignedIn() > 
131						<#assign tags = AssetTagLocalService.getTagNames(entry.getClassName(), entry.getClassPK()) > 
132						<#assign orgId = (tags[0]!"")?remove_beginning("organization-") > 
133						<#assign userIsAdmin = OrganizationLocalService.hasUserOrganization(themeDisplay.getUserId(), orgId?number)> 
134					</#if> 
135					 
136					<div class="estruturas-lista-item" id="InfraItem${JournalArticleID}"> 
137							<div class="lista-checkmark"> 
138								<#if categorias?seq_contains("aprovado") > <i title="Aprovado" style="color: #4ECD66" class="fa-solid fa-circle-check"></i> </#if> 
139								<#if categorias?seq_contains("pendente") >	<i title="Em análise" style="color: #D90000"class="fa-solid fa-spinner"></i> </#if> 
140								<#if categorias?seq_contains("recusado") >	<i title="Recusado" style="color: #D90000"class="fa-solid fa-exclamation-circle"></i> </#if> 
141							</div> 
142 
143							<div class="lista-pic"> 
144									<#if imageSrc?trim !="" > 
145										<div class="bioec_infra_img" style="background-image: url(${imageSrc})"> 
146										</div> 
147									<#else> 
148										<div class="bioec_infra_img_placeholder"> 
149											<i class="fa-solid fa-image"></i> 
150											sem imagem 
151										</div> 
152									</#if> 
153							</div> 
154 
155							<div class="lista-desc"> 
156									<h5>${entry.getHighlightedTitle()}</h5> 
157									<p>Modelo: ${modelo}</p> 
158									<p>Marca: ${marca}</p> 
159							</div> 
160 
161							<div class="lista-arrow"> 
162									<button class="btn" type="button" data-toggle="collapse" data-target="#collapse-${entry.getClassPK()}" aria-expanded="false" aria-controls="collapse-${entry.getClassPK()}"> 
163											<i class="fa-solid fa-chevron-down"></i> 
164									</button> 
165							</div> 
166 
167							<span id="collapse-${entry.getClassPK()}" class="collapse lista-collapse"> 
168									<div class="lista-func"> 
169											<h5>Função </h5> 
170											<p>${funcao}</p> 
171									</div> 
172									 
173							<#if categorias?seq_contains("recusado") > 
174							<div style="border-top: 1px solid #E8ECEF; font-weight: bold; padding-top: 24px;"> 
175							<p>Conteudo Em Análise Pelo Cetiqt:</p> 
176							<p>Conteúdo recusado pelo CETIQT por violar as políticas de privacidade.</p> 
177							</div> 
178							</#if > 
179							 
180									<div class="lista-footnote"> 
181											<div> 
182													<span class="lista-date">${journalArticle.getDisplayDate()?string('dd/MM/yyyy')}</span> | <span class="lista-commentNumber">${commentsCount} comentários</span> <span class="barra-pipe"> | </span> <span class="lista-author">Publicado por <a <#if urlWC != ''>href="/w/${urlWC}</#if>">${autor}</a></span> 
183											</div> 
184											<#if userIsAdmin> 
185											<div class="buttonsActions"> 
186												<div style="cursor: pointer;font-size: 16px;" data-toggle="modal" data-target="#modalInfra${JournalArticleID}"> 
187													<i class="fa-solid fa-edit"></i> 
188												</div> 
189												<div style="cursor: pointer;font-size: 16px;" data-toggle="modal" data-target="#modal-infra-${entry.getClassPK()}"> 
190													<i class="fa-solid fa-trash-can"></i> 
191												</div> 
192												 
193											</div> 
194											</#if> 
195									</div> 
196							</span> 
197					</div> 
198					 
199					<#if userIsAdmin> 
200					<div style="display: none;" id="modal-infra-${entry.getClassPK()}" class="modal fade" role="dialog"> 
201						<div class="modal-dialog modal-lg" role="document"> 
202							<div class="modal-content"> 
203								<div class="modal-header" > 
204									<h4 class="m-0">Remover Infraestrutura</h4> 
205									<button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
206										<span aria-hidden="true"> 
207											<i class="fa-solid fa-close"></i> 
208										</span> 
209									</button>    
210								</div> 
211								<div class="modal-body"> 
212									<h5>Você tem certeza que deseja remover essa infraestrutura?</h5> 
213									<div> 
214										Ao clicar em continuar, a infraestrutura será removida do seu perfil. 
215									</div> 
216								</div> 
217								<div class="modal-footer justify-content-end"> 
218										<button class="bioec_secondary_button" data-dismiss="modal">CANCELAR</button> 
219										<button class="bioec_primary_button" type="button" onclick="excluirInfra(${JournalArticleFrontId}, ${orgId})">CONTINUAR</button>  
220								</div> 
221							</div> 
222						</div>			 
223					</div> 
224					</#if> 
225					 
226					<#-- modal edição --> 
227 
228<#if userIsAdmin> 
229<div style="display: none;" id="modalInfra${JournalArticleID}" class="modal fade bioec-profile-infra-modal" role="dialog"> 
230	<div  class="modal-dialog modal-lg" role="document"> 
231 
232		<form class="form-group modal-content" id="formularioInfraestrutura${JournalArticleID}"> 
233			<div id="infraModal-l1-${JournalArticleID}" class="modal-header infraModal-l1" > 
234				<h5>Adicionar Infraestrutura</h5> 
235				<button id="fecharModal${JournalArticleID}" type="button" class="close" data-dismiss="modal" aria-label="Close"> 
236					<span aria-hidden="true">&times;</span> 
237				</button>    
238			</div> 
239			<div id="infraModal-l2-${JournalArticleID}" class="modal-body infraModal-l2"> 
240				<div id="infraName${JournalArticleID}" class="infraName"> 
241					<label class="ReqLabel" for="inputInfraName${JournalArticleID}">Nome da infraestrutura</label> 
242					<input type="text" id="inputInfraName${JournalArticleID}" value="${entry.getHighlightedTitle()}" placeholder="Nome da infraestrutura" required> 
243				</div> 
244			<div id="infraModel${JournalArticleID}" class="infraModel"> 
245				<label class="ReqLabel" for="inputInfraModel${JournalArticleID}">Modelo</label> 
246				<input type="text" id="inputInfraModel${JournalArticleID}" value="${modelo}" placeholder="Modelo" required> 
247			</div> 
248			<div id="infraBrand${JournalArticleID}" class="infraBrand"> 
249				<label class="ReqLabel" for="inputInfraBrand${JournalArticleID}">Marca</label> 
250				<input type="text" id="inputInfraBrand${JournalArticleID}" value="${marca}" placeholder="Marca" required> 
251			</div> 
252			 
253			<div id="infraImg${JournalArticleID}" class="infraImg"> 
254				<div style="display: flex; flex-direction: column; gap: 8px"> 
255					<label>Imagem da infraestrutura (Máx. 10 MB)</label> 
256					<label class="bioec_secondary_button" id="carregarImagem${JournalArticleID}" for="inputCarregarImagemInfra${JournalArticleID}" style="font-size: 16px;color: #333244;align-self:start;"> 
257						CARREGAR IMAGEM 
258					</label> 
259					<input id="inputCarregarImagemInfra${JournalArticleID}" class="inputCarregarImagemInfra" type="file" accept="image/*" onchange="encodeInfraImageAsURL${JournalArticleID}(this)"> 
260					<input class="d-none" id="inputInfraBase64${JournalArticleID}" value="${imageSrc}" /> 
261					<div class="imagemCarregadaInfra${JournalArticleID} d-md-none d-block" style="background-image: url(${imageSrc})"></div> 
262					<button type="button" id="removerImagemInfra${JournalArticleID}" class="<#if imageSrc == "" || imageSrc?? == false> d-none </#if> removerImagemInfra" > 
263						<i class="fa fa-trash"></i> Remover imagem	 
264					</button> 
265				</div> 
266				<div class="imagemCarregadaInfra${JournalArticleID} d-md-block d-none" style="background-image: url(${imageSrc})"></div> 
267			</div> 
268			 
269			<div id="infraFunction${JournalArticleID}" class="infraFunction"> 
270				<label class="ReqLabel" for="inputInfraFunction${JournalArticleID}">Função</label> 
271				<input type="text" id="inputInfraFunction${JournalArticleID}" class="inputInfraFunction" value="${funcao}" placeholder="Função" required> 
272			</div> 
273		</div> 
274		<div class="TextImportant"> 
275			<p> 
276			Importante: O conteúdo enviado passará por um processo interno de aprovação. Só então o conteúdo adicionado aparecerá no portal. 
277			</p> 
278		</div> 
279		<div id="infraModal-l3-${JournalArticleID}" class="modal-footer infraModal-l3"> 
280					<button class="bioec_secondary_button" onclick="">SALVAR E FECHAR</button> 
281		</div> 
282	</form> 
283	 
284	</div>			 
285</div> 
286</#if>					 
287					 
288 
289 
290 
291<script> 
292const SHOW_NOTICE_CONTAINER_BIOECONOMIA = "SHOW_NOTICE_CONTAINER_BIOECONOMIA"; 
293	 
294 
295 
296function closeNoticeContainer() { 
297  document.getElementById("upload-notice-container").style.display = "none"; 
298 
299  window.localStorage.removeItem(SHOW_NOTICE_CONTAINER_BIOECONOMIA); 
300
301 
302document 
303  .getElementById("close-btn-upload-container") 
304  .addEventListener("click", closeNoticeContainer); 
305 
306document.addEventListener("DOMContentLoaded", function(event) {  
307	console.log('chegou aqui', window.localStorage.getItem(SHOW_NOTICE_CONTAINER_BIOECONOMIA)); 
308  var showNoticeContainer = window.localStorage.getItem(SHOW_NOTICE_CONTAINER_BIOECONOMIA); 
309  if (showNoticeContainer == "true") { 
310    document.getElementById("upload-notice-container").style.display = "block"; 
311    window.localStorage.removeItem(SHOW_NOTICE_CONTAINER_BIOECONOMIA); 
312
313}); 
314 
315 
316 
317<#if userIsAdmin> 
318 
319document.querySelector('#formularioInfraestrutura${JournalArticleID}').addEventListener('submit', event => { 
320	event.preventDefault(); 
321	if (boolAddInfraestrutura == 0){ 
322		event.preventDefault(); 
323
324	editarSubmissao${JournalArticleID}(); 
325}); 
326 
327function editarSubmissao${JournalArticleID}(){ 
328 
329 
330		Liferay.Util.openToast({message: "Enviando requisição",type: "info",title: ""}); 
331		const infraData = { 
332			nome: document.getElementById("inputInfraName${JournalArticleID}").value, 
333			marca: document.getElementById("inputInfraBrand${JournalArticleID}").value, 
334			funcao: document.getElementById("inputInfraFunction${JournalArticleID}").value, 
335			modelo: document.getElementById("inputInfraModel${JournalArticleID}").value, 
336			autor: Liferay.ThemeDisplay.getUserName(), 
337			imagem: document.getElementById("inputInfraBase64${JournalArticleID}").value, 
338
339		console.log(JSON.stringify(infraData)); 
340 
341		fetch(Liferay.ThemeDisplay.getPortalURL() + "/o/infraestrutura/equipamento/${JournalArticleFrontId}", { 
342			method: 'PUT', 
343			"headers": { 
344				"x-csrf-token": Liferay.authToken, 
345				"Content-Type": "application/json" 
346			}, 
347			body: JSON.stringify(infraData) 
348		}) 
349		.then(res => { 
350			if(res.status == 200) { 
351			 
352				Liferay.Util.openToast({ 
353            message: "Infraestrutura editada com sucesso. Após a submissão, será iniciado um novo processo interno de aprovação do conteúdo enviado. Só então o conteúdo submetido aparecerá novamente no portal.", 
354            type: "success", 
355            title: "", 
356            toastProps: { 
357                autoClose: 5000 
358
359        }) 
360			 
361setTimeout(function(){ location.reload(); }, 2000); 
362				 
363			} else { 
364				Liferay.Util.openToast({ 
365            message: "Erro ao editar infraestrutura", 
366            type: "danger", 
367            title: "", 
368            toastProps: { 
369                autoClose: 5000 
370
371        }) 
372
373		}); 
374
375</#if> 
376 
377function excluirInfra(wcId, orgId) { 
378		Liferay.Util.openToast({message: "Enviando requisição",type: "info",title: ""}); 
379		fetch(Liferay.ThemeDisplay.getPortalURL() + "/o/infraestrutura/equipamento/" + wcId , { 
380			method: 'DELETE', 
381			"headers": { 
382				"x-csrf-token": Liferay.authToken, 
383				"Content-Type": "application/json" 
384
385		}) 
386		.then(res => { 
387			if(res.status == 200) { 
388				Liferay.Util.openToast({ 
389            message: "Infraestrutura excluida com sucesso", 
390            type: "success", 
391            title: "", 
392            toastProps: { 
393                autoClose: 5000 
394
395        }) 
396				setTimeout(function(){ location.reload(); }, 2000) 
397			} else { 
398				Liferay.Util.openToast({ 
399            message: "Erro ao excluir infraestrutura", 
400            type: "danger", 
401            title: "", 
402            toastProps: { 
403                autoClose: 5000 
404
405        }) 
406
407		}); 
408
409	 
410 
411	function encodeInfraImageAsURL${JournalArticleID}(element) { 
412  	let file = element.files[0]; 
413    let reader = new FileReader(); 
414    reader.onloadend = () => { 
415			if(reader.result)   { 
416				if(!validImageSize(reader.result)) return; 
417				try { 
418					Array.from(document.getElementsByClassName("imagemCarregadaInfra${JournalArticleID}")).forEach( el => el.style.backgroundImage = 'url(' + reader.result + ')' ) 
419					const base64_input = document.getElementById("inputInfraBase64${JournalArticleID}") 
420					base64_input.value = reader.result 
421					 
422					 
423					const removeImageButton = document.getElementById("removerImagemInfra${JournalArticleID}") 
424					removeImageButton.classList.remove("d-none") 
425				} catch (error) { 
426					console.error(error) 
427
428
429
430		reader.readAsDataURL(file); 
431
432	 
433	function removeImageInfra${JournalArticleID}() { 
434	try { 
435		const file_input = document.getElementById("inputCarregarImagemInfra${JournalArticleID}") 
436Array.from(document.getElementsByClassName("imagemCarregadaInfra${JournalArticleID}")).forEach( el => el.style.backgroundImage = "" ) 
437		const base64_input = document.getElementById("inputInfraBase64${JournalArticleID}") 
438		file_input.value = null 
439		base64_input.value = "" 
440		console.log("foi") 
441		const removeImageButton = document.getElementById("removerImagemInfra${JournalArticleID}") 
442		removeImageButton.classList.add("d-none") 
443	} catch (error) { 
444		console.error(error) 
445
446
447 
448 
449document.getElementById("removerImagemInfra${JournalArticleID}").addEventListener("click", removeImageInfra${JournalArticleID}); 
450	 
451</script> 
452<style> 
453 
454#upload-notice-container { 
455  background: var(--cinza-claro, #e8ecef); 
456  padding: 24px 24px 16px; 
457  width: 100%; 
458  position: relative; 
459  margin-bottom: 40px; 
460
461 
462#upload-notice-container #close-btn-upload-container { 
463  position: absolute; 
464  top: 0px; 
465  right: 2px; 
466  height: 24px; 
467  margin: 8px; 
468  cursor: pointer; 
469
470 
471#upload-notice-container #close-btn-upload-container i { 
472  font-size: 22px; 
473  color: #5B5C61; 
474
475 
476#upload-notice-container .upload-notice-title { 
477  font-size: 20px; 
478  /* font-family: Roboto; */ 
479  font-weight: 700; 
480  line-height: 150%; 
481  color: var(--texto, #5b5c61); 
482  display: flex; 
483  align-items: center; 
484  margin-bottom: 12px; 
485
486 
487#upload-notice-container .upload-notice-title i { 
488  color: #ffc806; 
489  margin-right: 12px; 
490  font-size: 24px; 
491
492 
493#upload-notice-container p { 
494  color: var(--texto, #5b5c61); 
495  font-size: 16px; 
496  /* font-family: Roboto; */ 
497  line-height: 150%; 
498  margin-bottom: 8px; 
499
500 
501#upload-notice-container p > span { 
502  font-weight: 700; 
503
504 
505 
506.imagemCarregadaInfra${JournalArticleID} { 
507	background-size: contain; 
508	background-position: center; 
509	background-repeat: no-repeat; 
510	height: 100px; 
511	width: 100px; 
512
513 
514#removerImagemInfra${JournalArticleID} { 
515	background: none; 
516	border: none; 
517	outline: none; 
518	color: #5B5C61; 
519	font-size: 16px; 
520	font-weight: 900; 
521	line-height: 24px; 
522	letter-spacing: 0em; 
523	width: fit-content; 
524	margin-left: 16px; 
525
526</style> 
527				</#list> 
528			</#if> 
529    </div> 
530</div> 
531 
532 
533<style> 
534 
535.bioec_infra_img { 
536    width: 140px; 
537    height: 140px; 
538    overflow: hidden; 
539		background-size: contain; 
540    background-position: center; 
541    background-repeat: no-repeat; 
542
543 
544.bioec_infra_img_placeholder { 
545    width: 140px; 
546    height: 140px; 
547    background-color: #E8ECEF; 
548    display: flex; 
549    flex-direction: column; 
550    align-items: center; 
551    justify-content: center; 
552    font-size: 14px; 
553    color: #5B5C61; 
554
555 
556.bioec_infra_img_placeholder i { 
557    font-size: 44px; 
558
559 
560 
561.bioec-profile-estrutura-main{ 
562	display: flex; 
563	gap: 40px; 
564	flex-direction: column; 
565	padding-bottom: 20px; 
566
567 
568.bioec-profile-estrutura-main h5, .bioec-profile-estrutura-main p, .bioec-profile-estrutura-main a{ 
569	color: #5B5C61; 
570
571 
572.bioec-profile-estrutura-main h5{ 
573	font-weight: 700; 
574
575.bioec-profile-estrutura-main h5, .bioec-profile-estrutura-main p{ 
576	 
577	font-size: 16px; 
578 
579
580 
581.bioec-profile-estrutura-main #estruturas-lista .estruturas-lista-item { 
582	border: 1px #BEBEBE solid;  
583	padding: 24px; 
584	display: grid; 
585	grid-template-columns: 24px 12px 138px 46px 1fr 12px 15px; 
586	grid-template-areas: "ck . pic . desc . arrw" 
587		". . clps clps clps clps clps"; 
588	margin-bottom: 40px; 
589
590 
591.bioec-profile-estrutura-main .lista-checkmark { grid-area: ck; } 
592.bioec-profile-estrutura-main .lista-pic { grid-area: pic; display: flex; justify-content: center;} 
593.bioec-profile-estrutura-main .lista-arrow { grid-area: arrw; } 
594.bioec-profile-estrutura-main .lista-collapse { grid-area: clps; } 
595 
596.bioec-profile-estrutura-main .lista-desc {  
597	grid-area: desc;  
598	display: flex;  
599	flex-direction: column; 
600	justify-content: center; 
601	 
602
603 
604.bioec-profile-estrutura-main .lista-desc h5{ 
605	margin-bottom: 12px; 
606}  
607 
608.bioec-profile-estrutura-main .lista-desc p{  
609	margin: 0; 
610
611 
612.bioec-profile-estrutura-main .lista-func {  
613	 
614	margin: 24px 0; 
615
616 
617.bioec-profile-estrutura-main .lista-footnote {  
618 
619	display: flex; 
620	justify-content: space-between; 
621	border-top: 1px solid #E8ECEF; 
622	padding-top: 12px; 
623	font-size: 14px; 
624	font-weight: 300; 
625	gap: 15px; 
626	color: #5B5C61; 
627 
628
629 
630.pagination-items-per-page.active > a,  
631.pagination-items-per-page.active > button,  
632.pagination-items-per-page.show > a,  
633.pagination-items-per-page.show > button, 
634.page-item.active .page-link,  
635.page-item.show .page-link{ 
636    border-color: #4ECD66; 
637    background-color: #4ECD66; 
638
639 
640.pagination-results, 
641.pagination-items-per-page > a,  
642.pagination-items-per-page > button, 
643.pagination-items-per-page > a:hover,  
644.pagination-items-per-page > button:hover, 
645.page-link{ 
646	color: #4ebe66; 
647
648 
649.estruturas-port{ 
650	border: 1px #BEBEBE solid;  
651	padding: 24px; 
652	display: flex; 
653	flex-direction: column; 
654	align-items: center; 
655	gap: 24px; 
656
657 
658.estruturas-port p{ 
659		text-align: center;	 
660    max-width: 760px; 
661    font-size: 18px; 
662    color: #5B5C61; 
663
664 
665.estruturas-port div{ 
666display: flex; 
667	justify-content: space-between; 
668	width: min(558px, 100%); 
669
670 
671.lista-arrow button{ 
672	padding: 0; 
673
674 
675.lista-arrow button:focus{ 
676	box-shadow: none; 
677
678 
679@media(max-width: 1100px){ 
680	.estruturas-port div{ 
681	flex-direction: column; 
682		gap: 30px; 
683
684 
685
686 
687@media(max-width: 450px){ 
688	.bioec-profile-estrutura-main .lista-footnote{ 
689		flex-direction: column; 
690		gap: 10px; 
691		align-items: flex-end; 
692		text-align: right; 
693
694
695 
696.bioec-profile-estrutura-main .lista-footnote .buttonsActions { 
697  display: flex; 
698  gap: 17px; 
699
700 
701@media(max-width:  768px){ 
702	.bioec-profile-estrutura-main #estruturas-lista .estruturas-lista-item{ 
703		grid-template-columns: 24px 1fr 10px 1fr 15px; 
704		grid-template-areas: "ck desc desc desc arrw" 
705													". pic pic pic ." 
706													"clps clps clps clps clps"; 
707 
708
709 
710	.bioec-profile-estrutura-main .lista-desc{ 
711	align-items: center; 
712
713 
714	.lista-pic{ 
715	display: flex; 
716	justify-content: center; 
717
718	 
719	.bioec-profile-estrutura-main .lista-footnote{ 
720		flex-direction: column; 
721    align-items: center; 
722
723	 
724	.bioec-profile-estrutura-main .lista-footnote > div { 
725    text-align: center; 
726
727   
728  .bioec-profile-estrutura-main .lista-footnote .barra-pipe { 
729    display: none; 
730
731  .bioec-profile-estrutura-main .lista-footnote .lista-author { 
732    display: flex; 
733    gap: 4px; 
734    justify-content: center; 
735
736  .bioec-profile-estrutura-main .lista-footnote .buttonsActions { 
737    width: 100%; 
738    justify-content: space-between; 
739
740
741</style> 
Demandas drop zone
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> autorId  [in template "34764#34807#41127" at line 71, column 46]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if autorId != "" && autorId??  [in template "34764#34807#41127" at line 71, column 41]
----
1<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
2<#assign UserLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")> 
3<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
4<#assign  
5mbMessageLocalService = serviceLocator.findService("com.liferay.message.boards.service.MBMessageLocalService") 
6	tagsLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService") 
7	 OrganizationLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.OrganizationLocalService") 
8
9 
10 
11<div class="bioec-profile-demanda-main"> 
12	<div id="demanda-lista-container" class="d-flex flex-column"> 
13			<#if entries?has_content> 
14				<#list entries as entry> 
15					<#assign journalArticle = JournalArticleLocalService.getLatestArticle(entry.getClassPK()) > 
16					<#assign JournalArticleID = journalArticle.getId()> 
17					<#assign JournalArticleFrontId = journalArticle.getArticleId()> 
18					<#assign articleXml = journalArticle.getDocument().getRootElement()  
19									 userIsAdmin = false 
20									 orgId = "" 
21
22					 
23					<#assign nomeParaContato = ""> 
24					 
25					<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text77253735']")??> 
26					 
27					<#assign nomeParaContato = articleXml.selectSingleNode("dynamic-element[@field-reference='Text77253735']").getStringValue()!"" 
28								 nomeParaContato = nomeParaContato?replace("\n\t\t", "") 
29								 nomeParaContato = nomeParaContato?replace("\n\t", "")					 
30
31					 
32					</#if> 
33					<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text94974146']")??> 
34					<#assign telefone = articleXml.selectSingleNode("dynamic-element[@field-reference='Text94974146']").getStringValue()!"" 
35								 telefone = telefone?replace("\n\t\t", "") 
36								 telefone = telefone?replace("\n\t", "")						 
37
38					</#if> 
39						 
40						<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text68569631']")??> 
41				<#assign email = articleXml.selectSingleNode("dynamic-element[@field-reference='Text68569631']").getStringValue()!"" 
42								 email = email?replace("\n\t\t", "") 
43								 email = email?replace("\n\t", "")					 
44				>  
45					</#if> 
46							 
47				<#if articleXml.selectSingleNode("dynamic-element[@field-reference='CopyOfCopyOfText18267936']")??> 
48					<#assign desc = articleXml.selectSingleNode("dynamic-element[@field-reference='CopyOfCopyOfText18267936']").getStringValue()!"" 
49								 desc = desc?replace("\n\t\t", "") 
50								 desc = desc?replace("\n\t", "")		 
51
52						</#if> 
53					<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text97565506']")??> 
54				<#assign imagem = articleXml.selectSingleNode("dynamic-element[@field-reference='Text97565506']").getStringValue()!""				 
55							imagem = imagem?replace("(\r\n)+", "",'r') 
56							imagem = imagem?replace(" ", "",'r') 
57
58						</#if> 
59						<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text99746569']")??> 
60					<#assign 
61						autorId = articleXml.selectSingleNode("dynamic-element[@field-reference='Text99746569']").getStringValue()!"" 
62						autorId = autorId?replace("\n\t\t", "") 
63						autorId = autorId?replace("\n\t", "")		 
64						autorArticleId = "" 
65
66						</#if> 
67						<#assign 
68						commentsCount = mbMessageLocalService.getDiscussionMessagesCount(entry.getClassName(), entry.getClassPK(), 0)!"0" 
69
70				 
71					<#if autorId != "" && autorId??> 
72					<#assign 
73						autor = UserLocalService.fetchUser(autorId?number)!"" 
74						autorArticleId = autor.getExpandoBridge().getAttribute("journal-article")!"0"  
75				/> 
76				<#if autor != ""> 
77				<#assign autor = autor.getFullName()!""> 
78				<#else> 
79				<#assign autor = "Anônimo" > 
80				</#if> 
81				<#else>  
82				<#assign autor = "Anônimo" > 
83		</#if>		 
84				<#assign 	categorias = AssetCategoryLocalService.getCategoryNames(entry.getClassName(), entry.getClassPK())!"" > 
85				<#assign urlWC = ""> 
86				<#if autorArticleId != "0" && autorArticleId != "" && autor != "Anônimo"> 
87					<#assign autorArticle = JournalArticleLocalService.getLatestArticle(themeDisplay.getLayout().getGroupId(), autorArticleId?string) > 
88					<#assign urlWC = autorArticle.getUrlTitle()!""> 
89				</#if> 
90								 
91				<#assign tags = tagsLocalService.getTagNames("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey()?number )  
92								 tagName = tags[0]!"" 
93								 orgOrUser = "" 
94
95				  
96				 <#if tagName?contains("organization") && tagName != "" > 
97					 <#assign orgOrUser = "org"> 
98					<#else> 
99					 <#assign orgOrUser = "user"> 
100				 </#if> 
101				  
102				<#if orgOrUser == "org" > 
103 
104					<#assign 
105					orgId = tagName?keep_after("organization-")				 
106					organization =  OrganizationLocalService.fetchOrganization(orgId?number)!"" 
107
108			 
109					 
110					<#if organization != "" && autor != "Anônimo"> 
111					 
112						<#assign	orgArticleId = organization.getExpandoBridge().getAttribute("journal-article") 
113							orgJournalArticle = JournalArticleLocalService.getArticle(themeDisplay.getLayout().getGroupId(),orgArticleId?c)  
114							urlWC = orgJournalArticle.getUrlTitle()!"" 
115							autor = organization.getName()!"" 
116
117 
118					</#if> 
119				</#if> 
120				 
121				<#if themeDisplay.isSignedIn() > 
122							<#if tagName?contains("organization-")> 
123								<#assign userIsAdmin = OrganizationLocalService.hasUserOrganization(themeDisplay.getUserId(), orgId?number)> 
124								<#else> 
125								<#if autorId?number == themeDisplay.getUserId()> 
126								<script>console.log("oi");</script> 
127									<#assign userIsAdmin = true> 
128								</#if> 
129							</#if> 
130							 
131						 
132					</#if> 
133							 
134					 
135 
136				<div class="demanda-lista-item"> 
137				 
138				<div class="lista-checkmark"> 
139								<#if categorias?seq_contains("aprovado") > <i title="Aprovado" style="color: #4ECD66" class="fa-solid fa-circle-check"></i> </#if> 
140								<#if categorias?seq_contains("pendente") >	<i title="Em análise" style="color: #D90000"class="fa-solid fa-spinner"></i> </#if> 
141								<#if categorias?seq_contains("recusado") >	<i title="Recusado" style="color: #D90000"class="fa-solid fa-exclamation-circle"></i> </#if> 
142				</div> 
143	 
144 
145					<div class="lista-titulo"> 
146						<h5>${entry.getHighlightedTitle()}</h5> 
147					</div> 
148 
149					<div class="lista-arrow"> 
150						<button style="padding: 0;" class="btn" type="button" data-toggle="collapse" data-target="#collapseID${entry.getClassPK()}" aria-expanded="false" aria-controls="collapseID${entry.getClassPK()}"> 
151							<i class="fa-solid fa-chevron-down"></i> 
152						</button> 
153					</div> 
154 
155					<div class="lista-desc"> 
156						<p>${desc}</p> 
157					</div> 
158 
159					<div class="lista-collapse collapse" id="collapseID${entry.getClassPK()}"> 
160					<#if nomeParaContato != "" || telefone != "" || email != "" || imagem?trim !=""> 
161					<div class="lista-details"> 
162								<div class="lista-pic"> 
163									<i class="fa-solid fa-image-slash"></i> 
164									<#if imagem?trim !="" > 
165											<img class="bioec_demanda_img" src="${imagem}"> 
166										<#else> 
167											<div class="bioec_demanda_img_placeholder"> 
168												<i class="fa-solid fa-image"></i> 
169													sem imagem 
170											</div> 
171									</#if> 
172								</div> 
173							<#if nomeParaContato != "" || telefone != "" || email != "" > 
174							<div class="lista-contato"> 
175								<p>Contato</p> 
176								<p class="lista-author">${nomeParaContato}</p> 
177								<p class="lista-phone">${telefone}</p> 
178								<p class="lista-email">${email}</p> 
179							</div> 
180							</#if> 
181						</div> 
182						</#if> 
183						 
184							<#if categorias?seq_contains("recusado") > 
185							<div style="border-top: 1px solid #E8ECEF; font-weight: bold; padding-top: 24px;"> 
186							<p>Conteúdo Em Análise Pelo Cetiqt:</p> 
187							<p>Conteúdo recusado pelo CETIQT por violar as políticas de privacidade.</p> 
188							</div> 
189							</#if> 
190						<div class="lista-footnote"> 
191								<div> 
192									<span class="lista-date">${journalArticle.getDisplayDate()?string('dd/MM/yyyy')}</span> | <span class="lista-commentNumber">${commentsCount} cometários</span> <span class="barra-pipe"> | </span> <span class="lista-author">Publicado por <a <#if urlWC != ''>href="/w/${urlWC}</#if>">${autor}</a></span> 
193								</div> 
194								<#if userIsAdmin> 
195									<div class="buttonsActions"> 
196									<div style="cursor: pointer;font-size: 16px;" data-toggle="modal" data-target="#modalDemanda${JournalArticleID}"> 
197											<i class="fa-solid fa-edit"></i> 
198										</div> 
199										<div style="cursor: pointer;font-size: 16px;" data-toggle="modal" data-target="#modal-demanda-${entry.getClassPK()}"> 
200												<i class="fa-solid fa-trash-can"></i> 
201										</div> 
202										 
203									</div> 
204								</#if>		 
205						</div> 
206					</div> 
207				</div> 
208				 
209					<#if userIsAdmin> 
210						<div style="display: none;" id="modal-demanda-${entry.getClassPK()}" class="modal fade" role="dialog"> 
211							<div class="modal-dialog modal-lg" role="document"> 
212								<div class="modal-content"> 
213									<div class="modal-header" > 
214										<h4 class="m-0">Remover Demanda</h4> 
215										<button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
216											<span aria-hidden="true"> 
217												<i class="fa-solid fa-close"></i> 
218											</span> 
219										</button>    
220									</div> 
221									<div class="modal-body"> 
222										<h5>Você tem certeza que deseja remover essa demanda?</h5> 
223										<div> 
224											Ao clicar em continuar, a demanda será removida do seu perfil. 
225										</div> 
226									</div> 
227									<div class="modal-footer justify-content-end"> 
228											<button class="bioec_secondary_button" data-dismiss="modal">CANCELAR</button> 
229											<button class="bioec_primary_button" type="button" onclick="excluirDemanda(${JournalArticleFrontId}, ${orgId})">CONTINUAR</button>  
230									</div> 
231								</div> 
232							</div>			 
233						</div> 
234						 
235						<#-- modal edição --> 
236						 
237						 
238						<div style="display: none;" id="modalDemanda${JournalArticleID}" class="modal fade bioec-profile-demanda-modal modalDemanda" role="dialog"> 
239									<div class="modal-dialog modal-lg" role="document"> 
240										<form id="formularioDemanda${JournalArticleID}" class="form-group modal-content formularioDemanda"> 
241												<div id="demandaModal-l1${JournalArticleID}" class="modal-header demandaModal-l1"> 
242													<h5>Adicionar demanda</h5> 
243														<button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
244															 <span aria-hidden="true">&times;</span> 
245														</button> 
246												</div> 
247												<div id="demandaModal-l2${JournalArticleID}" class="modal-body demandaModal-l2"> 
248														<div id="demandaTitle${JournalArticleID}" class="demandaTitle"> 
249																<label class="ReqLabel" for="demandaInputTitle${JournalArticleID}">Título da demanda</label> 
250																<input id="demandaInputTitle${JournalArticleID}" value="${entry.getHighlightedTitle()}" type="text" placeholder="Inserir um título" required> 
251														</div> 
252														<div id="demandaName${JournalArticleID}" class="demandaName"> 
253																<label class="" for="demandaInputName${JournalArticleID}">Nome para contato</label> 
254																<input value="${nomeParaContato}" id="demandaInputName${JournalArticleID}" placeholder="Inserir nome" type="text"> 
255														</div> 
256														<div id="demandaTelephone${JournalArticleID}" class="demandaTelephone"> 
257																<label class="" for="demandaInputPhone${JournalArticleID}">Telefone para contato</label> 
258																<input value="${telefone}" id="demandaInputPhone${JournalArticleID}" name="demandaInputPhone" type="text" placeholder ='(__)_____-_____' minlength="14"  /> 
259														</div> 
260														<div id="demandaEmail${JournalArticleID}" class="demandaEmail"> 
261																<label class="" for="demandaInputEmail${JournalArticleID}">E-mail para contato</label> 
262																<input value="${email}" id="demandaInputEmail${JournalArticleID}" placeholder="Inserir e-mail" type="text"> 
263														</div> 
264														<div id="demandaDesc${JournalArticleID}" class="demandaDesc"> 
265																<label class="ReqLabel" for="demandaInputDesc${JournalArticleID}">Descrição</label> 
266																<textarea id="demandaInputDesc${JournalArticleID}" style="max-width: 100%;font-size: 16px;height: 80px;border: 1px solid #BEBEBE;" required>${desc}</textarea> 
267														</div> 
268														<div id="demandaImg${JournalArticleID}" class="demandaImg"> 
269																<div style="display: flex; flex-direction: column; gap: 8px"> 
270																		<label>Imagem da demanda (Máx. 10 MB)</label> 
271																		<label class="btn carregarImagem" id="carregarImagem${JournalArticleID}" for="inputCarregarImagemDemanda${JournalArticleID}" style="font-size: 16px; cursor: pointer;">CARREGAR IMAGEM</label> 
272																		<input class="inputCarregarImagemDemanda" id="inputCarregarImagemDemanda${JournalArticleID}" type="file" accept="image/*" onchange="encodeDemandaImageAsURL${JournalArticleID}(this)"> 
273																		<input class="d-none" id="inputDemandaBase64${JournalArticleID}" value="${imagem}" /> 
274																		<div class="imagemCarregadaDemanda imagemCarregadaDemanda${JournalArticleID} d-md-none d-block" style="background-image: url(${imagem})"></div> 
275																		<button type="button" id="removerImagemDemanda${JournalArticleID}" class="<#if imagem == "" || imagem?? == false> d-none </#if> removerImagemDemanda" > 
276																			<i class="fa fa-trash"></i> Remover imagem	 
277																		</button> 
278																	</div> 
279																	<div class="imagemCarregadaDemanda imagemCarregadaDemanda${JournalArticleID} d-md-block d-none" style="background-image: url(${imagem})"></div> 
280														</div> 
281												</div> 
282													<div class="TextImportant"> 
283														<p> 
284															Importante: O conteúdo enviado passará por um processo interno de aprovação. Só então o conteúdo adicionado aparecerá no portal. 
285														</p> 
286													</div> 
287 
288												<div id="demandaModal-l3${JournalArticleID}" class="modal-footer demandaModal-l3"> 
289														<button  class="btn button-empty" onclick="" id="demandas-saveAndClose${JournalArticleID}">SALVAR E FECHAR</button> 
290												</div> 
291										</form> 
292									</div> 
293								</div> 
294						 
295						</#if> 
296						<#--  
297						 
298						 
299						 
300						 
301						<div style="display: none;" id="modalInfra${JournalArticleID}" class="modal fade bioec-profile-infra-modal" role="dialog"> 
302							<div  class="modal-dialog modal-lg" role="document"> 
303 
304								<form class="form-group modal-content" id="formularioInfraestrutura${JournalArticleID}"> 
305									<div id="infraModal-l1-${JournalArticleID}" class="modal-header infraModal-l1" > 
306										<h5>Adicionar Infraestrutura</h5> 
307										<button id="fecharModal${JournalArticleID}" type="button" class="close" data-dismiss="modal" aria-label="Close"> 
308											<span aria-hidden="true">&times;</span> 
309										</button>    
310									</div> 
311									<div id="infraModal-l2-${JournalArticleID}" class="modal-body infraModal-l2"> 
312										<div id="infraName${JournalArticleID}" class="infraName"> 
313											<label class="ReqLabel" for="inputInfraName${JournalArticleID}">Nome da infraestrutura</label> 
314											<input type="text" id="inputInfraName${JournalArticleID}" value="${entry.getHighlightedTitle()}" placeholder="Nome da infraestrutura" required> 
315										</div> 
316									<div id="infraModel${JournalArticleID}" class="infraModel"> 
317										<label class="ReqLabel" for="inputInfraModel${JournalArticleID}">Modelo</label> 
318										<input type="text" id="inputInfraModel${JournalArticleID}" value="${modelo}" placeholder="Modelo" required> 
319									</div> 
320									<div id="infraBrand${JournalArticleID}" class="infraBrand"> 
321										<label class="ReqLabel" for="inputInfraBrand${JournalArticleID}">Marca</label> 
322										<input type="text" id="inputInfraBrand${JournalArticleID}" value="${marca}" placeholder="Marca" required> 
323									</div> 
324 
325									<div id="infraImg${JournalArticleID}" class="infraImg"> 
326										<div style="display: flex; flex-direction: column; gap: 8px"> 
327											<label>Imagem da infraestrutura (Máx. 10 MB)</label> 
328											<label class="bioec_secondary_button" id="carregarImagem${JournalArticleID}" for="inputCarregarImagemInfra${JournalArticleID}" style="font-size: 16px;color: #333244;align-self:start;"> 
329												CARREGAR IMAGEM 
330											</label> 
331											<input id="inputCarregarImagemInfra${JournalArticleID}" class="inputCarregarImagemInfra" type="file" accept="image/*" onchange="encodeInfraImageAsURL${JournalArticleID}(this)"> 
332											<input class="d-none" id="inputInfraBase64${JournalArticleID}" /> 
333											<div class="imagemCarregadaInfra${JournalArticleID} d-md-none d-block"></div> 
334											<button type="button" id="removerImagemInfra${JournalArticleID}" class="d-none removerImagemInfra" > 
335												<i class="fa fa-trash"></i> Remover imagem	 
336											</button> 
337										</div> 
338										<div class="imagemCarregadaInfra${JournalArticleID} d-md-block d-none"></div> 
339									</div> 
340 
341									<div id="infraFunction${JournalArticleID}" class="infraFunction"> 
342										<label class="ReqLabel" for="inputInfraFunction${JournalArticleID}">Função</label> 
343										<input type="text" id="inputInfraFunction${JournalArticleID}" class="inputInfraFunction" value="${funcao}" placeholder="Função" required> 
344									</div> 
345								</div> 
346								<div class="TextImportant"> 
347									<p> 
348									Importante: O conteúdo enviado passará por um processo interno de aprovação. Só então o conteúdo adicionado aparecerá no portal. 
349									</p> 
350								</div> 
351								<div id="infraModal-l3-${JournalArticleID}" class="modal-footer infraModal-l3"> 
352											<button class="bioec_secondary_button" id="demandas-saveAndClose${JournalArticleID}" onclick="">SALVAR E FECHAR</button> 
353								</div> 
354							</form> 
355 
356							</div>			 
357						 
358						 
359						--> 
360						 
361					 
362 
363						<script> 
364						<#if userIsAdmin> 
365						function excluirDemanda(wcId, orgId) { 
366								Liferay.Util.openToast({message: "Enviando requisição",type: "info",title: ""}); 
367								fetch(Liferay.ThemeDisplay.getPortalURL() + "/o/demanda/" + wcId, { 
368									method: 'DELETE', 
369									"headers": { 
370										"x-csrf-token": Liferay.authToken, 
371										"Content-Type": "application/json" 
372
373								}) 
374								.then(res => { 
375									if(res.status == 200) { 
376										Liferay.Util.openToast({ 
377												message: "Infraestrutura excluida com sucesso", 
378												type: "success", 
379												title: "", 
380												toastProps: { 
381														autoClose: 5000 
382
383										}) 
384										setTimeout(function(){ location.reload(); }, 2000) 
385									} else { 
386										Liferay.Util.openToast({ 
387												message: "Erro ao excluir infraestrutura", 
388												type: "danger", 
389												title: "", 
390												toastProps: { 
391														autoClose: 5000 
392
393										}) 
394
395								}); 
396
397							 
398						 
399							 
400							 
401	function validImageSize(base64="") { 
402		const decoded = atob(base64.substring(base64.indexOf(',') + 1)); 
403		const sizeMB = decoded.length / 1e+6; 
404		console.log("MB: " + decoded.length / 1e+6); 
405		if(sizeMB > 10) { 
406			Liferay.Util.openToast({ 
407				message: "O tamanho da imagem não deve ultrapassar 10 MB.", 
408				type: "danger", 
409				title: "", 
410				toastProps: { 
411					autoClose: 5000 
412
413			}) 
414			return false 
415
416		return true 
417
418 
419	function encodeDemandaImageAsURL${JournalArticleID}(element) { 
420  	let file = element.files[0]; 
421    let reader = new FileReader(); 
422    reader.onloadend = () => { 
423			if(reader.result) { 
424				if(!validImageSize(reader.result)) return; 
425				try { 
426					const base64_input = document.getElementById("inputDemandaBase64${JournalArticleID}") 
427					base64_input.value = reader.result 
428					Array.from(document.getElementsByClassName("imagemCarregadaDemanda${JournalArticleID}")).forEach( el => el.style.backgroundImage = 'url(' + reader.result + ')' ) 
429					 
430					const removeImageButton = document.getElementById("removerImagemDemanda${JournalArticleID}") 
431					removeImageButton.classList.remove("d-none") 
432				} catch (error) { 
433					console.error(error) 
434
435
436
437		reader.readAsDataURL(file); 
438
439	 
440	function removeImageDemanda${JournalArticleID}() { 
441	try { 
442		const file_input = document.getElementById("inputCarregarImagemDemanda${JournalArticleID}") 
443		Array.from(document.getElementsByClassName("imagemCarregadaDemanda${JournalArticleID}")).forEach( el => el.style.backgroundImage = "" ) 
444		const base64_input = document.getElementById("inputDemandaBase64${JournalArticleID}") 
445		file_input.value = null 
446		base64_input.value = "" 
447		 
448		const removeImageButton = document.getElementById("removerImagemDemanda${JournalArticleID}") 
449		removeImageButton.classList.add("d-none") 
450	} catch (error) { 
451		console.error(error) 
452
453
454 
455 
456document.getElementById("removerImagemDemanda${JournalArticleID}").addEventListener("click", removeImageDemanda${JournalArticleID}); 
457 
458<#-- Rest da edição de organização --> 
459 
460<#if orgOrUser == "org"> 
461document.querySelector('#formularioDemanda${JournalArticleID}').addEventListener('submit', event => { 
462	event.preventDefault(); 
463	adicionarDemanda${JournalArticleID}();  
464}); 
465 
466function adicionarDemanda${JournalArticleID}() {		 
467		Liferay.Util.openToast({message: "Enviando requisição",type: "info",title: ""}); 
468		$("#demandas-saveAndClose${JournalArticleID}").prop("disabled",true); 
469	 
470		 
471		 
472		const demandaData = { 
473			titulo: document.getElementById("demandaInputTitle${JournalArticleID}").value, 
474			nomeContato: document.getElementById("demandaInputName${JournalArticleID}").value, 
475			telefoneContato: document.getElementById("demandaInputPhone${JournalArticleID}").value, 
476			emailContato: document.getElementById("demandaInputEmail${JournalArticleID}").value, 
477			descricao: document.getElementById("demandaInputDesc${JournalArticleID}").value, 
478			imagem: document.getElementById("inputDemandaBase64${JournalArticleID}").value, 
479
480		 
481		console.log(demandaData); 
482	 
483			fetch(Liferay.ThemeDisplay.getPortalURL() + "/o/demanda/${JournalArticleFrontId}", { 
484				method: 'PUT', 
485				"headers": { 
486					"x-csrf-token": Liferay.authToken, 
487					"Content-Type": "application/json" 
488				}, 
489				body: JSON.stringify(demandaData) 
490			}) 
491			.then(res => { 
492				if(res.status == 200) { 
493					Liferay.Util.openToast({ 
494							message: "Demanda editada com sucesso. Após a submissão, será iniciado o processo interno de aprovação do conteúdo enviado. Só então o conteúdo submetido aparecerá no portal.", 
495							type: "success", 
496							title: "", 
497							toastProps: { 
498									autoClose: 5000 
499
500					}) 
501					 setTimeout(function(){ location.reload(); }, 2000); 
502				} else { 
503				 $("#demandas-saveAndClose${JournalArticleID}").prop("disabled",false); 
504					Liferay.Util.openToast({ 
505							message: "Erro ao editada demanda", 
506							type: "danger", 
507							title: "", 
508							toastProps: { 
509									autoClose: 5000 
510
511					}) 
512
513			}) 
514		 
515
516</#if> 
517 
518<#-- Rest da edição de pessoa fisica --> 
519							 
520							 
521				<#if orgOrUser == "user"> 
522				 
523					document.querySelector('#formularioDemanda${JournalArticleID}').addEventListener('submit', event => { 
524					event.preventDefault(); 
525					adicionarDemanda${JournalArticleID}();  
526				});			 
527						 
528						function adicionarDemanda${JournalArticleID}() { 
529							Liferay.Util.openToast({message: "Enviando requisição",type: "info",title: ""}); 
530							$("#demandas-saveAndClose${JournalArticleID}").prop("disabled",true); 
531	 
532							const demandaData = { 
533								titulo: document.getElementById("demandaInputTitle${JournalArticleID}").value, 
534								nomeContato: document.getElementById("demandaInputName${JournalArticleID}").value, 
535								telefoneContato: document.getElementById("demandaInputPhone${JournalArticleID}").value, 
536								emailContato: document.getElementById("demandaInputEmail${JournalArticleID}").value, 
537								descricao: document.getElementById("demandaInputDesc${JournalArticleID}").value, 
538								imagem: document.getElementById("inputDemandaBase64${JournalArticleID}").value, 
539
540							 
541							console.log(demandaData); 
542 
543							fetch(Liferay.ThemeDisplay.getPortalURL() + "/o/demanda/${JournalArticleFrontId}", { 
544											method: 'PUT', 
545											"headers": { 
546													"x-csrf-token": Liferay.authToken, 
547													"Content-Type": "application/json" 
548											}, 
549											body: JSON.stringify(demandaData) 
550									}) 
551									.then( res => { 
552								if(res.status == 200) { 
553									Liferay.Util.openToast({ 
554										message: "Demanda editada com sucesso. Após a submissão, será iniciado o processo interno de aprovação do conteúdo enviado. Só então o conteúdo submetido aparecerá no portal.", 
555										type: "success", 
556										title: "", 
557										toastProps: { 
558											autoClose: 5000 
559
560									}) 
561									 setTimeout(function(){ location.reload(); }, 2000); 
562								} else { 
563								 $("#demandas-saveAndClose${JournalArticleID}").prop("disabled",false); 
564									Liferay.Util.openToast({ 
565										message: "Erro ao editar Demanda", 
566										type: "danger", 
567										title: "", 
568										toastProps: { 
569											autoClose: 5000 
570
571									}) 
572
573							}); 
574							 
575					}; 
576						 
577						 
578				</#if> 
579							 
580							 
581								</#if> 
582						</script> 
583					 
584				 
585				 
586				 
587			</#list> 
588		</#if> 
589	</div> 
590</div> 
591 
592<style> 
593.bioec_demanda_img { 
594    overflow: hidden; 
595		background-size: contain; 
596    background-position: center; 
597    background-repeat: no-repeat; 
598
599 
600.bioec_demanda_img_placeholder { 
601    width: 140px; 
602    height: 140px; 
603    background-color: #E8ECEF; 
604    display: flex; 
605    flex-direction: column; 
606    align-items: center; 
607    justify-content: center; 
608    font-size: 14px; 
609    color: #5B5C61; 
610
611 
612.bioec_demanda_img_placeholder i { 
613    font-size: 44px; 
614
615 
616 
617.pagination-items-per-page.active > a,  
618.pagination-items-per-page.active > button,  
619.pagination-items-per-page.show > a,  
620.pagination-items-per-page.show > button, 
621.page-item.active .page-link,  
622.page-item.show .page-link{ 
623    border-color: #4ECD66; 
624    background-color: #4ECD66; 
625
626 
627.pagination-results, 
628.pagination-items-per-page > a,  
629.pagination-items-per-page > button, 
630.pagination-items-per-page > a:hover,  
631.pagination-items-per-page > button:hover, 
632.page-link{ 
633	color: #4ebe66; 
634
635 
636.bioec-profile-demanda-main{ 
637	display: flex; 
638	gap: 40px; 
639	flex-direction: column; 
640	padding-bottom: 20px; 
641
642.bioec-profile-demanda-main h5{ 
643	font-weight: 700; 
644
645.bioec-profile-demanda-main h5, .bioec-profile-demanda-main p{ 
646	color: #5B5C61; 
647	margin-bottom: 0px; 
648	font-size: 16px; 
649 
650
651 
652.bioec-profile-demanda-main #demanda-lista-container>div{ 
653	border: 1px #BEBEBE solid;  
654	padding: 24px 24px 0 24px; 
655	margin-bottom: 40px; 
656	display: grid; 
657	grid-row-gap: 24px; 
658	grid-template-columns: 24px 12px 1fr 15px; 
659	grid-template-areas:  
660		"ck . tit arrw" 
661		"desc desc desc desc" 
662		"clps clps clps clps"; 
663
664 
665.bioec-profile-demanda-main .lista-checkmark { grid-area: ck; display: flex; } 
666.bioec-profile-demanda-main .lista-checkmark i { font-size: 24px; } 
667.bioec-profile-demanda-main .lista-pic { grid-area: pic; display: flex; justify-content: center;} 
668.bioec-profile-demanda-main .lista-arrow { grid-area: arrw; } 
669 
670.bioec-profile-demanda-main .lista-titulo {  
671	grid-area: tit;  
672	display: flex;  
673	flex-direction: column; 
674	justify-content: center; 
675	 
676
677 
678.bioec-profile-demanda-main .lista-titulo h5{ 
679	margin-bottom: 0px; 
680}  
681 
682.bioec-profile-demanda-main .lista-desc { 
683grid-area: desc;  
684}  
685 
686.bioec-profile-demanda-main .lista-desc p{  
687	margin: 0; 
688
689 
690.bioec-profile-demanda-main a{ 
691	color: #5B5C61; 
692
693 
694.demanda-port{ 
695	border: 1px #BEBEBE solid;  
696	padding: 24px; 
697	display: flex; 
698	flex-direction: column; 
699	align-items: center; 
700	gap: 24px; 
701
702 
703.demanda-port p{ 
704text-align: center;	 
705	 
706
707 
708.demanda-port div{ 
709display: flex; 
710	justify-content: space-between; 
711	width: min(558px, 100%); 
712
713 
714.button-empty { 
715border: solid 1px #4ECD66; 
716padding: 8px 24px; 
717color: #333244; 
718	transition: 250ms; 
719
720 
721.button-empty:hover{ 
722	background-color: #4ECD66; 
723
724 
725.button-filled { 
726background-color: #4ECD66; 
727border: solid 1px #4ECD66; 
728padding: 8px 24px; 
729color: #333244; 
730transition: 250ms; 
731	 
732
733 
734.button-filled:hover{ 
735	background-color: transparent; 
736
737 
738.bioec-profile-demanda-main .lista-footnote {  
739 
740	display: flex; 
741	justify-content: space-between; 
742	border-top: 1px solid #E8ECEF; 
743	padding-top: 12px; 
744	font-size: 14px; 
745	font-weight: 300; 
746	gap: 15px; 
747	color: #5B5C61; 
748 
749
750.lista-collapse{ 
751display: flex; 
752flex-direction: column; 
753gap: 24px; 
754grid-area: clps; 
755padding-bottom: 24px; 
756
757 
758 .lista-details{ 
759	display: flex; 
760	justify-content: flex-start; 
761	gap: 24px; 
762
763.lista-pic img { 
764	max-height: 138px; 
765	max-width: 138px; 
766
767 
768.bioec-profile-demanda-main p{ 
769 
770
771 
772.imagemCarregadaDemanda { 
773	height: 100px; 
774	width: 100px; 
775	background-size: contain; 
776	background-position: center; 
777	background-repeat: no-repeat; 
778
779 
780 
781.ButtonAddDemanda { 
782    background: #4ECD66; 
783    border-radius: 8px; 
784    padding: 8px 24px; 
785    border: none; 
786    font-weight: 700; 
787    color: #333244; 
788    font-family: 'Roboto'; 
789    float: right; 
790    text-transform: uppercase; 
791
792.ButtonAddDemanda:hover{ 
793	color: #333244; 
794	text-decoration: none; 
795
796 
797.bioec-profile-demanda-modal label { 
798    margin: 0; 
799    cursor: default; 
800    font-size: 20px; 
801    font-weight: 700; 
802    color: #5B5C61; 
803
804 
805.bioec-profile-demanda-modal div { 
806    width: 100%; 
807
808 
809#demandaModal-l1, .demandaModal-l1 { 
810    padding: 18px 24px; 
811    display: flex; 
812    justify-content: space-between; 
813
814 
815#demandaModal-l1 img, .demandaModal-l1 img { 
816    cursor: pointer; 
817
818 
819#demandaModal-l1 h5, .demandaModal-l1 h5 { 
820   	margin: 0; 
821    font-size: 20px; 
822    font-weight: 700; 
823    color: #5B5C61; 
824
825 
826#demandaModal-l2, .demandaModal-l2 { 
827		border-top: 1px solid #E8ECEF; 
828    display: grid; 
829    grid-template-columns: 1fr 1fr; 
830    grid-template-areas: 
831        "titu nome" 
832        "fone mail" 
833        "desc desc" 
834        "imagem ." 
835
836    column-gap: 24px; 
837    row-gap: 40px; 
838    padding: 24px; 
839
840 
841#demandaModal-l2>div, .demandaModal-l2>div { 
842    display: flex; 
843    flex-direction: column; 
844    gap: 8px; 
845
846 
847#demandaTitle, .demandaTitle { 
848    grid-area: titu; 
849
850 
851#demandaName, .demandaName { 
852    grid-area: nome; 
853
854 
855#demandaTelephone, .demandaTelephone { 
856    grid-area: fone; 
857
858 
859#demandaEmail, .demandaEmail { 
860    grid-area: mail; 
861
862 
863#demandaBrand, .demandaBrand { 
864    grid-area: marca; 
865
866 
867#demandaModal-l2>#demandaImg, .demandaModal-l2>.demandaImg { 
868    grid-area: imagem; 
869    display: flex; 
870    flex-direction: column; 
871
872 
873#demandaDesc, .demandaDesc { 
874    grid-area: desc; 
875 
876
877 
878#demandaDesc input, .demandaDesc input { 
879    height: 80px; 
880
881 
882.TextImportant{ 
883    border-bottom: 1px solid #E8ECEF; 
884 		padding: 24px; 
885		color: #5B5C61;		 
886
887 
888.bioec-profile-demanda-modal input[type="text"] { 
889    border-top: none; 
890    border-left: none; 
891    border-right: none; 
892    border-bottom: 1px solid #BEBEBE; 
893    width: 100%; 
894    font-size: 16px; 
895 
896
897 
898 
899.bioec-profile-demanda-modal input[type="text"]:focus-visible { 
900    outline: none; 
901    border-bottom: 1px solid black; 
902 
903
904 
905.bioec-profile-demanda-modal .ReqLabel:before { 
906    content: "* "; 
907    color: #D90000; 
908 
909
910 
911#inputCarregarImagemDemanda, .inputCarregarImagemDemanda { 
912    display: none; 
913
914 
915#carregarImagem, .carregarImagem  { 
916    padding: 8px 24px; 
917    border: 1px solid #4ECD66; 
918    width: fit-content; 
919    transition: 250ms; 
920 
921
922 
923#carregarImagem:hover, .carregarImagem:hover { 
924    background-color: #4ECD66; 
925
926 
927.button-empty { 
928    border: solid 1px #4ECD66; 
929    padding: 8px 24px; 
930    color: #333244; 
931    transition: 250ms; 
932    font-weight: bold; 
933
934 
935.button-empty:hover { 
936    background-color: #4ECD66; 
937
938 
939.button-filled { 
940    background-color: #4ECD66; 
941    border: solid 1px #4ECD66; 
942    padding: 8px 24px; 
943    color: #333244; 
944    transition: 250ms; 
945    font-weight: bold; 
946
947 
948.button-filled:hover { 
949    background-color: transparent; 
950
951 
952#demandaModal-l3, .demandaModal-l3 { 
953    gap: 24px; 
954    display: flex; 
955    justify-content: flex-end; 
956    padding: 24px; 
957
958 
959.modal { 
960    padding: initial !important; 
961    border-radius: 4px !important; 
962    
963
964 
965.modal a.close-modal { 
966    display: none; 
967
968 
969#removerImagemDemanda, .removerImagemDemanda { 
970	background: none; 
971	border: none; 
972	outline: none; 
973	color: #5B5C61; 
974	font-size: 16px; 
975	font-weight: 900; 
976	line-height: 24px; 
977	letter-spacing: 0em; 
978	width: fit-content; 
979	margin-left: 16px; 
980
981 
982 
983@media(max-width: 964px){ 
984    .lista-pic img { 
985        width: 100%; 
986        max-height: unset; 
987        max-width: unset; 
988 
989
990
991 
992@media (max-width: 550px) { 
993    #demandaModal-l2, .demandaModal-l2 { 
994        display: flex; 
995        flex-direction: column; 
996
997 
998    #demandaModal-l3, .demandaModal-l3 { 
999        display: flex; 
1000        flex-direction: column; 
1001
1002
1003 
1004@media(max-width: 450px){ 
1005	.bioec-profile-demanda-main .lista-details{ 
1006		flex-direction: column; 
1007
1008 
1009	.lista-contato{ 
1010		text-align: center; 
1011
1012 
1013	.bioec-profile-demanda-main .lista-footnote{ 
1014	flex-direction: column; 
1015		gap: 10px; 
1016		align-items: flex-end; 
1017		text-align: right; 
1018
1019
1020 
1021@media(max-width: 992px){ 
1022	#demanda-lista-container { 
1023		padding-inline: 15px; 
1024
1025
1026 
1027.bioec-profile-demanda-main .lista-footnote .buttonsActions { 
1028  display: flex; 
1029  gap: 17px; 
1030
1031 
1032@media (max-width: 768px) { 
1033  .bioec-profile-demanda-main .lista-desc { 
1034    gap: 24px; 
1035    flex-direction: column-reverse; 
1036
1037  .bioec-profile-demanda-main .lista-footnote { 
1038    flex-direction: column; 
1039    align-items: center; 
1040
1041  .bioec-profile-demanda-main .lista-footnote > div { 
1042    text-align: center; 
1043
1044   
1045  .bioec-profile-demanda-main .lista-footnote .barra-pipe { 
1046    display: none; 
1047
1048  .bioec-profile-demanda-main .lista-footnote .lista-author { 
1049    display: flex; 
1050    gap: 4px; 
1051    justify-content: center; 
1052
1053  .bioec-profile-demanda-main .lista-footnote .buttonsActions { 
1054    width: 100%; 
1055    justify-content: space-between; 
1056
1057
1058 
1059 
1060</style> 
1061 
1062 
1063<script> 
1064 
1065 
1066 
1067</script> 
Ofertas drop zone
Viscosímetro

Determinação de viscosidade de materiais líquidos.

sem imagem

Contato

Central Analítica

gisi_analitica@cetiqt.senai.br

17/03/2023 | 0 cometários | Publicado por Debora Way
Tensiômetro

Determinação de tensão superficial de líquidos e realização de estudos de concentração micelar crítica

sem imagem

Contato

Central Analítica

gisi_analitica@cetiqt.senai.br

17/03/2023 | 0 cometários | Publicado por Debora Way
Ângulo de contato

Determinação do ângulo de contato entre um material e um solvente específico e a realização de estudos de molhabilidade de materiais diversos.

sem imagem

Contato

Central Analítica

gisi_analitica@cetiqt.senai.br

17/03/2023 | 0 cometários | Publicado por Debora Way
Potencial Zeta/tamanho de partícula nano

Determinação do potencial zeta em amostras líquidas e do tamanho de partículas de materiais na escala nano.

sem imagem

Contato

Central Analítica

gisi_analitica@cetiqt.senai.br

17/03/2023 | 0 cometários | Publicado por Debora Way
Determinação de tamanho de partícula micro

Determinação de tamanho de partícula de materiais na escala micro.

sem imagem

Contato

Central Analítica

gisi_analitica@cetiqt.senai.br

17/03/2023 | 0 cometários | Publicado por Debora Way
Analisador de Espuma

Determinação da quantidade e densidade de espuma em amostras líquidas contendo surfactantes.

sem imagem

Contato

Central Analítica

gisi_analitica@cetiqt.senai.br

17/03/2023 | 0 cometários | Publicado por Debora Way
Espectrômetro Raman

Determinação de grupos funcionais presentes na estrutura de um sólido ou líquido para fins de identificação do material em questão.

sem imagem

Contato

Central Analítica

gisi_analitica@cetiqt.senai.br

17/03/2023 | 0 cometários | Publicado por Debora Way
Espectrômetro de ultravioleta (UV-Vis)

Determinação do comprimento de onda de absorção de um material e realização de estudos quantitativos de compostos em solução.

sem imagem

Contato

Central Analítica

gisi_analitica@cetiqt.senai.br

17/03/2023 | 0 cometários | Publicado por Debora Way
Espectrotrômetro de infravermelho (FTIR)

Determinação de grupos funcionais presentes na estrutura de um sólido ou líquido para fins de identificação do material em questão.

sem imagem

Contato

Central Analítica

gisi_analitica@cetiqt.senai.br

17/03/2023 | 0 cometários | Publicado por Debora Way
Bioinformática - Montagem de genomas e predição de gene

Montagem in silico do genoma do organismo-alvo e predição de genes com auxílio de bancos de dados, formulando possível anotação primária.

sem imagem

Contato

Plataforma_Sequenciamento_ISI@cetiqt.senai.br

20/03/2023 | 0 cometários | Publicado por Debora Way
Bioinformática - Identificação e desenho de novas vias metabólicas

Estudo que compreende o mapeamento in silico de rotas bioquímicas, ferramentas genéticas e proteínas de diferentes organismos, adequação do sistema de expressão ao hospedeiro de escolha e construção da nova rota para síntese do produto de interesse.

sem imagem

Contato

P

20/03/2023 | 0 cometários | Publicado por Debora Way
Bioinformática - Bioprospecção

Triagem de novas cepas industrialmente relevantes na biodiversidade brasileira. Nossa infraestrutura com equipamentos automatizados permite o rastreio de linhagens promissoras para produtos de interesse industrial. Possuímos pipeline próprio para identificação de rotas metabólicas relevantes baseados em dados genômicos.

sem imagem

Contato

Plataforma_Sequenciamento_ISI@cetiqt.senai.br

20/03/2023 | 0 cometários | Publicado por Debora Way
Sequenciamento de DNA e RNA - Cultivo e extração de gDNA

YPD para leveduras, LB para Bactérias, BD para fungos micelares. Condições particulares a serem tratadas individualmente.

sem imagem

Contato

Plataforma_Sequenciamento_ISI@cetiqt.senai.br

20/03/2023 | 0 cometários | Publicado por Debora Way
Sequenciamento de DNA e RNA - preparo de bibliotecas genomicas

Processamento de amostras visando Iniciar a fragmentação do material genético como requisito para o sequenciamento de organismo-alvo.

sem imagem

Contato

Plataforma_Sequenciamento_ISI@cetiqt.senai.br

20/03/2023 | 0 cometários | Publicado por Debora Way
Sequenciamento de DNA e RNA - Geração de amplicons

16S para bactérias e ITS para fungos em condições padrão. Condições particulares a serem tratadas individualmente.

sem imagem

Contato

Plataforma_Sequenciamento_ISI@cetiqt.senai.br

20/03/2023 | 0 cometários | Publicado por Debora Way
Sequenciamento de DNA e RNA - Sequenciamento de genes conservados padrão

Sequenciamento 16S para bactérias (cobertura com 4 primers) e ITS para fungos (cobertura com 2 primers).

sem imagem

Contato

Plataforma_Sequenciamento_ISI@cetiqt.senai.br

20/03/2023 | 0 cometários | Publicado por Debora Way
Sequenciamento de Genomas inteiros*; Exomas; Amplicons e painéis gênicos; RNA: Regiões metiladas

Sequenciamento de alto rendimento de fragmentos curtos de DNA através do método de síntese (SBS); Output de até 120 GB de dados por corrida. *Genomas inteiros de humanos, plantas, animais, bactérias, vírus.

sem imagem

Contato

Plataforma_Sequenciamento_ISI@cetiqt.senai.br

20/03/2023 | 0 cometários | Publicado por Debora Way
Sequenciamento de DNA e RNA - Análise de expressão diferencial

Compreende o mapeamento dos RNAm transcritos em determinado organismo numa dada condição ambiental. Comparando a expressão nativa de genes com essa condição, é possível compilar diferenças de expressão em cada cenário.

sem imagem

Contato

Plataforma_Sequenciamento_ISI@cetiqt.senai.br

20/03/2023 | 0 cometários | Publicado por Debora Way
Sequenciamento de DNA e RNA - Análise de diversidade e abundância de amostras de metagenoma

A partir do sequenciamento de amostra ambiental, determina-se o conteúdo taxonômico dela.

sem imagem

Contato

Plataforma_Sequenciamento_ISI@cetiqt.senai.br

20/03/2023 | 0 cometários | Publicado por Debora Way
Sequenciamento de DNA e RNA - Determinação de variantes em uma população; Detecção de modificações no DNA (epigenética).

Sequenciamento de alto rendimento de fragmentos longos de DNA através do método de sequenciamento de molécula única em tempo real (SMRT) 100 a 350 Gigabases por célula SMRT e capacidade de processar de 1 a 16 SMRT/corrida.

sem imagem

Contato

Plataforma_Sequenciamento_ISI@cetiqt.senai.br

20/03/2023 | 0 cometários | Publicado por Debora Way
Publicações drop zone
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> autor  [in template "34764#34807#41154" at line 219, column 637]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: ${autor}  [in template "34764#34807#41154" at line 219, column 635]
----
1<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
2	<#assign UserLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")> 
3		<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
4			<#assign PortletFileRepositoryUtil = staticUtil["com.liferay.portal.kernel.portletfilerepository.PortletFileRepositoryUtil"] 
5							 JSONFactoryUtil = staticUtil["com.liferay.portal.kernel.json.JSONFactoryUtil"] 
6							 mbMessageLocalService = serviceLocator.findService("com.liferay.message.boards.service.MBMessageLocalService") 
7							 tagsLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService") 
8							 OrganizationLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.OrganizationLocalService") 
9
10				<#assign journalArticles = JournalArticleLocalService.getArticlesByStructureId(themeDisplay.getLayout().getGroupId(), 47601, 0, -1, -1, ORDER_BY_ASC) /> 
11 
12				<script src="https://unpkg.com/imask"></script> 
13 
14				<div class="bioec-profile-post-main"> 
15					<div id="post-lista-container" class="d-flex flex-column"> 
16						<#if entries?has_content> 
17							<#list entries as entry> 
18								<#assign journalArticle = JournalArticleLocalService.getLatestArticle(entry.getClassPK()) > 
19									<#assign JournalArticleID = journalArticle.getId()>										 
20										<#assign JournalArticleFrontId = journalArticle.getArticleId()> 
21											<#assign tipoDePost = "" > 
22												<#assign urlWC = ""> 
23													<#assign articleXml = journalArticle.getDocument().getRootElement()  
24																	 userIsAdmin = false 
25																	 orgId = "" 
26																	 imagem = "" 
27																	 autorId = "" 
28																	 desc = "" 
29
30														<#assign tags = tagsLocalService.getTagNames("com.liferay.journal.model.JournalArticle", journalArticle.getResourcePrimKey()?number )  
31																		 tagName = tags[0]!"" 
32																		 orgOrUser = "" 
33																		 link = "" 
34
35 
36															<#if tagName?contains("organization") && tagName != "" > 
37																<#assign orgOrUser = "org"> 
38																	<#else> 
39																		<#assign orgOrUser = "user" /> 
40																		</#if> 
41 
42																	<#assign tituloDoPost = ""> 
43 
44																		<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text33341198']")??> 
45 
46																			<#assign tituloDoPost = articleXml.selectSingleNode("dynamic-element[@field-reference='Text33341198']").getStringValue()!"" 
47																							 tituloDoPost = tituloDoPost?replace("\n\t\t", "") 
48																							 tituloDoPost = tituloDoPost?replace("\n\t", "")					 
49																							 /> 
50 
51																			</#if> 
52 
53																		<#if articleXml.selectSingleNode("dynamic-element[@field-reference='RichText67646278']")??> 
54																			<#assign desc = articleXml.selectSingleNode("dynamic-element[@field-reference='RichText67646278']").getStringValue()!"" 
55																							 desc = desc?replace("\n\t\t", "") 
56																							 desc = desc?replace("\n\t", "")						 
57																							 /> 
58																			</#if> 
59 
60																		<#if articleXml.selectSingleNode("dynamic-element[@field-reference='CampoDeTexto05403380']")??> 
61																			<#assign link = articleXml.selectSingleNode("dynamic-element[@field-reference='CampoDeTexto05403380']").getStringValue()!"" 
62																							 link = link?replace("\n\t\t", "") 
63																							 link = link?replace("\n\t", "")						 
64																							 /> 
65																			</#if> 
66 
67																		<#if articleXml.selectNodes("dynamic-element[@name='CampoDeTexto47994077']")??> 
68																			<#assign contRelacionado = articleXml.selectNodes("dynamic-element[@name='CampoDeTexto47994077']")!"" 	 
69																							 /> 
70																			</#if>																																														  
71 
72																		<#if articleXml.selectSingleNode("dynamic-element[@field-reference='CampoDeTexto12713402']")??> 
73																			<#assign imagem = articleXml.selectSingleNode("dynamic-element[@field-reference='CampoDeTexto12713402']").getStringValue()!"" 
74																							 imagem = imagem?replace("\n\t\t", "") 
75																							 imagem = imagem?replace("\n\t", "")			 
76
77																				<#--if imagem?? && imagem?trim != ""> 
78																					<#assign  
79																									 jsonObject = JSONFactoryUtil.createJSONObject(imagem)  
80																									 fileEntryId = jsonObject.getLong("fileEntryId")	 
81
82																						<#if fileEntryId != 0> 
83																							<#assign 
84																											 fileEntry = PortletFileRepositoryUtil.getPortletFileEntry(fileEntryId) 
85																											 fileEntryURL = PortletFileRepositoryUtil.getDownloadPortletFileEntryURL(themeDisplay, fileEntry,"") 
86
87																								</#if> 
88																							</#if-->		 
89																						</#if> 
90 
91																					<#assign 	categorias = AssetCategoryLocalService.getCategoryNames(entry.getClassName(), entry.getClassPK())!""> 
92																						<#if  categorias?is_sequence> 
93																							<#if  categorias?seq_contains("Notícias")> 
94																								<#assign tipoDePost = "Notícia" > 
95																									</#if> 
96																								<#if  categorias?seq_contains("Notas Técnicas e Relatórios")> 
97																									<#assign tipoDePost = "Nota Técnica e Relatório" > 
98																										</#if> 
99																									<#if  categorias?seq_contains("Artigos")> 
100																										<#assign tipoDePost = "Artigo" > 
101																											</#if> 
102																										</#if> 
103 
104 
105																									<#if articleXml.selectSingleNode("dynamic-element[@field-reference='Text26813532']")??> 
106																										<#assign  
107																														 autorId = articleXml.selectSingleNode("dynamic-element[@field-reference='Text26813532']").getStringValue()!"" 
108																														 autorId = autorId?replace("\n\t\t", "") 
109																														 autorId = autorId?replace("\n\t", "")		 
110
111																											</#if> 
112																										<#assign  
113																														 autorArticleId = "" 
114																														 commentsCount = mbMessageLocalService.getDiscussionMessagesCount(entry.getClassName(), entry.getClassPK(), 0)!"0" 
115
116																											<#if orgOrUser == "user" > 
117																												<#if autorId != "" && autorId??> 
118																													<#assign 
119																																	 autor = UserLocalService.fetchUser(autorId?number)!"" 
120																																	 autorArticleId = autor.getExpandoBridge().getAttribute("journal-article")!"0"  
121																																	 /> 
122																													<#if autor != ""> 
123																														<#assign autor = autor.getFullName()!""> 
124																															<#else> 
125																																<#assign autor = "Anônimo" > 
126																																	</#if> 
127																																<#else>  
128																																	<#assign autor = "Anônimo" > 
129																																		</#if>	 
130 
131 
132 
133																																	<#if autorArticleId != "0" && autorArticleId != "" && autor != "Anônimo"> 
134																																		<#assign autorArticle = JournalArticleLocalService.getLatestArticle(themeDisplay.getLayout().getGroupId(), autorArticleId?string) > 
135																																			<#assign urlWC = autorArticle.getUrlTitle()!""> 
136																																				</#if> 
137 
138																																			</#if> 
139 
140																																		<#if orgOrUser == "org" > 
141																																			<#assign orgId = tagName?keep_after("organization-")				 
142																																							 organization =  OrganizationLocalService.fetchOrganization(orgId?number)!""> 
143																																				<#if organization != ""> 
144																																					<#assign	orgArticleId = organization.getExpandoBridge().getAttribute("journal-article") 
145																																									 orgJournalArticle = JournalArticleLocalService.getArticle(themeDisplay.getLayout().getGroupId(),orgArticleId?c)  
146																																									 urlWC = orgJournalArticle.getUrlTitle()!"" 
147																																									 autor = organization.getName()!""> 
148																																						</#if> 
149																																					</#if> 
150 
151																																				<#if themeDisplay.isSignedIn() > 
152																																					<#if tagName?contains("organization-")> 
153																																						<#assign userIsAdmin = OrganizationLocalService.hasUserOrganization(themeDisplay.getUserId(), orgId?number)> 
154																																							<#else> 
155																																								<#if autorId != ""> 
156																																									<#if autorId?number == themeDisplay.getUserId()> 
157 
158																																										<#assign userIsAdmin = true> 
159																																											</#if> 
160																																										</#if> 
161																																									</#if> 
162 
163 
164																																								</#if> 
165 
166 
167 
168																																							<div class="post-lista-item"> 
169																																								<div class="lista-checkmark"> 
170																																									<#if categorias?seq_contains("aprovado") > <i title="Aprovado" style="color: #4ECD66" class="fa-solid fa-circle-check"></i> </#if> 
171																																									<#if categorias?seq_contains("pendente") >	<i title="Em análise" style="color: #D90000"class="fa-solid fa-spinner"></i> </#if> 
172																																									<#if categorias?seq_contains("recusado") >	<i title="Recusado" style="color: #D90000"class="fa-solid fa-exclamation-circle"></i> </#if> 
173 
174																																								</div> 
175 
176																																								<div class="lista-titulo"> 
177																																									<h5>${tipoDePost}</h5> 
178																																								</div> 
179 
180																																								<div class="lista-arrow"> 
181																																									<button style="padding: 0;" class="btn" type="button" data-toggle="collapse" data-target="#collapseID${JournalArticleID}" aria-expanded="false" aria-controls="collapseID${JournalArticleID}"> 
182																																										<i class="fa-solid fa-chevron-down"></i> 
183																																									</button> 
184																																								</div> 
185 
186																																								<div class="lista-desc"> 
187																																									<#if imagem?trim != "" > 
188																																										<div> 
189																																											<img src="${imagem}" /> 
190																																										</div> 
191																																										<#else> 
192																																											<div class="bioec_post_img_placeholder"> 
193																																												<i class="fa-solid fa-image"></i> 
194																																												sem imagem 
195																																											</div> 
196																																											</#if> 
197																																										<p>${tituloDoPost}</p> 
198																																										</div> 
199 
200																																									<div class="lista-collapse collapse" id="collapseID${JournalArticleID}"> 
201																																										<#if desc !=""> 
202																																											<div class="lista-details"> 
203																																												<div class="lista-contato"> 
204																																													${desc} 
205																																												</div> 
206																																											</div> 
207																																											</#if> 
208 
209																																										<#if categorias?seq_contains("recusado") > 
210																																											<div style="border-top: 1px solid #E8ECEF; font-weight: bold; padding-top: 24px;"> 
211																																												<p>Conteúdo Em Análise Pelo Cetiqt:</p> 
212																																												<p>Conteúdo recusado pelo CETIQT por violar as políticas de privacidade.</p> 
213																																											</div> 
214																																											</#if> 
215 
216																																										<div class="lista-footnote"> 
217																																											<div> 
218																																												<span class="post-type" style="text-transform: uppercase;" id="postInputTipodePost${JournalArticleID}" vlaue="${tipoDePost}">${tipoDePost}</span> <span class="barra-pipe"> | </span>  
219																																												<span class="lista-date">${journalArticle.getDisplayDate()?string('dd/MM/yyyy')}</span> | <span class="lista-commentNumber">${commentsCount} comentários</span> <span class="barra-pipe"> | </span> <span class="lista-author">Publicado por <a <#if urlWC != ''>href="/w/${urlWC}</#if>">${autor}</a></span> 
220																																									</div> 
221																																									<#if userIsAdmin> 
222																																										<div class="buttonsActions"> 
223																																											<div style="cursor: pointer;font-size: 16px;" data-toggle="modal" data-target="#modalEditPost${JournalArticleID}"> 
224																																												<i class="fa-solid fa-edit"></i> 
225																																											</div> 
226																																											<div style="cursor: pointer;font-size: 16px;" data-toggle="modal" data-target="#modal-post-${entry.getClassPK()}"> 
227																																												<i class="fa-solid fa-trash-can"></i> 
228																																											</div> 
229																																										</div> 
230																																										</#if>		 
231																																								</div> 
232																																							</div> 
233																																							</div> 
234 
235 
236																																						<#if userIsAdmin> 
237																																							<div style="display: none;" id="modal-post-${entry.getClassPK()}" class="modal fade" role="dialog"> 
238																																								<div class="modal-dialog modal-lg" role="document"> 
239																																									<div class="modal-content"> 
240																																										<div class="modal-header" > 
241																																											<h4 class="m-0">Remover Publicação</h4> 
242																																											<button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
243																																												<span aria-hidden="true"> 
244																																													<i class="fa-solid fa-close"></i> 
245																																												</span> 
246																																											</button>    
247																																										</div> 
248																																										<div class="modal-body"> 
249																																											<h5>Você tem certeza que deseja remover essa publicação?</h5> 
250																																											<div> 
251																																												Ao clicar em continuar, a publicação será removida do seu perfil. 
252																																											</div> 
253																																										</div> 
254																																										<div class="modal-footer justify-content-end"> 
255																																											<button class="bioec_secondary_button" data-dismiss="modal">CANCELAR</button> 
256																																											<button class="bioec_primary_button" type="button" onclick="excluirPost${JournalArticleID}()">CONTINUAR</button>  
257																																										</div> 
258																																									</div> 
259																																								</div>			 
260																																							</div> 
261 
262																																							<#-- modal edição --> 
263 
264 
265																																								<div style="display: none" id="modalEditPost${JournalArticleID}" class="modal fade bioec-profile-edit-post-modal" role="dialog"> 
266																																									<div class="modal-dialog modal-dialog-scrollable modal-lg" role="document"> 
267																																										<form class="form-group modal-content" id="formularioEditPost${JournalArticleID}"> 
268																																											<div id="editPostModal-l1${JournalArticleID}" class="editPostModal-l1 modal-header"> 
269																																												<h5>Editar ${tipoDePost}</h5> 
270																																												<button 
271																																																type="button" 
272																																																class="close" 
273																																																data-dismiss="modal" 
274																																																aria-label="Close" 
275
276																																													<span aria-hidden="true">&times;</span> 
277																																												</button> 
278																																											</div> 
279 
280																																											<div id="editPostModal-l2${JournalArticleID}" class="editPostModal-l2 modal-body"> 
281																																												<div id="editPostTitle${JournalArticleID}" class="postTitle"> 
282																																													<label class="reqLabel" for="editPostInputTitle${JournalArticleID}" 
283																																																 >Título</label 
284
285																																													<input 
286																																																 id="editPostInputTitle${JournalArticleID}" 
287																																																 class="postInputTitle" 
288																																																 type="text" 
289																																																 value="${tituloDoPost}" 
290																																																 placeholder="Inserir um título" 
291																																																 required 
292																																																 /> 
293																																												</div> 
294																																												<div id="editPostDesc${JournalArticleID}" class="postDesc"> 
295																																													<label class="reqLabel" for="editPostInputDesc${JournalArticleID}" 
296																																																 >Texto principal</label 
297
298																																													<textarea 
299																																																		id="editPostInputDesc${JournalArticleID}" 
300																																																		class="postInputDesc" 
301																																																		rows="7" 
302																																																		style="border: 1px solid #bebebe" 
303																																																		required 
304																																																		>${desc}</textarea> 
305																																												</div> 
306 
307																																												<div id="editPostImg${JournalArticleID}" class="postImg"> 
308																																													<div style="display: flex; flex-direction: column; gap: 8px"> 
309																																														<label>Imagem de ${tipoDePost}</label> 
310																																														<label 
311																																																	 class="btn carregarImagemPost" 
312																																																	 id="carregarImagemPost${JournalArticleID}" 
313																																																	 for="inputCarregarImagemPost${JournalArticleID}" 
314																																																	 style="font-size: 16px; cursor: pointer" 
315																																																	 >CARREGAR IMAGEM</label 
316
317																																														<input 
318																																																	 id="inputCarregarImagemPost${JournalArticleID}" 
319																																																	 class="inputCarregarImagemPost" 
320																																																	 type="file" 
321																																																	 accept="image/*" 
322																																																	 /> 
323																																														<input class="d-none inputPostBase64" id="inputPostBase64${JournalArticleID}" value="${imagem}" /> 
324																																														<button type="button" id="removerImagemPost${JournalArticleID}" class="removerImagemPost <#if imagem == "" || imagem?? == false> d-none </#if>"> 
325																																															<i class="fa fa-trash"></i> Remover imagem 
326																																														</button> 
327 
328																																													</div> 
329																																													<div id="imagemCarregadaPost${JournalArticleID}"  class="imagemCarregadaPost" style="background-image: url(${imagem})"></div> 
330																																												</div> 
331 
332																																												<div id="postLink${JournalArticleID}" class="postLink"> 
333																																													<label for="postInputLinkMoreInfo${JournalArticleID}">Link para saber mais</label> 
334																																													<small id="postLinkMoreInfo${JournalArticleID}" class="postLinkMoreInfo"> 
335																																														Espaço opcional para adicionar um link externo com mais 
336																																														informações sobre o assunto. 
337																																													</small> 
338																																													<input 
339																																																 id="postInputLinkMoreInfo${JournalArticleID}" 
340																																																 type="text" 
341																																																 placeholder="Inserir link" 
342																																																 aria-describedby="postLinkMoreInfo${JournalArticleID}" 
343																																																 value="${link}" 
344																																																 /> 
345																																												</div> 
346 
347																																												<div id="editContentRel${JournalArticleID}"> 
348																																													<div style="display: flex; flex-direction: column; gap: 8px"> 
349																																														<label for="conteudoRelacionadoInput${JournalArticleID}">Conteúdos relacionados</label> 
350																																														<small id="conteudoRelacionado${JournalArticleID}"> 
351																																															Espaço opcional para adicionar conteúdos relacionados de notícias ou artigos do Portal de Bioeconomia. 
352																																														</small> 
353 
354																																														<#assign containerLink = [] 
355																																																		 containerId = [] /> 
356 
357																																															<#assign i = 0 /> 
358 
359																																															<#list contRelacionado as links> 
360																																																<#assign valLink = links.getStringValue() 
361																																																				 valLink = valLink?replace("\n\t\t", "") 
362																																																				 valLink = valLink?replace("\n\t", "")		/>		 
363 
364																																																<#list journalArticles as entrada> 
365																																																	<#assign 
366																																																					 checkId = entrada.getId()?string 
367																																																					 articleXml = entrada.getDocument().getRootElement() 
368																																																					 titleInput = articleXml.selectSingleNode("dynamic-element[@field-reference='Text33341198']").getStringValue() 
369																																																					 titleInput = titleInput?replace("\n\t\t", "") 
370																																																					 titleInput = titleInput?replace("\n\t", "")		/> 
371 
372																																																	<#if valLink = checkId>																																																				 
373																																																		<#assign containerLink += [titleInput] />				 
374																																																		<#assign containerId += [checkId] />				 
375																																																		</#if> 
376																																																	</#list> 
377 
378																																																</#list>	 
379 
380																																															<#list 1..4 as j> 
381 
382																																																<input class="form-control search-select-post postName-${JournalArticleID}-${j}" list="postList-${j}" id="${containerId[i]!''}" placeholder="Selecione nova publicação" value="${containerLink[i]!''}"> 
383 
384																																																<datalist id="postList-${j}" class="contRel${JournalArticleID}"> 
385																																																	<#list journalArticles as entry> 
386																																																		<#assign 
387																																																						 postId = entry.getId()?string 
388																																																						 articleXml = entry.getDocument().getRootElement() 
389																																																						 titulo = articleXml.selectSingleNode("dynamic-element[@field-reference='Text33341198']").getStringValue() 
390																																																						 titulo = titulo?replace("\n\t\t", "") 
391																																																						 titulo = titulo?replace("\n\t", "")		 
392																																																						 categorias = AssetCategoryLocalService.getCategoryNames("com.liferay.journal.model.JournalArticle", entry.resourcePrimKey)!"" 
393																																																						 />				 
394																																																		<option value="${titulo}" id="${postId}"> 
395																																																			Categorias: ${categorias?join(", ")}		 
396																																																		</#list>  
397																																																</datalist>	 
398																																																<#assign i = i + 1 /> 
399																																																</#list> 
400 
401																																															</div> 
402																																													</div> 
403 
404 
405 
406 
407																																												</div> 
408																																												<div class="importantText"> 
409																																													<p> 
410																																														Importante: O conteúdo enviado passará por um processo interno de 
411																																														aprovação. Só então o conteúdo adicionado aparecerá no portal. 
412																																													</p> 
413																																												</div> 
414																																												<div id="editPostModal-l3${JournalArticleID}" class="editPostModal-l3 modal-footer"> 
415																																													<button class="btn button-empty" id="editPost-saveAndClose${JournalArticleID}"> 
416																																														SALVAR E FECHAR 
417																																													</button> 
418																																												</div> 
419																																												</form> 
420																																											</div> 
421																																									</div> 
422 
423																																									</#if> 
424 
425																																								<script> 
426 
427																																									<#if userIsAdmin> 
428																																										function validImageSize(base64 = "") { 
429																																										const decoded = atob(base64.substring(base64.indexOf(",") + 1)); 
430																																										const sizeMB = decoded.length / 1e6; 
431																																										console.log("MB: " + decoded.length / 1e6); 
432																																										if (sizeMB > 10) { 
433																																											Liferay.Util.openToast({ 
434																																												message: "O tamanho da imagem não deve ultrapassar 10 MB.", 
435																																												type: "danger", 
436																																												title: "", 
437																																												toastProps: { 
438																																													autoClose: 5000 
439
440																																											}); 
441																																											return false; 
442
443																																										return true; 
444
445																																									 
446																																																 
447																																									 
448																																									 
449 
450																																									function editPost${JournalArticleID}() { 
451																																										Liferay.Util.openToast({ 
452																																											message: "Enviando requisição", 
453																																											type: "info", 
454																																											title: "", 
455																																										}); 
456																																										$("#editPost-saveAndClose").prop("disabled", true); 
457																																										 
458																																										var conteudoRelNew = []; 
459																																										var totalLists = document.getElementsByClassName("contRel${JournalArticleID}"); 
460 
461																																										for (var i = 1; i < totalLists.length + 1; i++){ 
462																																											var postSel = document.getElementsByClassName("postName-${JournalArticleID}-" + i)[0]; 
463																																											var valueId = postSel.value; 
464																																											var idPost = document.querySelector("option[value='"+valueId+"']").id; 
465																																											conteudoRelNew.push(idPost);																																										 
466																																										}		 
467																																										 
468																																										 
469																																										const postData = { 
470																																											"titulo": document.getElementById("editPostInputTitle${JournalArticleID}").value, 
471																																											"conteudo": document.getElementById("editPostInputDesc${JournalArticleID}").value, 
472																																											"imagem": document.getElementById("inputPostBase64${JournalArticleID}").value, 
473																																											"link": document.getElementById("postInputLinkMoreInfo${JournalArticleID}").value, 
474																																											"conteudoRelacionado": conteudoRelNew 
475
476																																										 
477																																										fetch(Liferay.ThemeDisplay.getPortalURL() + "/o/postagem/${JournalArticleFrontId}", { 
478																																											method: 'PUT', 
479																																											"headers": { 
480																																												"x-csrf-token": Liferay.authToken, 
481																																												"Content-Type": "application/json" 
482																																											},																																									 
483																																											body: JSON.stringify(postData), 
484 
485																																										}).then((res) => { 
486																																											console.log(res); 
487																																											if (res.status == 200) { 
488																																												Liferay.Util.openToast({ 
489																																													message: 
490																																													"Publicação editada com sucesso. Após a submissão, será iniciado o processo interno de aprovação do conteúdo enviado. Só então o conteúdo submetido aparecerá no portal.", 
491																																													type: "success", 
492																																													title: "", 
493																																													toastProps: { 
494																																														autoClose: 5000, 
495
496																																												 
497																																												}); 
498																																												 
499																																												document.getElementById("formularioEditPost${JournalArticleID}").reset(); 
500																																												document.getElementById("imagemCarregadaPost${JournalArticleID}").style.backgroundImage = 
501																																													""; 
502																																												 
503																																											} else { 
504																																												Liferay.Util.openToast({ 
505																																													message: "Erro ao adicionar Artigo", 
506																																													type: "danger", 
507																																													title: "", 
508																																													toastProps: { 
509																																														autoClose: 5000, 
510
511																																												}); 
512
513 
514																																										}); 
515 
516																																										setTimeout(function () { 
517																																											location.reload(); 
518																																										}, 2000); 
519 
520
521 
522																																									 
523																																									function encodeEditImageAsURL${JournalArticleID}() { 
524																																										let file = document.getElementById("inputCarregarImagemPost${JournalArticleID}").files[0]; 
525																																										let reader = new FileReader(); 
526																																										reader.onloadend = () => { 
527																																											if (reader.result) { 
528																																												if (!validImageSize(reader.result)) return; 
529																																												try { 
530																																													const pic_container = document.getElementById("imagemCarregadaPost${JournalArticleID}"); 
531																																													const base64_input = document.getElementById("inputPostBase64${JournalArticleID}"); 
532																																													base64_input.value = reader.result; 
533																																													pic_container.style.backgroundImage = "url(" + reader.result + ")"; 
534 
535																																													const removeImageButton = document.getElementById( 
536																																														"removerImagemPost${JournalArticleID}" 
537																																													); 
538																																													removeImageButton.classList.remove("d-none"); 
539																																												} catch (error) { 
540																																													console.error(error); 
541
542
543																																										}; 
544																																										reader.readAsDataURL(file); 
545
546 
547																																									document 
548																																										.querySelector("#formularioEditPost${JournalArticleID}") 
549																																										.addEventListener("submit", (event) => { 
550																																										event.preventDefault(); 
551																																										editPost${JournalArticleID}(); 
552																																									}); 
553 
554																																									function removeImagemPost${JournalArticleID}() { 
555																																										try { 
556																																											const file_input = document.getElementById("inputCarregarImagemPost${JournalArticleID}"); 
557																																											const pic_container = document.getElementById("imagemCarregadaPost${JournalArticleID}"); 
558																																											const base64_input = document.getElementById("inputPostBase64${JournalArticleID}"); 
559																																											file_input.value = null; 
560																																											base64_input.value = ""; 
561																																											pic_container.style.backgroundImage = null; 
562 
563																																											const removeImageButton = document.getElementById("removerImagemPost${JournalArticleID}"); 
564																																											removeImageButton.classList.add("d-none"); 
565																																										} catch (error) { 
566																																											console.error(error); 
567
568
569 
570																																									document 
571																																										.getElementById("removerImagemPost${JournalArticleID}") 
572																																										.addEventListener("click", removeImagemPost${JournalArticleID}); 
573 
574 
575																																									document 
576																																										.getElementById("inputCarregarImagemPost${JournalArticleID}") 
577																																										.addEventListener("change", encodeEditImageAsURL${JournalArticleID}); 
578 
579 
580																																									function excluirPost${JournalArticleID}() { 
581																																										Liferay.Util.openToast({ 
582																																											message: "Enviando requisição", 
583																																											type: "info", 
584																																											title: "" 
585																																										}); 
586 
587																																										fetch(Liferay.ThemeDisplay.getPortalURL() + "/o/postagem/${JournalArticleFrontId}", { 
588																																											method: 'DELETE', 
589																																											"headers": { 
590																																												"x-csrf-token": Liferay.authToken, 
591																																												"Content-Type": "application/json" 
592
593																																										}) 
594																																											.then(res => { 
595																																											if(res.status == 200) { 
596																																												Liferay.Util.openToast({ 
597																																													message: "Publicação excluida com sucesso", 
598																																													type: "success", 
599																																													title: "", 
600																																													toastProps: { 
601																																														autoClose: 5000 
602
603																																												}) 
604																																												setTimeout(function(){ location.reload(); }, 2000) 
605																																											} else { 
606																																												Liferay.Util.openToast({ 
607																																													message: "Erro ao excluir publicação", 
608																																													type: "danger", 
609																																													title: "", 
610																																													toastProps: { 
611																																														autoClose: 5000 
612
613																																												}) 
614
615																																										}); 
616
617 
618 
619																																									</#if> 
620 
621 
622 
623																																									var button = document.querySelector('[data-target="#collapseID${JournalArticleID}"]'); 
624 
625																																									var chevron = button.querySelector("i.fa-solid"); 
626 
627																																									button.addEventListener("click", function () { 
628																																										if (chevron.classList.contains("fa-chevron-up")) { 
629																																											chevron.classList.remove("fa-chevron-up"); 
630																																											chevron.classList.add("fa-chevron-down"); 
631																																										} else { 
632																																											chevron.classList.remove("fa-chevron-down"); 
633																																											chevron.classList.add("fa-chevron-up"); 
634
635																																									}); 
636 
637 
638 
639 
640																																								</script> 
641 
642 
643 
644 
645																																								</#list> 
646																																							</#if> 
647																																						</div> 
648																																					</div> 
649 
650																																				<style> 
651																																					.bioec_post_img { 
652																																						overflow: hidden; 
653																																						background-size: contain; 
654																																						background-position: center; 
655																																						background-repeat: no-repeat; 
656
657 
658																																					.bioec_post_img_placeholder { 
659																																						width: 140px; 
660																																						height: 140px; 
661																																						background-color: #E8ECEF; 
662																																						display: flex; 
663																																						flex-direction: column; 
664																																						align-items: center; 
665																																						justify-content: center; 
666																																						font-size: 14px; 
667																																						color: #5B5C61; 
668
669 
670																																					.bioec_post_img_placeholder i { 
671																																						font-size: 44px; 
672
673 
674 
675																																					.pagination-items-per-page.active > a,  
676																																					.pagination-items-per-page.active > button,  
677																																					.pagination-items-per-page.show > a,  
678																																					.pagination-items-per-page.show > button, 
679																																					.page-item.active .page-link,  
680																																					.page-item.show .page-link{ 
681																																						border-color: #4ECD66; 
682																																						background-color: #4ECD66; 
683
684 
685																																					.pagination-results, 
686																																					.pagination-items-per-page > a,  
687																																					.pagination-items-per-page > button, 
688																																					.pagination-items-per-page > a:hover,  
689																																					.pagination-items-per-page > button:hover, 
690																																					.page-link{ 
691																																						color: #4ebe66; 
692
693 
694																																					.bioec-profile-post-main{ 
695																																						display: flex; 
696																																						gap: 40px; 
697																																						flex-direction: column; 
698																																						padding-bottom: 20px; 
699
700																																					.bioec-profile-post-main h5{ 
701																																						font-weight: 700; 
702
703																																					.bioec-profile-post-main h5, .bioec-profile-post-main p{ 
704																																						color: #5B5C61; 
705																																						margin-bottom: 0px; 
706																																						font-size: 16px; 
707 
708
709 
710																																					.bioec-profile-post-main #post-lista-container>div{ 
711																																						border: 1px #BEBEBE solid;  
712																																						padding: 24px 24px 0 24px; 
713																																						margin-bottom: 40px; 
714																																						display: grid; 
715																																						grid-row-gap: 24px; 
716																																						grid-template-columns: 24px 12px 1fr 15px; 
717																																						grid-template-areas:  
718																																							"ck . tit arrw" 
719																																							"desc desc desc desc" 
720																																							"clps clps clps clps"; 
721
722 
723																																					.bioec-profile-post-main .lista-checkmark { grid-area: ck; } 
724																																					.bioec-profile-post-main .lista-checkmark i { 
725																																						font-size: 24px; 
726
727 
728																																					.bioec-profile-post-main .lista-pic { grid-area: pic; display: flex; justify-content: center;} 
729																																					.bioec-profile-post-main .lista-arrow { grid-area: arrw; } 
730 
731																																					.bioec-profile-post-main .lista-titulo {  
732																																						grid-area: tit;  
733																																						display: flex;  
734																																						flex-direction: column; 
735																																						justify-content: center; 
736 
737
738 
739																																					.bioec-profile-post-main .lista-titulo h5{ 
740																																						margin-bottom: 0px; 
741																																						font-weight: 400; 
742																																						font-size: 16px; 
743																																						line-height: 150%; 
744																																						text-transform: uppercase; 
745																																					}  
746 
747																																					.bioec-profile-post-main .lista-desc { 
748																																						grid-area: desc;  
749																																						display: flex; 
750																																						align-items: center; 
751																																						gap: 46px; 
752																																					}  
753 
754																																					.bioec-profile-post-main .lista-desc > div { 
755																																						height: 138px; 
756
757 
758																																					.bioec-profile-post-main .lista-desc img { 
759																																						height: 100%; 
760
761 
762																																					.bioec-profile-post-main .lista-desc p { 
763																																						margin: 0; 
764																																						font-weight: 700; 
765																																						font-size: 16px; 
766																																						line-height: 150%; 
767
768 
769																																					.bioec-profile-post-main a{ 
770																																						color: #5B5C61; 
771
772 
773																																					.post-port{ 
774																																						border: 1px #BEBEBE solid;  
775																																						padding: 24px; 
776																																						display: flex; 
777																																						flex-direction: column; 
778																																						align-items: center; 
779																																						gap: 24px; 
780
781 
782																																					.post-port p{ 
783																																						text-align: center;	 
784 
785
786 
787																																					.post-port div{ 
788																																						display: flex; 
789																																						justify-content: space-between; 
790																																						width: min(558px, 100%); 
791
792 
793																																					.button-empty { 
794																																						border: solid 1px #4ECD66; 
795																																						padding: 8px 24px; 
796																																						color: #333244; 
797																																						transition: 250ms; 
798
799 
800																																					.button-empty:hover{ 
801																																						background-color: #4ECD66; 
802
803 
804																																					.button-filled { 
805																																						background-color: #4ECD66; 
806																																						border: solid 1px #4ECD66; 
807																																						padding: 8px 24px; 
808																																						color: #333244; 
809																																						transition: 250ms; 
810 
811
812 
813																																					.button-filled:hover{ 
814																																						background-color: transparent; 
815
816 
817																																					.bioec-profile-post-main .lista-footnote {  
818 
819																																						display: flex; 
820																																						justify-content: space-between; 
821																																						border-top: 1px solid #E8ECEF; 
822																																						padding-top: 12px; 
823																																						font-size: 14px; 
824																																						font-weight: 300; 
825																																						gap: 15px; 
826																																						color: #5B5C61; 
827 
828
829																																					.lista-collapse{ 
830																																						display: flex; 
831																																						flex-direction: column; 
832																																						gap: 24px; 
833																																						grid-area: clps; 
834																																						padding-bottom: 24px; 
835
836 
837																																					.lista-details{ 
838																																						display: flex; 
839																																						justify-content: flex-start; 
840																																						gap: 24px; 
841																																						color: #5B5C61; 
842
843																																					.lista-pic img { 
844																																						max-height: 138px; 
845																																						max-width: 138px; 
846
847 
848																																					.bioec-profile-post-main p{ 
849 
850
851 
852																																					.imagemCarregadaPost { 
853																																						height: 100px; 
854																																						width: 100px; 
855																																						background-size: contain; 
856																																						background-position: center; 
857																																						background-repeat: no-repeat; 
858
859 
860 
861																																					.ButtonAddPost { 
862																																						background: #4ECD66; 
863																																						border-radius: 8px; 
864																																						padding: 8px 24px; 
865																																						border: none; 
866																																						font-weight: 700; 
867																																						color: #333244; 
868																																						font-family: 'Roboto'; 
869																																						float: right; 
870																																						text-transform: uppercase; 
871
872																																					.ButtonAddPost:hover{ 
873																																						color: #333244; 
874																																						text-decoration: none; 
875
876 
877																																					.bioec-profile-post-modal label { 
878																																						margin: 0; 
879																																						cursor: default; 
880																																						font-size: 20px; 
881																																						font-weight: 700; 
882																																						color: #5B5C61; 
883
884 
885																																					.bioec-profile-post-modal div { 
886																																						width: 100%; 
887
888 
889																																					#postModal-l1, .postModal-l1 { 
890																																						padding: 18px 24px; 
891																																						display: flex; 
892																																						justify-content: space-between; 
893
894 
895																																					#postModal-l1 img, .postModal-l1 img { 
896																																						cursor: pointer; 
897
898 
899																																					#postModal-l1 h5, .postModal-l1 h5 { 
900																																						margin: 0; 
901																																						font-size: 20px; 
902																																						font-weight: 700; 
903																																						color: #5B5C61; 
904
905 
906																																					#postModal-l2, .postModal-l2 { 
907																																						border-top: 1px solid #E8ECEF; 
908																																						display: grid; 
909																																						grid-template-columns: 1fr 1fr; 
910																																						grid-template-areas: 
911																																							"titu nome" 
912																																							"fone mail" 
913																																							"desc desc" 
914																																							"imagem ." 
915
916																																						column-gap: 24px; 
917																																						row-gap: 40px; 
918																																						padding: 24px; 
919
920 
921																																					#postModal-l2>div, .postModal-l2>div { 
922																																						display: flex; 
923																																						flex-direction: column; 
924																																						gap: 8px; 
925
926 
927																																					#postTitle, .postTitle { 
928																																						grid-area: titu; 
929
930 
931																																					#postName, .postName { 
932																																						grid-area: nome; 
933
934 
935																																					#postTelephone, .postTelephone { 
936																																						grid-area: fone; 
937
938 
939																																					#postEmail, .postEmail { 
940																																						grid-area: mail; 
941
942 
943																																					#postBrand, .postBrand { 
944																																						grid-area: marca; 
945
946 
947																																					#postModal-l2>#postImg, .editPostModal-l2>.postImg { 
948																																						grid-area: imagem; 
949																																						display: flex; 
950																																						flex-direction: row; 
951
952 
953																																					#postDesc, .postDesc { 
954																																						grid-area: desc; 
955 
956
957 
958																																					#postDesc input, .postDesc input { 
959																																						height: 80px; 
960
961 
962																																					.TextImportant{ 
963																																						border-bottom: 1px solid #E8ECEF; 
964																																						padding: 24px; 
965																																						color: #5B5C61;		 
966
967 
968																																					.bioec-profile-post-modal input[type="text"] { 
969																																						border-top: none; 
970																																						border-left: none; 
971																																						border-right: none; 
972																																						border-bottom: 1px solid #BEBEBE; 
973																																						width: 100%; 
974																																						font-size: 16px; 
975 
976
977 
978 
979																																					.bioec-profile-post-modal input[type="text"]:focus-visible { 
980																																						outline: none; 
981																																						border-bottom: 1px solid black; 
982 
983
984 
985																																					.bioec-profile-post-modal .ReqLabel:before { 
986																																						content: "* "; 
987																																						color: #D90000; 
988 
989
990 
991																																					#inputCarregarImagemPost, .inputCarregarImagemPost { 
992																																						display: none; 
993
994 
995																																					#carregarImagem, .carregarImagem  { 
996																																						padding: 8px 24px; 
997																																						border: 1px solid #4ECD66; 
998																																						width: fit-content; 
999																																						transition: 250ms; 
1000 
1001
1002 
1003																																					#carregarImagem:hover, .carregarImagem:hover { 
1004																																						background-color: #4ECD66; 
1005
1006 
1007																																					.button-empty { 
1008																																						border: solid 1px #4ECD66; 
1009																																						padding: 8px 24px; 
1010																																						color: #333244; 
1011																																						transition: 250ms; 
1012																																						font-weight: bold; 
1013
1014 
1015																																					.button-empty:hover { 
1016																																						background-color: #4ECD66; 
1017
1018 
1019																																					.button-filled { 
1020																																						background-color: #4ECD66; 
1021																																						border: solid 1px #4ECD66; 
1022																																						padding: 8px 24px; 
1023																																						color: #333244; 
1024																																						transition: 250ms; 
1025																																						font-weight: bold; 
1026
1027 
1028																																					.button-filled:hover { 
1029																																						background-color: transparent; 
1030
1031 
1032																																					#postModal-l3, .postModal-l3 { 
1033																																						gap: 24px; 
1034																																						display: flex; 
1035																																						justify-content: flex-end; 
1036																																						padding: 24px; 
1037
1038 
1039																																					.modal { 
1040																																						padding: initial !important; 
1041																																						border-radius: 4px !important; 
1042 
1043
1044 
1045																																					.modal a.close-modal { 
1046																																						display: none; 
1047
1048 
1049																																					#removerImagemPost, .removerImagemPost { 
1050																																						background: none; 
1051																																						border: none; 
1052																																						outline: none; 
1053																																						color: #5B5C61; 
1054																																						font-size: 16px; 
1055																																						font-weight: 900; 
1056																																						line-height: 24px; 
1057																																						letter-spacing: 0em; 
1058																																						width: fit-content; 
1059																																						margin-left: 16px; 
1060
1061 
1062 
1063																																					@media(max-width: 964px){ 
1064																																						.lista-pic img { 
1065																																							width: 100%; 
1066																																							max-height: unset; 
1067																																							max-width: unset; 
1068 
1069
1070
1071 
1072																																					@media (max-width: 550px) { 
1073																																						#postModal-l2, .postModal-l2 { 
1074																																							display: flex; 
1075																																							flex-direction: column; 
1076
1077 
1078																																						#postModal-l3, .postModal-l3 { 
1079																																							display: flex; 
1080																																							flex-direction: column; 
1081
1082
1083 
1084																																					@media(max-width: 450px){ 
1085																																						.bioec-profile-post-main .lista-details{ 
1086																																							flex-direction: column; 
1087
1088 
1089																																						.lista-contato{ 
1090																																							text-align: center; 
1091
1092 
1093																																						.bioec-profile-post-main .lista-footnote{ 
1094																																							flex-direction: column; 
1095																																							gap: 10px; 
1096																																							align-items: flex-end; 
1097																																							text-align: right; 
1098
1099
1100 
1101 
1102 
1103 
1104 
1105																																					.bioec-profile-edit-post-modal label { 
1106																																						margin: 0; 
1107																																						cursor: default; 
1108																																						font-size: 20px; 
1109																																						font-weight: 700; 
1110																																						color: #5b5c61; 
1111
1112 
1113																																					.bioec-profile-edit-post-modal small { 
1114																																						font-weight: 300; 
1115																																						font-size: 14px; 
1116																																						line-height: 150%; 
1117																																						color: #5b5c61; 
1118																																						margin-top: -4px; 
1119
1120 
1121																																					.bioec-profile-edit-post-modal div { 
1122																																						/* width: 100%; */ 
1123
1124 
1125																																					#editPostModal-l1, .editPostModal-l1 { 
1126																																						padding: 18px 24px; 
1127																																						display: flex; 
1128																																						justify-content: space-between; 
1129
1130 
1131																																					#editPostModal-l1 h5, .editPostModal-l1 h5 { 
1132																																						line-height: 150%; 
1133																																						margin: 0; 
1134																																						font-size: 20px; 
1135																																						font-weight: 700; 
1136																																						color: #5b5c61; 
1137
1138 
1139																																					#editPostModal-l2, .editPostModal-l2 { 
1140																																						padding: 24px; 
1141
1142 
1143																																					#editPostModal-l2 > div, .editPostModal-l2 > div { 
1144																																						display: flex; 
1145																																						flex-direction: column; 
1146																																						gap: 8px; 
1147																																						margin-bottom: 40px; 
1148
1149 
1150																																					#editPostModal-l2 > div:last-child, .editPostModal-l2 > div:last-child { 
1151																																						margin-bottom: -4px; 
1152
1153 
1154																																					#editPostModal-l2 > #editPostImg, .editPostModal-l2 > .editPostImg { 
1155																																						/* grid-area: imagem; */ 
1156																																						display: flex; 
1157																																						flex-direction: row; 
1158
1159 
1160																																					.importantText { 
1161																																						padding: 24px; 
1162																																						color: #5b5c61; 
1163
1164 
1165																																					.importantText p { 
1166																																						margin-bottom: 0; 
1167
1168 
1169																																					.bioec-profile-edit-post-modal input[type="text"] { 
1170																																						border-top: none; 
1171																																						border-left: none; 
1172																																						border-right: none; 
1173																																						border-bottom: 1px solid #bebebe; 
1174																																						width: 100%; 
1175																																						font-size: 16px; 
1176
1177 
1178 
1179																																					.bioec-profile-edit-post-modal 
1180																																					input[type="text"]:focus-visible { 
1181																																						outline: none; 
1182																																						border-bottom: 1px solid black; 
1183
1184 
1185																																					.bioec-profile-edit-post-modal .reqLabel:before { 
1186																																						content: "* "; 
1187																																						color: #d90000; 
1188
1189 
1190																																					#imagemCarregadaPost, .imagemCarregadaPost { 
1191																																						height: 110px; 
1192																																						width: 110px; 
1193																																						margin-left: 3rem; 
1194																																						background-size: contain; 
1195																																						background-position: center; 
1196																																						background-repeat: no-repeat; 
1197
1198 
1199																																					#removerImagemPost, .removerImagemPost { 
1200																																						background: none; 
1201																																						cursor: pointer; 
1202																																						border: none; 
1203																																						outline: none; 
1204																																						color: #5b5c61; 
1205																																						font-size: 16px; 
1206																																						font-weight: 900; 
1207																																						line-height: 24px; 
1208																																						letter-spacing: 0em; 
1209																																						width: fit-content; 
1210																																						margin-left: 16px; 
1211
1212 
1213																																					#inputCarregarImagemPost, .inputCarregarImagemPost { 
1214																																						display: none; 
1215
1216 
1217																																					#carregarImagemPost, .carregarImagemPost { 
1218																																						padding: 8px 24px; 
1219																																						border: 1px solid #4ecd66; 
1220																																						width: fit-content; 
1221																																						transition: 250ms; 
1222																																						border-radius: 8px; 
1223
1224 
1225																																					#carregarImagemPost:hover, .carregarImagemPost:hover { 
1226																																						background-color: #4ecd66; 
1227
1228 
1229																																					.button-empty { 
1230																																						border: solid 1px #4ecd66; 
1231																																						padding: 8px 24px; 
1232																																						color: #333244; 
1233																																						transition: 250ms; 
1234																																						font-weight: bold; 
1235
1236 
1237																																					.button-empty:hover { 
1238																																						background-color: #4ecd66; 
1239
1240 
1241																																					.button-filled { 
1242																																						background-color: #4ecd66; 
1243																																						border: solid 1px #4ecd66; 
1244																																						padding: 8px 24px; 
1245																																						color: #333244; 
1246																																						transition: 250ms; 
1247																																						font-weight: bold; 
1248
1249 
1250																																					.button-filled:hover { 
1251																																						background-color: transparent; 
1252
1253 
1254																																					#editPostModal-l3, .editPostModal-l3 { 
1255																																						gap: 24px; 
1256																																						display: flex; 
1257																																						justify-content: flex-end; 
1258																																						padding: 15px; 
1259
1260 
1261																																					#editPostModal-l3 button, .editPostModal-l3 button { 
1262																																						text-transform: uppercase; 
1263																																						border-radius: 8px; 
1264
1265 
1266																																					@media (max-width: 550px) { 
1267																																						#editPostModal-l2, .editPostModal-l2  { 
1268																																							display: flex; 
1269																																							flex-direction: column; 
1270
1271 
1272																																						#editPostModal-l3, .editPostModal-l3 { 
1273																																							display: flex; 
1274																																							flex-direction: column; 
1275
1276
1277 
1278																																					/* .modal { 
1279																																					padding: initial !important; 
1280																																					border-radius: 4px !important; 
1281																																					height: initial !important; 
1282
1283 
1284																																					.modal a.close-modal { 
1285																																					display: none; 
1286																																					} */ 
1287 
1288																																					/* final */ 
1289																																					.bioec-profile-post-main .lista-footnote .buttonsActions { 
1290																																						display: flex; 
1291																																						gap: 17px; 
1292
1293 
1294																																					@media (max-width: 992px) { 
1295																																						#post-lista-container { 
1296																																							padding-inline: 15px; 
1297
1298
1299 
1300																																					@media (max-width: 768px) { 
1301																																						.bioec-profile-post-main .lista-desc { 
1302																																							gap: 24px; 
1303																																							flex-direction: column-reverse; 
1304
1305																																						.bioec-profile-post-main .lista-footnote { 
1306																																							flex-direction: column; 
1307																																							align-items: center; 
1308
1309																																						.bioec-profile-post-main .lista-footnote > div { 
1310																																							text-align: center; 
1311
1312																																						.bioec-profile-post-main .lista-footnote .post-type, 
1313																																						.bioec-profile-post-main .lista-footnote .barra-pipe { 
1314																																							display: none; 
1315
1316																																						.bioec-profile-post-main .lista-footnote .lista-author { 
1317																																							display: flex; 
1318																																							gap: 4px; 
1319																																							justify-content: center; 
1320
1321																																						.bioec-profile-post-main .lista-footnote .buttonsActions { 
1322																																							width: 100%; 
1323																																							justify-content: space-between; 
1324
1325
1326 
1327 
1328																																				</style> 
  • Sobre
  • Infraestruturas
  • Demandas
  • Ofertas
  • Publicações
Ordenar
Categoria
Marcador