Si è verificato un errore nell'elaborarazione del modello.
Java method "com.sun.proxy.$Proxy83.getLayout(long, boolean, long)" threw an exception when invoked on com.sun.proxy.$Proxy83 object "com.liferay.layout.internal.service.LayoutLocalServiceWrapper@62495844"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: paginaPadre = LayoutLocalService.getL... [in template "20095#20121#35030" at line 18, column 5] ----
1<#assign
2 FriendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService")
3 ClassNameService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameService")
4 LayoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")
5 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
6 journalArticleId = .vars['reserved-article-id'].data
7 journalArticleResourceLocalServiceUtil = staticUtil["com.liferay.journal.service.JournalArticleResourceLocalServiceUtil"]
8 assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]
9 articleResourcePK = journalArticleResourceLocalServiceUtil.getArticleResourcePrimKey(groupId, journalArticleId)
10 categorie_notizia = assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle",articleResourcePK)
11 AssetVocabularyLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetVocabularyLocalServiceUtil"]
12/>
13
14<#setting locale = themeDisplay.getLocale() />
15
16<#-- gestione dei breadcrumbs -->
17<#assign
18 paginaPadre = LayoutLocalService.getLayout(groupId, PaginaPadre.getData()?eval.privateLayout, PaginaPadre.getData()?eval.layoutId?number)
19 ancestors = paginaPadre.getAncestors()
20 sorted_ancestors = []
21/>
22
23<#list ancestors as parente>
24 <#assign
25 sorted_ancestors +=
26 [{
27 "name": parente.getName(themeDisplay.getLanguageId()),
28 "ancestors": parente.getAncestors()?size,
29 "data": parente
30 }]
31 />
32</#list>
33
34<div class="container finmatica-breadcrumb-container mb-4">
35 <div class="row justify-content-center">
36 <div class="col-12 col-lg-10">
37 <div class="cmp-breadcrumbs" role="navigation">
38 <nav class="breadcrumb-container" aria-label="breadcrumb">
39 <ol class="breadcrumb p-0" data-element="breadcrumb">
40 <li class="breadcrumb-item"><a
41 href="${themeDisplay.getThemeSetting('Home URL')}">
42 <span class="breadcrumb-text-truncate">Home</span>
43 </a>
44 <span class="separator">/</span>
45 </li>
46 <#list sorted_ancestors?sort_by("ancestors") as ancestor>
47 <li class="breadcrumb-item"><a
48 href="/portal${ancestor.data.getFriendlyURL()}">
49 <span class="breadcrumb-text-truncate">
50 ${ancestor.name}
51 </span>
52 </a>
53 <span class="separator">/</span>
54 </li>
55 </#list>
56 <li class="breadcrumb-item"><a
57 href="/portal${paginaPadre.getFriendlyURL()}">
58 <span class="breadcrumb-text-truncate">
59 ${paginaPadre.getName(themeDisplay.getLanguageId())}
60 </span>
61 </a>
62 <span class="separator">/</span>
63 </li>
64 <li class="breadcrumb-item">${Titolo.getData()}</li>
65 </ol>
66 </nav>
67 </div>
68 </div>
69 </div>
70</div>
71
72<#assign argomenti = [] />
73<#list categorie_notizia as categoryEntry>
74 <#assign
75 vocabulary = AssetVocabularyLocalServiceUtil.getVocabulary(categoryEntry.getVocabularyId())
76 className = ClassNameService.fetchClassName("com.liferay.asset.kernel.model.AssetCategory")
77 friendlyUrlEntry = FriendlyURLEntryLocalService.getMainFriendlyURLEntry(className.getClassNameId(), categoryEntry.categoryId)
78 friendlyUrlList = FriendlyURLEntryLocalService.getFriendlyURLEntryLocalizations(friendlyUrlEntry.friendlyURLEntryId)
79 cat_name = categoryEntry.name
80 cat_localized_name = categoryEntry.getTitle(themeDisplay.getLocale(), true),
81 cat_url = friendlyUrlList[0].urlTitle
82 />
83 <#if
84 vocabulary.getDescription() == "tassonomia argomenti"
85 || vocabulary.getTitle()?lower_case == "tassonomia argomento"
86 || vocabulary.getName()?lower_case == "tassonomia argomento"
87 >
88 <#assign
89 argomenti +=
90 [{
91 "name": cat_localized_name,
92 "url": cat_url
93 }]
94 />
95 </#if>
96</#list>
97
98<#-- GET PERSONE NOTIZIA -->
99<#assign persone_Notizia = [] />
100<#if Persone.getData()?has_content>
101 <#list Persone.getSiblings() as cur_Persone>
102 <#assign
103 cur_persona_data = jsonFactoryUtil.createJSONObject(cur_Persone.getData())
104 relatedPersone = JournalArticleLocalService.getArticlesByResourcePrimKey(cur_persona_data.classPK?number)
105 />
106 <#if relatedPersone?? && relatedPersone?size gt 0>
107 <#assign
108 relatedPersona = relatedPersone[0]
109 document = relatedPersona.getDocumentByLocale(themeDisplay.getLocale())
110 rootElement = document.getRootElement()
111 />
112 <#list rootElement.elements() as dynamicElement>
113 <#if dynamicElement.attributeValue("field-reference") == "Nome">
114 <#assign nome_persona = dynamicElement.element("dynamic-content").getText() />
115 <#elseif dynamicElement.attributeValue("field-reference") == "Cognome">
116 <#assign cognome_persona = dynamicElement.element("dynamic-content").getText() />
117 </#if>
118 </#list>
119 <#assign
120 persone_Notizia +=
121 [{
122 "nome": nome_persona + " " + cognome_persona,
123 "url": "${cur_Persone.getFriendlyUrl()}"
124 }]
125 />
126 </#if>
127 </#list>
128</#if>
129
130<#-- SEZIONE GET LUOGHI -->
131 <#assign luoghi_data = [] />
132 <#if Luoghi.getData()?has_content>
133 <#list Luoghi.getSiblings() as cur_luogo>
134 <#assign
135 cur_luogo_data = jsonFactoryUtil.createJSONObject(cur_luogo.getData())
136 relatedLuoghi = JournalArticleLocalService.getArticlesByResourcePrimKey(cur_luogo_data.classPK?number)
137 />
138 <#if relatedLuoghi?? && relatedLuoghi?size gt 0>
139 <#assign
140 relatedLuogo = relatedLuoghi[0]
141 document = relatedLuogo.getDocumentByLocale(themeDisplay.getLocale())
142 rootElement = document.getRootElement()
143 nome_cur_luogo = ""
144 indirizzo_cur_luogo = ""
145 orari_cur_luogo = ""
146 immagine_cur_luogo = ""
147 urlImmagine_cur_luogo = ""
148 />
149 <#list rootElement.elements() as dynamicElement>
150 <#if dynamicElement.attributeValue("field-reference") == "Titolo">
151 <#assign nome_cur_luogo = dynamicElement.element("dynamic-content").getText() />
152 <#elseif dynamicElement.attributeValue("field-reference") == "Indirizzo">
153 <#assign indirizzo_cur_luogo = dynamicElement.element("dynamic-content").getText() />
154 <#elseif dynamicElement.attributeValue("field-reference") == "OrarioPerIlPubblico">
155 <#assign orari_cur_luogo = dynamicElement.element("dynamic-content").getText() />
156 <#elseif dynamicElement.attributeValue("field-reference") == "Immagine">
157 <#assign immagine = dynamicElement.element("dynamic-content").getData() />
158 <#if immagine?has_content>
159 <#assign immagine = jsonFactoryUtil.createJSONObject(immagine) />
160 <#if immagine?has_content>
161 <#assign immagine = immagine?eval />
162 </#if>
163 </#if>
164 </#if>
165 </#list>
166 <#assign
167 luoghi_data +=
168 [{
169 "nome": nome_cur_luogo,
170 "indirizzo": indirizzo_cur_luogo,
171 "orari": orari_cur_luogo,
172 "immagine": immagine,
173 "urlPagina": "/portal/${relatedLuogo.getUrlTitle()}"
174 }]
175 />
176 </#if>
177 </#list>
178 </#if>
179<#-- GET DATI UO -->
180<#assign
181 data_UO = jsonFactoryUtil.createJSONObject(ACuraDi.getData())
182 has_UO = data_UO?eval?has_content
183/>
184<#if has_UO>
185 <#assign relatedArticles = JournalArticleLocalService.getArticlesByResourcePrimKey(data_UO.classPK?number) />
186 <#if relatedArticles?? && relatedArticles?size gt 0>
187 <#assign
188 relatedArticle = relatedArticles[0]
189 document = relatedArticle.getDocumentByLocale(themeDisplay.getLocale())
190 rootElement = document.getRootElement()
191 url_UO = relatedArticle.getUrlTitle()
192 nome_UO = ""
193 descrizione_UO = ""
194 immagine_UO = ""
195 urlImmagine_UO = ""
196 competenze_UO = ""
197 indirizzo_UO = ""
198 contatti_UO = []
199 />
200 <#if rootElement.elements()?has_content>
201 <#list rootElement.elements() as dynamicElement>
202 <#if dynamicElement.attributeValue("field-reference") == "Titolo">
203 <#assign nome_UO = dynamicElement.element("dynamic-content").getText() />
204 <#elseif dynamicElement.attributeValue("field-reference") == "DescrizioneBreve">
205 <#assign descrizione_UO = dynamicElement.element("dynamic-content").getText() />
206 <#elseif dynamicElement.attributeValue("field-reference") == "Immagine">
207 <#assign immagine_UO = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData()) />
208 <#if immagine_UO.uuid?has_content>
209 <#assign urlImmagine_UO = "/portal/c/document_library/get_file?uuid=" + immagine_UO.uuid + "&groupId=" + immagine_UO.groupId />
210 </#if>
211 <#elseif dynamicElement.attributeValue("field-reference") == "Competenze">
212 <#assign competenze_UO = dynamicElement.element("dynamic-content").getText() />
213 <#elseif dynamicElement.attributeValue("field-reference") == "SedePrincipale">
214 <#assign sede_UO_data = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData()) />
215 <#if sede_UO_data.classPK??>
216 <#assign
217 relatedSedi = JournalArticleLocalService.getArticlesByResourcePrimKey(sede_UO_data.classPK?number)
218 relatedSede = relatedSedi[0]
219 document = relatedSede.getDocumentByLocale(themeDisplay.getLocale())
220 rootElement = document.getRootElement()
221 />
222 <#list rootElement.elements() as dynamicElement>
223 <#if dynamicElement.attributeValue("field-reference") == "Indirizzo">
224 <#assign indirizzo_UO = dynamicElement.element("dynamic-content").getText() />
225 </#if>
226 </#list>
227 </#if>
228 <#elseif dynamicElement.attributeValue("field-reference") == "Contatti">
229 <#assign
230 valore_contatto = ""
231 contatti_UO_data = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData())
232 relatedContatti = JournalArticleLocalService.getArticlesByResourcePrimKey(contatti_UO_data.classPK?number)
233 relatedContatto = relatedContatti[0]
234 document = relatedContatto.getDocumentByLocale(themeDisplay.getLocale())
235 rootElement = document.getRootElement()
236 />
237 <#list rootElement.elements() as dynamicElement>
238 <#if dynamicElement.element("dynamic-content").getText()?has_content>
239 <#assign
240 tipo_contatto = (dynamicElement.attributeValue("field-reference") == "URL" )?string("Sito Web", dynamicElement.attributeValue("field-reference"))
241 contatti_UO +=
242 [{
243 "tipo": tipo_contatto,
244 "valore": dynamicElement.element("dynamic-content").getText()
245 }]
246 />
247 </#if>
248 </#list>
249 </#if>
250 </#list>
251 </#if>
252 </#if>
253</#if>
254
255<#-- GET ALLEGATI -->
256<#assign
257 has_allegati = Allegati.getSiblings()?has_content
258 allegati = []
259/>
260<#if has_allegati>
261<#list Allegati.getSiblings() as cur_allegato>
262 <#if cur_allegato.File.getData()?? && cur_allegato.File.getData()?has_content>
263 <#assign
264 allegato_data=jsonFactoryUtil.createJSONObject(cur_allegato.File.data)
265 url_allegato=cur_allegato.File.getData()
266 nome_allegato=cur_allegato.Etichetta.getData()?has_content?string("${cur_allegato.Etichetta.getData()}", "${allegato_data.getString('title')}" )
267 allegati +=
268 [{
269 "nome": nome_allegato,
270 "url": url_allegato
271 }]
272 />
273 </#if>
274</#list>
275</#if>
276
277<#-- GET VIDEOGALLERY -->
278<#assign videogallery = [] />
279<#if GalleriaDiVideo.getData()?has_content>
280 <#list GalleriaDiVideo.getSiblings() as cur_GalleriaDiVideo>
281 <#assign videogallery += [cur_GalleriaDiVideo.getData()] />
282 </#list>
283</#if>
284
285<#-- GET PHOTOGALLERY -->
286<#assign photogallery = [] />
287<#if GalleriaDiImmagini.getSiblings()?has_content>
288 <#list GalleriaDiImmagini.getSiblings() as cur_GalleriaDiImmagini>
289 <#if cur_GalleriaDiImmagini.getData()?? && cur_GalleriaDiImmagini.getData() !="">
290 <#assign
291 photogallery +=
292 [{
293 "alt": cur_GalleriaDiImmagini.getAttribute("alt"),
294 "fileentryid": cur_GalleriaDiImmagini.getAttribute("fileEntryId"),
295 "src": cur_GalleriaDiImmagini.getData()
296 }]
297 />
298 </#if>
299 </#list>
300</#if>
301
302<#assign datasets = [] />
303<#if Dataset.getSiblings()?has_content>
304 <#list Dataset.getSiblings() as cur_Dataset>
305 <#assign cur_dataset_Data = jsonFactoryUtil.createJSONObject(cur_Dataset.getData()) />
306 <#if cur_dataset_Data.classPK?? && cur_dataset_Data?has_content>
307 <#assign relatedDatasetS = JournalArticleLocalService.getArticlesByResourcePrimKey(cur_dataset_Data.classPK?number) />
308 <#if relatedDatasetS?? && relatedDatasetS?size gt 0>
309 <#assign
310 relatedDataset = relatedDatasetS[0]
311 document = relatedDataset.getDocumentByLocale(themeDisplay.getLocale())
312 rootElement = document.getRootElement()
313 nome_cur_dataset = ""
314 immagine_cur_dataset = ""
315 descrizione_cur_dataset = ""
316 />
317 <#list rootElement.elements() as dynamicElement>
318 <#if dynamicElement.attributeValue("field-reference") == "Titolo">
319 <#assign nome_cur_dataset = dynamicElement.element("dynamic-content").getText() />
320 </#if>
321 </#list>
322 <#assign
323 datasets +=
324 [{
325 "nome": nome_cur_dataset,
326 "url": "${cur_Dataset.getFriendlyUrl()}"
327 }]
328 />
329 </#if>
330 </#if>
331 </#list>
332</#if>
333
334<div class="container">
335 <div class="row">
336 <div class="col-12 col-lg-10">
337 <div class="cmp-heading pb-3 pb-lg-4">
338 <div class="row">
339 <div class="col-lg-8 px-lg-4 py-lg-2">
340 <h1>
341 ${Titolo.getData()}
342 </h1>
343 <h2 class="visually-hidden"><@liferay.language key="details" />:</h2>
344 <p>
345 ${DescrizioneBreve.getData()}
346 </p>
347 <div class="row mt-5 mb-4">
348 <div class="col">
349 <small><@liferay.language key="date" />:</small>
350 <p class="fw-semibold font-monospace">
351 <#assign DataDellaNotizia_Data = getterUtil.getString(DataDellaNotizia.getData())>
352
353 <#if validator.isNotNull(DataDellaNotizia_Data)>
354 <#assign DataDellaNotizia_DateObj = dateUtil.parseDate("yyyy-MM-dd", DataDellaNotizia_Data, locale)>
355
356 ${dateUtil.getDate(DataDellaNotizia_DateObj, "dd/MM/yyyy", locale)}
357 </#if>
358 </p>
359 </div>
360
361 <#assign DataDiScadenza_Data = getterUtil.getString(DataDiScadenza.getData())>
362 <#if validator.isNotNull(DataDiScadenza_Data)>
363 <div class="col">
364 <small><@liferay.language key="expiration-date" />:</small>
365 <p class="fw-semibold font-monospace">
366
367 <#assign DataDiScadenza_DateObj = dateUtil.parseDate("yyyy-MM-dd", DataDiScadenza_Data, locale)>
368
369 ${dateUtil.getDate(DataDiScadenza_DateObj, "dd/MM/yyyy", locale)}
370 </p>
371 </div>
372 </#if>
373
374 <#if TempoDiLettura.getData() !="">
375 <div class="col">
376 <small><@liferay.language key="reading-time" />:</small>
377 <p class="fw-semibold">${TempoDiLettura.getData()} min</p>
378 </div>
379 </#if>
380 <#if NumeroProgressivoComunicatoStampa.getData() !="">
381 <div class="col">
382 <small><@liferay.language key="press-progressive-number" />:</small>
383 <p class="fw-semibold">
384 ${NumeroProgressivoComunicatoStampa.getData()}
385 </p>
386 </div>
387 </#if>
388 </div>
389 </div>
390
391 <div class="col-lg-3 offset-lg-1 mt-5 mt-lg-0">
392 <div class="dropdown" id="fallback-share">
393 <button
394 aria-label="condividi sui social"
395 class="btn btn-dropdown dropdown-toggle text-decoration-underline d-inline-flex align-items-center fs-6 text-primary"
396 type="button"
397 id="shareActions"
398 data-bs-toggle="dropdown"
399 aria-haspopup="true"
400 aria-expanded="false"
401 >
402 <svg class="icon icon-primary" aria-hidden="true">
403 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-share"></use>
404 </svg>
405 <small><@liferay.language key="share" /></small>
406 </button>
407 <div class="dropdown-menu shadow-lg" aria-labelledby="shareActions">
408 <div class="link-list-wrapper">
409 <ul class="link-list" role="menu">
410 <li role="none">
411 <button class="list-item text-primary px-3 fs-6" role="menuitem" onclick="shareOn('facebook')">
412 <svg class="icon icon-primary" aria-hidden="true">
413 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-facebook"></use>
414 </svg>
415 <span>Facebook</span>
416 </button>
417 </li>
418 <li role="none">
419 <button class="list-item text-primary px-3 fs-6" role="menuitem" onclick="shareOn('twitter')">
420 <svg class="icon icon-primary" aria-hidden="true">
421 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-twitter"></use>
422 </svg>
423 <span><@liferay.language key="Twitter" /></span>
424 </button>
425 </li>
426 <li role="none">
427 <button class="list-item text-primary px-3 fs-6" role="menuitem" onclick="shareOn('whatsapp')">
428 <svg class="icon icon-primary" aria-hidden="true">
429 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-whatsapp"></use>
430 </svg>
431 <span>Whatsapp</span>
432 </button>
433 </li>
434 </ul>
435 </div>
436 </div>
437 </div>
438
439 <div class="dropdown">
440 <button
441 aria-label="vedi azioni da compiere sulla pagina"
442 class="btn btn-dropdown dropdown-toggle text-decoration-underline d-inline-flex align-items-center fs-0"
443 type="button"
444 id="viewActions"
445 data-bs-toggle="dropdown"
446 aria-haspopup="true"
447 aria-expanded="false"
448 >
449 <svg class="icon icon-primary" aria-hidden="true">
450 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-more-items"></use>
451 </svg>
452 <small><@liferay.language key="actions" /></small>
453 </button>
454 <div class="dropdown-menu shadow-lg" aria-labelledby="viewActions">
455 <div class="link-list-wrapper">
456 <ul class="link-list" role="menu">
457 <li role="none">
458 <button class="list-item px-3 fs-6 text-primary" onclick="window.print()" role="menuitem">
459 <svg class="icon icon-primary" aria-hidden="true">
460 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-print"></use>
461 </svg>
462 <span><@liferay.language key="print" /></span>
463 </button>
464 </li>
465 <li role="none">
466 <a class="list-item mail-anchor px-3 fs-6" href="mailto:" role="menuitem">
467 <svg class="icon icon-primary" aria-hidden="true">
468 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-mail"></use>
469 </svg>
470 <span><@liferay.language key="send" /></span>
471 </a>
472 </li>
473 </ul>
474 </div>
475 </div>
476 </div>
477
478 <#list argomenti>
479 <div class="mt-4 mb-3">
480 <div class="mb-2 small fw-semibold"><@liferay.language key="topics" />:</div>
481 <ul>
482 <#items as argomento>
483 <li>
484 <a href="${argomento.url}" class="chip chip-simple" data-element="service-topic">
485 <span class="chip-label">
486 ${argomento.name}
487 </span>
488 </a>
489 </li>
490 </#items>
491 </ul>
492 </div>
493 </#list>
494 </div>
495 </div>
496 </div>
497 </div>
498 </div>
499</div>
500
501<#if Immagine.getData()?? && Immagine.getData() !="">
502<div class="container-fluid my-3">
503 <div class="row">
504 <figure class="figure px-0 img-full">
505 <img src="${Immagine.getData()}" class="figure-img img-fluid" alt="${Immagine.getAttribute("alt")}">
506 <figcaption class="figure-caption text-center pt-3">
507 ${Immagine.getAttribute("alt")}
508 </figcaption>
509 </figure>
510 </div>
511</div>
512</#if>
513
514<div class="container">
515 <div class="row border-top border-light row-column-border row-column-menu-left">
516 <aside class="col-12 col-lg-3 mb-4 border-col">
517 <div class="cmp-navscroll sticky-top" aria-labelledby="accordion-title-one">
518 <nav
519 class="navbar it-navscroll-wrapper navbar-expand-lg"
520 data-bs-navscroll=""
521 aria-labelledby="page-index-btn"
522 >
523 <div class="navbar-custom" id="navbarNavProgress">
524 <div class="menu-wrapper">
525 <div class="link-list-wrapper">
526 <div class="accordion">
527 <div class="accordion-item">
528 <span class="accordion-header" id="accordion-title-one">
529 <button class="accordion-button pb-10 px-3" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-one" aria-expanded="true" aria-controls="collapse-one"
530 id="page-index-btn"
531 >
532 <@liferay.language key="page-index" />
533 <svg class="icon icon-xs right" viewBox="0 0 24 24">
534 <path d="M11.6 15.4L6 9.8l.7-.8 4.9 4.9L16.5 9l.7.8z"></path>
535 </svg>
536 </button>
537 </span>
538 <div class="progress">
539 <div class="progress-bar it-navscroll-progressbar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;" aria-label="percentuale di scorrimento"></div>
540 </div>
541 <div id="collapse-one" class="accordion-collapse collapse show" role="region" aria-labelledby="accordion-title-one">
542 <div class="accordion-body">
543 <ul class="link-list" data-element="page-index">
544
545 <#if Descrizione.getData()?has_content>
546 <@navigatorLink sectionId="description" title="${languageUtil.get(locale, 'description')}" />
547 </#if>
548
549 <#if luoghi_data?size gt 0>
550 <@navigatorLink sectionId="places" title="${languageUtil.get(locale, 'places')}" />
551 </#if>
552
553 <#if photogallery?size gt 0>
554 <@navigatorLink sectionId="photogallery" title="${languageUtil.get(locale, 'image-gallery')}" />
555 </#if>
556
557 <#if videogallery?size gt 0>
558 <@navigatorLink sectionId="videogallery" title="${languageUtil.get(locale, 'video-gallery')}" />
559 </#if>
560
561 <#if (has_UO || persone_Notizia?size gt 0) && nome_UO?has_content>
562 <@navigatorLink sectionId="office" title="${languageUtil.get(locale, 'edited-by')}" />
563 </#if>
564
565 <#if has_allegati && allegati?size gt 0>
566 <@navigatorLink sectionId="attachments" title="${languageUtil.get(locale, 'attachments')}" />
567 </#if>
568
569 <#if datasets?size gt 0>
570 <@navigatorLink sectionId="datasets" title="${languageUtil.get(locale, 'dataset')}" />
571 </#if>
572
573 </ul>
574 </div>
575 </div>
576 </div>
577 </div>
578 </div>
579 </div>
580 </div>
581 </nav>
582 </div>
583 </aside>
584 <div class="col-12 col-lg-8 offset-lg-1">
585 <div class="it-page-sections-container">
586
587 <#if Descrizione.getData()?has_content>
588 <section class="it-page-section mb-30" id="description">
589 <h2 class="title-xxlarge mb-3"><@liferay.language key="description" /></h2>
590 <div class="richtext-wrapper lora">
591 ${Descrizione.getData()}
592 </div>
593 </section>
594 </#if>
595
596 <#list luoghi_data>
597 <section class="it-page-section mb-30" id="places">
598 <h2 class="title-xxlarge mb-3"><@liferay.language key="places" /></h2>
599 <div class="row">
600 <#items as luogo>
601 <div class="col-12 col-lg-6">
602 <div class="card-wrapper rounded h-auto mt-10">
603 <div class="card card-teaser card-teaser-info rounded shadow-sm p-3">
604 <div class="card-body pe-3">
605 <a class="card-title text-paragraph-regular-medium-semi mb-3 primary-color-b3" href="${luogo.urlPagina}">
606 ${luogo.nome}
607 </a>
608 <div class="card-text">
609 ${luogo.indirizzo}
610 </div>
611 </div>
612 <#if luogo.immagine?has_content && luogo.immagine.url??>
613 <div class="avatar size-xl">
614 <#assign url_immagine="${luogo.immagine.url}" />
615 <a href="${luogo.urlPagina}">
616 <img
617 src="${luogo.immagine.url}"
618 style="aspect-ratio: 1;"
619 alt="${luogo.immagine.alt}"
620 />
621 </a>
622 </div>
623 </#if>
624 </div>
625 </div>
626 </div>
627 </#items>
628 </div>
629 </section>
630 </#list>
631
632 <#list photogallery>
633 <section class="it-page-section mb-30" id="photogallery">
634 <h2 class="title-xxlarge mb-3"><@liferay.language key="image-gallery" /></h2>
635 <div class="it-carousel-wrapper it-carousel-landscape-abstract-three-cols splide splide--slide splide--ltr splide--draggable is-active is-initialized mb-4" data-bs-carousel-splide="" id="splide01">
636 <div class="splide__track" id="splide01-track" style="padding-left: 0px; padding-right: 0px;">
637 <ul class="splide__list it-carousel-all" id="splide01-list" style="transform: translateX(0px);">
638 <#items as img>
639 <li
640 class="splide__slide is-active is-visible h-100"
641 id="splide01-slide0${img?counter}"
642 style="margin-right: 24px; width: calc(calc(100% / 3) - 16px);"
643 tabindex="0"
644 data-focus-mouse="false"
645 >
646 <div class="it-single-slide-wrapper">
647 <figure>
648 <a
649 href="${img.src}"
650 aria-labelledby="photogallery-item-${img?counter}"
651 target="_blank"
652 rel="noopener noreferrer"
653 >
654 <img
655 id="photogallery-item-${img?counter}"
656 src="${img.src}"
657 alt="${img.alt}"
658 class="img-fluid"
659 style="width: 100%; aspect-ratio: 1; object-fit: cover; object-position: center;"
660 loading="lazy"
661 >
662 </a>
663 <figcaption class="figure-caption mt-2">
664 ${img.alt}
665 </figcaption>
666 </figure>
667 </div>
668 </li>
669 </#items>
670 </ul>
671 </div>
672 </div>
673 </section>
674 </#list>
675
676 <#list videogallery>
677 <section class="it-page-section mb-30" id="videogallery">
678 <h2 class="mb-3"><@liferay.language key="video-gallery" /></h2>
679 <div id="iframe-wrapper">
680 <#items as cur_Sezione_URLVideo>
681 <div class="iframe-element">
682 ${cur_Sezione_URLVideo}
683 </div>
684 </#items>
685 </div>
686 </section>
687 </#list>
688
689 <#if (has_UO || persone_Notizia?size gt 0) && nome_UO?has_content>
690 <section class="it-page-section mb-30" id="office">
691 <h2 class="mb-3"><@liferay.language key="edited-by" /></h2>
692 <div class="row">
693 <#if has_UO>
694 <div class="col-12 col-lg-6">
695 <div class="card-wrapper rounded h-auto mt-10">
696 <div class="card card-teaser card-teaser-info rounded shadow-sm p-3">
697 <div class="card-body pe-3">
698 <div class="mb-3">
699 <a class="card-title text-paragraph-regular-medium-semi primary-color-b3" href="/portal/-/${url_UO}">
700 ${nome_UO}
701 </a>
702 <#if indirizzo_UO?has_content>
703 <small class="d-block">
704 ${indirizzo_UO}
705 </small>
706 </#if>
707 </div>
708 <div class="card-text">
709 <#list contatti_UO>
710 <div class="col-12 rounded p-0">
711 <#items as contatto>
712 <div>
713 <#assign url_type="" />
714 <#if
715 contatto.tipo=="Email"
716 || contatto.tipo=="PEC"
717 >
718 <#assign url_type="mailto:" />
719 <#elseif
720 contatto.tipo=="Telefono"
721 || contatto.tipo=="Whatsapp"
722 || contatto.tipo=="Telegram"
723 >
724 <#assign url_type="tel:" />
725 </#if>
726 <span class="fw-semibold">
727 <@liferay.language key="${contatto.tipo?replace(' ', '-')}" />:</span>
728 <span class="ms-1">
729 <a
730 href="${url_type}${contatto.valore}"
731 target="_blank"
732 class="t-primary"
733 >
734 ${contatto.valore}
735 </a>
736 </span>
737 </div>
738 </#items>
739 </div>
740 </#list>
741 </div>
742 </div>
743 <#if urlImmagine_UO !="">
744 <div class="avatar size-xl">
745 <a href="#">
746 <img
747 alt="Immagine unità organizzativa responsabile"
748 src="${urlImmagine_UO}"
749 style="aspect-ratio: 1;"
750 />
751 </a>
752 </div>
753 </#if>
754 </div>
755 </div>
756 </div>
757 </#if>
758 <#list persone_Notizia>
759 <div class="col-12 col-lg-6">
760 <div class="mb-2"><@liferay.language key="people" />:</div>
761 <ul>
762 <#items as persona>
763 <li>
764 <a href="${persona.url}" class="chip chip-simple" data-element="service-topic">
765 <span class="chip-label">
766 ${persona.nome}
767 </span>
768 </a>
769 </li>
770 </#items>
771 </ul>
772 </div>
773 </#list>
774 </div>
775 </section>
776 </#if>
777
778 <#list allegati>
779 <section class="it-page-section mb-30" id="attachments">
780 <h2 class="mb-3"><@liferay.language key="attachments" /></h2>
781 <div class="col-12">
782 <ul class="p-3 my-3 shadow rounded">
783 <#items as allegato>
784 <li group="attachments">
785 <div class="d-flex align-items-center ${allegato?has_next?string(' mb-2', '')}">
786 <a class="text-decoration_none fw-semibold t-primary" target="_blank" href="${allegato.url}">
787 <svg class="icon icon-primary icon-lh me-2 d-inline" aria-hidden="true" viewBox="0 0 24 24">
788 <path d="M12,14.2L7.7,9.9l0.7-0.7l3.1,3.1V3h1v9.2l3.1-3l0.7,0.7L12,14.2z M19,12v7.5c0,0.3-0.2,0.5-0.5,0.5h-13C5.2,20,5,19.8,5,19.5V12H4v7.5C4,20.3,4.7,21,5.5,21h13c0.8,0,1.5-0.7,1.5-1.5V12H19z" />
789 </svg>
790 ${allegato.nome}
791 </a>
792 </div>
793 </li>
794 </#items>
795 </ul>
796 </div>
797 </section>
798 </#list>
799
800 <#list datasets>
801 <section class="it-page-section mb-30" id="datasets">
802 <h2 class="mb-3"><@liferay.language key="dataset" /></h2>
803 <div class="col-12">
804 <ul class="p-3 my-3 shadow rounded">
805 <#items as dataset>
806 <li group="attachments">
807 <div class="d-flex align-items-center ${dataset?has_next?string(' mb-2', '')}">
808 <a class="text-decoration_none fw-semibold t-primary" target="_blank" href="${dataset.url}">
809 <svg class="icon icon-primary me-2" aria-hidden="true">
810 <use xlink:href="/portal/o/agid-liferay-theme/images/sprite.svg#it-external-link"></use>
811 </svg>
812 ${dataset.nome}
813 </a>
814 </div>
815 </li>
816 </#items>
817 </ul>
818 </div>
819 </section>
820 </#list>
821
822 </div>
823 <div class="mt-3">
824 <#-- DATA ULTIMA MODIFICA -->
825 <#assign
826 modifiedDate = .vars['reserved-article-modified-date'].getData()?split(", ")[1]?split(" +")[0]
827 displayModifiedDate = modifiedDate?datetime("dd MMM yyyy hh:mm:ss")?datetime
828 />
829 <p class="text-paragraph-small mb-0 lora">
830 <span class="fw-semibold"><@liferay.language key="last-update-date" />: </span>
831 <span>
832 ${displayModifiedDate?string.short}
833 </span>
834 </p>
835 </div>
836 </div>
837 </div>
838</div>
839
840<style>
841 section {
842 scroll-margin-top: 2.5rem;
843 }
844</style>
845
846<script defer>
847 document.querySelectorAll(".mail-anchor").forEach(anchor => anchor.href = "mailto:&subject=${Titolo.getData()}&body=" + window.location.href);
848
849 function shareOn(type) {
850 let articleUrl = window.location.href;
851 const mapping = {
852 "facebook": "https://facebook.com/sharer/sharer.php?u=" + articleUrl,
853 "twitter": "https://twitter.com/intent/tweet/?text=" + articleUrl,
854 "linkedin": "http://www.linkedin.com/sharing/share-offsite/?url=" + articleUrl,
855 "whatsapp": "whatsapp://send?text=" + articleUrl
856 }
857
858 window.open(mapping[type], "_blank");
859 return
860 }
861
862 function bringMeTo(id) {
863 document.getElementById(id).scrollIntoView({behavior: 'smooth'});
864 }
865
866</script>
867
868<#macro navigatorLink sectionId title>
869<#local desc = "" />
870
871<#if title?? && title?has_content>
872 <#local desc = title />
873<#else>
874 <#local desc = sectionId />
875</#if>
876
877<li class="nav-item">
878 <a
879 class="nav-link active"
880 onclick="bringMeTo('${sectionId}')"
881 role="button"
882 aria-label="${languageUtil.get(locale, 'go-to-section')}: ${title}"
883 >
884 <span class="title-medium">${title}</span>
885 </a>
886</li>
887</#macro>