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