X
O uso deste material é autorizado apenas para fins editoriais.
Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> tagCategoryList [in template "20099#20135#14588694" at line 782, column 33]
----
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: #list tagCategoryList as tag [in template "20099#20135#14588694" in macro "addSchemaMarkup" at line 782, column 26]
- Reached through: @liferay_util["html-top"] [in template "20099#20135#14588694" in macro "addSchemaMarkup" at line 757, column 7]
- Reached through: @addSchemaMarkup newsInfo [in template "20099#20135#14588694" at line 882, column 5]
----
1<#-- Conteúdo Web -> Templates: Site de Crise - Funções gerais-->
2<#include "${templatesPath}/1975398" />
3
4<#function getNodesByLabel fieldList parentNode label>
5 <#assign result = []/>
6 <#attempt>
7 <#assign groupId = getIdFromFieldName(fieldList, label) />
8 <#assign xSeletorCaminho = saxReaderUtil.createXPath("dynamic-element[@name='${groupId}' ]") />
9 <#assign result = xSeletorCaminho.selectNodes(parentNode) />
10 <#return result />
11 <#recover>
12 <#return result />
13 </#attempt>
14</#function>
15
16<#function findVocabulary vocabularyName vocabularies>
17 <#assign vocabularyNameLowerCase = vocabularyName?lower_case>
18 <#list vocabularies as vocabulary>
19 <#if vocabulary.name?lower_case == vocabularyNameLowerCase>
20 <#return vocabulary>
21 </#if>
22 </#list>
23 <#return {}>
24</#function>
25
26<#-- ############# Conteúdo Web -> Templates: Site de Crise - Include de templates #################################### -->
27<#function getSiteUrl>
28 <#assign portalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"]>
29 <#if layout?? && layout?has_content>
30 <#return portalUtil.getLayoutFriendlyURL(layout, themeDisplay)?replace(layout.getFriendlyURL(), "")>
31 </#if>
32 <#return portalUtil.getLayoutFriendlyURL(layout, themeDisplay)>
33</#function>
34
35<#function getSiteName>
36 <#return layout.getGroup().getDescriptiveName(locale)>
37</#function>
38
39<#function mountUrlToPage targetPage>
40 <#return getSiteUrl()+ "/" + targetPage>
41</#function>
42<#-- ################################################################################################################## -->
43
44
45<#assign
46journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
47assetVocabularyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")
48categoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")
49vocabularies = assetVocabularyService.getGroupVocabularies(groupId)
50tagsLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetTagLocalService")
51tagVocabulary = findVocabulary("Tag", vocabularies)
52flagVocabulary = findVocabulary("Flag", vocabularies)
53tagCategoryTitles = extractVocabularyTitles(tagVocabulary)
54flagCategoryTitles = extractVocabularyTitles(flagVocabulary)
55assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")
56fileEntryService = staticUtil["com.liferay.document.library.kernel.service.DLFileEntryLocalServiceUtil"]
57layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")
58assetCategoryPropService = serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService")
59/>
60
61
62 <#function getAssetEntryFromRequest assetEntryLocalService>
63 <#assign assetEntry = "">
64 <#attempt >
65 <#assign infoItemReference = Request.INFO_ITEM_DETAILS.getInfoItemReference() />
66 <#assign className = infoItemReference.getClassName() />
67 <#assign infoItem = Request.INFO_ITEM />
68 <#assign resourcePrimKey = infoItem.resourcePrimKey />
69 <#assign assetEntry = assetEntryLocalService.getEntry(className, resourcePrimKey) />
70 <#return assetEntry>
71 <#recover >
72 <#return "">
73 </#attempt>
74 <#return "">
75</#function>
76
77<#assign newsJournalArticle = "">
78<#assign assetEntry = getAssetEntryFromRequest(assetEntryLocalService)>
79<#if assetEntry?? && assetEntry?has_content>
80 <#assign newsJournalArticle = journalArticleService.fetchLatestArticle(assetEntry.classPK)/>
81</#if>
82
83<#function getSingleNode name root>
84 <#attempt>
85 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='${name}']/dynamic-content[@language-id='${locale}']") />
86 <#return xPathSelector.selectSingleNode( root ) />
87 <#recover>
88 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='${name}']") />
89 <#return xPathSelector.selectSingleNode( root ) />
90 </#attempt>
91</#function>
92
93
94<#function getFileFromXML fieldId parentNode fileEntryService>
95
96 <#assign info = {"url": "", "alt": "", "mimeType" :"", "name": "", "fileEntryId": "", "title": ""}>
97
98 <#assign jsonString = getSingleNodeString(fieldId, parentNode)/>
99 <#if !jsonString?? || !jsonString?has_content>
100 <#return info/>
101 </#if>
102
103 <#assign json = jsonFactoryUtil.createJSONObject(jsonString) />
104 <#if !json?? || !json?has_content>
105 <#return info/>
106 </#if>
107
108 <#attempt >
109 <#assign fileId = "">
110 <#if json.fileEntryId??>
111 <#assign fileId = json.fileEntryId>
112 <#else >
113 <#if json.classPK??>
114 <#assign fileId = json.classPK>
115 </#if>
116 </#if>
117 <#if !fileId?has_content>
118 <#return info>
119 </#if>
120 <#assign fileEntry = fileEntryService.fetchDLFileEntry(fileId?number) />
121 <#if !fileEntry?? >
122 <#return info/>
123 </#if>
124 <#recover >
125 <#return info/>
126 </#attempt>
127
128 <#assign alt = "">
129 <#if json.description??>
130 <#assign alt = json.description?trim>
131 </#if>
132
133 <#assign info = {"url": "/documents/" + json.groupId + "/0/" + fileEntry.getTitle() + "/" + json.uuid,
134 "alt": alt,
135 "mimeType" : fileEntry.getMimeType(),
136 "fileEntryId": fileId,
137 "name" : (json.name)!"",
138 "title" : (json.title)!""
139 }>
140 <#return info/>
141</#function>
142
143<#assign editorialVocabulary = findVocabulary("Editorial", vocabularies)/>
144
145
146<#assign EMPTY_FILE_INFO = {"url": "",
147"alt": "",
148"fileEntryId": "",
149"mimetype": "",
150"fileExtension": "",
151"restResponse": {},
152"dateCreated": "",
153"dateModified": "",
154"adaptedImages" : ""} />
155
156<#function extractFileInfoFromJsonResponse jsonResponse>
157 <#assign info = EMPTY_FILE_INFO />
158 <#if !jsonResponse?? || !jsonResponse?has_content || !jsonResponse.fileName??>
159 <#return info/>
160 </#if>
161
162 <#assign fileUrl = themeDisplay.getPortalURL() + jsonResponse.contentUrl/>
163 <#assign adaptedImages = [] />
164 <#if jsonResponse["adaptedImages"]??>
165 <#assign adaptedImages = jsonResponse.adaptedImages />
166 </#if>
167
168 <#assign info = {"url": fileUrl,
169 "alt": jsonResponse.description,
170 "fileEntryId": jsonResponse.id,
171 "mimetype": jsonResponse.encodingFormat,
172 "fileExtension": jsonResponse.fileExtension,
173 "restResponse": jsonResponse,
174 "dateCreated": jsonResponse.dateCreated,
175 "dateModified": jsonResponse.dateModified,
176 "adaptedImages": adaptedImages
177 }>
178 <#return info/>
179</#function>
180
181<#function getFileFromRest fileEntryId>
182 <#return restClient.get("/headless-delivery/v1.0/documents/${fileEntryId}") />
183</#function>
184
185<#function getSmallestAdaptedMedia imageJson>
186 <#if !imageJson?? || !imageJson["adaptedImageList"]?? || !imageJson.adaptedImageList?is_sequence>
187 <#return ""/>
188 </#if>
189
190 <#assign mediaWidth = 300 />
191 <#list adaptedImageList.adaptedImageList?filter(f -> f.width == mediaWidth) as adaptedImage>
192 <#return themeDisplay.getPortalURL() + "/documents/" + groupId + "/" + adaptedImage.externalReferenceCode + "?t=" + .now?string["HHmmssSSS"] />
193 </#list>
194
195 <#return "" />
196</#function>
197
198<#function getBiggestAdaptedMedia adaptedImageList>
199 <#if !adaptedImageList?? || !adaptedImageList?is_sequence>
200 <#return ""/>
201 </#if>
202
203 <#assign mediaWidth = -1 />
204 <#assign url = "" />
205 <#list adaptedImageList as adaptedImage>
206 <#if adaptedImage.width?? && adaptedImage.width?number gt mediaWidth && adaptedImage.contentUrl??>
207 <#assign mediaWidth = adaptedImage.width?number />
208 <#assign url = adaptedImage.contentUrl />
209 </#if>
210 </#list>
211 <#return url />
212</#function>
213
214<#function getFileFromJsonItem fileJson>
215 <#assign info = EMPTY_FILE_INFO />
216 <#if !fileJson?has_content>
217 <#return info/>
218 </#if>
219
220 <#assign fileData = ""/>
221 <#if fileJson.document??>
222 <#assign fileData = fileJson.document />
223 <#elseif fileJson.image??>
224 <#assign fileData = fileJson.image />
225 </#if>
226
227 <#if !fileData?has_content >
228 <#return info/>
229 </#if>
230
231 <#assign fileEntryId = fileData.id />
232 <#return getFileFromRest(fileEntryId)/>
233</#function>
234
235<#function formatDate date>
236 <#if !date ?? || !date?has_content>
237 <#return "">
238 </#if>
239 <#if locale == "pt_BR">
240 <#return date?datetime?string("dd/MM/yyyy")>
241 <#else>
242 <#return date?datetime?string("yyyy.MM.dd")>
243 </#if>
244</#function>
245
246<#if newsJournalArticle?? && newsJournalArticle?has_content>
247
248 <div class="breadcrumb-breakpoint breakpoint">
249 <div class="breadcrumb-col col-3-11 md-col-1-8 sm-col-1-4">
250 <#assign homeURL = "/" />
251
252 <#if currentURL?contains('webserver')>
253 <#assign homeURL = "/web/agencia/" />
254 </#if>
255
256 <a href="${homeURL}" class="breadcrumb-page text previous-page paragraph-micro-regular" tabindex="0">
257 <span class="breadcrumb-text-truncate" original-text="Home">Home</span>
258 <div class="icon"></div>
259 </a>
260
261 <#assign breadcrumbEditorialCategory = getFirstCategoryObjectOfVocabulary(assetEntry, editorialVocabulary) />
262 <#if breadcrumbEditorialCategory?? && breadcrumbEditorialCategory?has_content>
263
264
265 <#if assetCategoryPropService.fetchCategoryProperty(breadcrumbEditorialCategory.getCategoryId(),"url_amigavel_pagina_publica")??>
266 <#assign property = assetCategoryPropService.fetchCategoryProperty(breadcrumbEditorialCategory.getCategoryId(),"url_amigavel_pagina_publica") />
267 <#assign propertyValue = property.getValue() />
268 <#assign categoryURL = homeURL + propertyValue />
269 <#else>
270 <#assign categoryURL = homeURL + "listar-editoria?category=" + breadcrumbEditorialCategory.getCategoryId()/>
271 </#if>
272
273 <a href="${categoryURL}" class="breadcrumb-page text previous-page paragraph-micro-regular"
274 tabindex="0">
275 <span class="breadcrumb-text-truncate"
276 original-text="${breadcrumbEditorialCategory.getTitle(locale)}">${breadcrumbEditorialCategory.getTitle(locale)}</span>
277 <div class="icon"></div>
278 </a>
279 </#if>
280
281 <span original-text="${newsJournalArticle.getTitle(locale)}"
282 class="breadcrumb-page text active-page active paragraph-micro-bold">${newsJournalArticle.getTitle(locale)}</span>
283 </div>
284 </div>
285
286 <div class="ptb-news__read-news">
287 <div class="ptb-news__read-news-post ">
288 <div class="ptb-news__read-content">
289 <#assign
290 ddmStructure = newsJournalArticle.getDDMStructure()
291 fieldList = getFieldListByStructure(ddmStructure)
292 xmlArticle = newsJournalArticle.getDocument().getRootElement()
293 >
294
295 <#assign
296 <#-- Título principal da notícia -->
297 mainHeadlineOfTheNews = newsJournalArticle.getTitle(locale, true)
298 <#-- Título de destaque da notícia -->
299 featuredNewsHeadline = extractFeaturedNewsHeadline(fieldList, xmlArticle)
300 <#-- Sumário da notícia -->
301 newsSummary = extractNewsSummary(fieldList, xmlArticle)
302 <#-- Data de criação da notícia -->
303 createDate = newsJournalArticle.getCreateDate()
304 >
305 <#-- Data de publicação da notícia -->
306 <#if extractPublishDate(newsJournalArticle)?has_content >
307 <#assign lastPublishDate = extractPublishDate(newsJournalArticle) >
308 <#else>
309 <#assign lastPublishDate = newsJournalArticle.getCreateDate() >
310 </#if >
311
312 <#-- Flag da notícia ---------------------------------------------------------------------------------->
313 <#assign flag = getFirstCategoryTitle(newsJournalArticle, flagCategoryTitles, categoryLocalService)>
314
315 <#-- Url amigável da notícia para visualização em DisplayPage ----------------------------------------->
316 <#assign newsJournalArticleFriendlyUrl = themeDisplay.getPortalURL() + themeDisplay.getPathFriendlyURLPublic() + layout.getGroup().friendlyURL + "/w/" + newsJournalArticle.getUrlTitle()>
317 <#assign newsJournalArticleFriendlyUrl = "/">
318 <#if themeDisplay.getPortalURL()?contains("webserver")>
319 <#assign newsJournalArticleFriendlyUrl = themeDisplay.getPortalURL() + themeDisplay.getPathFriendlyURLPublic() + layout.getGroup().friendlyURL + "/w/" + newsJournalArticle.getUrlTitle()>
320 <#else>
321 <#assign newsJournalArticleFriendlyUrl = themeDisplay.getPortalURL() + "/w/" + newsJournalArticle.getUrlTitle()>
322 </#if>
323
324 <#-- Conteúdo da notícia ------------------------------------------------------------------------------>
325 <#assign newsContent = getFieldValue(fieldList, xmlArticle, "Corpo da notícia")>
326
327 <#-- Início Vídeo do youtube no corpo da notícia -->
328 <#-- structuredContentId refente ao webcontent da display page -->
329 <#assign structuredContentId = newsJournalArticle.getResourcePrimKey()/>
330
331 <#assign ytVideoId = ""/>
332 <#assign ytVideoIdentificador = ""/>
333 <#assign ytVideoTitle = ""/>
334 <#assign ytVideoDescription = ""/>
335 <#assign ytVideoUploadDate = ""/>
336 <#assign ytVideoDuration = ""/>
337
338 <#assign videoSchemaMarkupList = []/>
339
340 <#-- Obtém os dados do webcontent via rest api -->
341 <#assign newsStructuredContent = restClient.get("/headless-delivery/v1.0/structured-contents/${structuredContentId}")/>
342 <#if newsStructuredContent?has_content && newsStructuredContent.contentFields??>
343 <#if newsStructuredContent.contentFields?size gt 0>
344 <#list newsStructuredContent.contentFields as field>
345 <#if field.label == "Gestão de vídeos do Youtube">
346 <#if field.nestedContentFields?size gt 0>
347 <#list field.nestedContentFields as ytVideoField>
348 <#if ytVideoField.label == "Id do vídeo do Youtube">
349 <#assign ytVideoId = ytVideoField.contentFieldValue.data/>
350 </#if>
351 <#if ytVideoField.label == "Identificador do vídeo no corpo da notícia">
352 <#assign ytVideoIdentificador = ytVideoField.contentFieldValue.data/>
353 </#if>
354 <#assign ytIframe = '
355 <div class="yt-video-container" onclick="loadVideo(this, \'${ytVideoId}\')">
356 <img class="yt-thumb-img" alt="Thumbnail do vídeo do youtube" src="https://img.youtube.com/vi/${ytVideoId}/hqdefault.jpg"/>
357 <div class="thumb-play-button">
358 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
359 <path d="M0 16C0 7.16344 7.16344 0 16 0C24.8366 0 32 7.16344 32 16C32 24.8366 24.8366 32 16 32C7.16344 32 0 24.8366 0 16Z" fill="white" fill-opacity="0.8"/>
360 <path d="M22.2563 15.5744L13.2625 10.0744C13.1868 10.0277 13.1 10.0021 13.0111 10.0001C12.9221 9.99816 12.8343 10.02 12.7566 10.0633C12.6789 10.1066 12.6141 10.1698 12.569 10.2465C12.5239 10.3232 12.5001 10.4105 12.5 10.4994V21.4994C12.5001 21.5884 12.5239 21.6757 12.569 21.7524C12.6141 21.8291 12.6789 21.8923 12.7566 21.9356C12.8343 21.9789 12.9221 22.0007 13.0111 21.9988C13.1 21.9968 13.1868 21.9712 13.2625 21.9244L22.2563 16.4244C22.3301 16.3808 22.3913 16.3186 22.4338 16.2441C22.4763 16.1696 22.4987 16.0852 22.4987 15.9994C22.4987 15.9137 22.4763 15.8293 22.4338 15.7548C22.3913 15.6803 22.3301 15.6181 22.2563 15.5744Z" fill="#008542"/>
361 </svg>
362 </div>
363 </div>
364 '/>
365 <#assign newsContent = newsContent?replace("<p>#[${ytVideoIdentificador}]</p>", ytIframe) />
366
367 <#if ytVideoField.label == "Título do vídeo">
368 <#assign ytVideoTitle = ytVideoField.contentFieldValue.data/>
369 </#if>
370 <#if ytVideoField.label == "Descrição do vídeo">
371 <#assign ytVideoDescription = ytVideoField.contentFieldValue.data/>
372 </#if>
373 <#if ytVideoField.label == "Data de publicação/upload do vídeo">
374 <#assign ytVideoUploadDate = ytVideoField.contentFieldValue.data/>
375 </#if>
376 <#if ytVideoField.label == "Duração do vídeo">
377 <#assign ytVideoDuration = ytVideoField.contentFieldValue.data/>
378 </#if>
379 </#list>
380 <#assign videoSchemaMarkupList += [{
381 "id": ytVideoId,
382 "name": ytVideoTitle,
383 "description": ytVideoDescription,
384 "uploadDate": (ytVideoUploadDate!)?has_content?then(ytVideoUploadDate, ""),
385 "thumbnailUrl": "https://img.youtube.com/vi/${ytVideoId}/hqdefault.jpg",
386 "contentUrl": "https://www.youtube.com/watch?v=${ytVideoId}",
387 "embedUrl": "https://www.youtube.com/embed/${ytVideoId}",
388 "duration": ytVideoDuration
389 }] />
390 </#if>
391 </#if>
392 </#list>
393 </#if>
394 </#if>
395
396 <script>
397 function loadVideo(container, ytVideoId) {
398 const iframe = document.createElement("iframe");
399 iframe.src = "https://www.youtube.com/embed/" + ytVideoId + "?rel=0&modestbranding=1&showinfo=0&autoplay=1";
400 iframe.frameBorder = "0";
401 iframe.allow = "autoplay; encrypted-media";
402 iframe.style = "position:absolute; top:0; left:0; width:100%; height:100%;";
403
404 container.innerHTML = ""; // Remove imagem e botão
405 container.appendChild(iframe); // Insere o iframe
406 }
407 </script>
408 <style>
409 .yt-video-container {
410 position: relative;
411 padding-top: 56.25%;
412 overflow: hidden;
413 cursor: pointer;
414 border-radius: var(--border-radius-lg, 16px);
415 margin: var(--space-md, 24px) 0;
416 }
417
418 .yt-video-container img {
419 position: absolute;
420 top: 0px;
421 left: 0px;
422 object-fit: cover;
423 max-width: none !important;
424 max-height: none !important;
425 }
426
427 .yt-video-container .thumb-play-button {
428 position: absolute;
429 top: 50%;
430 left: 50%;
431 transform: translate(-50%, -50%);
432 border-radius: 50%;
433 }
434 </style>
435 <#-- Fim Vídeo do youtube no corpo da notícia -->
436
437 <#-- Seção do áudio para o conteúdo da notícia -------------------------------------------------------->
438 <#assign audios = []
439 audioIdentifierFieldSetList = getNodes("Fieldset65862311", xmlArticle)
440 >
441 <#list audioIdentifierFieldSetList as audioIdentifierFieldSet>
442 <#assign
443 <#-- Grupo com as informações de url e legenda do áudio -->
444 audioInfoFieldSet = getGroupNode("Fieldset24035689",audioIdentifierFieldSet)>
445 <#assign
446 externalAudioUrl = getFieldValue(fieldList, audioInfoFieldSet, "URL externa do áudio")
447 internalAudioUrl = getFileFromXML("DocumentLibrary24170668", audioInfoFieldSet, fileEntryService)
448 audioLegend = getFieldValue(fieldList, audioInfoFieldSet, "Legenda do áudio")>
449
450 <#if externalAudioUrl?has_content || internalAudioUrl.url?has_content >
451 <#assign audios += [{
452 "id": getFieldValue(fieldList, audioIdentifierFieldSet, "Identificador de Áudio"),
453 "externalUrl" : externalAudioUrl,
454 "internalUrl" : internalAudioUrl,
455 "legend" : audioLegend
456 }]>
457 </#if>
458 </#list>
459
460
461 <#-- Seção de vídeo para o conteúdo da notícia -------------------------------------------------------->
462 <#assign videos = []
463 videoIdentifierFieldSetList = getNodes("Fieldset24460782", xmlArticle)
464 >
465 <#list videoIdentifierFieldSetList as videoIdentifierFieldSet>
466 <#assign
467 <#-- Grupo com as informações de url e legenda do áudio -->
468 videoInfoFieldSet = getGroupNode("Fieldset51040010",videoIdentifierFieldSet)
469
470 videos += [{
471 "id": getFieldValue(fieldList,videoIdentifierFieldSet, "Identificador de Vídeo"),
472 "youtubeID" : getFieldValue(fieldList, videoInfoFieldSet, "ID do vídeo do YouTube"),
473 "internalUrl" : getFileFromXML("DocumentLibrary15265409", videoInfoFieldSet, fileEntryService),
474 "legend" : getFieldValue(fieldList, videoInfoFieldSet, "Legenda do vídeo")
475 }]
476 >
477 </#list>
478
479
480 <#-- Seção de links para o conteúdo da notícia -------------------------------------------------------->
481 <#assign
482 links = []
483 linksFieldSetList = getNodes("Fieldset37770113", xmlArticle)
484 >
485 <#list linksFieldSetList as linksFieldSet>
486 <#assign linkFieldSetList = getNodes("Fieldset10524367", linksFieldSet)>
487
488 <#list linkFieldSetList as linkFieldSet>
489 <#assign
490 linkId = getFieldValue(fieldList, linkFieldSet, "Identificador do link")
491
492 <#-- Grupo com as informações de url e legenda do áudio -->
493 linkInfoFieldSeet = getGroupNode("Fieldset86037074", linkFieldSet)
494
495 iconType = getFieldValue(fieldList, linkInfoFieldSeet, "Ícone do link")
496 links += [{
497 "id": linkId,
498 "externalLink" : getFieldValue(fieldList, linkInfoFieldSeet, "Link externo"),
499 "pageLink" : getPageLayoutLinkFromXML("LinkToLayout77941175", linkInfoFieldSeet, layoutLocalService),
500 "file" : getFileFromXML("DocumentLibrary34820760", linkInfoFieldSeet, fileEntryService),
501 "title" : getFieldValue(fieldList, linkInfoFieldSeet, "Título do link"),
502 "iconType" : iconType
503 }]
504 >
505 </#list>
506 </#list>
507
508
509 <#assign mediaGroupList = getNodes(getIdFromFieldName(fieldList, "Galeria de multimídia"), xmlArticle) />
510 <#assign galleryItems = []/>
511
512
513 <#list mediaGroupList as mediaGroup >
514 <#assign nodes = getNodes(getIdFromFieldName(fieldList, "Selecione uma imagem") , mediaGroup) />
515 <#list nodes as node>
516 <#assign medJson = jsonFactoryUtil.createJSONObject(node.getStringValue()) />
517 <#if medJson?has_content && medJson["fileEntryId"]??>
518 <#assign cardTitle = ""/>
519 <#assign subtitle = ""/>
520 <#assign author = ""/>
521 <#assign thumbnailImage = {}/>
522 <#assign originalFile = {} />
523
524 <#assign restResponse = restClient.get("/headless-delivery/v1.0/documents/${medJson.fileEntryId}") />
525 <#if restResponse?has_content>
526 <#assign originalFile = restResponse />
527
528 <#if restResponse.documentType?? && restResponse.documentType.contentFields?size gt 0>
529 <#list restResponse.documentType.contentFields as item >
530 <#if item.label == "Legenda" && item.dataType == "string" && item.contentFieldValue?? && item.contentFieldValue.data??>
531 <#assign subtitle = item.contentFieldValue.data />
532 <#assign cardTitle = item.contentFieldValue.data />
533 </#if>
534 <#if item.label == "Autor" && item.dataType == "string" && item.contentFieldValue?? && item.contentFieldValue.data??>
535 <#assign author = item.contentFieldValue.data />
536 </#if>
537 <#if item.label == "Imagem de thumbnail" && item.dataType == "image" && item.contentFieldValue?? && item.contentFieldValue.image??>
538 <#assign thumbnailImage = restClient.get("/headless-delivery/v1.0/documents/${item.contentFieldValue.image.id}") />
539 </#if>
540 </#list>
541 </#if>
542 </#if>
543
544 <#if originalFile["contentUrl"]??>
545 <#setting datetime_format="iso">
546 <#assign galleryItems += [{"cardTitle": cardTitle,
547 "displayDate" : formatDate(originalFile.dateCreated?datetime),
548 "createDate": originalFile.dateCreated?datetime,
549 "subtitle" : subtitle,
550 "author": author,
551 "thumbnailImage": thumbnailImage,
552 "originalFile": originalFile
553 }] >
554 </#if>
555 </#if>
556 </#list>
557
558
559 <#assign nodes = getNodes(getIdFromFieldName(fieldList, "Selecione o Conteúdo Web da mídia") , mediaGroup) />
560 <#list nodes as node>
561 <#attempt>
562 <#assign medJson = jsonFactoryUtil.createJSONObject(node.getStringValue()) />
563 <#if medJson.classPK??>
564 <#assign medianewsJournalArticle = journalArticleService.fetchLatestArticle(medJson.classPK?number)/>
565 <#assign mediaDdmStructure = medianewsJournalArticle.getDDMStructure()/>
566 <#assign fieldListMedia = getFieldListByStructure(mediaDdmStructure)/>
567 <#assign xmlArticleMedia = medianewsJournalArticle.getDocument().getRootElement() />
568
569 <#assign cardTitle = getFieldValue(fieldListMedia, xmlArticleMedia, "Título Home")/>
570 <#assign subtitle = getFieldValue(fieldListMedia, xmlArticleMedia, "Legenda")/>
571 <#assign author = getFieldValue(fieldListMedia, xmlArticleMedia, "Autor")/>
572
573 <#if getGroupNode(getIdFromFieldName(fieldListMedia, "Arquivo original"), xmlArticleMedia) ?? >
574 <#assign originalFileGroup = getGroupNode(getIdFromFieldName(fieldListMedia, "Arquivo original"), xmlArticleMedia) />
575 <#assign originalFileExternalUrl = getFieldValue(fieldListMedia, originalFileGroup, "URL externa") />
576
577 <#-- Original file -->
578 <#assign originalFile = {} />
579 <#assign originalFileJsonString = getSingleNodeString(getIdFromFieldName(fieldListMedia, "Arquivo selecionado"), originalFileGroup)/>
580
581 <#if originalFileJsonString?? && originalFileJsonString?has_content>
582 <#assign originalFileJson = jsonFactoryUtil.createJSONObject(originalFileJsonString) />
583 <#if originalFileJson?? && originalFileJson["fileEntryId"]??>
584 <#assign restResponse = restClient.get("/headless-delivery/v1.0/documents/${originalFileJson.fileEntryId}") />
585 <#if restResponse?has_content && restResponse["encodingFormat"]?? && restResponse.encodingFormat?index_of("image") gt -1>
586 <#assign originalFile = restResponse />
587 </#if>
588 </#if>
589 </#if>
590
591
592 <#-- Thumbnail file -->
593 <#assign thumbnailImage = {}/>
594 <#assign thumbnailImageJsonString = getSingleNodeString(getIdFromFieldName(fieldListMedia, "Imagem de thumbnail"), xmlArticleMedia)/>
595 <#if !thumbnailImageJsonString?? || !thumbnailImageJsonString?has_content>
596 <#assign thumbnailImageJson = jsonFactoryUtil.createJSONObject(thumbnailImageJsonString) />
597 <#if thumbnailImageJson?? && thumbnailImageJson?has_content && thumbnailImageJson.fileEntryId??>
598 <#assign restResponse = restClient.get("/headless-delivery/v1.0/documents/${thumbnailImageJson.fileEntryId?number}") />
599 <#if restResponse?has_content && restResponse["encodingFormat"]?? && restResponse.encodingFormat?index_of("image") gt -1>
600 <#assign thumbnailImage = restResponse />
601 </#if>
602 </#if>
603 </#if>
604
605 <#assign mediaCreateDate = medianewsJournalArticle.getCreateDate() />
606 <#assign mediaLastPublishDate = extractPublishDate(medianewsJournalArticle) />
607
608 <#if originalFile["contentUrl"]??>
609 <#assign galleryItems += [{"cardTitle": cardTitle,
610 "displayDate" : formatDate(mediaLastPublishDate),
611 "createDate": newsJournalArticle.getDisplayDate(),
612 "subtitle" : subtitle,
613 "author": author,
614 "thumbnailImage": thumbnailImage,
615 "originalFile": originalFile,
616 "originalFileExternalUrl": originalFileExternalUrl
617 }] />
618 </#if>
619 </#if>
620
621 </#if>
622 <#recover>
623 </#attempt>
624 </#list>
625 </#list>
626
627 <#assign newsImageFieldSet = extractNewsImage(fieldList, xmlArticle, fileEntryService) />
628
629 <#assign newsInfo = {
630 "mainHeadlineOfTheNews": mainHeadlineOfTheNews,
631 "featuredNewsHeadline" : featuredNewsHeadline,
632 "displayDate" : formatDate(createDate),
633 "createDate": createDate,
634 "newsSummary" : newsSummary,
635 "legend": newsImageFieldSet.legend,
636 "newsImageFieldSet": extractNewsImage(fieldList, xmlArticle, fileEntryService),
637 "featureNewsVideo" : featureNewsVideo(xmlArticle, fileEntryService),
638 "lastPublishDate": lastPublishDate,
639 "flag": flag,
640 "url": newsJournalArticleFriendlyUrl,
641 "newsContent": newsContent,
642 "audios": audios,
643 "videos": videos,
644 "galleryItems": galleryItems,
645 "links": links
646 }>
647
648
649
650
651 <#-- Renderizar o título principal da notícia -->
652 <#-- Conteúdo-> Conteúdo Web -> Templates: Site de Crise - Notícia - Título -->
653 <@renderHeadLine newsInfo = newsInfo/>
654
655 <#-- Renderizar o subtítulo da notícia -->
656 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Subtítulo -->
657 <@renderReview newsInfo = newsInfo/>
658
659 <#-- Link para a página do autor -->
660 <@renderAuthor/>
661
662 <#-- Renderizar a data de publicação/edição da notícia e redes sociais -->
663 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Redes sociais e data de publicação -->
664 <@renderPublishAndSocialMediasInfos newsJournalArticle newsInfo/>
665
666 <#-- Renderizar as tags da notícia -->
667 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Render Tags -->
668 <#--assign tagCategoryList = getCategoriesNamesAndIds("Tags") />
669 <#assign tagCategoryList = getCategoryIdsFromEntry(assetEntry,tagCategoryList, categoryLocalService)>
670 <#assign removeStartParameterWhenTagIsClicked = true>
671 <#assign includeRequestParams = false>
672 <#assign NEWS_PAGE_NAME= "busca"/>
673 <@renderNewsTags tagCategoryList NEWS_PAGE_NAME removeStartParameterWhenTagIsClicked includeRequestParams -->
674
675 <#assign categoriesAsssetEntryResponse = restClient.get("/headless-delivery/v1.0/structured-contents/${assetEntry.getClassPK()}?nestedFields=embeddedTaxonomyCategory&fields=taxonomyCategoryBriefs") />
676
677 <#if categoriesAsssetEntryResponse?? && categoriesAsssetEntryResponse?has_content && categoriesAsssetEntryResponse.taxonomyCategoryBriefs??>
678 <#assign tagCategoryList = getCategoriesNamesAndIds("Tags", categoriesAsssetEntryResponse.taxonomyCategoryBriefs) />
679 <#assign removeStartParameterWhenTagIsClicked = true />
680 <#assign includeRequestParams = false />
681 <#assign NEWS_PAGE_NAME= "busca"/>
682 <@renderNewsTags tagCategoryList NEWS_PAGE_NAME removeStartParameterWhenTagIsClicked includeRequestParams />
683 </#if>
684
685 <#-- Renderizar a imagem de destaque da notícia -->
686 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Imagem de destaque -->
687 <@renderNewsFeaturedImage newsInfo = newsInfo/>
688
689 <#-- Renderizar o conteúdo da notícia -->
690 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Conteúdo da notícia -->
691 <@renderNewsContent newsInfo = newsInfo/>
692
693 <#-- Renderizar links da notícia -->
694 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Links do conteúdo da notícia -->
695 <@renderLinks newsInfo />
696
697 <@renderCite />
698 <#-- Renderizar áudios da notícia -->
699 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Áudios do conteúdo da notícia -->
700
701 <#-- Renderizar galeria de imagens notícia -->
702 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Render galeria -->
703 <@renderGallery newsInfo />
704
705 <#-- Renderizar seção de download e mídias e texto -->
706 <#-- Conteúdo Web -> Templates: Site de Crise - Notícia - Render seção download -->
707 <@renderDownloadSection newsInfo />
708
709 </div>
710 </div>
711 </div>
712
713 <#function normalizeRichText richText>
714 <#return richText
715 ?replace('&[a-z]+;', ' ', 'r') <#-- Remove entidades HTML -->
716 ?replace('<[^>]+>', '', 'r') <#-- Remove tags HTML -->
717 ?replace('[\n\r]+', ' ', 'r') <#-- Normaliza quebras de linha -->
718 ?replace('[“”‘’]', '"', 'r') <#-- Escapa espas curvas -->
719 ?replace('\\\\', '\\\\', 'r') <#-- Escapa barras invertidas -->
720 ?trim <#-- Remove espaços no ínicio/fim -->
721 ?json_string <#-- Escapa o rstante da string para um JSON válido -->
722 >
723 </#function>
724
725 <#macro addSchemaMarkup newsInfo>
726 <#assign image = ""/>
727 <#assign datePublished = newsInfo.createDate?string('yyyy-MM-ddHH:mm:ss-03:00')/>
728 <#assign datePublishedISOFormat = datePublished?substring(0, 10) + "T" + datePublished?substring(10)/>
729 <#assign dateModified = newsInfo.lastPublishDate?string('yyyy-MM-ddHH:mm:ss-03:00')/>
730 <#assign dateModifiedISOFormat = dateModified?substring(0, 10) + "T" + dateModified?substring(10)/>
731
732 <#if newsInfo.newsImageFieldSet.newsImage?? && newsInfo.newsImageFieldSet.newsImage.fileEntryId?has_content>
733 <#assign image = "${themeDisplay.getPortalURL()}/o/adaptive-media/image/${newsInfo.newsImageFieldSet.newsImage.fileEntryId}/Thumbnail-300x300/image"/>
734 </#if>
735
736 <#-- Busca informações do cadastro Organization do institucional do ambiente de produção -->
737 <#-- 35467409 é o id da estrutura de webcontent "Dados Estruturados - Organização" -->
738 <#assign organizationName = "" />
739 <#assign logoImgSrc = "" />
740
741 <#assign structuredContents = restClient.get("/headless-delivery/v1.0/content-structures/35467409/structured-contents")/>
742 <#if structuredContents?has_content && structuredContents.items?has_content>
743 <#assign structuredContentData = structuredContents.items[0]/>
744 <#if structuredContentData?has_content && structuredContentData.contentFields?has_content>
745 <#list structuredContentData.contentFields as item>
746 <#if item.label == "Nome legal da organização">
747 <#assign organizationName = item.contentFieldValue.data!"">
748 </#if>
749 <#if item.label == "Logotipo" && item.contentFieldValue?has_content && item.contentFieldValue.image??>
750 <#assign logoImgSrc = themeDisplay.getURLPortal() + item.contentFieldValue.image.contentUrl!"">
751 </#if>
752 </#list>
753 </#if>
754 </#if>
755
756 <#-- add Schema Markup (NewsArticle) to head -->
757 <@liferay_util["html-top"]>
758 <script type="application/ld+json">
759 {
760 "@context": "https://schema.org",
761 "@type": "NewsArticle",
762 "headline": "${normalizeRichText(newsInfo.mainHeadlineOfTheNews)}",
763 "alternativeHeadline": "${normalizeRichText(newsInfo.featuredNewsHeadline)}",
764 "image": "${image}",
765 "author": {
766 "@type": "Person",
767 "name": "Agência Petrobras",
768 "url": "${themeDisplay.getPortalURL()}/autor"
769 },
770 "publisher": {
771 "@type": "Organization",
772 "name": "${organizationName}",
773 "logo": {
774 "@type": "ImageObject",
775 "url": "${logoImgSrc}"
776 }
777 },
778 "datePublished": "${datePublishedISOFormat}",
779 "dateModified": "${dateModifiedISOFormat}",
780 "mainEntityOfPage": "${newsInfo.url}",
781 "description": "${normalizeRichText(newsInfo.newsSummary)}",
782 "keywords": [<#list tagCategoryList as tag>"${tag[0]}"<#sep>, </#list>],
783 "articleBody": "${normalizeRichText(newsInfo.newsContent)}"
784 }
785 </script>
786 </@>
787
788 <@liferay_util["html-top"]>
789 <script type="application/ld+json">
790 {
791 "@context": "https://schema.org",
792 "@type": "BreadcrumbList",
793 "itemListElement": [
794 {
795 "@type": "ListItem",
796 "position": 1,
797 "name": "Home",
798 "item": "${themeDisplay.getPortalURL() + homeURL}"
799 }
800 <#if breadcrumbEditorialCategory?? && breadcrumbEditorialCategory?has_content>
801 , {
802 "@type": "ListItem",
803 "position": 2,
804 "name": "${breadcrumbEditorialCategory.getTitle(locale)?js_string}",
805 "item": "${themeDisplay.getPortalURL() + categoryURL}"
806 }
807 </#if>
808 , {
809 "@type": "ListItem",
810 "position": 3,
811 "name": "${newsJournalArticle.getTitle(locale)?js_string}",
812 "item": "${themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()?split('?')[0]}"
813 }
814 ]
815 }
816 </script>
817 </@>
818
819 <@liferay_util["html-top"]>
820 <script type="application/ld+json">
821 [
822 {
823 "@context": "https://schema.org",
824 "@type": "ImageObject",
825 "url": "${themeDisplay.getPortalURL()}${(newsInfo.newsImageFieldSet.newsImage.url!'')}",
826 "contentUrl": "${themeDisplay.getPortalURL()}${(newsInfo.newsImageFieldSet.newsImage.url!'')}",
827 "name": "${newsInfo.newsImageFieldSet.newsImage.title?json_string}",
828 <#if newsInfo.legend?? && newsInfo.legend?has_content>
829 "caption": "${(newsInfo.legend)?js_string}",
830 </#if>
831 <#if newsInfo.newsImageFieldSet.newsImage.alt?? && newsInfo.newsImageFieldSet.newsImage.alt?has_content>
832 "description": "${newsInfo.newsImageFieldSet.newsImage.alt?js_string}",
833 </#if>
834 "encodingFormat": "${(newsInfo.newsImageFieldSet.newsImage.mimeType!'')}"
835 },
836 {
837 "@context": "https://schema.org",
838 "@type": "ImageObject",
839 "url": "${themeDisplay.getPortalURL()}${(newsInfo.newsImageFieldSet.newsImage.url!'')}",
840 "contentUrl": "${themeDisplay.getPortalURL()}${(newsInfo.newsImageFieldSet.newsImage.url!'')}",
841 "name": "${(newsInfo.mainHeadlineOfTheNews!'')?json_string}",
842 "description": "${normalizeRichText(newsInfo.newsContent)}"
843 }
844 ]
845 </script>
846 </@>
847<#if videoSchemaMarkupList?size gt 0>
848 <#assign videoStructuredData = [] />
849 <#list videoSchemaMarkupList as videoInfo>
850 <#if videoInfo.id?has_content>
851 <#assign videoStructuredData += [ {
852 "@context": "https://schema.org",
853 "@type": "VideoObject",
854 "name": "${normalizeRichText(videoInfo.name)}",
855 "description": "${normalizeRichText(videoInfo.description)}",
856 "uploadDate": "${videoInfo.uploadDate}",
857 "thumbnailUrl": "${videoInfo.thumbnailUrl}",
858 "contentUrl": "${videoInfo.contentUrl}",
859 "embedUrl": "${videoInfo.embedUrl}",
860 "duration": "${videoInfo.duration}",
861 "publisher": {
862 "@type": "Organization",
863 "name": "Petrobras",
864 "logo": {
865 "@type": "ImageObject",
866 "url": "${logoImgSrc}"
867 }
868 }
869 }] />
870 </#if>
871 </#list>
872 <#if videoStructuredData?size gt 0>
873 <@liferay_util["html-top"]>
874 <script type="application/ld+json">
875 ${jsonFactoryUtil.looseSerialize(videoStructuredData)}
876 </script>
877 </@>
878 </#if>
879 </#if>
880 </#macro>
881
882 <@addSchemaMarkup newsInfo/>
883
884 <script>
885 AUI().ready(function () {
886 const newsContent = document.querySelector(".ptb-news__read-content");
887 newsContent.querySelectorAll("p").forEach((item) => {
888 if (item.innerHTML.trim() == "") {
889 item.parentNode.removeChild(item);
890 }
891 });
892
893
894 const newsContentLinks = newsContent.querySelectorAll("a");
895 newsContentLinks.forEach((link) => {
896 link.classList.add('ptb-news__news-link');
897 });
898
899 console.log('tsts', newsContent, newsContentLinks)
900 });
901
902 </script>
903
904 <style>
905
906 .breadcrumb-breakpoint {
907 padding-top: var(--space-xxl);
908 padding-bottom: var(--space-xl);
909 }
910
911 body.high-contrast-active .breadcrumb-breakpoint {
912 background: var(--background-surface-level-01, #010101);
913 }
914
915 .breadcrumb-breakpoint .breadcrumb-col {
916 display: flex;
917 width: max-content;
918 gap: var(--space-xxs);
919 height: fit-content;
920 overflow-x: hidden;
921 }
922
923 .breadcrumb-breakpoint #liferay-breadcrumb {
924 display: none;
925 }
926
927 .breadcrumb-breakpoint .breadcrumb-page {
928 display: flex;
929 gap: var(--space-micro);
930 height: var(--size-md);
931 size: var(--size-md);
932 border: 1px solid rgba(0, 0, 0, 0);
933 box-sizing: border-box;
934 border-radius: var(--border-radius-sm);
935 }
936
937 .breadcrumb-breakpoint a.breadcrumb-page.text span,
938 .breadcrumb-breakpoint span.breadcrumb-page.text {
939 white-space: nowrap;
940 }
941
942 .breadcrumb-breakpoint .breadcrumb-page a:focus {
943 outline: none;
944 }
945
946 .breadcrumb-breakpoint .breadcrumb-page.active-page {
947 color: var(--color-text-primary-default);
948 background-color: var(--color-background-default-level-02);
949 border-radius: var(--border-radius-sm);
950 }
951
952 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.active-page {
953 background: var(--background-surface-level-02, #373737);
954 color: var(--text-primary-default, #FFF);
955 }
956
957 .breadcrumb-breakpoint .breadcrumb-page.previous-page {
958 transition: 300ms ease-in-out;
959 }
960
961 .breadcrumb-breakpoint .breadcrumb-page.previous-page.text {
962 text-decoration: var(--text-decoration-none);
963 color: var(--color-text-primary-default);
964 text-transform: capitalize;
965 padding-left: var(--space-xxs);
966 padding-right: var(--space-xxs);
967 }
968
969 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.previous-page.text {
970 color: var(--text-primary-default, #FFF);
971 }
972
973 .breadcrumb-breakpoint .breadcrumb-page.active-page.text {
974 color: var(--color-text-primary-default);
975 text-decoration: var(--text-decoration-none);
976 background-color: var(--color-background-default-level-02);
977 text-transform: capitalize;
978 padding-left: var(--space-xxs);
979 padding-right: var(--space-xxs);
980 }
981
982 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.previous-page.text {
983 color: var(--text-primary-default, #FFF);
984 }
985
986 .breadcrumb-breakpoint .breadcrumb-page.previous-page:not(.three-dots):hover {
987 background-color: var(--color-background-default-level-01);
988 border-color: var(--border-color-dark);
989 border-radius: var(--border-radius-sm);
990 border: 1px solid;
991 transition: all 300ms ease-in-out;
992 }
993
994 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page.previous-page:not(.three-dots):hover {
995 background-color: transparent;
996 }
997
998 .breadcrumb-breakpoint .breadcrumb-page:focus-visible {
999 margin: var(--space-micro);
1000 border-radius: var(--space-micro);
1001 outline: none;
1002 border: 1px solid var(--color-primary-medium);
1003 box-sizing: border-box;
1004 transition: 300ms ease-in-out;
1005 }
1006
1007 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page:focus-visible {
1008 border: 1px solid rgba(228, 247, 232, 1);
1009 }
1010
1011 .breadcrumb-breakpoint .breadcrumb-page .icon {
1012 width: var(--size-xxs);
1013 height: var(--size-xxs);
1014 border-color: var(--border-color-darkest);
1015 background-image: url('data:image/svg+xml,%3Csvg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"%3E%3Cpath d="M4.5 2.25L8.25 6L4.5 9.75" stroke="%23525252" stroke-linecap="round" stroke-linejoin="round"%3E%3C/path%3E%3C/svg%3E');
1016 background-size: cover;
1017 margin-top: auto;
1018 margin-bottom: auto;
1019 }
1020
1021 body.high-contrast-active .breadcrumb-breakpoint .breadcrumb-page .icon {
1022 background-image: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none"><path d="M4.5 2.25L8.25 6L4.5 9.75" stroke="white" stroke-linecap="round" stroke-linejoin="round"/></svg>');
1023 }
1024
1025 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
1026 header.cadmin.portlet-topper {
1027 display: none !important;
1028 }
1029 }
1030
1031 @media screen and (min-width: ${MIN_TABLET_WIDTH}px) and (max-width: ${MAX_TABLET_WIDTH}px) {
1032 }
1033 </style>
1034<#else >
1035 <@printNewsNotFound />
1036</#if>
1037
1038
1039
1040
1041<#macro printNewsNotFound>
1042 <div class="ptb-news__read-news">
1043 <#if locale == "pt_BR">
1044 <p>Nenhuma notícia</p>
1045 <#else >
1046 <p>There are no news</p>
1047 </#if>
1048 </div>
1049
1050 <style>
1051 .ptb-news__read-news p {
1052 font-family: var(--font-family-base);
1053 font-style: var(--font-style-normal, normal);
1054 font-weight: var(--font-weight-regular, 400);
1055 font-size: var(--font-size-xxs, 16px);
1056 line-height: var(--line-height-xl, 160%);
1057 color: var(--color-neutral-700, #515867);
1058 }
1059 </style>
1060</#macro>
1061
1062<#-- ############# Site de Crise - Notícia - Redes sociais e data de publicação ####################################### -->
1063<#--
1064Add elements from the sidebar to define your template. Type "${" to use the
1065autocomplete feature.
1066-->
1067
1068<#macro renderHeadLine newsInfo>
1069 <div class="breakpoint">
1070 <div class="col-3-10 md-col-1-12 sm-col-1-4">
1071 <div class="main-headline-container">
1072 <h1 class="main-headline">${newsInfo.mainHeadlineOfTheNews}</h1>
1073 <div class="bar"></div>
1074 </div>
1075 </div>
1076 </div>
1077 <style>
1078 .ptb-news__read-news .main-headline-container {
1079 display: flex;
1080 flex-direction: column;
1081 gap: var(--space-sm);
1082 padding-bottom: var(--space-lg);
1083 }
1084
1085 .ptb-news__read-news .main-headline-container * {
1086 margin: 0;
1087 padding: 0;
1088 }
1089
1090 .ptb-news__read-news .main-headline-container .main-headline {
1091 font-family: var(--font-family-base);
1092 font-style: var(--font-style-normal, normal);
1093 font-weight: var(--font-weight-bold);
1094 font-size: var(--font-size-xl);
1095 line-height: var(--line-height-sm);
1096 color: var(--color-neutral-800);
1097 }
1098
1099 .ptb-news__read-news .main-headline-container .bar {
1100 width: var(--size-lg, 32px);
1101 height: var(--size-micro);
1102 background: var(--color-secondary-medium);
1103 }
1104
1105 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
1106 .ptb-news__read-news .main-headline-container {
1107 gap: var(--size-xxs);
1108 }
1109 }
1110 </style>
1111</#macro>
1112<#-- ################################################################################################################## -->
1113
1114<#-- ############# Site de Crise - Notícia - Redes sociais e data de publicação ####################################### -->
1115<#macro renderReview newsInfo>
1116 <#assign summaryCssRoot = "summary-container" />
1117
1118 <div class="breakpoint">
1119 <div class="col-3-10 md-col-1-12 sm-col-1-4">
1120 <div class="${summaryCssRoot}">
1121 <h2 class="summary">
1122 ${newsInfo.newsSummary}
1123 </h2>
1124 </div>
1125 </div>
1126 </div>
1127
1128 <style>
1129 .${summaryCssRoot} .summary {
1130 padding-bottom: var(--space-lg);
1131 }
1132
1133 .${summaryCssRoot} .summary,
1134 .${summaryCssRoot} .summary * {
1135 color: var(--color-neutral-800, #373737);
1136 font-family: var(--font-family-base);
1137 font-size: var(--font-size-sm);
1138 font-style: var(--font-style-italic);
1139 font-weight: var(--font-weight-regular);
1140 line-height: var(--line-height-xl);
1141 margin: var(--space-none);
1142 }
1143
1144 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
1145 .${summaryCssRoot} .summary,
1146 .${summaryCssRoot} .summary * {
1147 font-size: var(--font-size-xs);
1148 }
1149 }
1150 </style>
1151
1152</#macro>
1153
1154<#macro renderAuthor>
1155 <#assign authorPageUrl = "" />
1156
1157 <#if themeDisplay.getPortalURL()?contains("webserver")>
1158 <#assign authorPageUrl = "${themeDisplay.getPortalURL()}/web/agencia/autor" />
1159 <#else>
1160 <#assign authorPageUrl = "${themeDisplay.getPortalURL()}/autor" />
1161 </#if>
1162
1163 <div class="breakpoint">
1164 <div class="col-3-10 md-col-1-12 sm-col-1-4">
1165 <p class="article-author">Autor: <a class="link-sm" href=${authorPageUrl}>Agência Petrobras</a></p>
1166 </div>
1167 </div>
1168
1169 <style>
1170 .article-author {
1171 margin-bottom: var(--space-lg, 32px);
1172 font-weight: 400;
1173 font-size: 16px;
1174 line-height: 160%;
1175 letter-spacing: 0%;
1176 color: var(--color-neutral-800, #373737);
1177 }
1178
1179 .article-author a {
1180 font-weight: 700;
1181 font-size: 14px;
1182 line-height: 144%;
1183 text-decoration: underline;
1184 text-decoration-style: solid;
1185 text-decoration-thickness: 0%;
1186 color: var(--color-primary-medium, #008542);
1187 }
1188 </style>
1189</#macro>
1190<#-- ################################################################################################################## -->
1191
1192<#-- ############# Site de Crise - Notícia - Redes sociais e data de publicação ####################################### -->
1193<#macro renderPublishAndSocialMediasInfos journalArticle newsInfo>
1194
1195 <div class="breakpoint">
1196 <div class="col-3-10 md-col-1-12 sm-col-1-4">
1197 <div class="publish_and_social_medias_infos_desk">
1198 <div class="publish_and_update_date">
1199 <#-- display_date: prioriza displayDate (data de publicação/agendamento); fallback para createDate -->
1200 <#assign display_date = (journalArticle.getDisplayDate())!journalArticle.getCreateDate() />
1201
1202 <#if locale == "pt_BR">
1203 <p class="published">Postado em ${formatDate(display_date)}</p>
1204 <#else>
1205 <p class="published">Posted on ${formatDate(display_date)}</p>
1206 </#if>
1207 </div>
1208
1209 <#-- <div class="share_news_container">-->
1210 <div class="social-media-container">
1211
1212 <#assign emailMsg = "Veja o conteúdo do post no link ">
1213 <#if locale == "en_US">
1214 <#assign emailMsg = "See the content of the post in the link ">
1215 </#if>
1216 <a class="share-news-social-media news-gallery-share-news-email" href="mailto:?subject=${newsInfo.mainHeadlineOfTheNews}&body=${emailMsg}${newsInfo.url}"
1217 target="_blank">
1218 <svg class="email" width="37" height="36" viewBox="0 0 37 36" fill="none"
1219 xmlns="http://www.w3.org/2000/svg">
1220 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
1221 <path d="M24.9231 12H11.0769C10.9239 12 10.7772 12.0579 10.669 12.1611C10.5608 12.2642 10.5 12.4041 10.5 12.55V21.9C10.5 22.1917 10.6216 22.4715 10.838 22.6778C11.0543 22.8841 11.3478 23 11.6538 23H24.3462C24.6522 23 24.9457 22.8841 25.162 22.6778C25.3784 22.4715 25.5 22.1917 25.5 21.9V12.55C25.5 12.4041 25.4392 12.2642 25.331 12.1611C25.2228 12.0579 25.0761 12 24.9231 12ZM24.3462 21.9H11.6538V13.8012L17.6106 19.0056C17.7169 19.0984 17.8559 19.1498 18 19.1498C18.1441 19.1498 18.2831 19.0984 18.3894 19.0056L24.3462 13.8012V21.9Z"
1222 fill="#008542"/>
1223 </svg>
1224 <span>send e-mail</span>
1225 </a>
1226
1227 <a class="share-news-social-media news-gallery-share-news-facebook" href="https://www.facebook.com/sharer/sharer.php?u=${newsInfo.url}" target="_blank">
1228 <svg class="facebook" width="37" height="36" viewBox="0 0 37 36" fill="none"
1229 xmlns="http://www.w3.org/2000/svg">
1230 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
1231 <path d="M17.5417 24H20.0341V18.1855H21.9697L22.2879 15.875H20.0341V14.2754C20.0341 13.9199 20.0871 13.6406 20.2462 13.4629C20.4053 13.2598 20.75 13.1582 21.2273 13.1582H22.5V11.1016C22.0227 11.0508 21.3864 11 20.6439 11C19.6894 11 18.947 11.2793 18.3902 11.8125C17.8068 12.3457 17.5417 13.082 17.5417 14.0469V15.875H15.5V18.1855H17.5417V24Z"
1232 fill="#008542"/>
1233 </svg>
1234 <span>Share Facebook </span>
1235 </a>
1236
1237 <#assign mobileShareButtonId = "mobile-share-" + randomNumber(5)>
1238 <div class="mobile-share" id="${mobileShareButtonId}">
1239 <svg width="37" height="36" viewBox="0 0 37 36" fill="none" xmlns="http://www.w3.org/2000/svg">
1240 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
1241 <path d="M13.8923 20.5914C15.2136 20.5914 16.2847 19.5151 16.2847 18.1875C16.2847 16.8599 15.2136 15.7837 13.8923 15.7837C12.5711 15.7837 11.5 16.8599 11.5 18.1875C11.5 19.5151 12.5711 20.5914 13.8923 20.5914Z"
1242 fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/>
1243 <path d="M22.2654 26.0001C23.5866 26.0001 24.6577 24.9238 24.6577 23.5962C24.6577 22.2686 23.5866 21.1924 22.2654 21.1924C20.9441 21.1924 19.873 22.2686 19.873 23.5962C19.873 24.9238 20.9441 26.0001 22.2654 26.0001Z"
1244 fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/>
1245 <path d="M22.2654 15.1827C23.5866 15.1827 24.6577 14.1064 24.6577 12.7788C24.6577 11.4512 23.5866 10.375 22.2654 10.375C20.9441 10.375 19.873 11.4512 19.873 12.7788C19.873 14.1064 20.9441 15.1827 22.2654 15.1827Z"
1246 fill="#008542" stroke="#008542" stroke-linecap="round" stroke-linejoin="round"/>
1247 <path d="M20.2546 14.0784L15.9036 16.8879" stroke="#008542" stroke-linecap="round"
1248 stroke-linejoin="round"/>
1249 <path d="M15.9036 19.4871L20.2546 22.2966" stroke="#008542" stroke-linecap="round"
1250 stroke-linejoin="round"/>
1251 </svg>
1252 </div>
1253
1254 <a class="share-news-social-media news-gallery-share-news-twitter" href="https://twitter.com/intent/tweet?url=${newsInfo.url}" target="_blank" data-size="large">
1255 <svg class="twitter" width="37" height="36" viewBox="0 0 37 36" fill="none"
1256 xmlns="http://www.w3.org/2000/svg">
1257 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
1258 <path d="M23.1771 14.7301C23.6859 14.3325 24.1438 13.8554 24.5 13.2988C24.0421 13.5108 23.5078 13.6699 22.9736 13.7229C23.5333 13.3783 23.9403 12.8482 24.1438 12.1855C23.635 12.5036 23.0499 12.7422 22.4648 12.8747C21.956 12.3181 21.2691 12 20.5059 12C19.0303 12 17.8346 13.2458 17.8346 14.7831C17.8346 14.9952 17.8601 15.2072 17.911 15.4193C15.6977 15.2867 13.7133 14.1735 12.3904 12.5036C12.1614 12.9012 12.0342 13.3783 12.0342 13.9084C12.0342 14.8627 12.4922 15.7108 13.2299 16.2145C12.7975 16.188 12.365 16.0819 12.0088 15.8699V15.8964C12.0088 17.2482 12.9247 18.3614 14.1458 18.6265C13.9423 18.6795 13.6879 18.7325 13.4589 18.7325C13.2808 18.7325 13.1282 18.706 12.9501 18.6795C13.2808 19.7928 14.273 20.588 15.4432 20.6145C14.5274 21.3566 13.3826 21.8072 12.136 21.8072C11.907 21.8072 11.7035 21.7807 11.5 21.7542C12.6703 22.5494 14.0695 23 15.5959 23C20.5059 23 23.1771 18.7855 23.1771 15.1012C23.1771 14.9687 23.1771 14.8627 23.1771 14.7301Z"
1259 fill="#008542"/>
1260 </svg>
1261 <span>Share Twitter </span>
1262 </a>
1263
1264 <a class="share-news-social-media news-gallery-share-news-whatsapp" href="https://api.whatsapp.com/send?text=${newsInfo.url}" data-action="share/whatsapp"
1265 target="_blank">
1266 <svg class="whatsapp" width="37" height="36" viewBox="0 0 37 36" fill="none"
1267 xmlns="http://www.w3.org/2000/svg">
1268 <circle cx="18.5" cy="18" r="17.5" fill="white" stroke="#E1E1E1"/>
1269 <path d="M12.5482 21.3241C11.6166 19.7525 11.2908 17.8949 11.6318 16.1C11.9729 14.3052 12.9573 12.6965 14.4003 11.5761C15.8434 10.4556 17.6457 9.90042 19.4691 10.0147C21.2925 10.129 23.0114 10.9049 24.3033 12.1967C25.5951 13.4886 26.371 15.2075 26.4853 17.0309C26.5996 18.8543 26.0444 20.6566 24.9239 22.0997C23.8035 23.5427 22.1948 24.5271 20.4 24.8682C18.6051 25.2092 16.7475 24.8834 15.1759 23.9518L12.5795 24.687C12.4731 24.7181 12.3603 24.72 12.2529 24.6925C12.1455 24.6651 12.0475 24.6092 11.9692 24.5308C11.8908 24.4525 11.8349 24.3545 11.8075 24.2471C11.78 24.1397 11.7819 24.0269 11.813 23.9205L12.5482 21.3241Z"
1270 fill="#008542"/>
1271 <path d="M20.6917 21C20.0094 21.0017 19.3335 20.8686 18.7029 20.6083C18.0722 20.348 17.4992 19.9656 17.0168 19.4832C16.5344 19.0008 16.152 18.4278 15.8917 17.7971C15.6314 17.1665 15.4983 16.4906 15.5 15.8083C15.5017 15.3281 15.6937 14.8682 16.0338 14.5293C16.374 14.1903 16.8346 14 17.3148 14C17.394 13.9994 17.472 14.0201 17.5404 14.06C17.6089 14.1 17.6653 14.1576 17.7037 14.2269L18.462 15.5491C18.5071 15.6295 18.5303 15.7203 18.5291 15.8124C18.528 15.9046 18.5026 15.9948 18.4556 16.0741L17.8463 17.0917C18.1584 17.7859 18.7141 18.3416 19.4083 18.6537L20.4259 18.0444C20.5052 17.9974 20.5954 17.972 20.6876 17.9709C20.7797 17.9697 20.8705 17.9929 20.9509 18.038L22.2731 18.7963C22.3424 18.8347 22.4 18.8911 22.44 18.9596C22.4799 19.028 22.5006 19.106 22.5 19.1852C22.4983 19.6649 22.3074 20.1245 21.9689 20.4643C21.6303 20.8041 21.1713 20.9966 20.6917 21Z"
1272 fill="white"/>
1273 </svg>
1274 <span>Share to WhatsApp </span>
1275 </a>
1276
1277 <div class="copy-text-container news-copy-text">
1278 <svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
1279 <path d="M10.5 10.5H13.5V2.5H5.5V5.5" stroke="#008542" stroke-linecap="round"
1280 stroke-linejoin="round"/>
1281 <path d="M10.5 5.5H2.5V13.5H10.5V5.5Z" stroke="#008542" stroke-linecap="round"
1282 stroke-linejoin="round"/>
1283 </svg>
1284
1285 <#if locale == "pt_BR">
1286 <p class="text">Copiar texto
1287 <span class="copy-text-title-news"> ${newsInfo.mainHeadlineOfTheNews} </span>
1288 </p>
1289 <#else >
1290 <p class="text">Copy text
1291 <span class="copy-text-title-news"> ${newsInfo.mainHeadlineOfTheNews} </span>
1292 </p>
1293 </#if>
1294 </div>
1295
1296 </div>
1297
1298 <#if locale == "pt_BR">
1299 <span class="copy-message">Texto copiado!</span>
1300 <#else >
1301 <span class="copy-message">Text copied!</span>
1302 </#if>
1303 <#-- </div>-->
1304 </div>
1305 </div>
1306 </div>
1307
1308 <style>
1309 /*Data de publicação e redes sociais */
1310
1311 /* Desktop */
1312 .ptb-news__read-news .publish_and_social_medias_infos_desk {
1313 position: relative;
1314 display: grid;
1315 grid-template-columns: auto 1fr auto;
1316 }
1317
1318 .ptb-news__read-news .publish_and_social_medias_infos_desk * {
1319 padding: var(--space-none, 0);
1320 margin: var(--space-none, 0);
1321 font-family: var(--font-family-base);
1322 font-style: var(--font-style-normal, normal);
1323 font-weight: var(--font-weight-regular, 400);
1324 font-size: var(--font-size-xxs, 16px);
1325 line-height: var(--line-height-xl, 160%);
1326 color: var(--color-neutral-800, #373737);
1327 }
1328
1329 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk * {
1330 color: var(--text-secondary-default, #F8F8F8);
1331 }
1332
1333 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk a svg path,
1334 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .mobile-share svg path {
1335 stroke: var(--color-neutral-500, #D7D7D7);
1336 fill: rgba(255, 255, 255, 0.32);
1337 }
1338
1339 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk a svg circle,
1340 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .mobile-share svg circle {
1341 fill: rgba(255, 255, 255, 0.32);
1342
1343 }
1344
1345 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date {
1346 display: flex;
1347 flex-direction: column;
1348 gap: var(--space-none, 0);;
1349 }
1350
1351 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .updated {
1352 font-weight: var(--font-weight-bold, 700);
1353 }
1354
1355 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .published {
1356 font-weight: var(--font-weight-normal, 400);
1357 }
1358
1359 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container {
1360 display: flex;
1361 width: 100%;
1362 justify-content: flex-end;
1363 align-items: center;
1364 gap: var(--space-sm, 16px);
1365 }
1366
1367 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .mobile-share {
1368 display: none;
1369 cursor: pointer;
1370 }
1371
1372
1373 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .mobile-share svg {
1374 pointer-events: none;
1375 }
1376
1377 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .share-news-social-media * {
1378 pointer-events: none;
1379 }
1380
1381 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .share-news-social-media {
1382 position: relative;
1383 }
1384
1385 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .share-news-social-media span {
1386 position: absolute;
1387 top: 0;
1388 left: 0;
1389 width: 100%;
1390 height: 100%;
1391 opacity: 0;
1392 overflow: hidden;
1393 pointer-events: none;
1394 }
1395
1396 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container {
1397 background: #FFFFFF;
1398 border: var(--border-width-hairline, 1px) solid var(--color-opacity-dark-level-01, #CCCCCC);
1399 border-radius: var(--border-radius-xl, 32px);
1400 display: flex;
1401 align-items: center;
1402 gap: var(--space-sm, 16px);
1403 padding: 6px var(--space-xxs, 8px);
1404 height: 36px;
1405 margin: 0;
1406 cursor: pointer;
1407 }
1408
1409 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container * {
1410 pointer-events: none;
1411 }
1412
1413 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container {
1414 background: rgba(255, 255, 255, 0.32);
1415 border: var(--border-width-hairline, 1px) solid rgba(255, 255, 255, 0.32);
1416 }
1417
1418 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container svg {
1419 width: 18px;
1420 }
1421
1422 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk svg path {
1423 stroke: var(--color-neutral-500, #D7D7D7);
1424 }
1425
1426 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container {
1427 background: #FFFFFF;
1428 border: var(--border-width-hairline, 1px) solid var(--color-opacity-dark-level-01, #CCCCCC);
1429 border-radius: var(--border-radius-xl, 32px);
1430 display: flex;
1431 align-items: center;
1432 gap: var(--space-sm, 16px);
1433 padding: 6px var(--space-sm, 16px);
1434 height: 36px;
1435 margin: 0;
1436 cursor: pointer;
1437 position: relative;
1438 }
1439
1440
1441 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text {
1442 font-family: var(--font-family-base);
1443 font-style: var(--font-weight-regular, normal);
1444 margin: 0;
1445 height: 100%;
1446 display: flex;
1447 align-items: center;
1448 color: var(--color-primary-brand, #008542);
1449 font-size: var(--font-size-micro, 12px);
1450 font-weight: var(--font-weight-bold, 700);
1451 line-height: var(--line-height-lg, 144%);
1452 }
1453
1454 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text .copy-text-title-news {
1455 position: absolute;
1456 top: 0;
1457 left: 0;
1458 width: 100%;
1459 height: 100%;
1460 opacity: 0;
1461 overflow: hidden;
1462 }
1463
1464 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text {
1465 color: var(--text-primary-accent, #E4F7E8);
1466 }
1467
1468 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message {
1469 display: none;
1470 position: absolute;
1471 bottom: -43px;
1472 right: -15px;
1473 padding: var(--space-xxxs, 4px) var(--space-sm, 15px);
1474 margin: var(--space-micro, 2px) 10px;
1475 width: 110px;
1476 font-family: var(--font-family-base);
1477 font-size: var(--font-size-micro, 12px);
1478 color: var(--color-primary-brand, #008542);
1479 background: #FFFFFF;
1480 border-radius: var(--border-radius-md, 8px);
1481
1482 filter: drop-shadow(0px 4px 16px rgba(0, 0, 0, 0.16));
1483
1484 cursor: pointer;
1485 }
1486
1487 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message {
1488 background: rgba(255, 255, 255, 0.32);
1489 color: var(--text-primary-accent, #E4F7E8);
1490 }
1491
1492 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message-active {
1493 display: block;
1494 }
1495
1496 /* Mobile */
1497
1498 .ptb-news__read-news .publish_and_social_medias_infos_mobile {
1499 display: flex;
1500 flex-direction: column;
1501 gap: 19px;
1502 }
1503
1504 .ptb-news__read-news .publish_and_social_medias_infos_mobile {
1505 display: none;
1506 }
1507
1508 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text {
1509 display: flex;
1510 justify-content: space-between;
1511 align-items: center;
1512 margin-bottom: var(--space-lg, 32px);
1513 }
1514
1515 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date * {
1516 padding: 0;
1517 margin: 0;
1518 font-family: var(--font-family-base);
1519 font-style: var(--font-style-normal, normal);
1520 font-size: var(--font-size-micro, 12px);
1521 line-height: var(--line-height-md, 136%);
1522 color: var(--color-neutral-800, #373737);
1523 }
1524
1525 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date {
1526 display: flex;
1527 flex-direction: column;
1528 gap: 0;
1529 }
1530
1531 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date * {
1532 color: var(--text-primary-accent, #E4F7E8);
1533 }
1534
1535 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date .updated {
1536 font-weight: var(--font-weight-bold, 700);
1537 }
1538
1539 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .publish_and_update_date .published {
1540 font-weight: var(--font-weight-regular, 400);
1541 }
1542
1543 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container {
1544 background: #FFFFFF;
1545 border: var(--border-width-hairline, 1px) solid var(--color-opacity-dark-level-01, #CCCCCC);
1546 border-radius: var(--border-radius-xl, 32px);
1547 display: flex;
1548 align-items: center;
1549 gap: var(--space-sm, 16px);
1550 padding: 6px var(--space-xxxs, 8px);
1551 width: 112px;
1552 height: 36px;
1553 }
1554
1555 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container {
1556 background: rgba(255, 255, 255, 0.32);
1557 color: var(--text-primary-accent, #E4F7E8);
1558 }
1559
1560 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container p.text {
1561 margin: 0;
1562 }
1563
1564 .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container .text {
1565 font-family: var(--font-family-base);
1566 font-style: var(--font-style-normal, normal);
1567 font-weight: var(--font-weight-regular, 400);
1568 font-size: var(--font-size-micro, 13px);
1569 line-height: 14px;
1570 color: var(--color-primary-medium, #008542);
1571 }
1572
1573 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_mobile .publish_and_update_date_and_copy_text .copy-text-container .text {
1574 background: rgba(255, 255, 255, 0.32);
1575 color: var(--text-primary-accent, #E4F7E8);
1576 }
1577
1578 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
1579 .ptb-news__read-news .publish_and_social_medias_infos_desk {
1580 display: grid;
1581 grid-template-columns: 100%;
1582 grid-template-rows: 1fr 100%;
1583 gap: var(--space-md);
1584 }
1585
1586 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date {
1587 grid-column-start: 1;
1588 grid-column-end: 1;
1589 grid-row-start: 1;
1590 grid-row-end: 1;
1591 gap: var(--space-xxs, 8px);
1592 }
1593
1594 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date * {
1595 padding: 0;
1596 margin: 0;
1597 font-family: var(--font-family-base);
1598 font-style: var(--font-style-normal);
1599 color: var(--color-neutral-800, #373737);
1600 font-weight: var(--font-weight-bold);
1601 font-size: var(--font-size-xxxs, 14px);
1602 line-height: var(--line-height-md, 132%);
1603 }
1604
1605 body.high-contrast-active .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date * {
1606 color: var(--text-primary-accent, #E4F7E8);
1607 }
1608
1609 .ptb-news__read-news .publish_and_social_medias_infos_desk .publish_and_update_date .published {
1610 font-weight: 400;
1611 }
1612
1613 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container {
1614 grid-column-start: 1;
1615 grid-column-end: 2;
1616 grid-row-start: 2;
1617 grid-row-end: 2;
1618 justify-content: flex-end;
1619 height: 36px;
1620 }
1621
1622 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container {
1623 grid-column-start: 1;
1624 grid-column-end: 2;
1625 grid-row-start: 2;
1626 grid-row-end: 2;
1627 max-width: 112px;
1628 place-self: end;
1629 }
1630
1631 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-text-container .text {
1632 display: none;
1633 }
1634
1635 .ptb-news__read-news .publish_and_social_medias_infos_desk .copy-message {
1636 bottom: 0;
1637 right: -9px;
1638 }
1639
1640 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container .mobile-share {
1641 display: initial;
1642 }
1643 }
1644
1645 @media screen and (min-width: ${MIN_TABLET_WIDTH}px) and (max-width: ${MAX_TABLET_WIDTH}px) {
1646 .ptb-news__read-news .publish_and_social_medias_infos_desk .social-media-container {
1647 padding-right: 0;
1648 }
1649 }
1650
1651
1652 </style>
1653
1654 <script>
1655 AUI().ready(function () {
1656
1657 function copyOnClick(text) {
1658
1659 const strWithoutHtmlTags = text.replace(/(<([^>]+)>)/gi, "");
1660 const strWithoutMarcationBrackets = strWithoutHtmlTags.replace(/ *#\[[^\]]*]/g, "");
1661 const strWithoutNextPrevious = strWithoutMarcationBrackets.replace(/Previous Next/g, "");
1662 const strWithoutBlankEnters = strWithoutNextPrevious.replace(/^\s*$(?:\r\n?|\n)/gm, "");
1663 const tempInput = document.createElement("textarea");
1664 tempInput.value = strWithoutBlankEnters;
1665
1666 document.body.appendChild(tempInput);
1667 tempInput.select();
1668 document.execCommand("copy");
1669
1670 if (tempInput.value.length > 0) {
1671 copyMessage.classList.add('copy-message-active');
1672
1673 timerToMessage()
1674 }
1675
1676 document.body.removeChild(tempInput);
1677 }
1678
1679 const root = document.querySelector(".publish_and_social_medias_infos_desk");
1680 const copyTextContainer = root.querySelector(".copy-text-container");
1681 copyTextContainer.addEventListener("click", (event) => {
1682 event.preventDefault();
1683 const titleText = document.querySelector(".main-headline-container .main-headline").innerHTML;
1684 const publishSocialMediaText = document.querySelector(".publish_and_social_medias_infos_desk .publish_and_update_date").innerHTML;
1685 const tagsText = document.querySelector(".tags").innerHTML;
1686 const newsContentText = document.querySelector(".news-content").innerHTML;
1687 const text = titleText + publishSocialMediaText + tagsText + newsContentText;
1688 copyOnClick(text)
1689 });
1690
1691 const mobileShare = async () => {
1692 try {
1693 const shareData = {
1694 title: '${newsInfo.mainHeadlineOfTheNews}',
1695 text: '',
1696 url: '${newsInfo.url}'
1697 };
1698 await navigator.share(shareData);
1699 } catch (err) {
1700
1701 }
1702 };
1703
1704 const mobileShareButton = document.querySelector("#${mobileShareButtonId}");
1705 mobileShareButton.addEventListener("click", (event) => {
1706 event.preventDefault();
1707 mobileShare();
1708 });
1709
1710 const copyMessage = document.querySelector('.copy-message');
1711 const timerToMessage = () => {
1712 setTimeout(() => {
1713 removeMessage();
1714 }, 2500);
1715
1716 }
1717
1718 const removeMessage = () => {
1719 copyMessage.classList.remove('copy-message-active');
1720 }
1721
1722 });
1723 </script>
1724
1725</#macro>
1726
1727<#-- ################################################################################################################## -->
1728
1729<#-- ############# Site de Crise - Notícia - Render Tags ############################################################## -->
1730
1731<#function getCategoriesNamesAndIds vocabularyName categoriesList>
1732 <#assign tagCategoryList = [] />
1733
1734 <#assign tagsVocabulary = assetVocabularyService.fetchGroupVocabulary(groupId, vocabularyName) />
1735 <#list categoriesList as cat>
1736 <#if tagsVocabulary.getVocabularyId() == cat.embeddedTaxonomyCategory.taxonomyVocabularyId >
1737 <#assign tagCategoryList += [[cat.taxonomyCategoryName, cat.taxonomyCategoryId]] />
1738 </#if>
1739 </#list>
1740 <#return tagCategoryList>
1741</#function>
1742
1743<#function filterCategories allCategoryInfoList>
1744 <#assign filteredCategoryInfo = []>
1745 <#assign assetEntryQueryService = objectUtil("com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil").getService()>
1746 <#assign assetEntryQuery = objectUtil('com.liferay.asset.kernel.service.persistence.AssetEntryQuery')>
1747
1748 <#list allCategoryInfoList as catInfo>
1749 <#assign catId = catInfo[1]>
1750 <#assign search = assetEntryQuery.setAllCategoryIds([catId])>
1751 <#assign foundEntries = assetEntryQueryService.getEntries(assetEntryQuery)>
1752 <#if foundEntries?size gt 0>
1753 <#assign filteredCategoryInfo += [catInfo]>
1754 </#if>
1755 </#list>
1756
1757 <#return filteredCategoryInfo>
1758</#function>
1759
1760<#assign
1761vocabularies = assetVocabularyService.getGroupVocabularies(groupId)
1762flagVocabulary = findVocabulary("Flag", vocabularies)
1763assetCategoryPropService = serviceLocator.findService("com.liferay.asset.category.property.service.AssetCategoryPropertyLocalService")
1764/>
1765
1766<#function getCategoryIdsFromEntry entry categoriesToFilter assetCategoryLocalService>
1767 <#if !entry??>
1768 <#return []>
1769 </#if>
1770
1771 <#assign categoriesFromEntry = []>
1772
1773 <#assign ids = assetCategoryLocalService.getCategoryIds("com.liferay.journal.model.JournalArticle", entry.getClassPK()) />
1774 <#list categoriesToFilter as catToFilter>
1775 <#assign catIdFromEntry = catToFilter[1] />
1776 <#assign index = ids?seq_index_of(catIdFromEntry)/>
1777 <#if index != -1>
1778 <#assign categoriesFromEntry += [catToFilter]/>
1779 </#if>
1780 </#list>
1781
1782 <#return categoriesFromEntry>
1783</#function>
1784
1785<#macro renderNewsTags categoryList targetPageWhenClickTag removeStartParameterWhenTagIsClicked updateTagParamsWhenClicked>
1786 <#assign tagPrefix = "tags-" + randomNumber(groupId?number)>
1787 <div class="breakpoint">
1788 <div class="col-3-10 md-col-1-12 sm-col-1-4">
1789 <div class="${tagPrefix} ">
1790
1791 <#assign siteUrl = "" />
1792 <#if themeDisplay.getPortalURL()?contains("webserver")>
1793 <#assign siteUrl = themeDisplay.getPortalURL() + themeDisplay.getPathFriendlyURLPublic() + layout.getGroup().friendlyURL />
1794 </#if>
1795
1796 <div class="tags">
1797 <#list categoryList as cat>
1798 <a href="${siteUrl}/busca?q=&category=${cat[1]}"
1799 class="category news-tag-item" cetegoryid="${cat[1]}"># ${cat[0]}</a>
1800 </#list>
1801 </div>
1802 </div>
1803 </div>
1804 </div>
1805
1806 <style>
1807 .${tagPrefix} {
1808 display: flex;
1809 flex-direction: column;
1810 padding: 0;
1811 gap: var(--space-sm);
1812 }
1813
1814 .${tagPrefix} * {
1815 margin: 0;
1816 padding: 0;
1817 }
1818
1819 .${tagPrefix} .tags {
1820 display: flex;
1821 flex-wrap: wrap;
1822 gap: var(--space-xxs, 8px);
1823 padding: var(--space-lg) 0 var(--space-xl);
1824 }
1825
1826 .${tagPrefix} .tags .category {
1827 padding: var(--space-xxxs) var(--space-xxs);
1828 background: var(--color-neutral-100);
1829 border: 1px solid var(--color-neutral-500);
1830 border-radius: var(--border-radius-xl, 32px);
1831
1832 font-family: var(--font-family-base);
1833 font-style: var(--font-style-normal);
1834 font-weight: var(--font-weight-regular);
1835 font-size: var(--font-size-xxxs);
1836 line-height: var(--line-height-xl);
1837 color: var(--color-neutral-800, #373737);
1838 cursor: pointer;
1839 }
1840
1841 body.high-contrast-active .${tagPrefix} .tags .category {
1842 background: rgba(255, 255, 255, 0.32);
1843 border: 1px solid rgba(255, 255, 255, 0.32);
1844 color: var(--text-secondary-default, #F8F8F8);
1845 }
1846
1847 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
1848 .${tagPrefix} .tags {
1849 display: flex;
1850 flex-wrap: wrap;
1851 gap: var(--space-xxs, 8px);
1852 padding: var(--space-sm) 0 var(--space-lg);
1853 }
1854
1855 .${tagPrefix} {
1856 margin-top: var(--space-sm);
1857 }
1858 }
1859 </style>
1860
1861 <script>
1862 AUI().ready(function () {
1863
1864 const urlParams = new URLSearchParams(window.location.search);
1865 const categories = urlParams.getAll("category").sort();
1866
1867 const root = document.querySelector(".${tagPrefix}");
1868 const tags = root.querySelectorAll(".category");
1869 tags.forEach((tag, index) => {
1870
1871 const categoryId = tag.getAttribute("cetegoryid");
1872 if (categories.indexOf(categoryId) != -1) {
1873 tag.classList.add("active");
1874 }
1875
1876 <#if updateTagParamsWhenClicked>
1877 tag.addEventListener("click", (e) => {
1878 e.preventDefault();
1879 const clickedTag = e.target;
1880 const urlParams = new URLSearchParams(window.location.search);
1881 urlParams.delete("tag");
1882 urlParams.delete("category");
1883
1884 const categoryId = clickedTag.getAttribute("cetegoryid");
1885 urlParams.append("category", categoryId);
1886
1887 <#if removeStartParameterWhenTagIsClicked>
1888 urlParams.delete("start");
1889 </#if>
1890
1891 const href = "${themeDisplay.getPortalURL() + mountUrlToPage(targetPageWhenClickTag)}?" + urlParams.toString();
1892 window.location.href = href;
1893 });
1894 </#if>
1895 });
1896 });
1897 </script>
1898
1899</#macro>
1900
1901<#-- ################################################################################################################## -->
1902
1903<#-- ############# Site de Crise - Notícia - Imagem de destaque ####################################################### -->
1904<#macro renderNewsFeaturedImage newsInfo>
1905<#--if newsInfo.newsImageFieldSet.newsImage.url != ""-->
1906
1907 <#if !newsInfo.newsImageFieldSet.newsImage.url?has_content>
1908 <#return />
1909 </#if>
1910
1911 <div class="news-featured-image">
1912 <div class="breakpoint">
1913 <div class="col-3-10 md-col-1-12 sm-col-1-4">
1914 <#if newsInfo.newsImageFieldSet.credits != "">
1915 <p class="credits">
1916 ${newsInfo.newsImageFieldSet.credits}
1917 </p>
1918 </#if>
1919 </div>
1920 </div>
1921 <div class="breakpoint">
1922 <div class="col-2-11 md-col-1-12 sm-col-1-4">
1923 <img alt="${newsInfo.newsImageFieldSet.newsImage.alt}"
1924 src="${newsInfo.newsImageFieldSet.newsImage.url}"
1925 alt="${newsInfo.newsImageFieldSet.newsImage.alt}"/>
1926 </div>
1927 </div>
1928 <#if newsInfo.newsImageFieldSet.legend != "">
1929
1930
1931 <@liferay_util["html-top"]>
1932 <meta name="title" content="${newsInfo.mainHeadlineOfTheNews}">
1933 <meta name="description" content="${newsInfo.newsSummary}">
1934
1935 <meta property="og:type" content="website" >
1936 <meta property="og:url" content="${currentURL}" >
1937 <meta property="og:title" content="${newsInfo.mainHeadlineOfTheNews}">
1938 <meta property="og:description" content="${newsInfo.newsSummary}" />
1939 <meta property="og:image" content= "${themeDisplay.getPortalURL()}/o/adaptive-media/image/${newsInfo.newsImageFieldSet.newsImage.fileEntryId}/Thumbnail-300x300/image" >
1940 <meta property="og:image:alt" content="${newsInfo.newsImageFieldSet.newsImage.alt}">
1941
1942 <meta name="twitter:card" content="summary_large_image">
1943 <meta name="twitter:url" content="${currentURL}" />
1944 <meta name="twitter:title" content="${newsInfo.mainHeadlineOfTheNews}">
1945 <meta name="twitter:description" content="${newsInfo.newsSummary}" />
1946 <meta name="twitter:image" content= "${themeDisplay.getPortalURL()}/o/adaptive-media/image/${newsInfo.newsImageFieldSet.newsImage.fileEntryId}/Thumbnail-300x300/image" >
1947 <meta name="twitter:image:alt" content="${newsInfo.newsImageFieldSet.newsImage.alt}">
1948
1949 </@>
1950
1951
1952 <div class="breakpoint">
1953 <div class="col-3-10 md-col-1-12 sm-col-1-4">
1954 <div class="legend">
1955 <p>${newsInfo.newsImageFieldSet.legend}</p>
1956 <a class="download download-news-image" href="${newsInfo.newsImageFieldSet.newsImage.url}?download=true"
1957 alt="${newsInfo.newsImageFieldSet.newsImage.alt}">
1958 Download
1959 <svg width="16" height="16" viewBox="0 0 16 16" fill="none"
1960 xmlns="http://www.w3.org/2000/svg">
1961 <path d="M5.375 6.875L8 9.5M8 9.5L10.625 6.875M8 9.5V2.5M13.5 9.5V13C13.5 13.1326 13.4473 13.2598 13.3536 13.3536C13.2598 13.4473 13.1326 13.5 13 13.5H3C2.86739 13.5 2.74021 13.4473 2.64645 13.3536C2.55268 13.2598 2.5 13.1326 2.5 13V9.5"
1962 stroke="#008542" stroke-width="1.5" stroke-linecap="round"
1963 stroke-linejoin="round"/>
1964 </svg>
1965 <span>${newsInfo.newsImageFieldSet.legend}</span>
1966 </a>
1967 </div>
1968 </div>
1969 </div>
1970 </#if>
1971 </div>
1972 <style>
1973 .ptb-news__read-news .news-featured-image {
1974 padding: 0 0 var(--space-xl) 0;
1975 }
1976
1977 .ptb-news__read-news .news-featured-image img {
1978 width: 100%;
1979 height: 470px;
1980 object-fit: cover;
1981 border-radius: var(--border-radius-lg, 16px);
1982 }
1983
1984 .ptb-news__read-news .news-featured-image * {
1985 font-family: var(--font-family-base);
1986 line-height: var(--line-height-xl);
1987 }
1988
1989 .ptb-news__read-news .news-featured-image .credits {
1990 font-style: var(--font-style-normal);
1991 font-weight: var(--font-weight-bold, 700);
1992 font-size: var(--font-size-micro, 12px);
1993 text-align: right;
1994 color: var(--color-neutral-600, #959595);
1995 margin-bottom: var(--space-xxxs, 4px);
1996 }
1997
1998 body.high-contrast-active .ptb-news__read-news .news-featured-image .credits {
1999 color: var(--text-secondary-default, #F8F8F8);
2000 }
2001
2002 .ptb-news__read-news .news-featured-image .legend {
2003 margin-top: var(--space-xxxs, 4px);
2004 display: flex;
2005 justify-content: space-between;
2006 }
2007
2008 .ptb-news__read-news .news-featured-image .legend .download-news-image {
2009 position: relative;
2010 }
2011
2012 .ptb-news__read-news .news-featured-image .legend .download-news-image span {
2013 position: absolute;
2014 top: 0;
2015 left: 0;
2016 opacity: 0;
2017 width: 100%;
2018 height: 100%;
2019 }
2020
2021 .ptb-news__read-news .news-featured-image .legend,
2022 .ptb-news__read-news .news-featured-image .legend * {
2023 font-style: var(--font-style-italic, italic);
2024 font-weight: var(--font-weight-regular, 400);
2025 font-size: var(--font-size-xxs, 16px);
2026 color: var(--color-neutral-700, #515867);
2027 }
2028
2029 .ptb-news__read-news .news-featured-image .legend a {
2030 display: flex;
2031 align-items: center;
2032 gap: var(--space-sm, 16px);
2033 color: var(--color-primary-brand, #008542);
2034 font-family: var(--font-family-base);
2035 font-size: var(--font-size-xxxs, 14px);
2036 font-style: var(--font-style-normal, normal);
2037 font-weight: var(--font-weight-bold, 700);
2038 line-height: var(--line-height-lg, 144%);
2039 text-decoration-line: var(--text-decoration-underline, underline);
2040 }
2041
2042 body.high-contrast-active .ptb-news__read-news .news-featured-image .legend,
2043 body.high-contrast-active .ptb-news__read-news .news-featured-image .legend * {
2044 color: var(--text-secondary-default, #F8F8F8);
2045 }
2046
2047 body.high-contrast-active .ptb-news__read-news .news-featured-image .legend .download svg path {
2048 stroke: var(--color-primary-solid-to-bright-200, var(--color-primary-medium));
2049 }
2050
2051 .ptb-news__read-news .news-featured-image .legend .download * {
2052 pointer-events: none;
2053 }
2054
2055 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
2056 .ptb-news__read-news .news-featured-image .legend,
2057 .ptb-news__read-news .news-featured-image .legend * {
2058 font-size: var(--font-size-xxs, 14px);
2059 line-height: var(--line-height-xl, 160%);
2060 }
2061
2062 .ptb-news__read-news .news-featured-image img {
2063 height: 163px;
2064 }
2065 }
2066 </style>
2067
2068<#--/#if -->
2069</#macro>
2070<#-- ################################################################################################################## -->
2071
2072<#-- ############# Site de Crise - Notícia - Conteúdo da notícia ###################################################### -->
2073
2074<#macro renderNewsContent newsInfo>
2075
2076 <#assign targetStr = "<div class='paragraph_separator'><span class='dot'></span><span class='dot'></span><span class='dot'></span><span class='dot'></span></div>">
2077 <#assign content = newsInfo.newsContent?replace("<p></p>", targetStr, 'r')>
2078 <#assign content = content?replace("<p> </p>", targetStr, 'r')>
2079 <#assign content = content?replace("<p></p>", targetStr, 'r')>
2080 <#assign content = content?replace("<p> </p>", targetStr, 'r')>
2081
2082 <div class="news-content breakpoint">
2083 ${content}
2084
2085 <div class="audio-template audio-pause audio-unmuted" style="display:none">
2086 <div class="audio-button-play">
2087 <svg class="audio-play-icon" width="100%" height="100%" viewBox="0 0 91 90" fill="#008542"
2088 xmlns="http://www.w3.org/2000/svg">
2089 <circle cx="45.2903" cy="45" r="44.5" stroke="#008542"></circle>
2090 <path d="M58.9759 43.2545C60.3409 44.0179 60.3409 45.9821 58.9759 46.7455L38.7505 58.0578C37.4173 58.8034 35.7742 57.8397 35.7742 56.3122L35.7742 33.6878C35.7742 32.1603 37.4173 31.1966 38.7505 31.9422L58.9759 43.2545Z"
2091 fill="white"></path>
2092 </svg>
2093
2094 <svg class="audio-pause-icon" width="100%" height="100%" viewBox="0 0 91 90" fill="#008542"
2095 xmlns="http://www.w3.org/2000/svg">
2096 <circle cx="45.2903" cy="45" r="44.5" stroke="#008542"></circle>
2097 <path d="M42.3736 30.4167H33.6236V59.5834H42.3736V30.4167Z" fill="white"></path>
2098 <path d="M48.2069 59.5834H56.9569V30.4167H48.2069V59.5834Z" fill="white"></path>
2099 </svg>
2100 </div>
2101 <div class="audio-sondwave">
2102 <svg class="audio-sondwave-desktop" width="100%" height="100%" viewBox="0 0 590 30" fill="none"
2103 xmlns="http://www.w3.org/2000/svg">
2104 <g clip-path="url(#clip0_2625_8152)">
2105 <line x1="0.75" y1="0.75" x2="0.749999" y2="29.25" stroke="#008542" stroke-width="1.5"
2106 stroke-linecap="round"/>
2107 <line x1="5.91016" y1="7.75" x2="5.91016" y2="21.25" stroke="#008542" stroke-width="1.5"
2108 stroke-linecap="round"/>
2109 <line x1="11.0723" y1="5.75" x2="11.0723" y2="24.25" stroke="#008542" stroke-width="1.5"
2110 stroke-linecap="round"/>
2111 <line x1="16.2344" y1="11.75" x2="16.2344" y2="18.25" stroke="#008542" stroke-width="1.5"
2112 stroke-linecap="round"/>
2113 <line x1="21.3945" y1="9.75" x2="21.3945" y2="20.25" stroke="#008542" stroke-width="1.5"
2114 stroke-linecap="round"/>
2115 <line x1="26.5566" y1="9.75" x2="26.5566" y2="19.25" stroke="#008542" stroke-width="1.5"
2116 stroke-linecap="round"/>
2117 <line x1="30.6855" y1="1.75" x2="30.6855" y2="28.25" stroke="#008542" stroke-width="1.5"
2118 stroke-linecap="round"/>
2119 <line x1="35.8477" y1="12.75" x2="35.8477" y2="17.25" stroke="#008542" stroke-width="1.5"
2120 stroke-linecap="round"/>
2121 <line x1="41.0078" y1="13.75" x2="41.0078" y2="16.25" stroke="#008542" stroke-width="1.5"
2122 stroke-linecap="round"/>
2123 <line x1="46.1699" y1="10.75" x2="46.1699" y2="19.25" stroke="#008542" stroke-width="1.5"
2124 stroke-linecap="round"/>
2125 <line x1="51.3301" y1="8.75" x2="51.3301" y2="20.25" stroke="#008542" stroke-width="1.5"
2126 stroke-linecap="round"/>
2127 <line x1="56.4922" y1="0.75" x2="56.4922" y2="29.25" stroke="#008542" stroke-width="1.5"
2128 stroke-linecap="round"/>
2129 <line x1="61.6523" y1="7.75" x2="61.6523" y2="21.25" stroke="#008542" stroke-width="1.5"
2130 stroke-linecap="round"/>
2131 <line x1="66.8145" y1="5.75" x2="66.8145" y2="24.25" stroke="#008542" stroke-width="1.5"
2132 stroke-linecap="round"/>
2133 <line x1="71.9766" y1="11.75" x2="71.9766" y2="18.25" stroke="#008542" stroke-width="1.5"
2134 stroke-linecap="round"/>
2135 <line x1="77.1367" y1="9.75" x2="77.1367" y2="20.25" stroke="#008542" stroke-width="1.5"
2136 stroke-linecap="round"/>
2137 <line x1="82.2988" y1="9.75" x2="82.2988" y2="19.25" stroke="#008542" stroke-width="1.5"
2138 stroke-linecap="round"/>
2139 <line x1="86.4277" y1="1.75" x2="86.4277" y2="28.25" stroke="#008542" stroke-width="1.5"
2140 stroke-linecap="round"/>
2141 <line x1="91.5879" y1="12.75" x2="91.5879" y2="17.25" stroke="#008542" stroke-width="1.5"
2142 stroke-linecap="round"/>
2143 <line x1="96.75" y1="13.75" x2="96.75" y2="16.25" stroke="#008542" stroke-width="1.5"
2144 stroke-linecap="round"/>
2145 <line x1="101.91" y1="10.75" x2="101.91" y2="19.25" stroke="#008542" stroke-width="1.5"
2146 stroke-linecap="round"/>
2147 <line x1="107.072" y1="8.75" x2="107.072" y2="20.25" stroke="#008542" stroke-width="1.5"
2148 stroke-linecap="round"/>
2149 <line x1="112.234" y1="0.75" x2="112.234" y2="29.25" stroke="#008542" stroke-width="1.5"
2150 stroke-linecap="round"/>
2151 <line x1="117.395" y1="7.75" x2="117.395" y2="21.25" stroke="#008542" stroke-width="1.5"
2152 stroke-linecap="round"/>
2153 <line x1="122.557" y1="5.75" x2="122.557" y2="24.25" stroke="#008542" stroke-width="1.5"
2154 stroke-linecap="round"/>
2155 <line x1="127.717" y1="11.75" x2="127.717" y2="18.25" stroke="#008542" stroke-width="1.5"
2156 stroke-linecap="round"/>
2157 <line x1="132.879" y1="9.75" x2="132.879" y2="20.25" stroke="#008542" stroke-width="1.5"
2158 stroke-linecap="round"/>
2159 <line x1="138.041" y1="9.75" x2="138.041" y2="19.25" stroke="#008542" stroke-width="1.5"
2160 stroke-linecap="round"/>
2161 <line x1="142.17" y1="1.75" x2="142.17" y2="28.25" stroke="#008542" stroke-width="1.5"
2162 stroke-linecap="round"/>
2163 <line x1="147.33" y1="12.75" x2="147.33" y2="17.25" stroke="#008542" stroke-width="1.5"
2164 stroke-linecap="round"/>
2165 <line x1="151.75" y1="0.75" x2="151.75" y2="29.25" stroke="#008542" stroke-width="1.5"
2166 stroke-linecap="round"/>
2167 <line x1="156.91" y1="7.75" x2="156.91" y2="21.25" stroke="#008542" stroke-width="1.5"
2168 stroke-linecap="round"/>
2169 <line x1="162.072" y1="5.75" x2="162.072" y2="24.25" stroke="#008542" stroke-width="1.5"
2170 stroke-linecap="round"/>
2171 <line x1="167.234" y1="11.75" x2="167.234" y2="18.25" stroke="#008542" stroke-width="1.5"
2172 stroke-linecap="round"/>
2173 <line x1="172.395" y1="9.75" x2="172.395" y2="20.25" stroke="#008542" stroke-width="1.5"
2174 stroke-linecap="round"/>
2175 <line x1="177.557" y1="9.75" x2="177.557" y2="19.25" stroke="#008542" stroke-width="1.5"
2176 stroke-linecap="round"/>
2177 <line x1="181.686" y1="1.75" x2="181.686" y2="28.25" stroke="#008542" stroke-width="1.5"
2178 stroke-linecap="round"/>
2179 <line x1="186.848" y1="12.75" x2="186.848" y2="17.25" stroke="#008542" stroke-width="1.5"
2180 stroke-linecap="round"/>
2181 <line x1="192.008" y1="13.75" x2="192.008" y2="16.25" stroke="#008542" stroke-width="1.5"
2182 stroke-linecap="round"/>
2183 <line x1="197.17" y1="10.75" x2="197.17" y2="19.25" stroke="#008542" stroke-width="1.5"
2184 stroke-linecap="round"/>
2185 <line x1="202.33" y1="8.75" x2="202.33" y2="20.25" stroke="#008542" stroke-width="1.5"
2186 stroke-linecap="round"/>
2187 <line x1="207.492" y1="0.75" x2="207.492" y2="29.25" stroke="#008542" stroke-width="1.5"
2188 stroke-linecap="round"/>
2189 <line x1="212.652" y1="7.75" x2="212.652" y2="21.25" stroke="#008542" stroke-width="1.5"
2190 stroke-linecap="round"/>
2191 <line x1="217.814" y1="5.75" x2="217.814" y2="24.25" stroke="#008542" stroke-width="1.5"
2192 stroke-linecap="round"/>
2193 <line x1="222.977" y1="11.75" x2="222.977" y2="18.25" stroke="#008542" stroke-width="1.5"
2194 stroke-linecap="round"/>
2195 <line x1="228.137" y1="9.75" x2="228.137" y2="20.25" stroke="#008542" stroke-width="1.5"
2196 stroke-linecap="round"/>
2197 <line x1="233.299" y1="9.75" x2="233.299" y2="19.25" stroke="#008542" stroke-width="1.5"
2198 stroke-linecap="round"/>
2199 <line x1="237.428" y1="1.75" x2="237.428" y2="28.25" stroke="#008542" stroke-width="1.5"
2200 stroke-linecap="round"/>
2201 <line x1="242.588" y1="12.75" x2="242.588" y2="17.25" stroke="#008542" stroke-width="1.5"
2202 stroke-linecap="round"/>
2203 <line x1="247.75" y1="13.75" x2="247.75" y2="16.25" stroke="#008542" stroke-width="1.5"
2204 stroke-linecap="round"/>
2205 <line x1="252.91" y1="10.75" x2="252.91" y2="19.25" stroke="#008542" stroke-width="1.5"
2206 stroke-linecap="round"/>
2207 <line x1="258.072" y1="8.75" x2="258.072" y2="20.25" stroke="#008542" stroke-width="1.5"
2208 stroke-linecap="round"/>
2209 <line x1="263.234" y1="0.75" x2="263.234" y2="29.25" stroke="#008542" stroke-width="1.5"
2210 stroke-linecap="round"/>
2211 <line x1="268.395" y1="7.75" x2="268.395" y2="21.25" stroke="#008542" stroke-width="1.5"
2212 stroke-linecap="round"/>
2213 <line x1="273.557" y1="5.75" x2="273.557" y2="24.25" stroke="#008542" stroke-width="1.5"
2214 stroke-linecap="round"/>
2215 <line x1="278.717" y1="11.75" x2="278.717" y2="18.25" stroke="#008542" stroke-width="1.5"
2216 stroke-linecap="round"/>
2217 <line x1="283.879" y1="9.75" x2="283.879" y2="20.25" stroke="#008542" stroke-width="1.5"
2218 stroke-linecap="round"/>
2219 <line x1="289.041" y1="9.75" x2="289.041" y2="19.25" stroke="#008542" stroke-width="1.5"
2220 stroke-linecap="round"/>
2221 <line x1="293.17" y1="1.75" x2="293.17" y2="28.25" stroke="#008542" stroke-width="1.5"
2222 stroke-linecap="round"/>
2223 <line x1="298.33" y1="12.75" x2="298.33" y2="17.25" stroke="#008542" stroke-width="1.5"
2224 stroke-linecap="round"/>
2225 <line x1="302.75" y1="10.75" x2="302.75" y2="19.25" stroke="#008542" stroke-width="1.5"
2226 stroke-linecap="round"/>
2227 <line x1="307.912" y1="8.75" x2="307.912" y2="20.25" stroke="#008542" stroke-width="1.5"
2228 stroke-linecap="round"/>
2229 <line x1="313.072" y1="0.75" x2="313.072" y2="29.25" stroke="#008542" stroke-width="1.5"
2230 stroke-linecap="round"/>
2231 <line x1="318.234" y1="7.75" x2="318.234" y2="21.25" stroke="#008542" stroke-width="1.5"
2232 stroke-linecap="round"/>
2233 <line x1="323.395" y1="5.75" x2="323.395" y2="24.25" stroke="#008542" stroke-width="1.5"
2234 stroke-linecap="round"/>
2235 <line x1="328.557" y1="11.75" x2="328.557" y2="18.25" stroke="#008542" stroke-width="1.5"
2236 stroke-linecap="round"/>
2237 <line x1="333.719" y1="9.75" x2="333.719" y2="20.25" stroke="#008542" stroke-width="1.5"
2238 stroke-linecap="round"/>
2239 <line x1="338.879" y1="9.75" x2="338.879" y2="19.25" stroke="#008542" stroke-width="1.5"
2240 stroke-linecap="round"/>
2241 <line x1="343.008" y1="1.75" x2="343.008" y2="28.25" stroke="#008542" stroke-width="1.5"
2242 stroke-linecap="round"/>
2243 <line x1="348.17" y1="12.75" x2="348.17" y2="17.25" stroke="#008542" stroke-width="1.5"
2244 stroke-linecap="round"/>
2245 <line x1="353.33" y1="13.75" x2="353.33" y2="16.25" stroke="#008542" stroke-width="1.5"
2246 stroke-linecap="round"/>
2247 <line x1="358.492" y1="10.75" x2="358.492" y2="19.25" stroke="#008542" stroke-width="1.5"
2248 stroke-linecap="round"/>
2249 <line x1="363.652" y1="8.75" x2="363.652" y2="20.25" stroke="#008542" stroke-width="1.5"
2250 stroke-linecap="round"/>
2251 <line x1="368.814" y1="0.75" x2="368.814" y2="29.25" stroke="#008542" stroke-width="1.5"
2252 stroke-linecap="round"/>
2253 <line x1="373.977" y1="7.75" x2="373.977" y2="21.25" stroke="#008542" stroke-width="1.5"
2254 stroke-linecap="round"/>
2255 <line x1="379.137" y1="5.75" x2="379.137" y2="24.25" stroke="#008542" stroke-width="1.5"
2256 stroke-linecap="round"/>
2257 <line x1="384.299" y1="11.75" x2="384.299" y2="18.25" stroke="#008542" stroke-width="1.5"
2258 stroke-linecap="round"/>
2259 <line x1="389.459" y1="9.75" x2="389.459" y2="20.25" stroke="#008542" stroke-width="1.5"
2260 stroke-linecap="round"/>
2261 <line x1="394.621" y1="9.75" x2="394.621" y2="19.25" stroke="#008542" stroke-width="1.5"
2262 stroke-linecap="round"/>
2263 <line x1="398.75" y1="1.75" x2="398.75" y2="28.25" stroke="#008542" stroke-width="1.5"
2264 stroke-linecap="round"/>
2265 <line x1="403.912" y1="12.75" x2="403.912" y2="17.25" stroke="#008542" stroke-width="1.5"
2266 stroke-linecap="round"/>
2267 <line x1="408.33" y1="10.75" x2="408.33" y2="19.25" stroke="#008542" stroke-width="1.5"
2268 stroke-linecap="round"/>
2269 <line x1="413.492" y1="8.75" x2="413.492" y2="20.25" stroke="#008542" stroke-width="1.5"
2270 stroke-linecap="round"/>
2271 <line x1="418.654" y1="0.75" x2="418.654" y2="29.25" stroke="#008542" stroke-width="1.5"
2272 stroke-linecap="round"/>
2273 <line x1="423.814" y1="7.75" x2="423.814" y2="21.25" stroke="#008542" stroke-width="1.5"
2274 stroke-linecap="round"/>
2275 <line x1="428.977" y1="5.75" x2="428.977" y2="24.25" stroke="#008542" stroke-width="1.5"
2276 stroke-linecap="round"/>
2277 <line x1="434.137" y1="11.75" x2="434.137" y2="18.25" stroke="#008542" stroke-width="1.5"
2278 stroke-linecap="round"/>
2279 <line x1="439.299" y1="9.75" x2="439.299" y2="20.25" stroke="#008542" stroke-width="1.5"
2280 stroke-linecap="round"/>
2281 <line x1="444.461" y1="9.75" x2="444.461" y2="19.25" stroke="#008542" stroke-width="1.5"
2282 stroke-linecap="round"/>
2283 <line x1="448.59" y1="1.75" x2="448.59" y2="28.25" stroke="#008542" stroke-width="1.5"
2284 stroke-linecap="round"/>
2285 <line x1="453.75" y1="12.75" x2="453.75" y2="17.25" stroke="#008542" stroke-width="1.5"
2286 stroke-linecap="round"/>
2287 <line x1="458.912" y1="13.75" x2="458.912" y2="16.25" stroke="#008542" stroke-width="1.5"
2288 stroke-linecap="round"/>
2289 <line x1="464.072" y1="10.75" x2="464.072" y2="19.25" stroke="#008542" stroke-width="1.5"
2290 stroke-linecap="round"/>
2291 <line x1="469.234" y1="8.75" x2="469.234" y2="20.25" stroke="#008542" stroke-width="1.5"
2292 stroke-linecap="round"/>
2293 <line x1="474.395" y1="0.75" x2="474.395" y2="29.25" stroke="#008542" stroke-width="1.5"
2294 stroke-linecap="round"/>
2295 <line x1="479.557" y1="7.75" x2="479.557" y2="21.25" stroke="#008542" stroke-width="1.5"
2296 stroke-linecap="round"/>
2297 <line x1="484.719" y1="5.75" x2="484.719" y2="24.25" stroke="#008542" stroke-width="1.5"
2298 stroke-linecap="round"/>
2299 <line x1="489.879" y1="11.75" x2="489.879" y2="18.25" stroke="#008542" stroke-width="1.5"
2300 stroke-linecap="round"/>
2301 <line x1="495.041" y1="9.75" x2="495.041" y2="20.25" stroke="#008542" stroke-width="1.5"
2302 stroke-linecap="round"/>
2303 <line x1="500.201" y1="9.75" x2="500.201" y2="19.25" stroke="#008542" stroke-width="1.5"
2304 stroke-linecap="round"/>
2305 <line x1="504.33" y1="1.75" x2="504.33" y2="28.25" stroke="#008542" stroke-width="1.5"
2306 stroke-linecap="round"/>
2307 <line x1="509.492" y1="12.75" x2="509.492" y2="17.25" stroke="#008542" stroke-width="1.5"
2308 stroke-linecap="round"/>
2309 <line x1="513.912" y1="10.75" x2="513.912" y2="19.25" stroke="#008542" stroke-width="1.5"
2310 stroke-linecap="round"/>
2311 <line x1="519.072" y1="8.75" x2="519.072" y2="20.25" stroke="#008542" stroke-width="1.5"
2312 stroke-linecap="round"/>
2313 <line x1="524.234" y1="0.75" x2="524.234" y2="29.25" stroke="#008542" stroke-width="1.5"
2314 stroke-linecap="round"/>
2315 <line x1="529.395" y1="7.75" x2="529.395" y2="21.25" stroke="#008542" stroke-width="1.5"
2316 stroke-linecap="round"/>
2317 <line x1="534.557" y1="5.75" x2="534.557" y2="24.25" stroke="#008542" stroke-width="1.5"
2318 stroke-linecap="round"/>
2319 <line x1="539.719" y1="11.75" x2="539.719" y2="18.25" stroke="#008542" stroke-width="1.5"
2320 stroke-linecap="round"/>
2321 <line x1="544.879" y1="9.75" x2="544.879" y2="20.25" stroke="#008542" stroke-width="1.5"
2322 stroke-linecap="round"/>
2323 <line x1="550.041" y1="9.75" x2="550.041" y2="19.25" stroke="#008542" stroke-width="1.5"
2324 stroke-linecap="round"/>
2325 <line x1="554.17" y1="1.75" x2="554.17" y2="28.25" stroke="#008542" stroke-width="1.5"
2326 stroke-linecap="round"/>
2327 <line x1="559.332" y1="12.75" x2="559.332" y2="17.25" stroke="#008542" stroke-width="1.5"
2328 stroke-linecap="round"/>
2329 <line x1="564.492" y1="13.75" x2="564.492" y2="16.25" stroke="#008542" stroke-width="1.5"
2330 stroke-linecap="round"/>
2331 <line x1="569.654" y1="10.75" x2="569.654" y2="19.25" stroke="#008542" stroke-width="1.5"
2332 stroke-linecap="round"/>
2333 <line x1="574.814" y1="8.75" x2="574.814" y2="20.25" stroke="#008542" stroke-width="1.5"
2334 stroke-linecap="round"/>
2335 <line x1="579.977" y1="0.75" x2="579.977" y2="29.25" stroke="#008542" stroke-width="1.5"
2336 stroke-linecap="round"/>
2337 <line x1="585.137" y1="7.75" x2="585.137" y2="21.25" stroke="#008542" stroke-width="1.5"
2338 stroke-linecap="round"/>
2339 <line x1="590.299" y1="5.75" x2="590.299" y2="24.25" stroke="#008542" stroke-width="1.5"
2340 stroke-linecap="round"/>
2341 </g>
2342 <defs>
2343 <clipPath id="clip0_2625_8152">
2344 <rect width="590" height="30" fill="white"/>
2345 </clipPath>
2346 </defs>
2347 </svg>
2348 <svg class="audio-sondwave-mobile" width="100%" height="100%" viewBox="0 0 102 30" fill="none"
2349 xmlns="http://www.w3.org/2000/svg">
2350 <g clip-path="url(#clip0_2625_8922)">
2351 <line x1="0.75" y1="0.75" x2="0.749999" y2="29.25" stroke="#008542" stroke-width="1.5"
2352 stroke-linecap="round"/>
2353 <line x1="5.91016" y1="7.75" x2="5.91016" y2="21.25" stroke="#008542" stroke-width="1.5"
2354 stroke-linecap="round"/>
2355 <line x1="11.0723" y1="5.75" x2="11.0723" y2="24.25" stroke="#008542" stroke-width="1.5"
2356 stroke-linecap="round"/>
2357 <line x1="16.2344" y1="11.75" x2="16.2344" y2="18.25" stroke="#008542" stroke-width="1.5"
2358 stroke-linecap="round"/>
2359 <line x1="21.3945" y1="9.75" x2="21.3945" y2="20.25" stroke="#008542" stroke-width="1.5"
2360 stroke-linecap="round"/>
2361 <line x1="26.5566" y1="9.75" x2="26.5566" y2="19.25" stroke="#008542" stroke-width="1.5"
2362 stroke-linecap="round"/>
2363 <line x1="30.6855" y1="1.75" x2="30.6855" y2="28.25" stroke="#008542" stroke-width="1.5"
2364 stroke-linecap="round"/>
2365 <line x1="35.8477" y1="12.75" x2="35.8477" y2="17.25" stroke="#008542" stroke-width="1.5"
2366 stroke-linecap="round"/>
2367 <line x1="41.0078" y1="13.75" x2="41.0078" y2="16.25" stroke="#008542" stroke-width="1.5"
2368 stroke-linecap="round"/>
2369 <line x1="46.1699" y1="10.75" x2="46.1699" y2="19.25" stroke="#008542" stroke-width="1.5"
2370 stroke-linecap="round"/>
2371 <line x1="51.3301" y1="8.75" x2="51.3301" y2="20.25" stroke="#008542" stroke-width="1.5"
2372 stroke-linecap="round"/>
2373 <line x1="56.4922" y1="0.75" x2="56.4922" y2="29.25" stroke="#008542" stroke-width="1.5"
2374 stroke-linecap="round"/>
2375 <line x1="61.6523" y1="7.75" x2="61.6523" y2="21.25" stroke="#008542" stroke-width="1.5"
2376 stroke-linecap="round"/>
2377 <line x1="66.8145" y1="5.75" x2="66.8145" y2="24.25" stroke="#008542" stroke-width="1.5"
2378 stroke-linecap="round"/>
2379 <line x1="71.9766" y1="11.75" x2="71.9766" y2="18.25" stroke="#008542" stroke-width="1.5"
2380 stroke-linecap="round"/>
2381 <line x1="77.1367" y1="9.75" x2="77.1367" y2="20.25" stroke="#008542" stroke-width="1.5"
2382 stroke-linecap="round"/>
2383 <line x1="82.2988" y1="9.75" x2="82.2988" y2="19.25" stroke="#008542" stroke-width="1.5"
2384 stroke-linecap="round"/>
2385 <line x1="86.4277" y1="1.75" x2="86.4277" y2="28.25" stroke="#008542" stroke-width="1.5"
2386 stroke-linecap="round"/>
2387 <line x1="91.5879" y1="12.75" x2="91.5879" y2="17.25" stroke="#008542" stroke-width="1.5"
2388 stroke-linecap="round"/>
2389 <line x1="96.75" y1="13.75" x2="96.75" y2="16.25" stroke="#008542" stroke-width="1.5"
2390 stroke-linecap="round"/>
2391 <line x1="101.91" y1="10.75" x2="101.91" y2="19.25" stroke="#008542" stroke-width="1.5"
2392 stroke-linecap="round"/>
2393 </g>
2394 <defs>
2395 <clipPath id="clip0_2625_8922">
2396 <rect width="102" height="30" fill="white"/>
2397 </clipPath>
2398 </defs>
2399 </svg>
2400 </div>
2401 <div class="audio-time paragraph-micro-bold"> 00:00</div>
2402 <div class="audio-button-mute">
2403 <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32" fill="none">
2404 <path d="M27.3625 9.6375C28.1993 10.4723 28.8632 11.464 29.3161 12.5558C29.7691 13.6476 30.0023 14.818 30.0023 16C30.0023 17.182 29.7691 18.3524 29.3161 19.4442C28.8632 20.536 28.1993 21.5277 27.3625 22.3625M10 21H4C3.73478 21 3.48043 20.8946 3.29289 20.7071C3.10536 20.5196 3 20.2652 3 20V12C3 11.7348 3.10536 11.4804 3.29289 11.2929C3.48043 11.1054 3.73478 11 4 11H10M10 21L19 28V4L10 11M10 21V11M23.825 13.175C24.1969 13.5455 24.492 13.9857 24.6933 14.4705C24.8947 14.9553 24.9983 15.4751 24.9983 16C24.9983 16.5249 24.8947 17.0447 24.6933 17.5295C24.492 18.0143 24.1969 18.4545 23.825 18.825"
2405 stroke="#525252" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2406 </svg>
2407 </div>
2408 </div>
2409 </div>
2410
2411 <style>
2412 .ptb-news__read-news .news-content {
2413 gap: var(--space-xl, 44px);
2414 padding-bottom: var(--space-giant, 80px);
2415 }
2416
2417 .ptb-news__read-news .news-content strong {
2418 font-weight: var(--font-weight-bold);
2419 }
2420
2421 .ptb-news__read-news .news-content em {
2422 font-style: var(--font-style-italic);
2423 }
2424
2425 .ptb-news__read-news .news-content a {
2426 font-family: var(--font-family-base);
2427 font-style: var(--font-style-normal, normal);
2428 font-weight: var(--font-weight-bold, 700);
2429 font-size: var(--font-size-xs, 18px);
2430 line-height: var(--line-height-xl, 160%);
2431
2432 text-decoration-line: var(--text-decoration-underline, underline);
2433 color: #008542;
2434 }
2435
2436 body.high-contrast-active .ptb-news__read-news .news-content a {
2437 color: #E4F7E8;
2438 }
2439
2440 .ptb-news__read-news cite a {
2441 font-family: var(--font-family-base);
2442 font-style: var(--font-style-normal, normal);
2443 font-weight: var(--font-weight-bold, 700);
2444 font-size: var(--font-size-xs, 18px);
2445 line-height: var(--line-height-xl, 160%);
2446
2447 text-decoration-line: var(--text-decoration-underline, underline);
2448 color: #008542;
2449 }
2450
2451 body.high-contrast-active .cite a {
2452 color: #E4F7E8;
2453 }
2454
2455 .ptb-news__read-news .news-content ul {
2456 padding-left: 27px;
2457 margin-top: -16px;
2458 }
2459
2460 .ptb-news__read-news .news-content ul li::marker {
2461 content: "■" !important;
2462 color: var(--color-secondary-medium) !important;
2463 font-size: var(--size-xxs);
2464 }
2465
2466 .ptb-news__read-news .news-content ul li {
2467 color: var(--color-text-primary-default);
2468 padding: 8px 0;
2469
2470 /*paragraph-sm-regular*/
2471 font-size: var(--font-size-xxs);
2472 line-height: var(--line-height-xl);
2473 font-weight: var(--font-weight-regular);
2474 font-style: var(--font-style-normal);
2475 text-decoration: var(--text-decoration-none);
2476
2477 margin-left: calc(-1 * var(--space-sm));
2478 padding-left: var(--space-sm);
2479 }
2480
2481 .ptb-news__read-news .news-content ul li * {
2482 color: var(--color-text-primary-default);
2483 padding: 8px 0;
2484
2485 /*paragraph-sm-regular*/
2486 font-size: var(--font-size-xxs);
2487 line-height: var(--line-height-xl);
2488 font-weight: var(--font-weight-regular);
2489 font-style: var(--font-style-normal);
2490 text-decoration: var(--text-decoration-none);
2491 }
2492
2493 .ptb-news__read-news .news-content > * {
2494 grid-column-start: 3;
2495 grid-column-end: 11;
2496 }
2497
2498 .ptb-news__read-news .news-content figure figcaption {
2499 display: flex;
2500 justify-content: space-between;
2501 align-items: flex-start;
2502 align-self: stretch;
2503 margin-top: var(--space-xxs, 8px);
2504 text-align: justify;
2505 }
2506
2507 .ptb-news__read-news .news-content figure figcaption,
2508 .ptb-news__read-news .news-content figure figcaption * {
2509 color: var(--color-neutral-700, #525252);
2510 font-family: var(--font-family-base);
2511 font-size: var(--font-size-xxxs, 14px);
2512 font-style: var(--font-style-italic, italic);
2513 font-weight: var(--font-weight-regular, 400);
2514 line-height: var(--line-height-xl, 160%);
2515 }
2516
2517 body.high-contrast-active .ptb-news__read-news .news-content figure figcaption,
2518 body.high-contrast-active .ptb-news__read-news .news-content figure figcaption * {
2519 color: var(--text-secondary-default, #F8F8F8);
2520 }
2521
2522 .ptb-news__read-news .news-content figure figcaption br {
2523 display: none;
2524 }
2525
2526 .ptb-news__read-news .news-content .embed-responsive {
2527 width: 100% !important;
2528 border-radius: var(--border-radius-md, 16px);
2529 }
2530
2531 .ptb-news__read-news .news-content img,
2532 .ptb-news__read-news .news-content figure {
2533 width: 100%;
2534 object-fit: cover;
2535 border-radius: var(--border-radius-md, 16px);
2536 }
2537
2538
2539 .ptb-news__read-news .news-content p img {
2540 width: 100%;
2541 object-fit: cover;
2542 border-radius: var(--border-radius-md, 16px);
2543 }
2544
2545 .ptb-news__read-news .news-content p,
2546 .ptb-news__read-news .news-content span {
2547 margin: 0;
2548 padding: 0;
2549 }
2550
2551 .ptb-news__read-news .news-content p {
2552 margin: -var(--space-xxs, 8px) 0;
2553 }
2554
2555 .ptb-news__read-news .news-content .carousel p {
2556 margin: 0;
2557 }
2558
2559 .ptb-news__read-news .news-content .paragraph_separator {
2560 display: flex;
2561 width: 100%;
2562 height: fit-content;
2563 justify-content: center;
2564 gap: 6px;
2565 }
2566
2567 .ptb-news__read-news .news-content .paragraph_separator .dot {
2568 height: 4px;
2569 width: 4px;
2570 background-color: var(--color-neutral-600, #959595);
2571 border-radius: 100%;
2572 display: inline-block;
2573 }
2574
2575 .ptb-news__read-news .news-content * {
2576 font-family: var(--font-family-base);
2577 font-style: var(--font-style-normal, normal);
2578 font-weight: var(--font-weight-regular, 400);
2579 font-size: var(--font-size-xs, 18px);
2580 line-height: var(--line-height-xl, 160%);
2581 color: var(--color-neutral-800, #373737);
2582 }
2583
2584 body.high-contrast-active .ptb-news__read-news .news-content * {
2585 color: var(--text-primary-default, var(--color-neutral-100));
2586 }
2587
2588 .ptb-news__read-news .news-content p {
2589 font-style: var(--font-style-normal, normal);
2590 font-weight: var(--font-weight-regular, 400);
2591 font-size: var(--font-size-xs, 16px);
2592 line-height: var(--line-height-xl, 160%);
2593 color: var(--color-neutral-700, #515867);
2594 }
2595
2596
2597 .ptb-news__read-news .news-content h1,
2598 .ptb-news__read-news .news-content h1 *,
2599 .ptb-news__read-news .news-content h2,
2600 .ptb-news__read-news .news-content h2 *,
2601 .ptb-news__read-news .news-content h3,
2602 .ptb-news__read-news .news-content h3 *,
2603 .ptb-news__read-news .news-content h4,
2604 .ptb-news__read-news .news-content h4 *,
2605 .ptb-news__read-news .news-content h5,
2606 .ptb-news__read-news .news-content h5 *,
2607 .ptb-news__read-news .news-content h6,
2608 .ptb-news__read-news .news-content h6 * {
2609 color: var(--color-neutral-800, #373737) !important;
2610 }
2611
2612 body.high-contrast-active .ptb-news__read-news .news-content h1,
2613 body.high-contrast-active .ptb-news__read-news .news-content h1 *,
2614 body.high-contrast-active .ptb-news__read-news .news-content h2,
2615 body.high-contrast-active .ptb-news__read-news .news-content h2 *,
2616 body.high-contrast-active .ptb-news__read-news .news-content h3,
2617 body.high-contrast-active .ptb-news__read-news .news-content h3 *,
2618 body.high-contrast-active .ptb-news__read-news .news-content h4,
2619 body.high-contrast-active .ptb-news__read-news .news-content h4 *,
2620 body.high-contrast-active .ptb-news__read-news .news-content h5,
2621 body.high-contrast-active .ptb-news__read-news .news-content h5 *,
2622 body.high-contrast-active .ptb-news__read-news .news-content h6,
2623 body.high-contrast-active .ptb-news__read-news .news-content h6 * {
2624 color: var(--text-primary-default, var(--color-neutral-100)) !important;
2625 }
2626
2627 .ptb-news__read-news .news-content h1:last-child,
2628 .ptb-news__read-news .news-content h2:last-child,
2629 .ptb-news__read-news .news-content h3:last-child,
2630 .ptb-news__read-news .news-content h4:last-child,
2631 .ptb-news__read-news .news-content h5:last-child,
2632 .ptb-news__read-news .news-content h5:last-child,
2633 .ptb-news__read-news .news-content h6:last-child,
2634 .ptb-news__read-news .news-content p:last-child {
2635 padding-bottom: 0 !important;
2636 }
2637
2638 .ptb-news__read-news .news-content h1,
2639 .ptb-news__read-news .news-content h1 * {
2640 font-size: var(--font-size-xxl) !important;
2641 line-height: var(--line-height-sm) !important;
2642 font-weight: var(--font-weight-bold) !important;
2643 font-style: var(--font-style-normal) !important;
2644 text-decoration: var(--text-decoration-none) !important;
2645 }
2646
2647 .ptb-news__read-news .news-content h2,
2648 .ptb-news__read-news .news-content h2 * {
2649 font-size: var(--font-size-xl) !important;
2650 line-height: var(--line-height-sm) !important;
2651 font-weight: var(--font-weight-bold) !important;
2652 font-style: var(--font-style-normal) !important;
2653 text-decoration: var(--text-decoration-none) !important;
2654
2655 }
2656
2657 .ptb-news__read-news .news-content h3,
2658 .ptb-news__read-news .news-content h3 * {
2659 font-size: var(--font-size-lg) !important;
2660 line-height: var(--line-height-sm) !important;
2661 font-weight: var(--font-weight-bold) !important;
2662 font-style: var(--font-style-normal) !important;
2663 text-decoration: var(--text-decoration-none) !important;
2664 }
2665
2666 .ptb-news__read-news .news-content h4,
2667 .ptb-news__read-news .news-content h4 * {
2668 font-size: var(--font-size-md) !important;
2669 line-height: var(--line-height-md) !important;
2670 font-weight: var(--font-weight-bold) !important;
2671 font-style: var(--font-style-normal) !important;
2672 text-decoration: var(--text-decoration-none) !important;
2673 }
2674
2675 .ptb-news__read-news .news-content h5,
2676 .ptb-news__read-news .news-content h5 * {
2677 font-size: var(--font-size-sm) !important;
2678 line-height: var(--line-height-md) !important;
2679 font-weight: var(--font-weight-bold) !important;
2680 font-style: var(--font-style-normal) !important;
2681 text-decoration: var(--text-decoration-none) !important;
2682 }
2683
2684 .ptb-news__read-news .news-content table {
2685 border-collapse: collapse;
2686 border: none;
2687 width: 100% !important;
2688 margin: var(--space-sm, 16px) 0;
2689 }
2690
2691 .ptb-news__read-news .news-content table * {
2692 font-size: var(--font-size-xxs, 16px);
2693 font-style: var(--font-style-normal, normal);
2694 font-weight: var(--font-weight-regular, 400);
2695 line-height: var(--line-height-xl, 160%);
2696 color: var(--color-neutral-800, #373737);
2697 border: 0;
2698 }
2699
2700 body.high-contrast-active .ptb-news__read-news .news-content table * {
2701 color: var(--text-primary-default, var(--color-neutral-100));
2702 }
2703
2704 .ptb-news__read-news .news-content table tbody > :first-child,
2705 .ptb-news__read-news .news-content table tbody > :first-child * {
2706 font-weight: var(--font-weight-bold, 700);
2707 flex: 1 0 0;
2708 background: var(--background-Surface-level-02, #F8F8F8);
2709 }
2710
2711 body.high-contrast-active .ptb-news__read-news .news-content table tbody > :first-child,
2712 body.high-contrast-active .ptb-news__read-news .news-content table tbody > :first-child * {
2713 background: #373737;
2714 }
2715
2716 .ptb-news__read-news .news-content table tbody {
2717 display: flex;
2718 flex-direction: column;
2719 }
2720
2721 .ptb-news__read-news .news-content table tbody * {
2722 display: flex;
2723 height: 100%;
2724 align-items: center;
2725 flex: 1 0 0;
2726 }
2727
2728 .ptb-news__read-news .news-content table tbody tr * {
2729 padding: 23px var(--space-lg, 32px);
2730 }
2731
2732 .ptb-news__read-news .news-content table tbody tr {
2733 border-radius: var(--border-radius-md);
2734 border: var(--border-width-hairline, 1px) solid #EEEEEE;
2735 }
2736
2737 body.high-contrast-active .ptb-news__read-news .news-content table tbody tr {
2738 border: var(--border-width-hairline, 1px) solid #525252;
2739 }
2740
2741 .ptb-news__read-news .news-content table tbody tr:not(:last-child) {
2742 border-bottom-left-radius: 0;
2743 border-bottom-right-radius: 0;
2744 }
2745
2746 .ptb-news__read-news .news-content table tbody tr:not(:first-child) {
2747 border-top-left-radius: 0;
2748 border-top-right-radius: 0;
2749 border-top: none;
2750 }
2751
2752 .ptb-news__read-news .news-content table tbody tr td:not(:last-child) {
2753 border-right: var(--border-width-hairline, 1px) solid #EEEEEE;
2754 }
2755
2756 body.high-contrast-active .ptb-news__read-news .news-content table tbody tr td:not(:last-child) {
2757 border-right: var(--border-width-hairline, 1px) solid #525252;
2758 }
2759
2760 .ptb-news__read-news .news-content table tbody tr:first-child td {
2761 border-top: var(--border-width-hairline, 1px) solid #EEEEEE;
2762 border-bottom: var(--border-width-hairline, 1px) solid #EEEEEE;
2763 }
2764
2765 body.high-contrast-active .ptb-news__read-news .news-content table tbody tr:first-child td {
2766 border-top: var(--border-width-hairline, 1px) solid #525252;
2767 border-bottom: var(--border-width-hairline, 1px) solid #525252;
2768 }
2769
2770 .ptb-news__read-news .news-content audio {
2771 display: none;
2772 }
2773
2774 .ptb-news__read-news .news-content .audio-template {
2775 display: flex;
2776 padding: var(--space-sm, 16px);
2777 align-items: center;
2778 gap: var(--space-md, 24px);
2779 align-self: stretch;
2780 border-radius: var(--border-radius-lg, 16px);
2781 border: var(--border-width-hairline, 1px) solid var(--border-color-mid);
2782 background: var(--background-card-default, #FFF);
2783 max-height: var(--size-giant, 72px);
2784 }
2785
2786 body.high-contrast-active .ptb-news__read-news .news-content .audio-template {
2787 background: var(--background-card-default, #010101);
2788 border: var(--border-width-hairline, 1px) solid #525252;
2789 }
2790
2791 .ptb-news__read-news .news-content .audio-template .audio-button-play {
2792 display: flex;
2793 width: var(--size-xl, 40px);
2794 height: var(--size-xl, 40px);
2795 justify-content: center;
2796 align-items: center;
2797 flex-grow: 0;
2798 flex-shrink: 0;
2799 cursor: pointer;
2800 }
2801
2802 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-play-icon,
2803 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-pause-icon {
2804 fill: #FFFFFF;
2805 }
2806
2807 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-play-icon path,
2808 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-play .audio-pause-icon path {
2809 fill: #010101;
2810 }
2811
2812 .ptb-news__read-news .news-content .audio-template.audio-pause .audio-button-play .audio-play-icon {
2813 display: block;
2814 }
2815
2816 .ptb-news__read-news .news-content .audio-template.audio-pause .audio-button-play .audio-pause-icon {
2817 display: none;
2818 }
2819
2820 .ptb-news__read-news .news-content .audio-template.audio-play .audio-button-play .audio-play-icon {
2821 display: none;
2822 }
2823
2824 .ptb-news__read-news .news-content .audio-template.audio-play .audio-button-play .audio-pause-icon {
2825 display: block;
2826 }
2827
2828 .ptb-news__read-news .news-content .audio-template .audio-sondwave {
2829 display: flex;
2830 flex-direction: column;
2831 align-items: flex-start;
2832 gap: var(--space-xxs, 8px);
2833 flex: 1 0 0;
2834 height: 100%;
2835 flex-grow: 1;
2836 flex-shrink: 1;
2837 }
2838
2839 .ptb-news__read-news .news-content .audio-template .audio-sondwave line {
2840 stroke: #008542;
2841 }
2842
2843 .ptb-news__read-news .news-content .audio-template .audio-sondwave line.line-active {
2844 stroke: #90EE90;
2845 }
2846
2847 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-sondwave line {
2848 stroke: #E4F7E8;
2849 }
2850
2851 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-sondwave line.line-active {
2852 stroke: #666666;
2853 }
2854
2855 .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-mobile {
2856 display: none;
2857 }
2858
2859 .ptb-news__read-news .news-content .audio-template .audio-time {
2860 display: flex;
2861 flex-direction: column;
2862 align-items: flex-start;
2863 gap: var(--space-xxs, 8px);
2864 flex: 1 0 0;
2865 color: var(--text-primary-accent, #008542);
2866 text-align: center;
2867 font-family: var(--font-family-base);
2868 line-height: 124% !important;
2869 flex-grow: 0;
2870 flex-shrink: 0;
2871 }
2872
2873 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-time {
2874 color: var(--text-primary-accent, #E4F7E8);
2875 }
2876
2877 .ptb-news__read-news .news-content .audio-template .audio-button-mute {
2878 width: var(--size-lg, 32px);
2879 height: var(--size-lg, 32px);
2880 flex-grow: 0;
2881 flex-shrink: 0;
2882 cursor: pointer;
2883 }
2884
2885 body.high-contrast-active .ptb-news__read-news .news-content .audio-template .audio-button-mute svg path {
2886 stroke: white;
2887 fill: none;
2888 }
2889
2890 .ptb-news__read-news .news-content .audio-template.audio-muted .audio-button-mute {
2891 opacity: 0.6;
2892 }
2893
2894 @media screen and (max-width: 1024px) {
2895 .ptb-news__read-news .news-content > * {
2896 grid-column-start: 1;
2897 grid-column-end: 9;
2898 }
2899 }
2900
2901 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
2902
2903 .ptb-news__read-news .news-content * {
2904 font-size: var(--font-size-xxs, 16px);
2905 }
2906
2907 .ptb-news__read-news .news-content > * {
2908 grid-column-start: 1;
2909 grid-column-end: 5;
2910 }
2911
2912 .ptb-news__read-news .news-content h1,
2913 .ptb-news__read-news .news-content h1 * {
2914 font-size: var(--font-size-xl) !important;
2915 line-height: var(--line-height-sm) !important;
2916 font-weight: var(--font-weight-bold) !important;
2917 font-style: var(--font-style-normal) !important;
2918 text-decoration: var(--text-decoration-none) !important;
2919
2920 }
2921
2922 .ptb-news__read-news .news-content h2,
2923 .ptb-news__read-news .news-content h2 * {
2924 font-size: var(--font-size-lg) !important;
2925 line-height: var(--line-height-sm) !important;
2926 font-weight: var(--font-weight-bold) !important;
2927 font-style: var(--font-style-normal) !important;
2928 text-decoration: var(--text-decoration-none) !important;
2929 }
2930
2931 .ptb-news__read-news .news-content h3,
2932 .ptb-news__read-news .news-content h3 * {
2933 font-size: var(--font-size-md) !important;
2934 line-height: var(--line-height-sm) !important;
2935 font-weight: var(--font-weight-bold) !important;
2936 font-style: var(--font-style-normal) !important;
2937 text-decoration: var(--text-decoration-none) !important;
2938 }
2939
2940 .ptb-news__read-news .news-content h4,
2941 .ptb-news__read-news .news-content h4 * {
2942 font-size: var(--font-size-sm) !important;
2943 line-height: var(--line-height-md) !important;
2944 font-weight: var(--font-weight-bold) !important;
2945 font-style: var(--font-style-normal) !important;
2946 text-decoration: var(--text-decoration-none) !important;
2947 }
2948
2949 .ptb-news__read-news .news-content h5,
2950 .ptb-news__read-news .news-content h5 * {
2951 font-size: var(--font-size-xs) !important;
2952 line-height: var(--line-height-md) !important;
2953 font-weight: var(--font-weight-bold) !important;
2954 font-style: var(--font-style-normal) !important;
2955 text-decoration: var(--text-decoration-none) !important;
2956 }
2957
2958 .ptb-news__read-news .news-content figure figcaption {
2959 flex-direction: column;
2960 gap: var(--space-xxs, 8px);
2961 }
2962
2963 .ptb-news__read-news .news-content figure figcaption,
2964 .ptb-news__read-news .news-content figure figcaption * {
2965 font-size: var(--font-size-micro, 12px);
2966 }
2967
2968 .ptb-news__read-news .news-content table {
2969 margin-top: var(--space-xxs, 8px);
2970 margin-bottom: var(--space-lg, 32px);
2971 }
2972
2973 .ptb-news__read-news .news-content table * {
2974 font-size: var(--font-size-micro, 12px);
2975 line-height: 19.2px;
2976 }
2977
2978 .ptb-news__read-news .news-content table tbody tr * {
2979 padding: var(--space-xs, 12px);
2980 }
2981 }
2982
2983 @media screen and (max-width: 500px) {
2984 .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-desktop {
2985 display: none;
2986 }
2987
2988 .ptb-news__read-news .news-content .audio-template .audio-sondwave .audio-sondwave-mobile {
2989 display: block;
2990 }
2991 }
2992 </style>
2993
2994 <script>
2995 <#assign configureLinkTab = "configureLinkTab_" + randomNumber(5)>
2996
2997 function ${configureLinkTab}() {
2998 const root = document.querySelector(".ptb-news__read-news");
2999 const newsContentElement = root.querySelector(".news-content");
3000 const pList = newsContentElement.querySelectorAll("p");
3001 pList.forEach((pElement) => {
3002 const cont = pElement.innerHTML.trim();
3003 if (cont == "" || cont == " ") {
3004 newsContentElement.removeChild(pElement);
3005 }
3006 });
3007 }
3008
3009 ${configureLinkTab}();
3010
3011 document.addEventListener("DOMContentLoaded", () => {
3012 const headers = document.querySelectorAll(".ptb-news__read-news .news-content h1, .ptb-news__read-news .news-content h2, .ptb-news__read-news .news-content h3, .ptb-news__read-news .news-content h4");
3013
3014 headers.forEach((header) => {
3015
3016 const currentLevel = parseInt(header.tagName.charAt(1));
3017
3018 if (currentLevel >= 1 && currentLevel <= 5) {
3019
3020 const newLevel = currentLevel + 1;
3021 const newTagName = "h" + newLevel;
3022
3023 // Criar a nova tag e transferir o conteúdo
3024 const newHeader = document.createElement(newTagName);
3025 newHeader.innerHTML = header.innerHTML;
3026
3027 // Substituir a tag antiga pela nova
3028 header.parentNode.replaceChild(newHeader, header);
3029 }
3030 });
3031 });
3032
3033 AUI().ready(() => {
3034 const audiosContainer = document.querySelectorAll(".ptb-news__read-news .news-content .audio-content");
3035 const audioTemplate = document.querySelector(".ptb-news__read-news .news-content .audio-template");
3036
3037 audiosContainer.forEach((audioContainer) => {
3038
3039 const audio = audioContainer.querySelector("audio");
3040 const audioInterface = audioTemplate.cloneNode(true);
3041
3042 const sondwave = audioInterface.querySelector(".audio-sondwave");
3043 const linesDesktop = audioInterface.querySelectorAll(".audio-sondwave .audio-sondwave-desktop line");
3044 const linesMobile = audioInterface.querySelectorAll(".audio-sondwave .audio-sondwave-mobile line");
3045
3046 const playPauseButtonAudioInterface = audioInterface.querySelector(".audio-button-play");
3047
3048 playPauseButtonAudioInterface.addEventListener("click", () => {
3049 if (audioInterface.classList.contains("audio-play")) {
3050 audioInterface.classList.replace("audio-play", "audio-pause");
3051 audio.pause();
3052 } else {
3053
3054 audiosContainer.forEach((audioContainer) => {
3055 const otherAudio = audioContainer.querySelector("audio");
3056 const otherAudioInterface = audioContainer.querySelector(".audio-button-play");
3057 !otherAudio.paused && otherAudioInterface.click();
3058 });
3059
3060 audioInterface.classList.replace("audio-pause", "audio-play");
3061 audio.play();
3062 }
3063 });
3064
3065 const audioMuteButton = audioInterface.querySelector(".audio-button-mute");
3066
3067 audioMuteButton.addEventListener("click", () => {
3068 if (audioInterface.classList.contains("audio-unmuted")) {
3069 audioInterface.classList.replace("audio-unmuted", "audio-muted");
3070 audio.muted = true;
3071 } else {
3072 audioInterface.classList.replace("audio-muted", "audio-unmuted");
3073 audio.muted = false;
3074 }
3075 });
3076
3077 const audioTime = audioInterface.querySelector(".audio-time");
3078 audioTime.textContent = Math.floor(audio.duration / 60) + ":" + Math.floor(audio.duration % 60);
3079
3080
3081 audio.addEventListener("timeupdate", () => {
3082 let minutes = Math.floor((audio.duration - audio.currentTime) / 60);
3083 let seconds = Math.floor((audio.duration - audio.currentTime) % 60);
3084
3085 minutes = minutes < 10 ? "0" + minutes : minutes;
3086 seconds = seconds < 10 ? "0" + seconds : seconds;
3087
3088 audioTime.textContent = minutes + ":" + seconds;
3089
3090 const progress = (audio.currentTime / audio.duration) * 100;
3091
3092 linesDesktop.forEach(function (line, index) {
3093 const lineProgress = (index / linesDesktop.length) * 100;
3094 if (progress >= lineProgress) {
3095 !line.classList.contains("line-active") && line.classList.add("line-active");
3096 } else {
3097 line.classList.contains("line-active") && line.classList.remove("line-active");
3098 }
3099 });
3100
3101 linesMobile.forEach(function (line, index) {
3102 const lineProgress = (index / linesMobile.length) * 100;
3103 if (progress >= lineProgress) {
3104 !line.classList.contains("line-active") && line.classList.add("line-active");
3105 } else {
3106 line.classList.contains("line-active") && line.classList.remove("line-active");
3107 }
3108 });
3109 });
3110
3111
3112 sondwave.addEventListener("click", (event) => {
3113 const distanceLeft = (event.clientX - sondwave.getBoundingClientRect().left) / sondwave.offsetWidth;
3114 audio.currentTime = audio.duration * distanceLeft;
3115 });
3116
3117 audioInterface.style.display = "";
3118 audioContainer.appendChild(audioInterface);
3119 });
3120
3121 });
3122 </script>
3123</#macro>
3124
3125
3126<#-- ################################################################################################################## -->
3127
3128<#-- ############# Site de Crise - Notícia - Links do conteúdo da notícia ############################################# -->
3129<#macro renderLinks newsInfo>
3130 <#if newsInfo.links?size != 0>
3131 <#--videos "escondidos" que serão unidos a .ptb-news__read-content -->
3132
3133 <div class="ptb-news__links-container d-none ">
3134 <div id="ptb-news__links-identifiers">
3135 <#assign separator = "">
3136 <#list newsInfo.links as link>
3137 ${link.id};
3138 <#assign separator = ";">
3139 </#list>
3140 </div>
3141 <#list newsInfo.links as link>
3142 <#assign link_index = link?index>
3143 <#assign linkUrl = "#">
3144 <#assign target = "_blank">
3145 <#assign linkClass = "">
3146
3147 <div id="ptb-news__link-container-${link_index}">
3148 <#if link.externalLink?has_content>
3149 <#assign linkUrl = link.externalLink>
3150 <#assign target = "_blank">
3151 <#assign linkClass = "external-link">
3152 <#elseif link.pageLink?has_content>
3153 <#assign linkUrl = link.pageLink>
3154 <#assign target = "_self">
3155 <#assign linkClass = "internal-page-link">
3156 <#elseif link.file.mimeType?has_content>
3157 <#assign linkUrl = link.file.url>
3158 <#assign target = "_blank">
3159 <#assign linkClass = "file-link">
3160 </#if>
3161
3162 <#-- PDF icon -->
3163 <#if link.iconType == "Opção78730408" >
3164 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
3165 xmlns="http://www.w3.org/2000/svg">
3166 <path d="M3.752 15.974H4.664C4.912 15.974 5.124 15.954 5.3 15.914C5.476 15.874 5.62 15.806 5.732 15.71C5.852 15.606 5.94 15.466 5.996 15.29C6.052 15.114 6.08 14.894 6.08 14.63C6.08 14.11 5.968 13.758 5.744 13.574C5.528 13.39 5.168 13.298 4.664 13.298H3.752V15.974ZM2 20.654V11.894H4.784C5.856 11.894 6.632 12.122 7.112 12.578C7.6 13.026 7.844 13.698 7.844 14.594C7.844 15.474 7.604 16.158 7.124 16.646C6.652 17.134 5.872 17.378 4.784 17.378H3.752V20.654H2Z"
3167 fill="#008542"/>
3168 <path d="M10.8402 19.142H11.9442C12.2962 19.142 12.6042 19.102 12.8682 19.022C13.1322 18.942 13.3482 18.798 13.5162 18.59C13.6922 18.374 13.8242 18.082 13.9122 17.714C14.0002 17.338 14.0442 16.854 14.0442 16.262C14.0442 15.678 14.0002 15.202 13.9122 14.834C13.8322 14.458 13.7042 14.166 13.5282 13.958C13.3602 13.75 13.1442 13.606 12.8802 13.526C12.6242 13.446 12.3202 13.406 11.9682 13.406H10.8402V19.142ZM9.16016 20.654V11.894H12.1002C12.7642 11.894 13.3322 11.982 13.8042 12.158C14.2762 12.326 14.6602 12.59 14.9562 12.95C15.2602 13.302 15.4802 13.75 15.6162 14.294C15.7602 14.83 15.8322 15.47 15.8322 16.214C15.8322 17.726 15.5362 18.846 14.9442 19.574C14.3522 20.294 13.3882 20.654 12.0522 20.654H9.16016Z"
3169 fill="#008542"/>
3170 <path d="M17.2695 20.654V11.894H22.2735V13.358H18.9735V15.59H21.9015V17.054H18.9735V20.654H17.2695Z"
3171 fill="#008542"/>
3172 <path d="M6.08984 8.24516V1.60376C6.08984 1.44364 6.15211 1.29007 6.26294 1.17684C6.37377 1.06361 6.52408 1 6.68082 1H13.7725M13.7725 1L17.9094 5.22634M13.7725 1L13.7725 5.22634H17.9094M17.9094 5.22634V8.24516"
3173 stroke="#008542" stroke-width="1.5" stroke-linecap="round"
3174 stroke-linejoin="round"/>
3175 </svg>
3176
3177 <#-- JPG icon -->
3178 <#elseif link.iconType == "Opção89889679" >
3179 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
3180 xmlns="http://www.w3.org/2000/svg">
3181 <path d="M2 19.1657C2.248 19.1977 2.504 19.2257 2.768 19.2497C3.032 19.2657 3.284 19.2737 3.524 19.2737C3.844 19.2737 4.112 19.2497 4.328 19.2017C4.544 19.1537 4.72 19.0657 4.856 18.9377C4.992 18.8017 5.088 18.6257 5.144 18.4097C5.208 18.1857 5.24 17.8977 5.24 17.5457V11.8937H6.992V17.5457C6.992 18.6817 6.756 19.5057 6.284 20.0177C5.82 20.5297 5.128 20.7857 4.208 20.7857C3.984 20.7857 3.764 20.7737 3.548 20.7497C3.34 20.7257 3.14 20.6937 2.948 20.6537C2.756 20.6137 2.58 20.5697 2.42 20.5217C2.26 20.4737 2.12 20.4257 2 20.3777V19.1657Z"
3182 fill="#008542"/>
3183 <path d="M10.4203 15.9737H11.3323C11.5803 15.9737 11.7923 15.9537 11.9683 15.9137C12.1443 15.8737 12.2883 15.8057 12.4003 15.7097C12.5203 15.6057 12.6083 15.4657 12.6643 15.2897C12.7203 15.1137 12.7483 14.8937 12.7483 14.6297C12.7483 14.1097 12.6363 13.7577 12.4123 13.5737C12.1963 13.3897 11.8363 13.2977 11.3323 13.2977H10.4203V15.9737ZM8.66834 20.6537V11.8937H11.4523C12.5243 11.8937 13.3003 12.1217 13.7803 12.5777C14.2683 13.0257 14.5123 13.6977 14.5123 14.5937C14.5123 15.4737 14.2723 16.1577 13.7923 16.6457C13.3203 17.1337 12.5403 17.3777 11.4523 17.3777H10.4203V20.6537H8.66834Z"
3184 fill="#008542"/>
3185 <path d="M22.0085 20.2697C21.6405 20.4057 21.2085 20.5257 20.7125 20.6297C20.2245 20.7337 19.7165 20.7857 19.1885 20.7857C18.5005 20.7857 17.9245 20.6897 17.4605 20.4977C17.0045 20.2977 16.6365 20.0097 16.3565 19.6337C16.0845 19.2577 15.8885 18.7977 15.7685 18.2537C15.6485 17.7017 15.5885 17.0777 15.5885 16.3817C15.5885 15.6217 15.6565 14.9537 15.7925 14.3777C15.9285 13.8017 16.1445 13.3217 16.4405 12.9377C16.7365 12.5457 17.1205 12.2537 17.5925 12.0617C18.0645 11.8617 18.6405 11.7617 19.3205 11.7617C19.7845 11.7617 20.2125 11.8017 20.6045 11.8817C21.0045 11.9617 21.3605 12.0577 21.6725 12.1697V13.3937C21.5525 13.3857 21.4125 13.3737 21.2525 13.3577C21.0925 13.3337 20.9205 13.3137 20.7365 13.2977C20.5605 13.2817 20.3765 13.2697 20.1845 13.2617C20.0005 13.2457 19.8205 13.2377 19.6445 13.2377C19.2205 13.2377 18.8605 13.2857 18.5645 13.3817C18.2765 13.4697 18.0405 13.6297 17.8565 13.8617C17.6805 14.0857 17.5485 14.3937 17.4605 14.7857C17.3805 15.1777 17.3405 15.6737 17.3405 16.2737C17.3405 16.8417 17.3765 17.3217 17.4485 17.7137C17.5285 18.0977 17.6485 18.4097 17.8085 18.6497C17.9685 18.8897 18.1765 19.0617 18.4325 19.1657C18.6965 19.2697 19.0125 19.3217 19.3805 19.3217C19.6765 19.3217 20.0245 19.2857 20.4245 19.2137V17.1977H19.1045V15.8897H22.0085V20.2697Z"
3186 fill="#008542"/>
3187 <path d="M6.08984 8.24516V1.60376C6.08984 1.44364 6.15211 1.29007 6.26294 1.17684C6.37377 1.06361 6.52408 1 6.68082 1H13.7725M13.7725 1L17.9094 5.22634M13.7725 1L13.7725 5.22634H17.9094M17.9094 5.22634V8.24516"
3188 stroke="#008542" stroke-width="1.5" stroke-linecap="round"
3189 stroke-linejoin="round"/>
3190 </svg>
3191 <#-- DOC icon -->
3192 <#elseif link.iconType == "Opção15480314" >
3193 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
3194 xmlns="http://www.w3.org/2000/svg">
3195 <path d="M2.68 19.1417H3.784C4.136 19.1417 4.444 19.1017 4.708 19.0217C4.972 18.9417 5.188 18.7977 5.356 18.5897C5.532 18.3737 5.664 18.0817 5.752 17.7137C5.84 17.3377 5.884 16.8537 5.884 16.2617C5.884 15.6777 5.84 15.2017 5.752 14.8337C5.672 14.4577 5.544 14.1657 5.368 13.9577C5.2 13.7497 4.984 13.6057 4.72 13.5257C4.464 13.4457 4.16 13.4057 3.808 13.4057H2.68V19.1417ZM1 20.6537V11.8937H3.94C4.604 11.8937 5.172 11.9817 5.644 12.1577C6.116 12.3257 6.5 12.5897 6.796 12.9497C7.1 13.3017 7.32 13.7497 7.456 14.2937C7.6 14.8297 7.672 15.4697 7.672 16.2137C7.672 17.7257 7.376 18.8457 6.784 19.5737C6.192 20.2937 5.228 20.6537 3.892 20.6537H1Z"
3196 fill="#008542"/>
3197 <path d="M10.7894 20.4977C10.3334 20.3057 9.96138 20.0217 9.67338 19.6457C9.39338 19.2697 9.18937 18.8057 9.06137 18.2537C8.93337 17.6937 8.86938 17.0457 8.86938 16.3097C8.86938 15.5657 8.93337 14.9097 9.06137 14.3417C9.19737 13.7737 9.40938 13.2977 9.69738 12.9137C9.99338 12.5297 10.3694 12.2417 10.8254 12.0497C11.2894 11.8577 11.8494 11.7617 12.5054 11.7617C13.1694 11.7617 13.7294 11.8577 14.1854 12.0497C14.6414 12.2417 15.0094 12.5257 15.2894 12.9017C15.5774 13.2777 15.7854 13.7457 15.9134 14.3057C16.0414 14.8577 16.1054 15.5017 16.1054 16.2377C16.1054 16.9817 16.0374 17.6377 15.9014 18.2057C15.7734 18.7737 15.5614 19.2497 15.2654 19.6337C14.9774 20.0177 14.6014 20.3057 14.1374 20.4977C13.6814 20.6897 13.1254 20.7857 12.4694 20.7857C11.8054 20.7857 11.2454 20.6897 10.7894 20.4977ZM11.0894 18.6737C11.2414 18.9057 11.4334 19.0737 11.6654 19.1777C11.8974 19.2737 12.1694 19.3217 12.4814 19.3217C12.7934 19.3217 13.0654 19.2737 13.2974 19.1777C13.5294 19.0737 13.7214 18.9057 13.8734 18.6737C14.0254 18.4337 14.1374 18.1217 14.2094 17.7377C14.2814 17.3457 14.3174 16.8577 14.3174 16.2737C14.3174 15.6897 14.2814 15.2057 14.2094 14.8217C14.1374 14.4297 14.0254 14.1177 13.8734 13.8857C13.7294 13.6457 13.5414 13.4777 13.3094 13.3817C13.0774 13.2777 12.8054 13.2257 12.4934 13.2257C12.1814 13.2257 11.9094 13.2777 11.6774 13.3817C11.4454 13.4777 11.2534 13.6457 11.1014 13.8857C10.9494 14.1177 10.8374 14.4297 10.7654 14.8217C10.6934 15.2057 10.6574 15.6897 10.6574 16.2737C10.6574 16.8577 10.6934 17.3457 10.7654 17.7377C10.8374 18.1217 10.9454 18.4337 11.0894 18.6737Z"
3198 fill="#008542"/>
3199 <path d="M23.1389 20.3897C22.8349 20.5017 22.4989 20.5937 22.1309 20.6657C21.7709 20.7457 21.3629 20.7857 20.9069 20.7857C20.2189 20.7857 19.6429 20.6897 19.1789 20.4977C18.7229 20.3057 18.3549 20.0257 18.0749 19.6577C17.7949 19.2817 17.5949 18.8177 17.4749 18.2657C17.3629 17.7137 17.3069 17.0777 17.3069 16.3577C17.3069 15.5977 17.3709 14.9297 17.4989 14.3537C17.6269 13.7777 17.8309 13.2977 18.1109 12.9137C18.3909 12.5297 18.7589 12.2417 19.2149 12.0497C19.6709 11.8577 20.2229 11.7617 20.8709 11.7617C21.3029 11.7617 21.6989 11.8017 22.0589 11.8817C22.4269 11.9537 22.7629 12.0457 23.0669 12.1577V13.3817C22.8029 13.3497 22.4949 13.3177 22.1429 13.2857C21.7989 13.2537 21.4829 13.2377 21.1949 13.2377C20.8029 13.2377 20.4709 13.2857 20.1989 13.3817C19.9349 13.4697 19.7189 13.6297 19.5509 13.8617C19.3829 14.0857 19.2629 14.3937 19.1909 14.7857C19.1189 15.1697 19.0829 15.6617 19.0829 16.2617C19.0829 16.8617 19.1189 17.3617 19.1909 17.7617C19.2709 18.1537 19.3949 18.4657 19.5629 18.6977C19.7389 18.9217 19.9669 19.0817 20.2469 19.1777C20.5269 19.2657 20.8709 19.3097 21.2789 19.3097C21.5989 19.3097 21.9309 19.2937 22.2749 19.2617C22.6189 19.2217 22.9069 19.1897 23.1389 19.1657V20.3897Z"
3200 fill="#008542"/>
3201 <path d="M6.08984 8.24516V1.60376C6.08984 1.44364 6.15211 1.29007 6.26294 1.17684C6.37377 1.06361 6.52408 1 6.68082 1H13.7725M13.7725 1L17.9094 5.22634M13.7725 1L13.7725 5.22634H17.9094M17.9094 5.22634V8.24516"
3202 stroke="#008542" stroke-width="1.5" stroke-linecap="round"
3203 stroke-linejoin="round"/>
3204 </svg>
3205 <#-- External link icon -->
3206 <#elseif link.iconType == "Opção64447681" >
3207 <svg width="24" height="24" viewBox="0 0 32 32" fill="none"
3208 xmlns="http://www.w3.org/2000/svg">
3209 <path opacity="0.98"
3210 d="M25.5 15.5001V26.5001C25.5 26.7653 25.3946 27.0197 25.2071 27.2072C25.0196 27.3947 24.7652 27.5001 24.5 27.5001L5.5 27.5001C5.23479 27.5001 4.98043 27.3947 4.79289 27.2072C4.60536 27.0197 4.5 26.7653 4.5 26.5001L4.5 7.50009C4.5 7.23488 4.60536 6.98052 4.79289 6.79299C4.98043 6.60545 5.23478 6.50009 5.5 6.50009L17 6.50009M20.4742 4.7124H27.8988M27.8988 4.7124V12.137M27.8988 4.7124L14.5 18.0001"
3211 stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3212 </svg>
3213 <#-- Internal page link icon -->
3214 <#elseif link.iconType == "Opção94185057" >
3215 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="#008542"
3216 viewBox="0 0 256 256">
3217 <path d="M137.54,186.36a8,8,0,0,1,0,11.31l-9.94,10A56,56,0,0,1,48.38,128.4L72.5,104.28A56,56,0,0,1,149.31,102a8,8,0,1,1-10.64,12,40,40,0,0,0-54.85,1.63L59.7,139.72a40,40,0,0,0,56.58,56.58l9.94-9.94A8,8,0,0,1,137.54,186.36Zm70.08-138a56.08,56.08,0,0,0-79.22,0l-9.94,9.95a8,8,0,0,0,11.32,11.31l9.94-9.94a40,40,0,0,1,56.58,56.58L172.18,140.4A40,40,0,0,1,117.33,142,8,8,0,1,0,106.69,154a56,56,0,0,0,76.81-2.26l24.12-24.12A56.08,56.08,0,0,0,207.62,48.38Z">
3218 </path>
3219 </svg>
3220 <#-- Download link icon -->
3221 <#elseif link.iconType == "Opção49847593" >
3222 <svg width="24" height="24" viewBox="0 0 32 32" fill="none"
3223 xmlns="http://www.w3.org/2000/svg">
3224 <path d="M10.75 13.75L16 19M16 19L21.25 13.75M16 19V5M27 19V26C27 26.2652 26.8946 26.5196 26.7071 26.7071C26.5196 26.8946 26.2652 27 26 27H6C5.73478 27 5.48043 26.8946 5.29289 26.7071C5.10536 26.5196 5 26.2652 5 26V19"
3225 stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3226 </svg>
3227 </#if>
3228
3229 <a href="${linkUrl}" class="link ${linkClass}" target="${target}">${link.title}</a>
3230 </div>
3231 </#list>
3232 </div>
3233
3234 <script>
3235 var newsContent_code = document.querySelector(".news-content").innerHTML;
3236
3237 var linksIdentifiers = document.querySelector("#ptb-news__links-identifiers").innerHTML.trim().split(";");
3238 linksIdentifiers.forEach((linkIdentifier, index) => {
3239 const linkIdentifierContent = document.querySelector("#ptb-news__link-container-" + index);
3240 if (linkIdentifierContent) {
3241 const tag = "#[" + linkIdentifier.trim() + "]";
3242 const splitContent = newsContent_code.split(tag);
3243 newsContent_code = splitContent.join(linkIdentifierContent.innerHTML);
3244 //linkIdentifierContent.parentNode.removeChild(linkIdentifierContent);
3245 }
3246 });
3247
3248
3249 var ptb_news__read_content = document.querySelector(".news-content");
3250 ptb_news__read_content.innerHTML = newsContent_code;
3251
3252 </script>
3253
3254 <style>
3255 .ptb-news__read-news .ptb-news__link a {
3256 font-family: var(--font-family-base);
3257 font-style: var(--font-style-normal, normal);
3258 font-weight: var(--font-weight-bold, 700);
3259 font-size: var(--font-size-xxs, 16px);
3260 line-height: var(--line-height-xl, 160%);
3261
3262 text-decoration-line: underline;
3263
3264 color: var(--color-primary-brand, #008542);
3265 }
3266
3267 body.high-contrast-active .ptb-news__read-news .ptb-news__link a {
3268 color: #E4F7E8;
3269 }
3270
3271 .ptb-news__read-news .news-content .link {
3272 font-family: var(--font-family-base);
3273 font-style: var(--font-style-normal, normal);
3274 font-weight: var(--font-weight-bold, 700);
3275 font-size: var(--font-size-xxs, 16px);
3276 line-height: var(--line-height-xl, 160%);
3277
3278 text-decoration-line: underline;
3279
3280 color: var(--color-primary-brand, #008542);
3281 }
3282
3283 body.high-contrast-active .ptb-news__read-news .news-content .link {
3284 color: #E4F7E8;
3285 }
3286
3287 body.high-contrast-active .ptb-news__read-news .news-content svg path {
3288 stroke: var(--color-neutral-500, #D7D7D7);
3289 fill: rgba(255, 255, 255, 0.32);
3290 }
3291
3292 .ptb-news__read-news .news-content .ptb-link__wrapper {
3293 display: flex;
3294 flex-direction: column;
3295 gap: 0;
3296 margin-top: -24px;
3297 }
3298
3299 .ptb-news__read-news .news-content .ptb-link__wrapper svg {
3300 margin-right: var(--space-sm, 16px);
3301 }
3302
3303 .ptb-news__read-news .news-content .ptb-link__wrapper .first {
3304 gap: 0 !important;
3305 }
3306
3307 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
3308 .ptb-news__read-news .news-content .link {
3309 font-size: var(--font-size-xxs, 16px);
3310 }
3311 }
3312 </style>
3313 </#if>
3314</#macro>
3315
3316<#-- ################################################################################################################## -->
3317<#macro renderCite>
3318 <div class="ptb-news__cite-container">
3319 <div class="ptb-news__cite-container-breakpoint breakpoint">
3320 <div class="ptb-news__cite-container-col col-1-12 md-col-1-8 sm-col-1-4">
3321 <div class="ptb-news__cite-title">
3322 <#if locale?lower_case == "pt_br">
3323 Notas
3324 <#else>
3325 Notes
3326 </#if>
3327 </div>
3328
3329 <div class="ptb-news__cites-elements">
3330 </div>
3331 </div>
3332 </div>
3333 </div>
3334
3335 <script>
3336 function positionCitesText(parentNodeCitesText) {
3337
3338 parentNodeCitesText.forEach((parentNodeCiteText) => {
3339 if (window.innerWidth > 1024) {
3340 parentNodeCiteText.style.display = "";
3341 parentNodeCiteText.style.gridColumnStart = "11";
3342 parentNodeCiteText.style.gridColumnEnd = "13";
3343 } else {
3344 parentNodeCiteText.style.display = "none";
3345 parentNodeCiteText.style.gridColumnStart = "";
3346 parentNodeCiteText.style.gridColumnEnd = "";
3347 }
3348 });
3349 }
3350
3351 function addCitesTextMobile(citesText) {
3352 const citesContainer = document.querySelector(".ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cites-elements");
3353
3354 if (citesContainer.children.length === 0) {
3355 citesContainer && citesText.forEach((citeText) => {
3356 citesContainer.appendChild(citeText.cloneNode(true));
3357 });
3358 }
3359 }
3360
3361 const citesText = document.querySelectorAll(".news-content cite");
3362
3363 if (citesText.length > 0) {
3364 const parentNodeCitesText = [...citesText].map((citeText) => citeText.parentNode);
3365 positionCitesText(parentNodeCitesText);
3366 addCitesTextMobile(citesText);
3367 } else {
3368 const citesContainer = document.querySelector(".ptb-news__cite-container");
3369 citesContainer && (citesContainer.style.display = "none");
3370 }
3371
3372 document.addEventListener('DOMContentLoaded', () => {
3373
3374 const citesText = document.querySelectorAll(".news-content cite");
3375
3376 if (citesText.length > 0) {
3377 const parentNodeCitesText = [...citesText].map((citeText) => citeText.parentNode);
3378
3379 positionCitesText(parentNodeCitesText);
3380 addCitesTextMobile(citesText);
3381
3382 window.addEventListener('resize', () => {
3383 positionCitesText(parentNodeCitesText)
3384 });
3385 } else {
3386 const citesContainer = document.querySelector(".ptb-news__cite-container");
3387 citesContainer && (citesContainer.style.display = "none");
3388 }
3389 });
3390
3391 </script>
3392
3393 <style>
3394
3395 .ptb-news__read-news-post cite {
3396 color: var(--color-neutral-800, #373737);
3397 font-family: var(--font-family-base);
3398 font-size: var(--font-size-xxxs, 14px) !important;
3399 font-style: var(--font-style-normal, normal);
3400 font-weight: var(--font-weight-regular, 400);
3401 line-height: var(--line-height-xl, 160%);
3402 }
3403
3404 .ptb-news__read-news-post cite a {
3405 font-size: var(--font-size-xxxs, 14px) !important;
3406 }
3407
3408 body.high-contrast-active .ptb-news__read-news-post cite {
3409 color: var(--text-primary-default, var(--color-neutral-100));
3410 }
3411
3412 .ptb-news__read-news-post .news-content cite,
3413 .ptb-news__read-news-post .ptb-news__cite-container cite {
3414 display: block;
3415 padding-left: var(--space-md);
3416 border-left: var(--border-width-hairline, 1px) solid var(--color-neutral-500, #D7D7D7);
3417 }
3418
3419 @media screen and (min-width: 1025px) {
3420 .ptb-news__read-news-post .ptb-news__cite-container {
3421 display: none;
3422 }
3423 }
3424
3425 @media screen and (max-width: 1025px) {
3426 .ptb-news__read-news .ptb-news__cite-container .link {
3427 text-decoration-line: var(--text-decoration-underline, underline);
3428 color: #008542;
3429 }
3430
3431 body.high-contrast-active .ptb-news__read-news .ptb-news__cite-container .link {
3432 color: #E4F7E8;
3433 }
3434
3435 body.high-contrast-active .ptb-news__read-news .ptb-news__cite-container svg path {
3436 stroke: var(--color-neutral-500, #D7D7D7);
3437 fill: rgba(255, 255, 255, 0.32);
3438 }
3439
3440 .ptb-news__read-news-post .ptb-news__cite-container {
3441 display: grid;
3442 background: var(--background-surface-level-03, #EEE);
3443 }
3444
3445 body.high-contrast-active .ptb-news__read-news-post .ptb-news__cite-container {
3446 background: var(--background-surface-level-03, #525252);
3447 }
3448
3449 .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col {
3450 padding: var(--space-xxl) 0;
3451 display: flex;
3452 flex-direction: column;
3453 gap: var(--space-lg, 32px);
3454 }
3455
3456 .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cites-elements {
3457 display: flex;
3458 flex-direction: column;
3459 gap: var(--space-lg, 32px);
3460 }
3461
3462 .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cite-title {
3463 color: var(--color-neutral-800, #373737);
3464 font-size: var(--font-size-sm, 20px);
3465 font-style: var(--font-style-normal, normal);
3466 font-weight: var(--font-weight-bold, 700);
3467 line-height: var(--line-height-xl, 160%);
3468 }
3469
3470 body.high-contrast-active .ptb-news__read-news-post .ptb-news__cite-container .ptb-news__cite-container-col .ptb-news__cite-title {
3471 color: var(--text-primary-default, var(--color-neutral-100));
3472 }
3473 }
3474 </style>
3475
3476</#macro>
3477
3478<#-- ############# Site de Crise - Notícia - Galeria de imagens ####################################################### -->
3479<#function getGalleryImgDate gItem>
3480 <#-- Data default - Criação do documento -->
3481 <#assign date = gItem.createDate />
3482 <#if gItem.originalFile?? && gItem.originalFile.documentType?? && gItem.originalFile.documentType.contentFields?has_content>
3483 <#list gItem.originalFile.documentType.contentFields as imgField>
3484 <#if imgField.label == 'Data' && imgField.contentFieldValue?? && imgField.contentFieldValue.data??>
3485 <#-- Data personalizada -->
3486 <#assign date = imgField.contentFieldValue.data />
3487 <#break>
3488 </#if>
3489 </#list>
3490 </#if>
3491 <#return date>
3492</#function>
3493
3494<#macro renderGallery newsInfo>
3495 <#if newsInfo.galleryItems?size == 0>
3496 <#return />
3497 </#if>
3498
3499 <div class="breakpoint">
3500 <div class="col-3-10 md-col-1-12 sm-col-1-4">
3501 <div class="gallery">
3502
3503 <div class="title-container">
3504 <svg class="icon" viewBox="0 0 26 23" fill="none" xmlns="http://www.w3.org/2000/svg">
3505 <path d="M23 22H3C2.46957 22 1.96086 21.7893 1.58579 21.4142C1.21071 21.0391 1 20.5304 1 20V6C1 5.46957 1.21071 4.96086 1.58579 4.58579C1.96086 4.21071 2.46957 4 3 4H7L9 1H17L19 4H23C23.5304 4 24.0391 4.21071 24.4142 4.58579C24.7893 4.96086 25 5.46957 25 6V20C25 20.5304 24.7893 21.0391 24.4142 21.4142C24.0391 21.7893 23.5304 22 23 22Z"
3506 stroke="#525252" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3507 <path d="M13 17C15.4853 17 17.5 14.9853 17.5 12.5C17.5 10.0147 15.4853 8 13 8C10.5147 8 8.5 10.0147 8.5 12.5C8.5 14.9853 10.5147 17 13 17Z"
3508 stroke="#525252" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
3509 </svg>
3510 <p class="title">
3511 <#if locale == "pt_BR"> Fotos <#else > Photos </#if>
3512 </p>
3513 </div>
3514
3515
3516 <div class="image-container">
3517 <#assign itensNum = 1 />
3518 <#list newsInfo.galleryItems as gItem>
3519 <#assign rancomCssClass = "fragment_88494_" + gItem?index />
3520 <div class="fragment_88494 ${rancomCssClass}">
3521 <div class="modal-image-container">
3522 <span class="click-image news-gallery-image-thumb"></span>
3523
3524 <div class="image-player-container">
3525 <span class="close-image news-gallery-close-modal">X</span>
3526 <div class="image-player-session">
3527 <#assign largeImgUrl = ""/>
3528 <#assign largeImgAlt = ""/>
3529 <#if gItem.originalFile["contentUrl"]?? >
3530 <#assign largeImgUrl = themeDisplay.getPortalURL() + "/documents/" + groupId + "/" + gItem.originalFile.externalReferenceCode + "?t=" + .now?string["HHmmssSSS"] />
3531 <#assign largeImgAlt = gItem.originalFile["description"]/>
3532 </#if>
3533
3534 <#assign thumbnailImageUrl = ""/>
3535 <#assign thumbnailImageAlt = ""/>
3536 <#if gItem.thumbnailImage?? && gItem.thumbnailImage?has_content && gItem.thumbnailImage["contentUrl"]?? && gItem.thumbnailImage["contentUrl"]??>
3537 <#assign mediaWidth = 300 />
3538 <#list gItem.thumbnailImage.adaptedImages?filter(f -> f.width == mediaWidth) as adaptedImage>
3539 <#assign thumbnailImageUrl = themeDisplay.getPortalURL() + adaptedImage.contentUrl />
3540 </#list>
3541 <#assign thumbnailImageAlt = gItem.thumbnailImage.description />
3542 </#if>
3543
3544
3545 <#assign carrouselImgUrl = ""/>
3546 <#assign carrouselImgAlt = ""/>
3547 <#if gItem.originalFile["contentUrl"]??>
3548 <#assign carrouselImgUrl = gItem.originalFile["contentUrl"] />
3549 <#assign carrouselImgAlt = gItem.originalFile.description />
3550 </#if>
3551
3552 <#if !thumbnailImageUrl?? || !thumbnailImageUrl?has_content>
3553 <#assign mediaWidth = 300 />
3554 <#if gItem.originalFile["adaptedImages"]??>
3555 <#list gItem.originalFile.adaptedImages?filter(f -> f.width == mediaWidth) as adaptedImage>
3556 <#assign thumbnailImageUrl = themeDisplay.getPortalURL() + adaptedImage.contentUrl />
3557 </#list>
3558 </#if>
3559 <#if !thumbnailImageUrl?has_content>
3560 <#assign thumbnailImageUrl = largeImgUrl/>
3561 </#if>
3562 <#assign thumbnailImageAlt = largeImgAlt/>
3563 </#if>
3564
3565
3566 <img class="thumbnail" src="${thumbnailImageUrl}" alt="${thumbnailImageAlt}"/>
3567
3568
3569 <#assign urlFirst = "" >
3570
3571 <#if carrouselImgUrl?? || carrouselImgUrl?has_content>
3572
3573 <#assign urlFirst = "background-image: url('${carrouselImgUrl}');" >
3574 </#if>
3575
3576
3577 <span class="background-image" style="${urlFirst}">
3578
3579 </span>
3580
3581 <div class="large" style="display:none;">
3582 <img class="carousel" src="${carrouselImgUrl}" alt="${carrouselImgAlt}"/>
3583 </div>
3584
3585 <div class="gallery-modal-footer">
3586 <div class="carousel-info">
3587 <p class="title-image paragraph-sm-regular">
3588 <#if locale == "pt_BR"> Foto: <#else > Picture: </#if>${itensNum}
3589 /${newsInfo.galleryItems?size}
3590 </p>
3591 <div class="left-arrow news-gallery-previus-img-btn">
3592 <svg width="32" height="32" viewBox="0 0 32 32" fill="none"
3593 xmlns="http://www.w3.org/2000/svg">
3594 <path d="M0 16C0 7.16344 7.16344 0 16 0C24.8366 0 32 7.16344 32 16C32 24.8366 24.8366 32 16 32C7.16344 32 0 24.8366 0 16Z"
3595 fill="#008542"/>
3596 <path d="M21.5 16H10.5M10.5 16L15 11.5M10.5 16L15 20.5"
3597 stroke="white" stroke-linecap="round"
3598 stroke-linejoin="round"/>
3599 </svg>
3600 </div>
3601 <div class="right-arrow news-gallery-next-img-btn">
3602 <svg width="32" height="32" viewBox="0 0 32 32" fill="none"
3603 xmlns="http://www.w3.org/2000/svg">
3604 <path d="M0 16C0 7.16344 7.16344 0 16 0C24.8366 0 32 7.16344 32 16C32 24.8366 24.8366 32 16 32C7.16344 32 0 24.8366 0 16Z"
3605 fill="#008542"/>
3606 <path d="M10.5 16H21.5M21.5 16L17 11.5M21.5 16L17 20.5"
3607 stroke="white" stroke-linecap="round"
3608 stroke-linejoin="round"/>
3609 </svg>
3610 </div>
3611 </div>
3612 <div class="text-container">
3613 <p class="title-image h5">${gItem.cardTitle}</p>
3614 <div class="image-info">
3615 <p class="date-info paragraph-sm-regular">${formatDate(getGalleryImgDate(gItem))}</p>
3616 <p class="autor-info paragraph-sm-regular"><#if locale == "pt_BR"> Por: <#else > By: </#if> ${gItem.author}</p>
3617 </div>
3618 <div class="download-info">
3619 <div class="download-large-image">
3620 <div class="download-share-container">
3621 <a class="download button donwload-button news-gallery-image-item-download"
3622 href="${largeImgUrl}?download=true">
3623
3624 <svg width="20" height="20" viewBox="0 0 20 20"
3625 fill="none" xmlns="http://www.w3.org/2000/svg">
3626 <path d="M6.71875 8.59375L10 11.875M10 11.875L13.2812 8.59375M10 11.875V3.125M16.875 11.875V16.25C16.875 16.4158 16.8092 16.5747 16.6919 16.6919C16.5747 16.8092 16.4158 16.875 16.25 16.875H3.75C3.58424 16.875 3.42527 16.8092 3.30806 16.6919C3.19085 16.5747 3.125 16.4158 3.125 16.25V11.875"
3627 stroke="white" stroke-linecap="round"
3628 stroke-linejoin="round"/>
3629 </svg>
3630 <#if locale == "pt_BR"> Baixar <#else > Download </#if>
3631
3632 </a>
3633 <div class="download-info-message">
3634 <svg width="16" height="16" viewBox="0 0 16 16"
3635 fill="none" xmlns="http://www.w3.org/2000/svg">
3636 <path d="M8 6.5V9" stroke="#FFEEB3"
3637 stroke-linecap="round"
3638 stroke-linejoin="round"/>
3639 <path d="M7.1374 2.49998L1.6374 12C1.54978 12.1517 1.50357 12.3239 1.50342 12.4991C1.50326 12.6743 1.54916 12.8465 1.63651 12.9985C1.72386 13.1504 1.8496 13.2767 2.00113 13.3647C2.15266 13.4527 2.32466 13.4994 2.4999 13.5H13.4999C13.6751 13.4994 13.8471 13.4527 13.9987 13.3647C14.1502 13.2767 14.2759 13.1504 14.3633 12.9985C14.4506 12.8465 14.4965 12.6743 14.4964 12.4991C14.4962 12.3239 14.45 12.1517 14.3624 12L8.8624 2.49998C8.77543 2.34802 8.64987 2.22173 8.49841 2.1339C8.34695 2.04607 8.17498 1.99982 7.9999 1.99982C7.82481 1.99982 7.65284 2.04607 7.50138 2.1339C7.34992 2.22173 7.22436 2.34802 7.1374 2.49998V2.49998Z"
3640 stroke="#FFEEB3" stroke-linecap="round"
3641 stroke-linejoin="round"/>
3642 <path d="M8 12C8.41421 12 8.75 11.6642 8.75 11.25C8.75 10.8358 8.41421 10.5 8 10.5C7.58579 10.5 7.25 10.8358 7.25 11.25C7.25 11.6642 7.58579 12 8 12Z"
3643 fill="#FFEEB3"/>
3644 </svg>
3645 <p class="paragraph-micro-regular">O uso deste material
3646 é autorizado apenas para fins editoriais.</p>
3647 </div>
3648 </div>
3649 </div>
3650
3651 <div class="social-media-container">
3652
3653 <#assign emailMsg = "Veja o conteúdo do post no link ">
3654 <#if locale == "en_US">
3655 <#assign emailMsg = "See the content of the post in the link ">
3656 </#if>
3657
3658 <a class="news-gallery-share-news-email" href="mailto:?subject=${newsInfo.mainHeadlineOfTheNews}&body=${emailMsg}${themeDisplay.getPortalURL() + largeImgUrl}"
3659 target="_blank">
3660 <svg class="email" width="37" height="36"
3661 viewBox="0 0 37 36" fill="none"
3662 xmlns="http://www.w3.org/2000/svg">
3663 <circle cx="18.5" cy="18" r="17.5" fill="white"
3664 stroke="#E1E1E1"/>
3665 <path d="M24.9231 12H11.0769C10.9239 12 10.7772 12.0579 10.669 12.1611C10.5608 12.2642 10.5 12.4041 10.5 12.55V21.9C10.5 22.1917 10.6216 22.4715 10.838 22.6778C11.0543 22.8841 11.3478 23 11.6538 23H24.3462C24.6522 23 24.9457 22.8841 25.162 22.6778C25.3784 22.4715 25.5 22.1917 25.5 21.9V12.55C25.5 12.4041 25.4392 12.2642 25.331 12.1611C25.2228 12.0579 25.0761 12 24.9231 12ZM24.3462 21.9H11.6538V13.8012L17.6106 19.0056C17.7169 19.0984 17.8559 19.1498 18 19.1498C18.1441 19.1498 18.2831 19.0984 18.3894 19.0056L24.3462 13.8012V21.9Z"
3666 fill="#008542"/>
3667 </svg>
3668 <span style="display: none">send e-mail</span>
3669 </a>
3670
3671 <a class="news-gallery-share-news-facebook" href="https://www.facebook.com/sharer/sharer.php?u=${themeDisplay.getPortalURL() + largeImgUrl}"
3672 target="_blank">
3673 <svg class="facebook" width="37" height="36"
3674 viewBox="0 0 37 36" fill="none"
3675 xmlns="http://www.w3.org/2000/svg">
3676 <circle cx="18.5" cy="18" r="17.5" fill="white"
3677 stroke="#E1E1E1"/>
3678 <path d="M17.5417 24H20.0341V18.1855H21.9697L22.2879 15.875H20.0341V14.2754C20.0341 13.9199 20.0871 13.6406 20.2462 13.4629C20.4053 13.2598 20.75 13.1582 21.2273 13.1582H22.5V11.1016C22.0227 11.0508 21.3864 11 20.6439 11C19.6894 11 18.947 11.2793 18.3902 11.8125C17.8068 12.3457 17.5417 13.082 17.5417 14.0469V15.875H15.5V18.1855H17.5417V24Z"
3679 fill="#008542"/>
3680 </svg>
3681 </a>
3682
3683
3684 <a class="news-gallery-share-news-twitter" href="https://twitter.com/intent/tweet?url=${themeDisplay.getPortalURL() + largeImgUrl}"
3685 target="_blank">
3686 <svg class="twitter" width="37" height="36"
3687 viewBox="0 0 37 36" fill="none"
3688 xmlns="http://www.w3.org/2000/svg">
3689 <circle cx="18.5" cy="18" r="17.5" fill="white"
3690 stroke="#E1E1E1"/>
3691 <path d="M23.1771 14.7301C23.6859 14.3325 24.1438 13.8554 24.5 13.2988C24.0421 13.5108 23.5078 13.6699 22.9736 13.7229C23.5333 13.3783 23.9403 12.8482 24.1438 12.1855C23.635 12.5036 23.0499 12.7422 22.4648 12.8747C21.956 12.3181 21.2691 12 20.5059 12C19.0303 12 17.8346 13.2458 17.8346 14.7831C17.8346 14.9952 17.8601 15.2072 17.911 15.4193C15.6977 15.2867 13.7133 14.1735 12.3904 12.5036C12.1614 12.9012 12.0342 13.3783 12.0342 13.9084C12.0342 14.8627 12.4922 15.7108 13.2299 16.2145C12.7975 16.188 12.365 16.0819 12.0088 15.8699V15.8964C12.0088 17.2482 12.9247 18.3614 14.1458 18.6265C13.9423 18.6795 13.6879 18.7325 13.4589 18.7325C13.2808 18.7325 13.1282 18.706 12.9501 18.6795C13.2808 19.7928 14.273 20.588 15.4432 20.6145C14.5274 21.3566 13.3826 21.8072 12.136 21.8072C11.907 21.8072 11.7035 21.7807 11.5 21.7542C12.6703 22.5494 14.0695 23 15.5959 23C20.5059 23 23.1771 18.7855 23.1771 15.1012C23.1771 14.9687 23.1771 14.8627 23.1771 14.7301Z"
3692 fill="#008542"/>
3693 </svg>
3694 </a>
3695
3696 <a class="news-gallery-share-news-whatsapp" href="https://api.whatsapp.com/send?text=${themeDisplay.getPortalURL() + largeImgUrl}"
3697 data-action="share/whatsapp/share"
3698 target="_blank">
3699 <svg class="whatsapp" width="37" height="36"
3700 viewBox="0 0 37 36" fill="none"
3701 xmlns="http://www.w3.org/2000/svg">
3702 <circle cx="18.5" cy="18" r="17.5" fill="white"
3703 stroke="#E1E1E1"/>
3704 <path d="M12.5482 21.3241C11.6166 19.7525 11.2908 17.8949 11.6318 16.1C11.9729 14.3052 12.9573 12.6965 14.4003 11.5761C15.8434 10.4556 17.6457 9.90042 19.4691 10.0147C21.2925 10.129 23.0114 10.9049 24.3033 12.1967C25.5951 13.4886 26.371 15.2075 26.4853 17.0309C26.5996 18.8543 26.0444 20.6566 24.9239 22.0997C23.8035 23.5427 22.1948 24.5271 20.4 24.8682C18.6051 25.2092 16.7475 24.8834 15.1759 23.9518L12.5795 24.687C12.4731 24.7181 12.3603 24.72 12.2529 24.6925C12.1455 24.6651 12.0475 24.6092 11.9692 24.5308C11.8908 24.4525 11.8349 24.3545 11.8075 24.2471C11.78 24.1397 11.7819 24.0269 11.813 23.9205L12.5482 21.3241Z"
3705 fill="#008542"/>
3706 <path d="M20.6917 21C20.0094 21.0017 19.3335 20.8686 18.7029 20.6083C18.0722 20.348 17.4992 19.9656 17.0168 19.4832C16.5344 19.0008 16.152 18.4278 15.8917 17.7971C15.6314 17.1665 15.4983 16.4906 15.5 15.8083C15.5017 15.3281 15.6937 14.8682 16.0338 14.5293C16.374 14.1903 16.8346 14 17.3148 14C17.394 13.9994 17.472 14.0201 17.5404 14.06C17.6089 14.1 17.6653 14.1576 17.7037 14.2269L18.462 15.5491C18.5071 15.6295 18.5303 15.7203 18.5291 15.8124C18.528 15.9046 18.5026 15.9948 18.4556 16.0741L17.8463 17.0917C18.1584 17.7859 18.7141 18.3416 19.4083 18.6537L20.4259 18.0444C20.5052 17.9974 20.5954 17.972 20.6876 17.9709C20.7797 17.9697 20.8705 17.9929 20.9509 18.038L22.2731 18.7963C22.3424 18.8347 22.4 18.8911 22.44 18.9596C22.4799 19.028 22.5006 19.106 22.5 19.1852C22.4983 19.6649 22.3074 20.1245 21.9689 20.4643C21.6303 20.8041 21.1713 20.9966 20.6917 21Z"
3707 fill="white"/>
3708 </svg>
3709 <span style="display: none">Share to WhatsApp </span>
3710 </a>
3711
3712 </div>
3713 </div>
3714
3715 </div>
3716 </div>
3717 </div>
3718 </div>
3719 </div>
3720 </div>
3721
3722 <script>
3723 AUI().ready(function () {
3724 const fragmentElement = document.querySelector(".${rancomCssClass}");
3725 const getImageClick = fragmentElement.querySelector('.click-image');
3726 const imageContainer = fragmentElement.querySelector('.modal-image-container');
3727 const imagePlayerContainer = fragmentElement.querySelector('.image-player-container');
3728
3729 const image = imagePlayerContainer.querySelector('img');
3730 const closeImage = imagePlayerContainer.querySelector('.close-image');
3731 const body = document.querySelector('body');
3732 const thumbnailImage = imagePlayerContainer.querySelector(".thumbnail");
3733 const largeImage = imagePlayerContainer.querySelector(".large");
3734
3735 const stopImage = () => {
3736 fragmentElement.classList.toggle('active');
3737 getImageClick.classList.toggle('image-playing');
3738 imagePlayerContainer.classList.toggle('image-playing');
3739 imageContainer.classList.toggle('image-playing');
3740 thumbnailImage.classList.toggle('hide');
3741 largeImage.style = "display: none";
3742 closeImage.classList.toggle('image-active');
3743 body.style.overflow = 'initial';
3744 }
3745
3746 const playImage = () => {
3747 fragmentElement.classList.toggle('active');
3748 getImageClick.classList.toggle('image-playing');
3749 imagePlayerContainer.classList.toggle('image-playing');
3750 imageContainer.classList.toggle('image-playing');
3751 closeImage.classList.toggle('image-active')
3752 thumbnailImage.classList.toggle('hide');
3753 largeImage.style = "display: flex";
3754 body.style.overflow = 'hidden';
3755 }
3756
3757 getImageClick.addEventListener('click', () => {
3758 if (document.body.classList.contains('has-edit-mode-menu')) {
3759 return;
3760 }
3761
3762 if (imagePlayerContainer.classList.contains('image-playing')) {
3763 stopImage();
3764 } else {
3765 playImage();
3766 }
3767 })
3768
3769 closeImage.addEventListener('click', () => {
3770 if (imagePlayerContainer.classList.contains('image-playing')) {
3771 stopImage();
3772 }
3773 })
3774 });
3775 </script>
3776
3777 <#assign itensNum = itensNum + 1 />
3778
3779 </#list>
3780
3781 </div>
3782
3783 <script>
3784 AUI().ready(function () {
3785 const imageContainer = document.querySelectorAll('.image-container .modal-image-container');
3786 const closeImage = document.querySelectorAll('.image-container .modal-image-container .close-image');
3787 const clickContainer = document.querySelectorAll('.image-container .modal-image-container .click-image');
3788 let curItem = 0;
3789
3790
3791 if (imageContainer.length > 0) {
3792 const allArrowsLeft = document.querySelectorAll('.fragment_88494 .modal-image-container .image-player-container .carousel-info .left-arrow');
3793 const allArrowsRight = document.querySelectorAll('.fragment_88494 .modal-image-container .image-player-container .carousel-info .right-arrow');
3794
3795
3796 allArrowsLeft.forEach((item, index) => {
3797 item.addEventListener('click', () => {
3798 if (index - 1 >= 0) {
3799 curItem = index - 1
3800 closeImage[index].click();
3801 clickContainer[curItem].click();
3802 }
3803
3804 })
3805 });
3806
3807 allArrowsRight.forEach((item, index) => {
3808 item.addEventListener('click', () => {
3809 if (index + 1 <= (imageContainer.length - 1)) {
3810 curItem = index + 1
3811 closeImage[index].click();
3812 clickContainer[curItem].click();
3813 }
3814
3815 })
3816
3817
3818 });
3819
3820
3821 }
3822 });
3823 </script>
3824
3825 </div>
3826 </div>
3827 </div>
3828
3829 <style>
3830 .ptb-news__read-news .gallery * {
3831 margin: 0;
3832 padding: 0;
3833 }
3834
3835 .ptb-news__read-news .gallery {
3836 display: flex;
3837 gap: var(--space-xl, 40px);
3838 flex-direction: column;
3839 }
3840
3841 .ptb-news__read-news .gallery .title-container {
3842 display: flex;
3843 align-items: center;
3844 gap: var(--space-sm, 16px);
3845 }
3846
3847 .ptb-news__read-news .gallery .title-container svg {
3848 width: 24px;
3849 height: 21px;
3850 }
3851
3852 .ptb-news__read-news .gallery .title-container .title {
3853 color: var(--color-neutral-800, #373737);
3854 font-family: var(--font-family-base);
3855 font-size: var(--font-size-lg);
3856 font-style: var(--font-style-normal);
3857 font-weight: var(--font-weight-bold);
3858 line-height: var(--line-height-md); /* 31.68px */
3859 }
3860
3861 .ptb-news__read-news .gallery .image-container {
3862 display: flex;
3863 gap: var(--space-sm, 16px);
3864 flex-wrap: wrap;
3865 }
3866
3867 .ptb-news__read-news .gallery .image-container .fragment_88494 {
3868 width: 274px;
3869 height: 152px;
3870 border-radius: var(--border-radius-md, 8px);
3871 }
3872
3873 .ptb-news__read-news .gallery .large-image-download {
3874 display: none;
3875 }
3876
3877 .fragment_88494 .modal-image-container .image-player-container.image-playing .image-player-session .download-share-container {
3878 display: flex;
3879 justify-content: space-between;
3880 gap: 12px;
3881 }
3882
3883
3884 .fragment_88494 .modal-image-container .image-player-container.image-playing .image-player-session .download-share-container .social-media-container {
3885 display: flex;
3886 gap: 8px;
3887 }
3888
3889 /* Gallery */
3890
3891 .fragment_88494 {
3892 width: inherit;
3893 height: inherit;
3894 max-height: calc(100vw / 2);
3895 padding: 0;
3896 margin: 0;
3897 overflow: hidden;
3898 }
3899
3900 .fragment_88494 * {
3901 box-sizing: border-box;
3902 margin: 0;
3903 padding: 0;
3904 }
3905
3906 .fragment_88494 .modal-image-container {
3907 width: 100%;
3908 height: inherit;
3909 display: flex;
3910 justify-content: center;
3911 position: relative;
3912 cursor: initial;
3913 }
3914
3915 .fragment_88494 .modal-image-container .click-image {
3916 cursor: pointer;
3917 }
3918
3919 .fragment_88494 .modal-image-container.image-playing {
3920 position: fixed;
3921 top: 0;
3922 left: 0;
3923 width: 100vw !important;
3924 height: 100vh !important;
3925 z-index: 9999 !important;
3926 background-color: rgba(0, 0, 0, 0.75);
3927 max-height: 100vh;
3928 }
3929
3930 .page-editor .fragment_88494 .modal-image-container {
3931 z-index: 0;
3932 }
3933
3934 .fragment_88494 .modal-image-container .click-image {
3935 height: 100%;
3936 width: 100%;
3937 position: absolute;
3938 z-index: 3;
3939 }
3940
3941 .fragment_88494 .modal-image-container .image-player-container {
3942 width: 100%;
3943 height: 100%;
3944 }
3945
3946
3947 .fragment_88494 .modal-image-container .image-player-container.image-playing {
3948 position: relative;
3949 width: 90vw !important;
3950 height: 90vh !important;
3951 z-index: 9999 !important;
3952 border-radius: var(--border-radius-card);
3953 margin: auto;
3954 max-width: 1440px;
3955 }
3956
3957 .fragment_88494 .modal-image-container .image-player-container .close-image {
3958 display: none;
3959 position: absolute;
3960 font-size: var(--font-size-micro);
3961 color: var(--color-primary-medium);
3962 width: 20px;
3963 height: 20px;
3964 top: -6px;
3965 right: -10px;
3966 z-index: 99999;
3967 background: var(--color-neutral-100);
3968 text-align: center;
3969 border-radius: 50%;
3970 border: 1px solid var(--color-neutral-400);
3971 }
3972
3973 .fragment_88494 .modal-image-container .image-player-container .close-image.image-active {
3974 display: block;
3975 }
3976
3977 .fragment_88494 .modal-image-container .image-player-container .image-player-session {
3978 width: 100%;
3979 height: 100%;
3980 }
3981
3982 .fragment_88494 .modal-image-container .image-player-container.image-playing .image-player-session {
3983 width: 90vw !important;
3984 height: 65vh !important;
3985 z-index: 9999 !important;
3986 border-radius: var(--border-radius-card) var(--border-radius-card) 0 0;
3987 overflow: hidden;
3988 max-width: 1440px;
3989 }
3990
3991 .fragment_88494 .modal-image-container .image-player-container.image-playing .background-image {
3992 display: flex;
3993 width: 100% !important;
3994 height: 100% !important;
3995 margin-left: 0 !important;
3996 max-height: 100vh;
3997 filter: blur(8px);
3998 overflow: hidden;
3999 background-repeat: repeat;
4000 background-size: 50% 700px;
4001 }
4002
4003 .fragment_88494 .modal-image-container .image-player-container .image-player-session img {
4004 width: 120%;
4005 height: 120%;
4006 margin-left: -12%;
4007 max-height: calc(100vw / 2);
4008 object-fit: cover;
4009 }
4010
4011 .fragment_88494 .modal-image-container .image-player-container.image-playing .image-player-session img {
4012 width: 100% !important;
4013 height: 65vh !important;
4014 margin-left: 0 !important;
4015 max-height: 100vh;
4016 object-fit: contain;
4017 position: absolute;
4018 top: 0;
4019 left: 0;
4020 background: transparent;
4021 }
4022
4023 .fragment_88494 .modal-image-container .image-player-container.image-playing .gallery-modal-footer {
4024 display: flex;
4025 flex-direction: row-reverse;
4026 justify-content: space-between;
4027 align-items: flex-start;
4028 background-color: #1E1E1E;
4029 /*max-height: 35%;*/
4030 padding: 8px;
4031 border-radius: 0 0 var(--border-radius-card) var(--border-radius-card);
4032 color: var(--color-neutral-100);
4033 gap: 32px;
4034 min-height: 128px;
4035 z-index: 9999 !important;
4036 position: absolute;
4037 width: 90vw !important;
4038 max-width: 1440px;
4039 }
4040
4041 .fragment_88494 .modal-image-container .image-player-container.image-playing .text-container {
4042 display: flex;
4043 flex-direction: column;
4044 gap: 8px;
4045 }
4046
4047 .fragment_88494 .modal-image-container .image-player-container.image-playing .gallery-modal-footer .social-media-container {
4048 position: absolute;
4049 right: 5px;
4050 bottom: 20px;
4051 display: flex;
4052 gap: 3px;
4053 }
4054
4055 .fragment_88494 .modal-image-container .image-player-container.image-playing .gallery-modal-footer .social-media-container a {
4056 display: block;
4057 height: fit-content;
4058 }
4059
4060 .fragment_88494 .modal-image-container .image-player-container.image-playing .text-container .image-info {
4061 display: flex;
4062 gap: 24px;
4063 color: var(--color-neutral-500);
4064 }
4065
4066
4067 .fragment_88494 .modal-image-container .image-player-container.image-playing .text-container .download-info {
4068 display: flex;
4069 gap: 16px;
4070 margin-top: 15px;
4071 }
4072
4073 .fragment_88494 .modal-image-container .image-player-container.image-playing .text-container .download-info .donwload-button {
4074 display: flex;
4075 justify-content: space-around;
4076 align-items: center;
4077 background-color: var(--color-primary-medium);
4078 width: 100px;
4079 height: 40px;
4080 padding: 0px 16px 0px 16px;
4081 border-radius: 100px;
4082 gap: 8px;
4083 color: var(--color-neutral-100);
4084 text-decoration: none;
4085 }
4086
4087 .fragment_88494 .modal-image-container .image-player-container.image-playing .text-container .download-info .donwload-button svg {
4088 pointer-events: none;
4089 }
4090
4091 .fragment_88494 .modal-image-container .image-player-container.image-playing .text-container .download-info svg {
4092 flex-shrink: 0;
4093 pointer-events: none;
4094 }
4095
4096 .fragment_88494 .modal-image-container .image-player-container.image-playing .text-container .download-info-message {
4097 display: flex;
4098 align-items: center;
4099 color: #FFEEB3;
4100 gap: 8px;
4101 }
4102
4103 .fragment_88494 .modal-image-container .image-player-container.image-playing .carousel-info {
4104 display: flex;
4105 justify-content: center;
4106 gap: 8px;
4107 padding: 8px;
4108 }
4109
4110 .fragment_88494 .modal-image-container .image-player-container.image-playing .carousel-info .left-arrow,
4111 .fragment_88494 .modal-image-container .image-player-container.image-playing .carousel-info .right-arrow {
4112 cursor: pointer;
4113 }
4114
4115 .fragment_88494 .modal-image-container .image-player-container.image-playing .carousel-info .left-arrow svg,
4116 .fragment_88494 .modal-image-container .image-player-container.image-playing .carousel-info .right-arrow svg {
4117 pointer-events: none;
4118 }
4119
4120 .fragment_88494 .modal-image-container .image-player-container.image-playing .carousel-info .title-image {
4121 display: flex;
4122 justify-content: center;
4123 align-items: center;
4124 height: 32px;
4125 color: var(--color-neutral-500);
4126 }
4127
4128
4129 @media (max-width: 1040px) {
4130
4131 .fragment_88494 .modal-image-container .image-player-container.image-playing .background-image {
4132 background-size: 100% 100%;
4133 }
4134
4135 }
4136
4137
4138 @media (max-width: 767px) {
4139
4140 .fragment_88494 .modal-image-container .image-player-container.image-playing {
4141 margin-top: 5%;
4142 }
4143
4144 .fragment_88494 .modal-image-container .image-player-container.image-playing .image-player-session {
4145 height: 50vh !important;
4146 min-height: 234px;
4147 }
4148
4149 .fragment_88494 .modal-image-container .image-player-container.image-playing .image-player-session img {
4150 height: 50vh !important;
4151 min-height: 234px;
4152 }
4153
4154 .fragment_88494 .modal-image-container .image-player-container.image-playing .carousel-info {
4155 align-items: center;
4156 justify-content: flex-start;
4157 margin-top: 12px;
4158 width: 100%;
4159 }
4160
4161 .fragment_88494 .modal-image-container .image-player-container.image-playing .gallery-modal-footer {
4162 /*height: 40%;*/
4163 min-height: 280px;
4164 flex-direction: column;
4165 justify-content: flex-start;
4166 align-items: center;
4167 width: 100%;
4168 flex-wrap: nowrap;
4169 }
4170
4171
4172 .fragment_88494 .modal-image-container .image-player-container.image-playing .text-container .image-info {
4173 flex-direction: column;
4174 gap: 8px;
4175 }
4176
4177 .fragment_88494 .modal-image-container .image-player-container.image-playing .text-container .download-info {
4178 flex-direction: column;
4179 justify-content: center;
4180 align-items: center;
4181 margin-top: 5px;
4182 }
4183
4184 .fragment_88494 .modal-image-container .image-player-container.image-playing .text-container .download-info .donwload-button {
4185 justify-content: center;
4186 width: 100%;
4187 }
4188
4189 .fragment_88494 .modal-image-container .image-player-container.image-playing .image-player-session .download-share-container {
4190 flex-direction: column;
4191 }
4192
4193 .fragment_88494 .modal-image-container .image-player-container.image-playing .gallery-modal-footer .social-media-container {
4194 top: 25px;
4195 }
4196
4197 }
4198
4199
4200 @media (max-width: 540px) {
4201
4202 .fragment_88494 .modal-image-container .image-player-container.image-playing {
4203 height: 40vh !important;
4204 margin-top: 15%;
4205 }
4206
4207 .fragment_88494 .modal-image-container .image-player-container.image-playing .image-player-session {
4208 height: 40vh !important;
4209 min-height: 234px;
4210 }
4211
4212 .fragment_88494 .modal-image-container .image-player-container.image-playing .image-player-session img {
4213 height: 40vh !important;
4214 min-height: 234px;
4215 }
4216
4217 .fragment_88494 .modal-image-container .image-player-container.image-playing .image-player-session .download-share-container {
4218 gap: 6px;
4219 }
4220
4221 .fragment_88494 .modal-image-container .image-player-container.image-playing .gallery-modal-footer {
4222 gap: 18px;
4223 }
4224
4225 .fragment_88494 .modal-image-container .image-player-container.image-playing .text-container .download-info {
4226 margin-top: 2px;
4227 }
4228
4229 }
4230
4231 @media (max-height: 500px) {
4232 .fragment_88494 .modal-image-container .image-player-container.image-playing {
4233 display: flex;
4234 }
4235
4236 .fragment_88494 .modal-image-container .image-player-container.image-playing .image-player-session {
4237 height: 60vh !important;
4238 width: 50vw !important;
4239 border-radius: var(--border-radius-card) 0 0 0;
4240 }
4241
4242 .fragment_88494 .modal-image-container .image-player-container.image-playing .image-player-session img {
4243 height: 60vh !important;
4244 width: 40vw !important;
4245 }
4246
4247 .fragment_88494 .modal-image-container .image-player-container.image-playing .gallery-modal-footer {
4248 height: 75vh !important;
4249 width: 50vw !important;
4250 top: 0;
4251 right: 0;
4252 min-height: 85vh;
4253 border-radius: 0 var(--border-radius-card) var(--border-radius-card) 0;
4254 align-items: center;
4255 }
4256
4257 .fragment_88494 .modal-image-container .image-player-container.image-playing .carousel-info {
4258 position: absolute;
4259 display: flex;
4260 align-items: center;
4261 bottom: 0;
4262 left: -40vw;
4263 width: 40vw !important;
4264 background-color: #1E1E1E;
4265 height: 120px !important;
4266 border-radius: 0 0 0 var(--border-radius-card);
4267 }
4268
4269
4270 .fragment_88494 .modal-image-container .image-player-container.image-playing .image-player-session .download-share-container {
4271 flex-direction: column;
4272 }
4273
4274
4275 .fragment_88494 .modal-image-container .image-player-container.image-playing .text-container .download-info .donwload-button {
4276 width: 100%;
4277 justify-content: center;
4278 }
4279
4280 .fragment_88494 .modal-image-container .image-player-container.image-playing .text-container {
4281 gap: 16px;
4282 height: 60vh;
4283 }
4284
4285 .fragment_88494 .modal-image-container .image-player-container.image-playing .gallery-modal-footer .social-media-container {
4286 top: initial;
4287 }
4288
4289 /* *** */
4290
4291
4292 </style>
4293
4294</#macro>
4295
4296
4297<#-- ################################################################################################################## -->
4298
4299
4300<#-- ############# Site de Crise - Notícia - Render seção download #################################################### -->
4301
4302<#macro renderDownloadSection newsInfo>
4303 <div class="breakpoint">
4304 <div class="col-3-10 md-col-1-12 sm-col-1-4">
4305 <div class="download-section">
4306 <div class="title-container">
4307 <svg viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
4308 <path d="M10.75 13.75L16 19M16 19L21.25 13.75M16 19V5M27 19V26C27 26.2652 26.8946 26.5196 26.7071 26.7071C26.5196 26.8946 26.2652 27 26 27H6C5.73478 27 5.48043 26.8946 5.29289 26.7071C5.10536 26.5196 5 26.2652 5 26V19"
4309 stroke="#373737" stroke-width="2.28571" stroke-linecap="round" stroke-linejoin="round"/>
4310 </svg>
4311 <p class="title">Downloads </p>
4312 </div>
4313
4314 <div class="sections">
4315 <div class="section text-section">
4316 <p class="title"> <#if locale == "pt_BR"> Texto desta matéria <#else > Text of this article </#if> </p>
4317 <a class="button download-news-text" href="">
4318 <#if locale == "pt_BR"> Download do texto <#else > Text download </#if>
4319 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
4320 xmlns="http://www.w3.org/2000/svg">
4321 <path d="M8.0625 10.3125L12 14.25M12 14.25L15.9375 10.3125M12 14.25V3.75M20.25 14.25V19.5C20.25 19.6989 20.171 19.8897 20.0303 20.0303C19.8897 20.171 19.6989 20.25 19.5 20.25H4.5C4.30109 20.25 4.11032 20.171 3.96967 20.0303C3.82902 19.8897 3.75 19.6989 3.75 19.5V14.25"
4322 stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
4323 </svg>
4324 </a>
4325 </div>
4326
4327 <div class="separator"></div>
4328
4329 <div class="section photo-section">
4330 <p class="title"> <#if locale == "pt_BR"> Fotos desta matéria <#else > Photos from this article </#if> </p>
4331
4332
4333 <div class="links">
4334 <#list newsInfo.galleryItems as gItem>
4335 <#assign url = ""/>
4336 <#assign alt = ""/>
4337 <#if gItem.originalFile["contentUrl"]?? >
4338 <#assign url = gItem.originalFile.contentUrl/>
4339 <#assign alt = gItem.originalFile.description/>
4340 </#if>
4341
4342 <#-- <a class="button" href="${url}">
4343 ${gItem.cardTitle}
4344 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
4345 xmlns="http://www.w3.org/2000/svg">
4346 <path d="M8.0625 10.3125L12 14.25M12 14.25L15.9375 10.3125M12 14.25V3.75M20.25 14.25V19.5C20.25 19.6989 20.171 19.8897 20.0303 20.0303C19.8897 20.171 19.6989 20.25 19.5 20.25H4.5C4.30109 20.25 4.11032 20.171 3.96967 20.0303C3.82902 19.8897 3.75 19.6989 3.75 19.5V14.25"
4347 stroke="#008542" stroke-width="2" stroke-linecap="round"
4348 stroke-linejoin="round"/>
4349 </svg>
4350 </a> -->
4351 </#list>
4352
4353 </div>
4354
4355 <a class="button download-news-photos" href="">
4356 <#if locale == "pt_BR"> Download das fotos <#else > Download photos </#if>
4357 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
4358 xmlns="http://www.w3.org/2000/svg">
4359 <path d="M8.0625 10.3125L12 14.25M12 14.25L15.9375 10.3125M12 14.25V3.75M20.25 14.25V19.5C20.25 19.6989 20.171 19.8897 20.0303 20.0303C19.8897 20.171 19.6989 20.25 19.5 20.25H4.5C4.30109 20.25 4.11032 20.171 3.96967 20.0303C3.82902 19.8897 3.75 19.6989 3.75 19.5V14.25"
4360 stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
4361 </svg>
4362 </a>
4363 </div>
4364
4365 <div class="separator"></div>
4366
4367 <div class="section video-section">
4368 <p class="title"> <#if locale == "pt_BR"> Vídeos desta matéria <#else > Videos from this article </#if> </p>
4369 <div class="videos-container"></div>
4370 <#-- <a class="button" href="">
4371 <#if locale == "pt_BR"> Download dos vídeos <#else > Download videos </#if>
4372 <svg width="24" height="24" viewBox="0 0 24 24" fill="none"
4373 xmlns="http://www.w3.org/2000/svg">
4374 <path d="M8.0625 10.3125L12 14.25M12 14.25L15.9375 10.3125M12 14.25V3.75M20.25 14.25V19.5C20.25 19.6989 20.171 19.8897 20.0303 20.0303C19.8897 20.171 19.6989 20.25 19.5 20.25H4.5C4.30109 20.25 4.11032 20.171 3.96967 20.0303C3.82902 19.8897 3.75 19.6989 3.75 19.5V14.25"
4375 stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
4376 </svg>
4377 </a> -->
4378 </div>
4379 </div>
4380 </div>
4381 </div>
4382 </div>
4383
4384 <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"></script>
4385
4386 <script>
4387 AUI().ready(function () {
4388
4389 const externalArrow = '<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M27 12.5V5H19.5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M18 14L27 5" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M23 18V26C23 26.2652 22.8946 26.5196 22.7071 26.7071C22.5196 26.8946 22.2652 27 22 27H6C5.73478 27 5.48043 26.8946 5.29289 26.7071C5.10536 26.5196 5 26.2652 5 26V10C5 9.73478 5.10536 9.48043 5.29289 9.29289C5.48043 9.10536 5.73478 9 6 9H14" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>';
4390 const downloadArrow = '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M8.0625 10.3125L12 14.25M12 14.25L15.9375 10.3125M12 14.25V3.75M20.25 14.25V19.5C20.25 19.6989 20.171 19.8897 20.0303 20.0303C19.8897 20.171 19.6989 20.25 19.5 20.25H4.5C4.30109 20.25 4.11032 20.171 3.96967 20.0303C3.82902 19.8897 3.75 19.6989 3.75 19.5V14.25" stroke="#008542" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> </svg>';
4391
4392 const newsContent = document.querySelector(".ptb-news__read-news");
4393 const newsContentLinks = newsContent.querySelectorAll("a");
4394
4395 newsContentLinks.forEach((link) => {
4396 link.classList.add('ptb-news__news-link');
4397 });
4398
4399
4400
4401
4402 const downloadSection = newsContent.querySelector(".download-section");
4403 const videosContainer = downloadSection.querySelector(".videos-container");
4404
4405 const youtubeVideoDivList = newsContent.querySelectorAll('div[data-embed-id]');
4406
4407 youtubeVideoDivList.forEach((videoDiv, index) => {
4408 const aElement = document.createElement("a");
4409
4410 if (!videoDiv.getAttribute("data-embed-id").includes("youtube")) {
4411 return;
4412 }
4413
4414 const id = videoDiv.getAttribute("data-embed-id").split("/").pop().split("?")[0];
4415
4416 const linkStr = "https://www.youtube.com/watch?v=" + id;
4417 aElement.href = linkStr;
4418
4419 <#assign text = ""/>
4420 <#if locale == "pt_BR">
4421 <#assign text = "'Ver vídeo ' + (index +1) + ' no Youtube'"/>
4422 <#else >
4423 <#assign text = "'Watch video ' + (index +1) + ' on Youtube'"/>
4424 </#if>
4425 aElement.innerHTML = ${text} + externalArrow;
4426 aElement.setAttribute("target", "_blank");
4427 aElement.classList.add("button");
4428 videosContainer.appendChild(aElement);
4429 });
4430
4431 const videoDivList = newsContent.querySelectorAll('iframe[data-video-liferay]');
4432
4433 videoDivList.forEach((videoDiv, index) => {
4434 const aElement = document.createElement("a");
4435 aElement.href = videoDiv.src;
4436 aElement.innerHTML = "Download " + (index + 1) + downloadArrow;
4437 aElement.setAttribute("target", "_blank");
4438 aElement.classList.add("button");
4439 videosContainer.appendChild(aElement);
4440 });
4441
4442 if (videosContainer.children.length === 0) {
4443 videosContainer.parentNode.style.display = "none";
4444 videosContainer.parentNode.previousElementSibling.style.display = "none";
4445 }
4446
4447 const photoSection = downloadSection.querySelector(".photo-section");
4448 const photoDownloadButton = photoSection.querySelector(".button");
4449 photoDownloadButton.addEventListener("click", (event) => {
4450 event.preventDefault();
4451 let imageUrls = []
4452 let imageTitles = []
4453 <#list newsInfo.galleryItems as galleryItem>
4454 <#assign url = ""/>
4455 <#if galleryItem.originalFile["contentUrl"]?? >
4456 <#assign url = galleryItem.originalFile["contentUrl"]/>
4457 </#if>
4458 imageUrls.push("${url}");
4459 imageTitles.push('${galleryItem.cardTitle}'.replace(/([^\w ]|_)/g, '').replaceAll(' ', '_'));
4460 </#list>
4461
4462
4463 // Instale a biblioteca jszip usando npm:
4464 <#-- npm install jszip -->
4465
4466 <#-- Importe a biblioteca jszip -->
4467 //import JSZip from 'jszip';
4468
4469
4470// Função para baixar uma imagem e adicionar ao arquivo ZIP
4471 const downloadImage = async (zip, imageUrl, imageName) => {
4472 const response = await fetch(imageUrl);
4473 const arrayBuffer = await response.arrayBuffer();
4474 zip.file(imageName, arrayBuffer);
4475 };
4476
4477// Função principal assíncrona
4478 const main = async () => {
4479 // Crie uma instância do JSZip
4480 const zip = new JSZip();
4481
4482 // Baixe cada imagem e adicione ao arquivo ZIP
4483 await Promise.all(imageUrls.map((url, index) => downloadImage(zip, url, imageTitles[index] + "_" + (index + 1) + '.jpg')));
4484
4485 // Gere o conteúdo do arquivo ZIP
4486 const zipContent = await zip.generateAsync({type: 'blob'});
4487
4488 // Crie um link para o arquivo ZIP e inicie o download
4489 const link = document.createElement('a');
4490 link.classList.add('ptb-news__zip-link');
4491 link.href = URL.createObjectURL(zipContent);
4492 link.download = 'imagens.zip';
4493 document.body.appendChild(link);
4494 link.click();
4495 document.body.removeChild(link);
4496 };
4497
4498// Chame a função principal
4499 main();
4500
4501 });
4502
4503 <#if newsInfo.galleryItems?size == 0>
4504 photoSection.style.display = "none";
4505 photoSection.previousElementSibling.style.display = "none";
4506 </#if>
4507
4508 const textSection = downloadSection.querySelector(".text-section");
4509 const textDownloadButton = textSection.querySelector(".button");
4510 textDownloadButton.addEventListener("click", () => {
4511
4512 const link = document.createElement("a");
4513
4514 const titleText = document.querySelector(".main-headline-container .main-headline").innerHTML;
4515 const publishSocialMediaText = document.querySelector(".publish_and_social_medias_infos_desk .publish_and_update_date").innerHTML;
4516 const tagsText = document.querySelector(".tags").innerHTML;
4517 const newsContentText = document.querySelector(".news-content").innerHTML;
4518 const text = titleText + publishSocialMediaText + tagsText + newsContentText;
4519
4520 const strWithoutHtmlTags = text.replace(/(<([^>]+)>)/gi, "");
4521 const strWithoutMarcationBrackets = strWithoutHtmlTags.replace(/ *#\[[^\]]*]/g, "");
4522 const strWithoutNextPrevious = strWithoutMarcationBrackets.replace(/Previous Next/g, "");
4523 const strWithoutBlankEnters = strWithoutNextPrevious.replace(/^\s*$(?:\r\n?|\n)/gm, "");
4524 const tempInput = document.createElement("textarea");
4525 tempInput.value = strWithoutBlankEnters;
4526
4527 document.body.appendChild(tempInput);
4528 tempInput.select();
4529 document.execCommand("copy");
4530
4531 if (tempInput.value.length > 0) {
4532
4533 link.classList.add('ptb-news__news-link');
4534
4535 const file = new Blob([tempInput.value], {type: 'text/plain'});
4536 link.href = URL.createObjectURL(file);
4537 link.download = titleText.replace(/([^\w ]|_)/g, '').replaceAll(' ', '_');
4538 link.click();
4539 URL.revokeObjectURL(link.href);
4540 }
4541
4542 document.body.removeChild(tempInput);
4543 });
4544
4545
4546 });
4547
4548 </script>
4549
4550 <style>
4551 .ptb-news__read-news .download-section * {
4552 margin: 0;
4553 padding: 0;
4554 }
4555
4556 .ptb-news__read-news .download-news-text *,
4557 .ptb-news__read-news .download-news-photos * {
4558 pointer-events: none;
4559 }
4560
4561
4562 .ptb-news__read-news .download-section {
4563 margin: 0;
4564 padding: var(--space-giant, 80px) 0;
4565 display: flex;
4566 flex-direction: column;
4567 gap: var(--space-xl, 40px);
4568 }
4569
4570 .ptb-news__read-news .download-section svg {
4571 width: var(--size-sm, 20px);
4572 height: var(--size-sm, 20px);
4573 }
4574
4575 .ptb-news__read-news .download-section svg path {
4576 stroke: var(--color-primary-solid-to-bright-200, var(--color-primary-medium));
4577 }
4578
4579 .ptb-news__read-news .download-section .title-container {
4580 display: flex;
4581 gap: var(--space-sm, 16px);
4582 flex-direction: row;
4583 }
4584
4585 .ptb-news__read-news .download-section .title-container svg {
4586 width: var(--size-lg, 32px);
4587 height: var(--size-lg, 32px);
4588 }
4589
4590 .ptb-news__read-news .download-section .title-container svg path {
4591 stroke: var(--color-neutral-800);
4592 }
4593
4594 .ptb-news__read-news .download-section .title-container .title {
4595 color: var(--color-neutral-800, #373737);
4596 font-family: var(--font-family-base);
4597 font-size: var(--font-size-lg);
4598 font-style: var(--font-style-normal);
4599 font-weight: var(--font-weight-bold);
4600 line-height: var(--line-height-md); /* 31.68px */
4601 }
4602
4603 .ptb-news__read-news .download-section .sections {
4604 display: flex;
4605 flex-direction: column;
4606 padding: var(--space-lg, 32px);
4607 gap: var(--space-md, 24px);
4608 border-radius: var(--border-radius-lg, 16px);
4609 background: var(--color-neutral-300, #F8F8F8);
4610 }
4611
4612 .ptb-news__read-news .download-section .sections .separator {
4613 background: #D7D7D7;
4614 height: var(--size-nano, 2px);
4615 width: 100%;
4616 }
4617
4618 .ptb-news__read-news .download-section .sections .section {
4619 display: flex;
4620 justify-content: space-between;
4621 gap: var(--space-sm, 16px);
4622 align-items: center;
4623 height: var(--size-xxl, 48px);
4624 }
4625
4626 .ptb-news__read-news .download-section .sections .section .title {
4627 color: var(--color-neutral-dark-to-bright-1000, #010101);
4628
4629 font-family: var(--font-family-base);
4630 font-size: var(--font-size-xs);
4631 font-style: var(--font-style-normal);
4632 font-weight: var(--font-weight-bold);
4633 line-height: var(--line-height-md);
4634 }
4635
4636 .ptb-news__read-news .download-section .section.video-section {
4637 display: flex;
4638 flex-direction: column;
4639 height: fit-content;
4640 align-items: flex-start;
4641 }
4642
4643 .ptb-news__read-news .download-section .section.video-section svg path {
4644 stroke: var(--color-primary-medium, #008542);
4645 }
4646
4647 .ptb-news__read-news .download-section .section.video-section .videos-container {
4648 display: flex;
4649 flex-direction: column;
4650 gap: var(--space-sm, 16px);
4651 }
4652
4653 .ptb-news__read-news .download-section .sections .section .button {
4654 display: flex;
4655 gap: var(--space-xxs, 8px);
4656 color: var(--color-primary-solid-to-bright-200, var(--color-primary-medium));
4657 font-family: var(--font-family-base);
4658 font-size: var(--font-size-xxs, 16px);
4659 font-style: var(--font-style-normal, normal);
4660 font-weight: var(--font-weight-bold, 700);
4661 line-height: var(--line-height-lg, 144%); /* 23.04px */
4662 text-decoration-line: var(--text-decoration-underline, underline);
4663 }
4664
4665 .ptb-news__read-news .download-section .sections .photo-section .links {
4666 display: flex;
4667 flex-direction: column;
4668 gap: var(--space-sm, 16px);
4669 }
4670
4671
4672 @media screen and (max-width: ${MAX_MOBILE_WIDTH}px) {
4673 }
4674
4675 </style>
4676</#macro>
4677<#-- ################################################################################################################## -->
4678
4679
4680<#function getFirstCategoryObjectOfVocabulary journalArticle vocabulary >
4681 <#attempt>
4682 <#assign categories = categoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.getClassPK()) />
4683 <#list categories as category>
4684 <#if vocabulary.getVocabularyId() == category.getVocabularyId()>
4685 <#return category>
4686 </#if>
4687 </#list>
4688 <#return "">
4689
4690 <#recover>
4691 <#return "" />
4692 </#attempt>
4693</#function>
4694
4695
4696<#-- ############# Site de Crise - Notícia - Extrair dados de Notícias ################################################ -->
4697<#--
4698Add elements from the sidebar to define your template. Type "${" to use the
4699autocomplete feature.
4700-->
4701<#function extractFeaturedNewsHeadline fieldList xmlArticle>
4702 <#return getFieldValue(fieldList, xmlArticle, "Título de destaque da notícia")>
4703</#function>
4704
4705<#function extractNewsSummary fieldList xmlArticle>
4706 <#return getFieldValue(fieldList, xmlArticle, "Subtítulo")>
4707</#function>
4708
4709<#function extractPublishDate journalArticle>
4710<#--assign lastPublishDate = journalArticle.getModifiedDate()>
4711<#if journalArticle.getLastPublishDate()??>
4712 <#assign lastPublishDate = journalArticle.getLastPublishDate()>
4713<#else>
4714 <#assign lastPublishDate = journalArticle.getModifiedDate()>
4715</#if>
4716<#return lastPublishDate -->
4717 <#return journalArticle.getDisplayDate() />
4718</#function>
4719
4720<#-- Seção da imagem de destaque ---------------------------------------------------------------------->
4721<#function extractNewsImage fieldList xmlArticle fileEntryService>
4722 <#assign
4723 <#-- Grupo da imagem de destaque -->
4724 newsImageGroupList = getNodes("Fieldset71035101", newsJournalArticle.getDocument().getRootElement())
4725 <#-- Url e descrição da imagem de destaque -->
4726 newsImage = {"url": "--", "alt": "--", "mimeType" :"image/jpg", "title": "", "name": "", "fileEntryId": ""}
4727 <#-- Créditos da imagem de destaque -->
4728 newsImageCredits = ""
4729 <#-- Legenda da imagem de destaque -->
4730 newsImageLegend = ""
4731 <#-- Texto do link para download -->
4732 downloadLinkTitle = ""
4733 >
4734
4735 <#list newsImageGroupList as newsImageGroup>
4736 <#assign newsImage = getFileFromXML("Image05319221", newsImageGroup, fileEntryService) />
4737
4738 <#-- Grupo com as informações de crédito e legenda da imagem de destaque -->
4739 <#assign labelGroupList = getNodes("Fieldset43702900", newsImageGroup) />
4740 <#list labelGroupList as labelGroup>
4741 <#-- Investigar do porquê não está funcionando o getFieldValue
4742 <#assign
4743 newsImageCredits = getFieldValue(fieldList, labelGroup, "Crédito da imagem de destaque da notícia")
4744 newsImageLegend = getFieldValue(fieldList, labelGroup, "Legenda da imagem de destaque da notícia")
4745 downloadLinkTitle = getFieldValue(fieldList, labelGroup, "Texto do link para download")
4746 />
4747 -->
4748 <#assign
4749 newsImageCredits = getSingleNodeString("Text47590088", labelGroup)
4750 newsImageLegend = getSingleNodeString("Text03239077", labelGroup)
4751 downloadLinkTitle = getSingleNodeString("Text48804898", labelGroup) />
4752 </#list>
4753 </#list>
4754
4755 <#return {"newsImage": newsImage,
4756 "credits": newsImageCredits,
4757 "legend": newsImageLegend,
4758 "linkTitle" : downloadLinkTitle
4759 }/>
4760</#function>
4761
4762<#function featureNewsVideo xmlArticle fileEntryService>
4763<#-- Seção do video de destaque ----------------------------------------------------------------------->
4764 <#assign
4765 youtubeId = ""
4766 internalVideoUrl = ""
4767 featureNewsVideoGroup = getNodes("Fieldset09746751", xmlArticle)
4768 >
4769 <#list featureNewsVideoGroup as newsImageFieldSet>
4770 <#assign
4771 youtubeId = getFieldValue(fieldList,featureNewsVideoGroup, "ID do vídeo do YouTube do vídeo de destaque")
4772 internalVideoUrl = getFileFromXML("DocumentLibrary80545771", featureNewsVideoGroup, fileEntryService)
4773 >
4774 </#list>
4775
4776 <#return {"youtube": youtubeId, "internalVideoUrl" : internalVideoUrl}>
4777</#function>
4778
4779<#-- ################################################################################################################## -->
4780
4781<#-- Extrair imagem de destaque -->
4782
4783<#assign newsImageData = {} />
4784<#if fieldList?? && newsJournalArticle?? && fileEntryService?? && newsJournalArticle.getDocument()?has_content>
4785 <#assign newsImageData = extractNewsImage(fieldList, newsJournalArticle.getDocument(), fileEntryService)!{} />
4786</#if>
4787
4788
4789
4790<#if newsImageData.newsImage?? && newsImageData.newsImage.url?has_content && newsImageData.newsImage.url != "--">
4791 <#assign fullImageUrl = "${themeDisplay.getPortalURL()}${newsImageData.newsImage.url}">
4792
4793 <#assign destaqueImageObject = {
4794 "@context": "https://schema.org",
4795 "@type": "ImageObject",
4796 "url": fullImageUrl,
4797 "contentUrl": fullImageUrl,
4798 "name": (newsImageData.newsImage.title?has_content)?then(newsImageData.newsImage.title, entry.getTitle(locale)),
4799 "caption": (newsImageData.newsImage.alt?has_content)?then(newsImageData.newsImage.alt, ""),
4800 "description": (newsImageData.legend?has_content)?then(newsImageData.legend, ""),
4801 "encodingFormat": newsImageData.newsImage.mimeType,
4802 "author": {
4803 "@type": "Organization",
4804 "name": "Petrobras"
4805 },
4806 "license": "https://creativecommons.org/licenses/by/4.0/"
4807 } />
4808
4809 <@liferay_util["html-top"]>
4810 <script type="application/ld+json">
4811 ${jsonFactoryUtil.looseSerialize(destaqueImageObject)}
4812 </script>
4813 </@>
4814</#if>
4815<#-- ################################################################################################################## -->
4816
4817<#-- MOVIES -->
4818
4819<#function normalizeRichText richText>
4820 <#return richText
4821 ?replace('&[a-z]+;', ' ', 'r')
4822 ?replace('<[^>]+>', '', 'r')
4823 ?replace('[\n\r]+', ' ', 'r')
4824 ?replace('[“”‘’]', '"', 'r')
4825 ?replace('\\\\', '\\\\', 'r')
4826 ?trim
4827 ?json_string
4828 >
4829</#function>
4830
4831<#function getAllMovies contentFields>
4832 <#assign allMovieSections = []>
4833
4834 <#list contentFields as field>
4835 <#if field.label == "DADOS ESTRUTURADOS - MOVIE">
4836
4837 <#assign movieTitleList = "">
4838 <#assign moviesStructureList = []>
4839
4840 <#list field.nestedContentFields as innerField>
4841
4842 <#if innerField.label == "Título da lista de filmes">
4843 <#assign movieTitleList = innerField.contentFieldValue.data! "">
4844 </#if>
4845
4846 <#if innerField.nestedContentFields?has_content>
4847 <#list field.nestedContentFields as movieItem>
4848 <#assign linkTitle = "">
4849 <#assign linkUrl = "">
4850 <#assign description = "">
4851 <#assign imageUrl = "">
4852
4853 <#list movieItem.nestedContentFields as movieField>
4854 <#if movieField.label == "Nome do Filme">
4855 <#assign linkTitle = movieField.contentFieldValue.data! "">
4856 </#if>
4857 <#if movieField.label == "Link do Filme">
4858 <#assign linkUrl = movieField.contentFieldValue.data! "">
4859 </#if>
4860 <#if movieField.label == "Descrição do Filme">
4861 <#assign description = movieField.contentFieldValue.data! "">
4862 </#if>
4863 <#if movieField.label == "Imagem do Filme"
4864 && movieField.contentFieldValue??
4865 && movieField.contentFieldValue.image??
4866 && movieField.contentFieldValue.image.contentUrl??>
4867 <#assign imageUrl = movieField.contentFieldValue.image.contentUrl>
4868 </#if>
4869 </#list>
4870
4871 <#assign hasContent = (linkTitle?has_content) || (linkUrl?has_content) || (description?has_content) || (imageUrl?has_content)>
4872
4873 <#assign alreadyAdded = false>
4874 <#list moviesStructureList as f>
4875 <#if f.linkTitle == linkTitle && f.linkUrl == linkUrl>
4876 <#assign alreadyAdded = true>
4877 <#break>
4878 </#if>
4879 </#list>
4880
4881 <#if hasContent && !alreadyAdded>
4882 <#assign moviesStructureList = moviesStructureList + [{
4883 "linkTitle": linkTitle,
4884 "linkUrl": linkUrl,
4885 "description": description,
4886 "image": imageUrl
4887 }]>
4888 </#if>
4889
4890 </#list>
4891 </#if>
4892
4893 </#list>
4894
4895 <#if moviesStructureList?has_content>
4896 <#assign sectionData = {"title": movieTitleList, "movies": moviesStructureList}>
4897 <#assign allMovieSections = allMovieSections + [sectionData]>
4898 </#if>
4899
4900 </#if>
4901 </#list>
4902
4903 <#return allMovieSections>
4904</#function>
4905
4906 <#-- Só processa se newsJournalArticle for um objeto (não string) -->
4907<#if newsJournalArticle?? && !newsJournalArticle?is_string>
4908
4909<#assign structuredContentId = newsJournalArticle.getResourcePrimKey() />
4910<#assign newsStructuredContent = restClient.get("/headless-delivery/v1.0/structured-contents/${structuredContentId}") />
4911
4912<#assign insertMovieSchemaMarkup = false>
4913<#list newsStructuredContent.contentFields as field>
4914 <#if field.label == "Marque a opção abaixo para inserir dados estruturados do tipo movie na notícia">
4915 <#if field.contentFieldValue?? && field.contentFieldValue.data??>
4916 <#assign insertMovieSchemaMarkup = (field.contentFieldValue.data == "true")>
4917 </#if>
4918 </#if>
4919</#list>
4920 </#if>
4921
4922
4923
4924 <#if (insertMovieSchemaMarkup!false) && newsStructuredContent?? && newsStructuredContent.contentFields??>
4925
4926 <#assign allMovieSections = getAllMovies(newsStructuredContent.contentFields)?default([]) />
4927
4928 <#if allMovieSections?size gt 0>
4929 <@liferay_util["html-top"]>
4930 <#list allMovieSections as section>
4931 <script type="application/ld+json">
4932 {
4933 "@context": "https://schema.org",
4934 "@type": "ItemList",
4935 "name": "${normalizeRichText(section.title)}",
4936 "numberOfItems": ${section.movies?size},
4937 "itemListElement": [
4938 <#list section.movies as movie>
4939 {
4940 "@type": "ListItem",
4941 "id": "movie-${movie?index}",
4942 "position": ${movie?index + 1},
4943 "item": {
4944 "@type": "Movie",
4945 "name": "${normalizeRichText(movie.linkTitle)}",
4946 "url": "${movie.linkUrl?json_string}",
4947 "description": "${normalizeRichText(movie.description)}"
4948 <#if movie.image?has_content>,
4949 "image": "${themeDisplay.getPortalURL()}${movie.image}"
4950 </#if>
4951 }
4952 }<#if movie?has_next>,</#if>
4953 </#list>
4954 ]
4955 }
4956 </script>
4957 </#list>
4958 </@>
4959 </#if>
4960</#if>
4961
4962<#-- ######################################################################################################### -->
Você pode se interessar por
Um inesperado erro ocorreu.
Um inesperado erro ocorreu.
Faça uma busca:
Sugestões de busca
Mais pesquisados
Preço dos combustíveis
Pré-Sal
Time Petrobras
Um inesperado erro ocorreu.
Um inesperado erro ocorreu.

