Active filters:
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@1557ddb"; see cause exception in the Java stack trace.
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign date_DateObj = dateUtil.parse... [in template "65777792077794#20120#250010" at line 102, column 59]
----
1<#-- instanceId -->
2<#assign instanceId = themeDisplay.getPortletDisplay().getId()?keep_after("INSTANCE_") />
3
4<#-- Servizio per ricavare i ddm field di una struttura -->
5<#assign ddmFieldLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMFieldLocalService")/>
6<#-- Servizio utile per ricavare i documenti della DM -->
7<#assign dlFileEntryLocalService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryLocalService') />
8<#-- Servizio per ricavare dati del journal article -->
9<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
10<#-- Servizio per ricavare l'oggetto layout -->
11<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") />
12<#-- Servizio per ricavare le categorie e relative properties -->
13<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
14
15<#-- Inclusione template con macros e relativi servizi -->
16<#include "${templatesPath}/CDM_RICERCA_COMMON_MACROS" />
17
18<#-- Categorie di tipo -->
19<#assign categorie = [] />
20<#assign assetCategories = ["APPROFONDIMENTO", "PROGETTO", "DATASET", "PAGINA"] />
21
22<#-- html -->
23<div class="risultati-ricerca risultati-ricerca-servizi">
24 <div class="c-mb-4 c-mt-4 search-total-label">
25 <#if searchContainer.getTotal() == 1>
26 ${languageUtil.format(locale, "x-result-for-x", ["<strong class='number'>" +searchContainer.getTotal() + "</strong>" , htmlUtil.escape(searchResultsPortletDisplayContext.getKeywords()) ], false)}
27 <#else>
28 ${languageUtil.format(locale, "x-results-for-x", ["<strong class='number'>" +searchContainer.getTotal() + "</strong>", htmlUtil.escape(searchResultsPortletDisplayContext.getKeywords()) ], false)}
29 </#if>
30 </div>
31 <#if entries?size gt 0>
32 <div class="row">
33
34 <#-- inizio a ciclare sugli elementi e faccio controlli che l'entry sia un articolo -->
35 <#list entries as curEntry>
36 <#if curEntry.getClassName() == "com.liferay.journal.model.JournalArticle">
37 <#assign journalArticle = journalArticleLocalService.getLatestArticle(curEntry.getClassPK(), 0) />
38
39 <#if journalArticle?has_content>
40 <#-- valorizzo le variabili che uso in seguito -->
41 <#assign title = "", abstract = "", viewUrl = "#", date = "", isProgetto = false, fonte = "" />
42
43 <#assign ddmStructureKey = journalArticle.getDDMStructureKey() />
44
45 <#-- primary key journal article -->
46 <#assign journalArticlePrimKey = journalArticle.resourcePrimKey/>
47
48 <#-- categorie -->
49 <#assign categorie = getListCategoryByArticlePrimKey( journalArticlePrimKey ) />
50
51 <#-- title journal article -->
52 <#assign journalArticleTitle = journalArticle.getTitle(locale)/>
53
54 <#-- ricavo dalla struttura i dati che mi servono per creare le card -->
55 <#-- ARTICOLO -->
56 <#if ddmStructureKey == "39724">
57 <#-- struttura: titolo -->
58 <#if getFieldValue(journalArticle, 'Titolo')??>
59 <#assign title = getFieldValue(journalArticle, 'Titolo') />
60 </#if>
61
62 <#-- struttura: descrizione -->
63 <#if getFieldValue(journalArticle, 'Descrizione')??>
64 <#assign abstract = getFieldValue(journalArticle, 'Descrizione') />
65 </#if>
66
67
68 <#-- struttura: data -->
69 <#assign date = curEntry.getModifiedDateString() />
70 <#if validator.isNotNull(date)>
71 <#assign date_DateObj = dateUtil.parseDate("dd MMM yy, HH:mm", date, locale) />
72 <#if "it_IT" == locale>
73 <#assign date = dateUtil.getDate(date_DateObj, "dd/MM/yyyy", locale) />
74 <#else>
75 <#assign date = dateUtil.getDate(date_DateObj, "yyyy/MM/dd", locale) />
76 </#if>
77 </#if>
78 <#assign viewUrl = curEntry.getViewURL()?keep_before('?p_l_back_url') />
79 </#if>
80
81 <#-- DATASET -->
82 <#if ddmStructureKey == "45631">
83 <#-- struttura: titolo -->
84 <#if getFieldValue(journalArticle, 'titoloField')??>
85 <#assign title = getFieldValue(journalArticle, 'titoloField') />
86 </#if>
87
88 <#-- struttura: descrizione -->
89 <#if getFieldValue(journalArticle, 'descrizioneField')??>
90 <#assign abstract = getFieldValue(journalArticle, 'descrizioneField') />
91 </#if>
92
93 <#-- struttura: data -->
94 <#if getFieldValue(journalArticle, 'DataCKANField')?? && validator.isNotNull(getFieldValue(journalArticle, 'DataCKANField')) && getFieldValue(journalArticle, 'DataCKANField')!="">
95 <#assign date = getFieldValue(journalArticle, 'DataCKANField') />
96 <#assign date_DateObj = dateUtil.parseDate("yyyy-MM-dd'T'HH:mm:ss.SSSZ", date, locale) />
97 <#elseif getFieldValue(journalArticle, 'dataField')?? && validator.isNotNull(getFieldValue(journalArticle, 'dataField')) && getFieldValue(journalArticle, 'dataField')!="">
98 <#assign date = getFieldValue(journalArticle, 'dataField') />
99 <#assign date_DateObj = dateUtil.parseDate("yyyy-MM-dd", date, locale) />
100 <#else>
101 <#assign date = curEntry.getModifiedDateString() />
102 <#assign date_DateObj = dateUtil.parseDate("dd MMM yy, HH:mm", date, locale) />
103 </#if>
104 <#if validator.isNotNull(date)>
105 <#if "it_IT" == locale>
106 <#assign date = dateUtil.getDate(date_DateObj, "dd/MM/yyyy", locale) />
107 <#else>
108 <#assign date = dateUtil.getDate(date_DateObj, "yyyy/MM/dd", locale) />
109 </#if>
110 </#if>
111
112
113 <#-- View URL-->
114 <#if getFieldValue(journalArticle, 'linkField')??>
115 <#assign viewUrl = getFieldValue(journalArticle, 'linkField') />
116 </#if>
117 </#if>
118
119
120 <#-- html -->
121 <div class="col-lg-6">
122 <div class="card-wrapper pb-4 h-100">
123 <div class="card card-servizio h-100 no-after">
124 <div class="card-body p-4">
125
126 <#-- ciclo sulle categorie e visualizzo solo quelle padri -->
127 <div class="category-top">
128 <#if ddmStructureKey == "39724">
129 <#if categorie?? && (categorie?size > 0)>
130 <#list categorie as curCat>
131 <#if validator.isNotNull(curCat) && curCat != "">
132 <#attempt>
133 <#if curCat.getTitle(locale)?upper_case == "PROGETTO">
134 <#assign isProgetto = true />
135 </#if>
136 <#recover>
137 <#-- in caso di problemi non visualizzo nulla -->
138 </#attempt>
139 </#if>
140 </#list>
141 </#if>
142 <#if isProgetto>
143 <span class="badge-cat-article" style="font-weight:600; color:hsl(350, 85.1851851852%, 35.1%);display: flex;gap: 8px;">
144 <img width="25" src="/documents/d/portale-del-dato/icona-progetto-speciale">PROGETTO
145 </span>
146 <#else>
147 <span class="badge-cat-article" style="font-weight:600; color:hsl(350, 85.1851851852%, 35.1%);display: flex;gap: 8px;">
148 <img width="25" src="/documents/d/portale-del-dato/icona-articolo">
149 APPROFONDIMENTO
150 </span>
151 </#if>
152 </#if>
153 <#if ddmStructureKey == "45631">
154 <span class="badge-cat" style="font-weight:600; color:hsl(350, 85.1851851852%, 35.1%);display: flex;gap: 8px;">
155 <img width="25" src="/documents/d/portale-del-dato/icona-dataset">DATASET
156 </span>
157 </#if>
158 <#if !isProgetto><span class="date-article">${date}</span></#if>
159 </div>
160
161 <#-- titolo -->
162 <#if validator.isNotNull(title)>
163 <h3 class="card-title">
164 ${title}
165 </h3>
166 </#if>
167
168 <#-- abstract -->
169 <#if validator.isNotNull(abstract)>
170 <div class="card-text card-text-article font-sans-serif mb-6">${abstract}</div>
171 </#if>
172 <div class="pills-container-article">
173 <#if categorie?? && (categorie?size > 0)>
174 <#list categorie as curCat>
175 <#if validator.isNotNull(curCat) && curCat != "" && curCat.parentCategoryId == 0 && !assetCategories?seq_contains(curCat.getTitle(locale)?upper_case)>
176 <span class="badge-cat-article">${curCat.getTitle(locale)}</span>
177 </#if>
178 </#list>
179 </#if>
180 </div>
181 <div class="fonte-article">
182 <#if ddmStructureKey == "39724">
183 <#if getFieldValue(journalArticle, 'AutoreRef')??>
184 <#assign fonte = getFieldValue(journalArticle, 'AutoreRef') />
185 </#if>
186 </#if>
187 <#if ddmStructureKey == "45631">
188 <#if getFieldValue(journalArticle, 'fonteField')??>
189 <#assign fonte = getFieldValue(journalArticle, 'fonteField') />
190 </#if>
191 </#if>
192 <#if fonte?? && validator.isNotNull(fonte) && fonte!="">
193 <#if fonte?contains("Comune")>
194 Da: Open Data
195 <#else>
196 Da: ${fonte}
197 </#if>
198 <#else>
199 Da: Redazione
200 </#if>
201 </div>
202 </div>
203
204 <div class="card-footer p-4 pt-0 bg-white border-0">
205 <div class="d-grid gap-2">
206 <#if ddmStructureKey == "39724">
207 <a href="${viewUrl}" class="btn btn-primary btn-block col-lg-12" data-senna-off="true">Esplora</a>
208 </#if>
209 <#if ddmStructureKey == "45631">
210 <a href="${viewUrl}" target="_blank" class="btn btn-primary btn-block col-lg-12 linkBtn">Link
211 <svg width="20px" height="20px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" stroke="#ffffff">
212 <path d="M10 4H6C4.89543 4 4 4.89543 4 6V18C4 19.1046 4.89543 20 6 20H18C19.1046 20 20 19.1046 20 18V14M11 13L20 4M20 4V9M20 4H15" stroke="#ffffff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
213 </svg>
214 </a>
215 <#if getFieldValue(journalArticle, 'linkIncorporaField')??>
216 <#assign urlIncorpora = getFieldValue(journalArticle, 'linkIncorporaField') />
217 <#if validator.isNotNull(urlIncorpora) && urlIncorpora != "">
218 <a href="/web/portale-del-dato/anteprima?" class="btn btn-outline-primary btn-block col-lg-12 linkBtn" onclick="localStorage.setItem('anterpimaUrl', '${urlIncorpora}');" data-senna-off="true">Anteprima</a>
219 </#if>
220 </#if>
221 <#if getFieldValue(journalArticle, 'linkMappaField')??>
222 <#assign urlMappa = getFieldValue(journalArticle, 'linkMappaField') />
223 <#if validator.isNotNull(urlMappa) && urlMappa != "">
224 <a href="/web/portale-del-dato/anteprima?" class="btn btn-outline-primary btn-block col-lg-12 linkBtn" onclick="localStorage.setItem('anterpimaUrl', '${urlMappa}');" data-senna-off="true">Mappa</a>
225 </#if>
226 </#if>
227 </#if>
228 </div>
229 </div>
230
231 </div>
232 </div>
233 </div>
234
235 </#if>
236 </#if>
237 <#if curEntry.getClassName() == "com.liferay.portal.kernel.model.Layout">
238 <#assign layoutEntry = layoutLocalService.getLayout(curEntry.getClassPK()) />
239 <#assign title = layoutEntry.getHTMLTitle(locale) />
240 <#assign description = layoutEntry.getDescription(locale) />
241 <#assign viewUrl = layoutEntry.getFriendlyURL(locale) />
242 <#-- categorie -->
243 <#assign categorie = assetCategoryLocalService.getCategories("com.liferay.portal.kernel.model.Layout", curEntry.getClassPK()) />
244 <div class="col-lg-6">
245 <div class="card-wrapper pb-4 h-100">
246 <div class="card card-servizio h-100 no-after">
247 <div class="card-body p-4">
248 <#-- ciclo sulle categorie e visualizzo solo quelle padri -->
249 <div class="category-top">
250 <span class="badge-cat-article" style="font-weight:600; color:hsl(350, 85.1851851852%, 35.1%);display: flex;gap: 8px;">
251 <img width="25" src="/documents/d/portale-del-dato/icona-pagina-standard">Pagina
252 </span>
253 </div>
254 <#-- titolo -->
255 <#if validator.isNotNull(title)>
256 <h3 class="card-title">${title}</h3>
257 </#if>
258
259 <#-- description -->
260 <#if validator.isNotNull(description)>
261 <div class="card-text card-text-article font-sans-serif mb-6">${description}</div>
262 </#if>
263 <div class="pills-container-article">
264 <#if categorie?? && (categorie?size > 0)>
265 <#list categorie as curCat>
266 <#if validator.isNotNull(curCat) && curCat !="" && curCat.parentCategoryId==0 && !assetCategories?seq_contains(curCat.getTitle(locale)?upper_case)>
267 <span class="badge-cat-article">${curCat.getTitle(locale)}</span>
268 </#if>
269 </#list>
270 </#if>
271 </div>
272 <div class="fonte-article">Da: Redazione</div>
273 </div>
274 <div class="card-footer p-4 pt-0 bg-white border-0">
275 <div class="d-grid gap-2">
276 <a href="/web/portale-del-dato${viewUrl}" class="btn btn-primary btn-block col-lg-12" data-senna-off="true">Esplora</a>
277 </div>
278 </div>
279 </div>
280 </div>
281</div>
282 </#if>
283 </#list>
284
285 </div>
286 </#if>
287</div>
288<style>
289.number {
290 color: #A50D26;
291}
292.search-total-label {
293 padding-left: 12px;
294 position: absolute;
295 z-index: 2;
296 margin-top:-58px;
297 font-size: 1rem;
298}
299.pagination {
300 justify-content:center;
301}
302.pagination-items-per-page {
303 display:flex;
304 flex-direction:row-reverse;
305}
306.pagination-results{
307 position: absolute;
308 top: -32px;
309 padding-left: 12px;
310 display: flex;
311 font-size: 16px;
312 flex-direction: row-reverse;
313}
314@media (max-width: 600px) {
315 .search-total-label{
316 margin-top:-80px !important;
317 }
318}
319.category-top {
320 display: flex !important;
321 justify-content: space-between;
322}
323.card-text-article, .card-text-article p {
324 font-size: 14px !important;
325}
326.pills-container-article {
327 display: flex;
328 flex-wrap: wrap;
329 gap: 0.4rem;
330 margin-top: 0.5rem;
331}
332.pills-container-article .badge-cat-article {
333 background-color: white;
334 color: hsl(350, 85.1851851852%, 35.1%);
335 border: 1px solid hsl(350, 85.1851851852%, 35.1%);
336 padding: 0rem 0.65rem;
337 font-size: 0.75rem;
338 text-transform:uppercase;
339 border-radius: 9999px;
340 font-weight: 600;
341 white-space: nowrap;
342 max-width: 100%;
343 overflow: hidden;
344 text-overflow: ellipsis;
345}
346.pills-container-article .badge-cat-article:hover {
347 background-color: hsl(350, 85.1851851852%, 35.1%); /* colore più scuro al passaggio */
348 color: #fff;
349}
350.fonte-article {
351 font-style: italic;
352 font-size: 14px;
353 text-align: start;
354 margin-top: 0.75rem;
355}
356</style>