Meu Perfil
Meu Perfil
Título da Página
Sobre drop zone
Nenhuma descrição foi adicionada neste perfil ainda
Nenhuma tema ou setor foi adicionado neste perfil ainda
Organizações drop zone
Nenhuma organização foi cadastrada neste perfil ainda
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">×</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">×</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
Â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
gisi_analitica@cetiqt.senai.br
17/03/2023 | 0 cometários
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
gisi_analitica@cetiqt.senai.br
17/03/2023 | 0 cometários
Viscosímetro
Determinação de viscosidade de materiais líquidos.
sem imagem
Contato
gisi_analitica@cetiqt.senai.br
17/03/2023 | 0 cometários
Reômetro
Realizar estudos reológicos diversos com amostras líquidas, pastas, cremes, semi-sólidos etc.
sem imagem
Contato
gisi_analitica@cetiqt.senai.br
17/03/2023 | 0 cometários
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">×</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>