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#35038" 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    JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") 
10    LayoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") 
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    categoryList = 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<#-- GET TASSONOMIE --> 
76<#assign 
77    argomenti = [] 
78    tipiDocumento = [] 
79    tipoAlbo = "" 
80    lifeEvents = [] 
81    businessEvents = [] 
82    licenza = "" 
83/> 
84<#list categoryList as categoryEntry> 
85 
86    <#assign 
87        vocabulary = AssetVocabularyLocalServiceUtil.getVocabulary(categoryEntry.getVocabularyId()) 
88        className = ClassNameService.fetchClassName("com.liferay.asset.kernel.model.AssetCategory") 
89        friendlyUrlEntry = FriendlyURLEntryLocalService.getMainFriendlyURLEntry(className.getClassNameId(), categoryEntry.categoryId) 
90        friendlyUrlList = FriendlyURLEntryLocalService.getFriendlyURLEntryLocalizations(friendlyUrlEntry.friendlyURLEntryId) 
91        cat_name = categoryEntry.name 
92        cat_localized_name = categoryEntry.getTitle(themeDisplay.getLocale(), true), 
93        cat_url = friendlyUrlList[0].urlTitle 
94    /> 
95    <#if vocabulary.name == "tassonomia licenze" || vocabulary.description == "licenze"> 
96        <#assign licenza = cat_name /> 
97    <#elseif vocabulary.name == "tassonomia tipi di documento" || vocabulary.description == "tipi di documento"> 
98        <#assign 
99            tipiDocumento += 
100            [{ 
101                "name": cat_localized_name, 
102                "url": "/portal/web/guest/${friendlyUrlEntry.urlTitle}" 
103            }] 
104        /> 
105    <#elseif vocabulary.name == "life events" || vocabulary.description == "eventi della vita delle persone"> 
106        <#assign lifeEvents += [ cat_localized_name ] /> 
107    <#elseif vocabulary.name == "tassonomia business events" || vocabulary.description == "eventi della vita delle imprese"> 
108        <#assign businessEvents += [ cat_localized_name ] /> 
109    <#elseif vocabulary.name == "tassonomia documenti albo pretorio" || vocabulary.description == "documenti albo pretorio"> 
110        <#assign tipoAlbo = cat_name /> 
111    <#elseif vocabulary.name == "tassonomia argomento" || vocabulary.description == "argomenti"> 
112        <#assign 
113            argomenti += 
114            [{ 
115                "name": cat_localized_name, 
116                "url": "/portal/web/guest/${cat_url}" 
117            }] 
118        /> 
119    </#if> 
120</#list> 
121 
122<#-- GET UO RESPONSBAILE --> 
123<#if jsonFactoryUtil.createJSONObject(UfficioResponsabileDocumento.getData())?has_content> 
124    <#assign UO_data = jsonFactoryUtil.createJSONObject(UfficioResponsabileDocumento.getData()) /> 
125<#else> 
126    <#assign UO_data = "" /> 
127</#if> 
128 
129<#if UO_data != ""> 
130    <#if UO_data.classPK??> 
131        <#assign UfficiResponsabili = JournalArticleLocalService.getArticlesByResourcePrimKey(UO_data.classPK?number) /> 
132        <#if UfficiResponsabili?? && UfficiResponsabili?size gt 0> 
133            <#assign 
134                UfficioResponsabile = UfficiResponsabili[0] 
135                document = UfficioResponsabile.getDocumentByLocale(themeDisplay.getLocale()) 
136                rootElement = document.getRootElement() 
137                nome_UO = "" 
138                indirizzo_UO = "" 
139                immagine_UO = "" 
140                urlImmagine_UO = "" 
141            /> 
142 
143            <#list rootElement.elements() as dynamicElement> 
144                <#if dynamicElement.attributeValue("field-reference") == "Titolo"> 
145                    <#assign nome_UO = dynamicElement.element("dynamic-content").getData() /> 
146                <#elseif dynamicElement.attributeValue("field-reference") == "Immagine"> 
147                    <#assign immagine_UO = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData()) /> 
148                    <#if immagine_UO.uuid?has_content> 
149                        <#assign urlImmagine_UO = "/portal/c/document_library/get_file?uuid=" + immagine_UO.uuid + "&amp;groupId=" + immagine_UO.groupId /> 
150                    </#if> 
151                <#elseif dynamicElement.attributeValue("field-reference") == "SedePrincipale"> 
152                    <#assign sede_data = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData()) /> 
153                    <#if sede_data.classPK??> 
154 
155                        <#assign 
156                            Sedi = JournalArticleLocalService.getArticlesByResourcePrimKey(sede_data.classPK?number) 
157                        /> 
158                        <#if Sedi?size gt 0> 
159                            <#assign 
160                                Sede = Sedi[0] 
161                                document = Sede.getDocumentByLocale(themeDisplay.getLocale()) 
162                                rootElement = document.getRootElement() 
163                            /> 
164                            <#list rootElement.elements() as dynamicElement> 
165                                <#if dynamicElement.attributeValue("field-reference") == "Indirizzo"> 
166                                    <#assign indirizzo_UO = dynamicElement.element("dynamic-content").getData() /> 
167                                </#if> 
168                            </#list> 
169                        </#if> 
170 
171                    </#if> 
172                </#if> 
173            </#list> 
174        </#if> 
175    </#if> 
176</#if> 
177 
178<#-- GET AUTORI --> 
179<#assign autori = [] /> 
180<#if Autori.getData()?has_content> 
181    <#list Autori.getSiblings() as cur_autore> 
182        <#assign 
183            cur_autore_data = jsonFactoryUtil.createJSONObject(cur_autore.getData()) 
184            relatedAutori = JournalArticleLocalService.getArticlesByResourcePrimKey(cur_autore_data.classPK?number) 
185            relatedAutore = relatedAutori[0] 
186            document = relatedAutore.getDocumentByLocale(themeDisplay.getLocale()) 
187            rootElement = document.getRootElement() 
188            nome_autore = "" 
189            cognome_autore = "" 
190            immagine_autore = "" 
191            urlImmagine_autore = "" 
192            incarico_autore = "" 
193        /> 
194        <#list rootElement.elements() as dynamicElement> 
195            <#if dynamicElement.attributeValue("field-reference") == "Nome"> 
196                <#assign nome_autore = dynamicElement.element("dynamic-content").getText() /> 
197            <#elseif dynamicElement.attributeValue("field-reference") == "Cognome"> 
198                <#assign cognome_autore = dynamicElement.element("dynamic-content").getText() /> 
199            <#elseif dynamicElement.attributeValue("field-reference") == "Immagine"> 
200                <#assign immagine_autore = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData()) /> 
201                <#if immagine_autore.uuid?has_content> 
202                    <#assign urlImmagine_autore = "/portal/c/document_library/get_file?uuid=" + immagine_autore.uuid + "&amp;groupId=" + immagine_autore.groupId /> 
203                </#if> 
204            <#elseif dynamicElement.attributeValue("field-reference") == "Incarichi"> 
205                <#assign 
206                    incarichi_autore = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData()) 
207                /> 
208                <#if incarichi_autore?eval?has_content> 
209                    <#assign 
210                        relatedIncarichiAutore = JournalArticleLocalService.getArticlesByResourcePrimKey(incarichi_autore.classPK?number) 
211                        relatedIncaricoAutore = relatedIncarichiAutore[0] 
212                        document = relatedIncaricoAutore.getDocumentByLocale(themeDisplay.getLocale()) 
213                        rootElement = document.getRootElement() 
214                    /> 
215                    <#list rootElement.elements() as dynamicElement> 
216                        <#if dynamicElement.attributeValue("field-reference") == "Titolo"> 
217                            <#assign incarico_autore = dynamicElement.element("dynamic-content").getText() /> 
218                        </#if> 
219                    </#list> 
220                </#if> 
221            </#if> 
222        </#list> 
223        <#assign 
224            autori += 
225            [{ 
226                "nome": nome_autore, 
227                "cognome": cognome_autore, 
228                "urlImmagine": urlImmagine_autore, 
229                "immagine": immagine_autore, 
230                "incarico": incarico_autore, 
231                "urlPagina": "/portal/-/${relatedAutore.getUrlTitle()}" 
232            }] 
233        /> 
234    </#list> 
235</#if> 
236 
237<#-- GET SERVIZI COLLEGATI --> 
238<#assign servizi_collegati = [] /> 
239<#if Servizi.getData()?has_content> 
240    <#list Servizi.getSiblings() as cur_servizio> 
241        <#assign 
242            cur_servizio_data = jsonFactoryUtil.createJSONObject(cur_servizio.getData()) 
243            categorie_cur_servizio = assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle", cur_servizio_data.classPK?number) 
244            relatedServizi = JournalArticleLocalService.getArticlesByResourcePrimKey(cur_servizio_data.classPK?number) 
245        /> 
246        <#if relatedServizi?? && relatedServizi?size gt 0> 
247            <#assign 
248                relatedServizio = relatedServizi[0] 
249                document = relatedServizio.getDocumentByLocale(themeDisplay.getLocale()) 
250                rootElement = document.getRootElement() 
251                nome_servizio = "" 
252                descrizione_servizio = "" 
253                categorie_servizio = [] 
254            /> 
255            <#list rootElement.elements() as dynamicElement> 
256                <#if dynamicElement.attributeValue("field-reference") == "Titolo"> 
257                    <#assign nome_servizio = dynamicElement.element("dynamic-content").getText() /> 
258                <#elseif dynamicElement.attributeValue("field-reference") == "DescrizioneBreve"> 
259                    <#assign descrizione_servizio = dynamicElement.element("dynamic-content").getText() /> 
260                </#if> 
261            </#list> 
262            <#list categorie_cur_servizio as cur_categoria_cur_servizio> 
263                <#assign cur_vocabulary = AssetVocabularyLocalServiceUtil.getVocabulary(cur_categoria_cur_servizio.getVocabularyId()) /> 
264                <#if 
265                    cur_vocabulary.getTitle()?lower_case == "tassonomia categoria servizi" 
266                    || cur_vocabulary.getName()?lower_case == "tassonomia categoria servizi" 
267                    || cur_vocabulary.getDescription()?lower_case == "categorie servizi" 
268
269                    <#assign categorie_servizio += [cur_categoria_cur_servizio] /> 
270                </#if> 
271            </#list> 
272            <#assign 
273                servizi_collegati += 
274                [{ 
275                    "nome": nome_servizio, 
276                    "descrizione": descrizione_servizio, 
277                    "categorie": categorie_servizio, 
278                    "url": "/portal/-/${relatedServizio.getUrlTitle()}" 
279                }] 
280            /> 
281        </#if> 
282    </#list> 
283</#if> 
284 
285 
286<#-- GET DATE --> 
287<#assign 
288    data_inizio = "" 
289    data_fine = "" 
290    data_protocollo = "" 
291    DataInizio_Data = getterUtil.getString(DataInizio.getData()) 
292    DataFine_Data = getterUtil.getString(DataFine.getData()) 
293    DataProtocollo_Data = getterUtil.getString(DataProtocollo.getData()) 
294/> 
295<#if validator.isNotNull(DataInizio_Data)> 
296    <#assign 
297        DataInizio_DateObj = dateUtil.parseDate("yyyy-MM-dd", DataInizio_Data, locale) 
298        data_inizio = dateUtil.getDate(DataInizio_DateObj, "dd MMMM yyyy" , locale) 
299    /> 
300</#if> 
301<#if validator.isNotNull(DataFine_Data)> 
302    <#assign 
303        DataFine_DateObj = dateUtil.parseDate("yyyy-MM-dd", DataFine_Data, locale) 
304        data_fine = dateUtil.getDate(DataFine_DateObj, "dd MMMM yyyy" , locale) 
305    /> 
306</#if> 
307<#if validator.isNotNull(DataProtocollo_Data)> 
308    <#assign 
309        DataProtocollo_DateObj = dateUtil.parseDate("yyyy-MM-dd", DataProtocollo_Data, locale) 
310        data_protocollo = dateUtil.getDate(DataProtocollo_DateObj, "dd MMMM yyyy" , locale) 
311    /> 
312</#if> 
313 
314<#-- SEZIONE GET ALLEGATI --> 
315<#assign documenti_collegati = [] /> 
316<#if DocumentiCollegati.getData()?has_content> 
317    <#if DocumentiCollegati.getSiblings()?has_content> 
318        <#list DocumentiCollegati.getSiblings() as cur_allegato> 
319            <#assign 
320                cur_allegato_data = jsonFactoryUtil.createJSONObject(cur_allegato.getData()) 
321                relatedAllegati = JournalArticleLocalService.getArticlesByResourcePrimKey(cur_allegato_data.classPK?number) 
322            /> 
323            <#if relatedAllegati?? && relatedAllegati?size gt 0> 
324                <#assign relatedAllegato = relatedAllegati[0] /> 
325                <#if relatedAllegati?? && relatedAllegati?size gt 0> 
326                    <#assign 
327                        document = relatedAllegato.getDocumentByLocale(themeDisplay.getLocale()) 
328                        rootElement = document.getRootElement() 
329                        nome_allegato = "" 
330                        url_allegato = "/portal/-/${relatedAllegato.getUrlTitle()}" 
331                    /> 
332                    <#list rootElement.elements() as dynamicElement> 
333                        <#if dynamicElement.attributeValue("field-reference") == "Titolo"> 
334                            <#assign nome_allegato = dynamicElement.element("dynamic-content").getText() /> 
335                        </#if> 
336                    </#list> 
337                    <#assign 
338                        documenti_collegati += 
339                        [{ 
340                            "nome": nome_allegato, 
341                            "url": url_allegato 
342                        }] 
343                    /> 
344                </#if> 
345            </#if> 
346        </#list> 
347    </#if> 
348</#if> 
349<#if Dataset.getData()?has_content> 
350    <#if Dataset.getSiblings()?has_content> 
351        <#list Dataset.getSiblings() as cur_allegato> 
352            <#assign 
353                cur_allegato_data = jsonFactoryUtil.createJSONObject(cur_allegato.getData()) 
354                relatedAllegati = JournalArticleLocalService.getArticlesByResourcePrimKey(cur_allegato_data.classPK?number) 
355            /> 
356            <#if relatedAllegati?? && relatedAllegati?size gt 0> 
357                <#assign 
358                    relatedAllegato = relatedAllegati[0] 
359                    document = relatedAllegato.getDocumentByLocale(themeDisplay.getLocale()) 
360                    rootElement = document.getRootElement() 
361                    nome_allegato = "" 
362                    url_allegato = "/portal/-/${relatedAllegato.getUrlTitle()}" 
363                /> 
364                <#list rootElement.elements() as dynamicElement> 
365                    <#if dynamicElement.attributeValue("field-reference") == "Titolo"> 
366                        <#assign nome_allegato = dynamicElement.element("dynamic-content").getText() /> 
367                    </#if> 
368                </#list> 
369                <#assign 
370                    documenti_collegati += 
371                    [{ 
372                        "nome": nome_allegato, 
373                        "url": url_allegato 
374                    }] 
375                /> 
376            </#if> 
377        </#list> 
378    </#if> 
379</#if> 
380<#assign 
381    immagini_galleria = [] 
382/> 
383 
384<#-- GET PHOTOGALLERY --> 
385<#if GalleriaImmagini.getData()?has_content> 
386    <#list GalleriaImmagini.getSiblings() as cur_GalleriaImmagini> 
387        <#if cur_GalleriaImmagini.getData()?? && cur_GalleriaImmagini.getData() != ""> 
388            <#assign 
389                immagini_galleria += 
390                [{ 
391                    "alt": cur_GalleriaImmagini.getAttribute("alt")!"", 
392                    "fileentryid": cur_GalleriaImmagini.getAttribute("fileEntryId"), 
393                    "src": cur_GalleriaImmagini.getData() 
394                }] 
395            /> 
396        </#if> 
397    </#list> 
398</#if> 
399 
400<div class="container"> 
401    <div class="row justify-content-center"> 
402        <div class="col-12 col-lg-10"> 
403            <div class="cmp-heading pb-3 pb-lg-4"> 
404                <div class="row"> 
405                    <div class="col-lg-8"> 
406                        <h1 class="title-xxxlarge" data-element="service-title"> 
407                            ${Titolo.getData()} 
408                        </h1> 
409                        <#if Protocollo.getData()?has_content> 
410                        <p class="primary-color-b5 mb-3 fs-4 fw-bold"> 
411                            ${Protocollo.getData()}${data_protocollo?has_content?string(", ${data_protocollo}", "")} 
412                        </p> 
413                        </#if> 
414                        <p class="subtitle-small mb-3"> 
415                            ${DescrizioneBreve.getData()} 
416                        </p> 
417                    </div> 
418 
419                    <div class="col-lg-4 mt-5 mt-lg-0"> 
420                        <div class="dropdown" id="fallback-share"> 
421                            <button 
422                                aria-label="condividi sui social" 
423                                class="btn btn-dropdown dropdown-toggle text-decoration-underline d-inline-flex align-items-center fs-6 text-primary" 
424                                type="button" 
425                                id="shareActions" 
426                                data-bs-toggle="dropdown" 
427                                aria-haspopup="true" 
428                                aria-expanded="false" 
429
430                                <svg class="icon icon-primary" aria-hidden="true"> 
431                                    <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-share"></use> 
432                                </svg> 
433                                <small><@liferay.language key="share" /></small> 
434                            </button> 
435                            <div class="dropdown-menu shadow-lg" aria-labelledby="shareActions"> 
436                                <div class="link-list-wrapper"> 
437                                    <ul class="link-list" role="menu"> 
438                                        <li role="none"> 
439                                            <button class="list-item text-primary px-3 fs-6" role="menuitem" onclick="shareOn('facebook')"> 
440                                                <svg class="icon icon-primary" aria-hidden="true"> 
441                                                    <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-facebook"></use> 
442                                                </svg> 
443                                                <span>Facebook</span> 
444                                            </button> 
445                                        </li> 
446                                        <li role="none"> 
447                                            <button class="list-item text-primary px-3 fs-6" role="menuitem" onclick="shareOn('twitter')"> 
448                                                <svg class="icon icon-primary" aria-hidden="true"> 
449                                                    <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-twitter"></use> 
450                                                </svg> 
451                                                <span><@liferay.language key="Twitter" /></span> 
452                                            </button> 
453                                        </li> 
454                                        <li role="none"> 
455                                            <button class="list-item text-primary px-3 fs-6" role="menuitem" onclick="shareOn('whatsapp')"> 
456                                                <svg class="icon icon-primary" aria-hidden="true"> 
457                                                    <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-whatsapp"></use> 
458                                                </svg> 
459                                                <span>Whatsapp</span> 
460                                            </button> 
461                                        </li> 
462                                    </ul> 
463                                </div> 
464                            </div> 
465                        </div> 
466 
467                        <div class="dropdown"> 
468                            <button 
469                                aria-label="vedi azioni da compiere sulla pagina" 
470                                class="btn btn-dropdown dropdown-toggle text-decoration-underline d-inline-flex align-items-center fs-0" 
471                                type="button" 
472                                id="viewActions" 
473                                data-bs-toggle="dropdown" 
474                                aria-haspopup="true" 
475                                aria-expanded="false" 
476
477                                <svg class="icon icon-primary" aria-hidden="true"> 
478                                    <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-more-items"></use> 
479                                </svg> 
480                                <small><@liferay.language key="actions" /></small> 
481                            </button> 
482                            <div class="dropdown-menu shadow-lg" aria-labelledby="viewActions"> 
483                                <div class="link-list-wrapper"> 
484                                    <ul class="link-list" role="menu"> 
485                                        <li role="none"> 
486                                            <button class="list-item px-3 fs-6 text-primary" onclick="window.print()" role="menuitem"> 
487                                                <svg class="icon icon-primary" aria-hidden="true"> 
488                                                    <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-print"></use> 
489                                                </svg> 
490                                                <span><@liferay.language key="print" /></span> 
491                                            </button> 
492                                        </li> 
493                                        <li role="none"> 
494                                            <a class="list-item mail-anchor px-3 fs-6" href="mailto:" role="menuitem"> 
495                                                <svg class="icon icon-primary" aria-hidden="true"> 
496                                                    <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-mail"></use> 
497                                                </svg> 
498                                                <span><@liferay.language key="send" /></span> 
499                                            </a> 
500                                        </li> 
501                                    </ul> 
502                                </div> 
503                            </div> 
504                        </div> 
505 
506                        <#list argomenti> 
507                        <div class="mt-4 mb-3"> 
508                            <span class="text-paragraph-small fw-semibold"><@liferay.language key="topics" />:</span> 
509                            <ul class="d-flex flex-wrap gap-2 mt-10 mb-3"> 
510                                <#items as argomento> 
511                                <li> 
512                                    <a href="${argomento.url}" class="chip chip-simple"> 
513                                        <span class="chip-label"> 
514                                            ${argomento.name} 
515                                        </span> 
516                                    </a> 
517                                </li> 
518                                </#items> 
519 
520                            </ul> 
521                        </div> 
522                        </#list> 
523 
524                    </div> 
525                </div> 
526 
527                <div class="row mt-5 mb-4"> 
528 
529                    <#if (IdentificativoDelDocumento.getData())?has_content> 
530                    <div class="col col-lg-4"> 
531                        <small><@liferay.language key="identifier" />:</small> 
532                        <p class="fw-semibold font-monospace">${IdentificativoDelDocumento.getData()}</p> 
533                    </div> 
534                    </#if> 
535 
536                    <#if data_inizio !=""> 
537                    <div class="col col-lg-4"> 
538                        <small><@liferay.language key="start-date" />:</small> 
539                        <p class="fw-semibold font-monospace">${data_inizio}</p> 
540                    </div> 
541                    </#if> 
542 
543                    <#if data_fine !=""> 
544                    <div class="col col-lg-4"> 
545                        <small><@liferay.language key="end-date" />:</small> 
546                        <p class="fw-semibold font-monospace">${data_fine}</p> 
547                    </div> 
548                    </#if> 
549 
550                </div> 
551            </div> 
552        </div> 
553    </div> 
554</div> 
555 
556<#if Immagine.getData()?? && Immagine.getData() !=""> 
557    <#assign immagineHero_alt = Immagine.getAttribute("alt")!"" /> 
558    <div class="container-fluid my-3"> 
559        <div class="row"> 
560            <figure class="figure px-0 img-full"> 
561                <img class="figure-img img-fluid" alt="${immagineHero_alt!}" data-fileentryid="${Immagine.getAttribute('fileEntryId')}" src="${Immagine.getData()}" /> 
562                <#if immagineHero_alt != ""> 
563                <figcaption class="figure-caption text-center pt-3"> 
564                    ${immagineHero_alt} 
565                </figcaption> 
566                </#if> 
567            </figure> 
568        </div> 
569    </div> 
570</#if> 
571 
572<div class="container"> 
573    <div class="row border-top border-light row-column-menu-left pb-4 pb-lg-80"> 
574        <div class="col-12 col-lg-3 mb-4 border-col"> 
575            <div class="cmp-navscroll sticky-top" aria-labelledby="accordion-title-one"> 
576                <nav class="navbar it-navscroll-wrapper navbar-expand-lg" aria-label="${languageUtil.get(locale, 'page-index')}" data-bs-navscroll=""> 
577                    <div class="navbar-custom" id="navbarNavProgress"> 
578                        <div class="menu-wrapper"> 
579                            <div class="link-list-wrapper"> 
580                                <div class="accordion"> 
581                                    <div class="accordion-item"> 
582                                        <span class="accordion-header" id="accordion-title-one"> 
583                                            <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"> 
584                                                <@liferay.language key="page-index" /> 
585                                                <svg class="icon icon-xs right" viewBox="0 0 24 24"> 
586                                                    <path d="M11.6 15.4L6 9.8l.7-.8 4.9 4.9L16.5 9l.7.8z"></path> 
587                                                </svg> 
588                                            </button> 
589                                        </span> 
590                                        <div class="progress"> 
591                                            <div class="progress-bar it-navscroll-progressbar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;" aria-label="Progress bar"></div> 
592                                        </div> 
593                                        <div id="collapse-one" class="accordion-collapse collapse show" role="region" aria-labelledby="accordion-title-one"> 
594                                            <div class="accordion-body"> 
595                                                <ul class="link-list" data-element="page-index"> 
596 
597                                                    <#if DescrizioneEstesa.getData()?has_content> 
598                                                        <@navigatorLink sectionId="description" title="${languageUtil.get(locale, 'description')}" /> 
599                                                    </#if> 
600 
601                                                    <#if URLDocumento.getData()?has_content> 
602                                                        <@navigatorLink sectionId="document" title="${languageUtil.get(locale, 'document')}" /> 
603                                                    </#if> 
604 
605                                                    <#if immagini_galleria?size gt 0> 
606                                                        <@navigatorLink sectionId="image-gallery" title="${languageUtil.get(locale, 'image-gallery')}" /> 
607                                                    </#if> 
608 
609                                                    <#if UfficioResponsabile??> 
610                                                        <@navigatorLink sectionId="office" title="${languageUtil.get(locale, 'chief-office')}" /> 
611                                                    </#if> 
612 
613                                                    <#if Autori.getData()?has_content> 
614                                                        <@navigatorLink sectionId="authors" title="${languageUtil.get(locale, 'author')}" /> 
615                                                    </#if> 
616 
617                                                    <#if FormatiDisponibili.getData()?has_content> 
618                                                        <@navigatorLink sectionId="format" title="${languageUtil.get(locale, 'available-formats')}" /> 
619                                                    </#if> 
620 
621                                                    <#if tipiDocumento?size gt 0> 
622                                                      <@navigatorLink sectionId="document-type" title="${languageUtil.get(locale, 'document-type')}" /> 
623                                                    </#if> 
624 
625                                                    <#if licenza?has_content> 
626                                                        <@navigatorLink sectionId="distribution-license" title="${languageUtil.get(locale, 'distribution-license')}" /> 
627                                                    </#if> 
628 
629                                                    <#if servizi_collegati?has_content> 
630                                                        <@navigatorLink sectionId="related-services" title="${languageUtil.get(locale, 'related-services')}" /> 
631                                                    </#if> 
632 
633                                                    <#if documenti_collegati?has_content> 
634                                                        <@navigatorLink sectionId="attachments" title="${languageUtil.get(locale, 'related-documents')}" /> 
635                                                    </#if> 
636 
637                                                    <#if (RiferimentiNormativi.getData())?has_content> 
638                                                        <@navigatorLink sectionId="law-requirements" title="${languageUtil.get(locale, 'normative-requirements')}" /> 
639                                                    </#if> 
640 
641                                                    <#if (UlterioriInformazioni.getData())?has_content> 
642                                                        <@navigatorLink sectionId="more-info" title="${languageUtil.get(locale, 'additional-information')}" /> 
643                                                    </#if> 
644 
645                                                </ul> 
646                                            </div> 
647                                        </div> 
648                                    </div> 
649                                </div> 
650                            </div> 
651                        </div> 
652                    </div> 
653                </nav> 
654            </div> 
655        </div> 
656        <div class="col-12 col-lg-8 offset-lg-1"> 
657            <div class="it-page-sections-container unstiled-lists-wrapper"> 
658 
659                <#if DescrizioneEstesa.getData()?has_content> 
660                <section class="it-page-section mb-30 pt-4" id="description"> 
661                    <h2 class="title-xxlarge mb-3"><@liferay.language key="description" /></h2> 
662                    <div class="richtext-wrapper lora"> 
663                        <p> 
664                            ${DescrizioneEstesa.getData()} 
665                        </p> 
666                    </div> 
667                </section> 
668                </#if> 
669 
670                <#if URLDocumento.getData()?has_content> 
671                    <section class="it-page-section mb-30 has-bg-grey p-4" id="document"> 
672                        <h2 class="title-xxlarge mb-3"><@liferay.language key="document" /></h2> 
673                        <div class="d-flex align-items-center p-3 shadow rounded bg-white"> 
674                            <svg class="icon icon-primary icon-lh me-2" aria-hidden="true" viewBox="0 0 24 24"> 
675                                <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" /> 
676                            </svg> 
677                            <a class="text-decoration_none fw-semibold t-primary" href="${URLDocumento.getData()}" target="_blank" rel="noopener noreferrer"> 
678                                ${Titolo.getData()} 
679                            </a> 
680                        </div> 
681                    </section> 
682                </#if> 
683 
684                <#list immagini_galleria> 
685                <section class="it-page-section mb-30" id="image-gallery"> 
686                    <h2 class="title-xxlarge mb-3"><@liferay.language key="image-gallery" /></h2> 
687                    <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"> 
688                        <div class="splide__track" id="splide01-track" style="padding-left: 0px; padding-right: 0px;"> 
689                            <ul class="splide__list it-carousel-all py-4" id="splide01-list" style="transform: translateX(0px);"> 
690                                <#items as img> 
691                                <li class="splide__slide is-active is-visible h-100" id="splide01-slide0${img?counter}" style="margin-right: 24px; width: calc(calc(100% / 3) - 16px);" tabindex="0" data-focus-mouse="false"> 
692                                    <div class="it-single-slide-wrapper"> 
693                                        <figure> 
694                                            <img src="${img.src}" alt="${img.alt}" class="img-fluid" style="width: 100%; aspect-ratio: 1/1; object-fit: cover; object-position: center;" loading="lazy"> 
695                                            <figcaption class="figure-caption mt-2"> 
696                                                ${img.alt} 
697                                            </figcaption> 
698                                        </figure> 
699                                    </div> 
700                                </li> 
701                                </#items> 
702                            </ul> 
703                        </div> 
704                    </div> 
705                </section> 
706                </#list> 
707 
708                <#if UfficioResponsabile??> 
709                    <section class="it-page-section mb-30 pt-4" id="office"> 
710                        <h2 class="title-xxlarge mb-3"><@liferay.language key="chief-office" /></h2> 
711                        <div class="card card-teaser card-teaser-info shadow-sm rounded d-flex align-items-center p-3 p-lg-4"> 
712                            <div class="card-body"> 
713                                <h4 class="mb-1 title-small-semi-bold-medium"> 
714                                    <a href="/portal/web/guest/-/${UfficioResponsabile.getUrlTitle()}" class="card-title text-paragraph-regular-medium-semi mb-3 primary-color-b3"> 
715                                        ${nome_UO} 
716                                    </a> 
717                                </h4> 
718                                <div class="card-text"> 
719                                    <p class="u-main-black"> 
720                                        ${indirizzo_UO} 
721                                    </p> 
722                                </div> 
723                            </div> 
724                            <#if urlImmagine_UO?has_content> 
725                            <a href="${urlImmagine_UO}"> 
726                                <div class="avatar size-xl"> 
727                                    <img src="${urlImmagine_UO}" alt="${immagine_UO.description!'Immagine unità organizzativa'}"> 
728                                </div> 
729                            </a> 
730                            </#if> 
731                        </div> 
732                    </section> 
733                </#if> 
734 
735                <#list autori> 
736                <section class="it-page-section mb-30 pt-4" id="authors"> 
737                    <h2 class="title-xxlarge mb-3"><@liferay.language key="author" /></h2> 
738                    <#items as persona> 
739                    <div class="col-12 col-lg-6 p-0 pe-3 mb-3"> 
740                        <div class="d-flex pe-0 shadow-sm rounded" style="height: 120px;"> 
741                            <div class="col-12 col-lg-9 pt-3"> 
742                                <a href="${persona.urlPagina}" class="card-title text-paragraph-regular-medium-semi mb-1 primary-color-b3"> 
743                                    ${persona.nome} ${persona.cognome} 
744                                </a> 
745                                <#if persona.incarico?has_content> 
746                                <div class="card-text"> 
747                                    ${persona.incarico} 
748                                </div> 
749                                </#if> 
750                            </div> 
751                            <#if persona.urlImmagine !=""> 
752                            <a href="${persona.urlPagina}" class="d-none d-lg-block col-lg-3 p-0"> 
753                                <img 
754                                    class="w-100 h-100" 
755                                    style="object-fit: cover; object-position: center;" 
756                                    alt="${persona.immagine.alt!"Immagine componente staff dell'unità organizzativa"}" 
757                                    src="${persona.urlImmagine}" 
758                                /> 
759                            </a> 
760                            </#if> 
761                        </div> 
762                    </div> 
763                    </#items> 
764                </section> 
765                </#list> 
766 
767                <#if FormatiDisponibili.getData()?has_content> 
768                    <section class="it-page-section mb-30 pt-4" id="format"> 
769                        <h2 class="title-xxlarge mb-3"><@liferay.language key="available-formats" /></h2> 
770                        <div class="richtext-wrapper lora"> 
771                            ${FormatiDisponibili.getData()} 
772                        </div> 
773                    </section> 
774                </#if> 
775 
776                <#list tipiDocumento> 
777                <section class="it-page-section mb-30 pt-4" id="document-type"> 
778                    <h2 class="title-xxlarge mb-3"><@liferay.language key="document-type" /></h2> 
779                    <ul class="d-flex flex-wrap gap-2 mt-10 mb-3"> 
780                        <#items as tipo> 
781                        <li> 
782                            <a href="${tipo.url}" class="chip chip-simple"> 
783                                <span class="chip-label"> 
784                                    ${tipo.name} 
785                                </span> 
786                            </a> 
787                        </li> 
788                        </#items> 
789                    </ul> 
790                </section> 
791                </#list> 
792 
793                <#if licenza?has_content> 
794                    <section class="it-page-section mb-30 pt-4" id="distribution-license"> 
795                        <h2 class="title-xxlarge mb-3"><@liferay.language key="distribution-license" /></h2> 
796                        <div class="richtext-wrapper lora"> 
797                            ${licenza} 
798                        </div> 
799                    </section> 
800                </#if> 
801 
802                <#list servizi_collegati> 
803                    <section class="it-page-section mb-30 pt-4" id="related-services"> 
804                        <h2 class="title-xxlarge mb-3"><@liferay.language key="related-services" /></h2> 
805                        <div class="row"> 
806                            <#items as servizio> 
807                            <div class="col-12 col-lg-6 p-0 pe-3 mb-3"> 
808                                <div class="p-3 shadow-sm rounded h-100"> 
809                                    <div class="category-top fw-semibold t-primary text-uppercase" style="font-size: .8rem;"> 
810                                        <#list servizio.categorie as categoria> 
811                                        <div> 
812                                            <div class="category"> 
813                                                ${categoria.name} 
814                                            </div> 
815                                        </div> 
816                                        </#list> 
817                                    </div> 
818                                    <div class="col-12 col-lg-9 p-0"> 
819                                        <a 
820                                            href="${servizio.url}" 
821                                            class="card-title text-paragraph-regular-medium-semi mb-1 primary-color-b3" 
822
823                                            ${servizio.nome} 
824                                        </a> 
825                                        <div class="card-text"> 
826                                            ${servizio.descrizione} 
827                                        </div> 
828                                    </div> 
829                                </div> 
830                            </div> 
831                            </#items> 
832                        </div> 
833                    </section> 
834                </#list> 
835 
836                <#list documenti_collegati> 
837                    <section class="it-page-section mb-30 pt-4" id="attachments"> 
838                        <h2 class="title-xxlarge mb-3"><@liferay.language key="related-documents" /></h2> 
839                        <div class="col-12 col-md-6 shadow p-3 mb-4 rounded"> 
840                            <#items as allegato> 
841                            <div class="d-flex align-items-center${allegato?has_next?string(' mb-3', '')}"> 
842                                <svg class="icon icon-primary icon-lh me-2" aria-hidden="true" viewBox="0 0 24 24"> 
843                                    <path d="M21,3v6h-1V4.7l-7.6,7.7l-0.8-0.8L19.3,4H15V3H21z M17,19.5c0,0.3-0.2,0.5-0.5,0.5h-12C4.2,20,4,19.8,4,19.5v-12C4,7.2,4.2,7,4.5,7H12V6H4.5C3.7,6,3,6.7,3,7.5v12C3,20.3,3.7,21,4.5,21h12c0.8,0,1.5-0.7,1.5-1.5V12h-1V19.5z" /> 
844                                </svg> 
845                                <a class="text-decoration_none fw-semibold t-primary" href="${allegato.url}"> 
846                                    ${allegato.nome} 
847                                </a> 
848                            </div> 
849                            </#items> 
850                        </div> 
851                    </section> 
852                </#list> 
853 
854                <#if (RiferimentiNormativi.getData())?has_content> 
855                    <section class="it-page-section mb-30 pt-4" id="law-requirements"> 
856                        <h2 class="title-xxlarge mb-3"><@liferay.language key="normative-requirements" /></h2> 
857                        <div class="richtext-wrapper lora"> 
858                            <p> 
859                                ${RiferimentiNormativi.getData()} 
860                            </p> 
861                        </div> 
862                    </section> 
863                </#if> 
864 
865                <#if (UlterioriInformazioni.getData())?has_content> 
866                    <section class="it-page-section mb-30 pt-4" id="more-info"> 
867                        <h2 class="title-xxlarge mb-3"><@liferay.language key="additional-information" /></h2> 
868                        <div class="richtext-wrapper lora"> 
869                            <p> 
870                                ${UlterioriInformazioni.getData()} 
871                            </p> 
872                        </div> 
873                    </section> 
874                </#if> 
875 
876            </div> 
877 
878            <div class="mt-3"> 
879                <#-- DATA ULTIMA MODIFICA --> 
880                <#assign 
881                    modifiedDate = dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", .vars['reserved-article-modified-date'].data, localeUtil.getDefault()) 
882                    displayModifiedDate = modifiedDate?datetime?string.short 
883                /> 
884 
885                <p class="text-paragraph-small mb-0 lora"> 
886                    <span class="fw-semibold"><@liferay.language key="last-update-date" />: </span> 
887                    <span> 
888                        ${displayModifiedDate} 
889                    </span> 
890                </p> 
891            </div> 
892 
893        </div> 
894    </div> 
895</div> 
896 
897<script defer> 
898    document.querySelectorAll(".mail-anchor").forEach(anchor => anchor.href = "mailto:&subject=${Titolo.getData()}&body=" + window.location.href); 
899 
900    function shareOn(type) { 
901        let articleUrl = window.location.href; 
902        const mapping = { 
903            "facebook": "https://facebook.com/sharer/sharer.php?u=" + articleUrl, 
904            "twitter": "https://twitter.com/intent/tweet/?text=" + articleUrl, 
905            "linkedin": "http://www.linkedin.com/sharing/share-offsite/?url=" + articleUrl, 
906            "whatsapp": "whatsapp://send?text=" + articleUrl 
907
908 
909        window.open(mapping[type], "_blank"); 
910        return 
911
912 
913    function bringMeTo(id) { 
914        document.getElementById(id).scrollIntoView({behavior: 'smooth'}); 
915
916 
917 
918    // Function to dynamically load a script 
919    function loadScript(src) { 
920        return new Promise((resolve, reject) => { 
921            const script = document.createElement('script'); 
922            script.src = src; 
923            script.onload = resolve; 
924            script.onerror = reject; 
925            document.head.appendChild(script); 
926        }); 
927
928 
929    // Initialize all Splide elements on the page 
930    async function initializeSplides() { 
931        const splideElements = document.querySelectorAll('.splide'); 
932 
933        // Check if there are any Splide elements on the page 
934        if (splideElements.length === 0) { 
935            return; 
936
937 
938        // Dynamically load Splide.js 
939        try { 
940            await loadScript('https://cdn.jsdelivr.net/npm/@splidejs/splide/dist/js/splide.min.js'); 
941 
942            // Initialize each Splide element 
943            splideElements.forEach((splideElement) => { 
944                // Check if Splide is already initialized for this element 
945                if (splideElement.classList.contains('is-initialized')) { 
946                    return; 
947
948 
949                // Initialize Splide 
950                const splide = new Splide(splideElement, { 
951                    type: 'slide', 
952                    perPage: 3, 
953                    gap: 24, 
954                    padding: { left: 0, right: 0 }, 
955                    arrows: false, 
956                    breakpoints: { 
957                        768: { 
958                            perPage: 1, 
959                            gap: 24, 
960                            padding: { left: 0, right: 0 }, 
961                            arrows: false, 
962                        }, 
963                        992: { 
964                            perPage: 2, 
965                            gap: 24, 
966                            padding: { left: 40, right: 40 }, 
967                            arrows: false, 
968                        }, 
969                    }, 
970                }); 
971 
972                splide.mount(); 
973 
974                // Mark Splide as initialized 
975                splideElement.classList.add('is-initialized'); 
976            }); 
977        } catch (error) { 
978            console.error("Failed to load Splide.js", error); 
979
980
981 
982    // Run the initializer after a 3-second delay 
983    setTimeout(() => { 
984        initializeSplides(); 
985    }, 3000); 
986</script> 
987 
988<#macro navigatorLink sectionId title> 
989<#local desc = "" /> 
990 
991<#if title?? && title?has_content> 
992    <#local desc = title /> 
993<#else> 
994    <#local desc = sectionId /> 
995</#if> 
996 
997<li class="nav-item"> 
998    <a 
999        class="nav-link active" 
1000        onclick="bringMeTo('${sectionId}')" 
1001        role="button" 
1002        aria-label="${languageUtil.get(locale, 'go-to-section')}: ${title}" 
1003
1004        <span class="title-medium">${title}</span> 
1005    </a> 
1006</li> 
1007</#macro>