Noticia Aberta
An error occurred while processing the template.
Java method "com.liferay.portal.kernel.util.DateUtil_IW.parseDate(String, String, Locale)" threw an exception when invoked on com.liferay.portal.kernel.util.DateUtil_IW object "com.liferay.portal.kernel.util.DateUtil_IW@3a1d31c0"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign displayDateObject = dateUtil... [in template "57149678738875#20119#36588" at line 17, column 1] ----
1<#function getDateString date>
2 <#assign pattern = "dd/MM/yyyy HH:mm:ss" />
3 <#assign timeZone = staticUtil["java.util.TimeZone"].getTimeZone("GMT-3") />
4 <#return dateUtil.getDate(date, "dd/MM/yyyy ' às ' HH'h'mm", locale, timeZone) />
5</#function>
6
7<#-- SERVIÇOS -->
8<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
9<#assign AssetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
10
11<#-- VARIÁVEIS -->
12<#assign groupId = themeDisplay.getCompanyGroupId() />
13<#assign articleId = .vars['reserved-article-id'].data />
14<#assign currentArticle = JournalArticleLocalService.getArticle(articleGroupId, articleId) />
15<#assign classPK = currentArticle.getResourcePrimKey() />
16<#assign categories = AssetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", classPK) />
17<#assign displayDateObject = dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", .vars['reserved-article-create-date'].data, locale) />
18<#assign modifiedDateObject = dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", .vars['reserved-article-modified-date'].data, locale) />
19<#assign displayDate = getDateString(displayDateObject) />
20<#assign modifiedDate = getDateString(modifiedDateObject) />
21<#assign images = news_images.getSiblings()?filter(imagem -> (imagem.getData())?? && imagem.getData() != "") />
22<#assign viewFullURL = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() />
23
24<#-- Verifique se a categoria "Arquivados" está presente -->
25<#assign hasArquivados = false>
26<#list categories as category>
27 <#if category.getName()?lower_case == "arquivados">
28 <#assign hasArquivados = true />
29 </#if>
30</#list>
31
32<div class="noticia-gdf row">
33 <#assign fromCategoryPage = .vars['fromCategoryPage']?default('false') == 'true' />
34
35 <#if hasArquivados>
36 <span data-category-url="/web/guest/category/arquivados" id="journalCategory" data-category-name="Arquivados"></span>
37 <#else>
38 <#list categories as category>
39 <#assign vocabulary = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService").getVocabulary(category.getVocabularyId()) />
40 <#assign categoryUrlMapping = {
41 "noticia": "noticias",
42 "destaque": "modulo-carrossel-de-destaques-principais",
43 "Serviços para o beneficiário": "servicos-para-o-beneficiario-2",
44 "Perfil dos Diretores": "/o-iprev/perfil-dos-diretores",
45 "MODULO-15-BOTOES": "servicos-mais-procurados"
46 } />
47 <#assign urlPrefix = "/web/guest/category/" />
48 <#assign categoryUrl = urlPrefix + (categoryUrlMapping[category.getName()?lower_case]!category.getName()?lower_case?replace(' ', '-')) />
49
50 <span data-category-url="${categoryUrl}" id="journalCategory" data-category-id="${category.getCategoryId()}" data-category-name="${category.getName()}"></span>
51 </#list>
52 </#if>
53
54 <div class="container">
55 <div class="col-md-9 col-md-offset-1">
56 <span class="time-text">${displayDate} - Atualizado em ${modifiedDate}</span>
57 <h3>${.vars['reserved-article-title'].data}</h3>
58
59 <#if !getterUtil.getBoolean(networks_share.getData())>
60 <p class="compartilhar">COMPARTILHAR</p>
61 <@share />
62 </#if>
63
64 <#if call.getData()?has_content>
65 <p class="sutia chamada-text"><em>${call.getData()}</em></p>
66 </#if>
67
68 <#if author.getData()?has_content>
69 <p class="autor-text">${author.getData()}</p>
70 </#if>
71
72 <#if images?has_content>
73 <#if images?size == 1>
74 <#list images as cur_news_image>
75 <#if cur_news_image.getData()?? && cur_news_image.getData() != "">
76 <img class="d-block w-100" src="${cur_news_image.getData()}" />
77 <#if cur_news_image.attributes.alt??>
78 <p class="text-center mt-2 mb-5"><em>${cur_news_image.attributes.alt}</em></p>
79 </#if>
80 </#if>
81 </#list>
82 <#else>
83 <div id="carousel-${randomNamespace}" class="carousel slide mb-4" data-ride="carousel" data-interval="false">
84 <div class="carousel-inner">
85 <#list images as cur_news_image>
86 <div class="carousel-item ${cur_news_image?is_first?then('active', '')}">
87 <img class="d-block w-100" src="${cur_news_image.getData()}" />
88 <#if cur_news_image.attributes.alt??>
89 <p class="text-center mt-2 mb-5"><em>${cur_news_image.attributes.alt}</em></p>
90 </#if>
91 </div>
92 </#list>
93 </div>
94 <a class="carousel-control-prev" href="#carousel-${randomNamespace}" role="button" data-slide="prev">
95 <span class="carousel-control-prev-icon" aria-hidden="true"></span>
96 <span class="sr-only">Previous</span>
97 </a>
98 <a class="carousel-control-next" href="#carousel-${randomNamespace}" role="button" data-slide="next">
99 <span class="carousel-control-next-icon" aria-hidden="true"></span>
100 <span class="sr-only">Next</span>
101 </a>
102 </div>
103 </#if>
104 </#if>
105
106 <div class="materia">${content.getData()}</div>
107
108 <#if news_documents.getSiblings()?has_content && news_documents.getSiblings()?first.getData() != "">
109 <h4 class="mt-4">Anexos</h4>
110 <ul class="list-unstyled">
111 <#list news_documents.getSiblings() as cur_news_document>
112 <#assign title = cur_news_document.getData()?keep_before_last("?")?split('/')[4] />
113 <a href="${cur_news_document.getData()?keep_before_last('/')}" target="_blank" class="d-block news-document">
114 ${title}
115 </a>
116 </#list>
117 </ul>
118 <script>
119 document.querySelectorAll(".news-document").forEach(function(element) {
120 element.textContent = decodeURI(element.textContent);
121 });
122 </script>
123 </#if>
124 </div>
125 </div>
126</div>
127
128<#-- MACRO: COMPARTILHAR -->
129<#macro share>
130 <div class="share">
131 <a class="facebook" href="https://www.facebook.com/sharer.php?u=${viewFullURL}" target="_blank">Facebook</a>
132 <a class="twitter" href="http://twitter.com/intent/tweet?text=${.vars['reserved-article-title'].data}%0AVeja%20mais%20em:&url=${viewFullURL}" target="_blank">Twitter</a>
133 </div>
134</#macro>
135
136<script>
137 Liferay.on('allPortletsReady', function() {
138 function getPreviousPageUrl() {
139 return document.referrer || '';
140 }
141
142 function checkPreviousPage() {
143 var previousPageUrl = getPreviousPageUrl();
144 var fromCategoryPage = previousPageUrl.includes('/category/') ? 'true' : 'false';
145
146 // Defina a variável de contexto para o FreeMarker
147 var meta = document.createElement('meta');
148 meta.name = 'fromCategoryPage';
149 meta.content = fromCategoryPage;
150 document.head.appendChild(meta);
151 }
152
153 checkPreviousPage();
154
155 // Atualiza o breadcrumb se necessário
156 var breadcrumbList = document.querySelector(".breadcrumb");
157 if (breadcrumbList) {
158 // Check if "Arquivados" exists in breadcrumb
159 var hasArquivadosBreadcrumb = false;
160 var breadcrumbItems = breadcrumbList.querySelectorAll(".breadcrumb-item");
161 for (var i = 0; i < breadcrumbItems.length; i++) {
162 if (breadcrumbItems[i].textContent.includes("Arquivados")) {
163 hasArquivadosBreadcrumb = true;
164 break;
165 }
166 }
167
168 // Only proceed if "Arquivados" is not already in breadcrumb
169 if (!hasArquivadosBreadcrumb) {
170 var categorySpan = document.getElementById("journalCategory");
171 if (categorySpan) {
172 var categoryName = categorySpan.getAttribute("data-category-name");
173 var categoryUrl = categorySpan.getAttribute("data-category-url");
174
175 var newBreadcrumbItem = document.createElement("li");
176 newBreadcrumbItem.className = "breadcrumb-item";
177 newBreadcrumbItem.style.fontSize = "13px";
178
179 if (categoryUrl) {
180 var categoryLink = document.createElement("a");
181 categoryLink.href = categoryUrl;
182 categoryLink.textContent = categoryName;
183 categoryLink.style.paddingLeft = "8px";
184 categoryLink.className = "breadcrumb-link 1";
185 newBreadcrumbItem.appendChild(categoryLink);
186 } else {
187 newBreadcrumbItem.textContent = categoryName;
188 }
189
190 breadcrumbList.appendChild(newBreadcrumbItem);
191 }
192 }
193 }
194
195 // Atualiza o iframe existente
196 var oldIframe = document.querySelector('iframe');
197 if (oldIframe) {
198 var parentElement = oldIframe.parentNode;
199 var newIframe = oldIframe.cloneNode(true);
200
201 newIframe.setAttribute('sandbox', 'allow-scripts allow-same-origin');
202 newIframe.setAttribute('src', oldIframe.getAttribute('src'));
203 newIframe.setAttribute('allowfullscreen', oldIframe.hasAttribute('allowfullscreen'));
204 newIframe.setAttribute('frameborder', oldIframe.getAttribute('frameborder'));
205 newIframe.setAttribute('height', oldIframe.getAttribute('height'));
206 newIframe.setAttribute('width', oldIframe.getAttribute('width'));
207 newIframe.setAttribute('title', oldIframe.getAttribute('title'));
208
209 parentElement.replaceChild(newIframe, oldIframe);
210 }
211 });
212 document.addEventListener('DOMContentLoaded', () => {
213 const videoIframes = document.querySelectorAll('iframe[data-video-liferay]');
214
215 videoIframes.forEach(iframe => {
216 let embedId = iframe.closest('.embed-responsive').getAttribute('data-embed-id');
217
218 if (embedId) {
219 embedId = embedId.split('.mp4')[0] + '.mp4';
220 }
221
222 if (embedId) {
223 const videoElement = document.createElement('video');
224
225 videoElement.controls = true;
226 videoElement.preload = 'metadata';
227 videoElement.width = iframe.width || 560;
228 videoElement.height = iframe.height || 315;
229 videoElement.className = 'wp-video-shortcode';
230
231 const sourceElement = document.createElement('source');
232 sourceElement.src = embedId;
233 sourceElement.type = 'video/mp4';
234
235 videoElement.appendChild(sourceElement);
236
237 // Substitui o iframe pelo vídeo
238 iframe.parentNode.replaceChild(videoElement, iframe);
239 }
240 });
241});
242</script>