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@246a2f30"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: paginaPadre = LayoutLocalService.getL...  [in template "20095#20121#35034" at line 23, column 5]
----
1<#--  V3.4  --> 
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_evento = assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle",articleResourcePK) 
16    AssetVocabularyLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetVocabularyLocalServiceUtil"] 
17/> 
18 
19<#setting locale = themeDisplay.getLocale() /> 
20 
21<#-- gestione dei breadcrumbs --> 
22<#assign 
23    paginaPadre = LayoutLocalService.getLayout(groupId, PaginaPadre.getData()?eval.privateLayout, PaginaPadre.getData()?eval.layoutId?number) 
24    ancestors = paginaPadre.getAncestors() 
25    sorted_ancestors = [] 
26/> 
27 
28<#list ancestors as parente> 
29    <#assign 
30        sorted_ancestors += 
31        [{ 
32            "name": parente.getName(themeDisplay.getLanguageId()), 
33            "ancestors": parente.getAncestors()?size, 
34            "data": parente 
35        }] 
36    /> 
37</#list> 
38 
39<div class="container finmatica-breadcrumb-container mb-4"> 
40    <div class="row justify-content-center"> 
41        <div class="col-12 col-lg-10"> 
42            <div class="cmp-breadcrumbs" role="navigation"> 
43                <nav class="breadcrumb-container" aria-label="breadcrumb"> 
44                    <ol class="breadcrumb p-0" data-element="breadcrumb"> 
45                        <li class="breadcrumb-item"><a 
46                                href="${themeDisplay.getThemeSetting('Home URL')}"> 
47                                <span class="breadcrumb-text-truncate">Home</span> 
48                            </a> 
49                            <span class="separator">/</span> 
50                        </li> 
51                        <#list sorted_ancestors?sort_by("ancestors") as ancestor> 
52                        <li class="breadcrumb-item"><a 
53                                href="/portal${ancestor.data.getFriendlyURL()}"> 
54                                <span class="breadcrumb-text-truncate"> 
55                                    ${ancestor.name} 
56                                </span> 
57                            </a> 
58                            <span class="separator">/</span> 
59                        </li> 
60                        </#list> 
61                        <li class="breadcrumb-item"><a 
62                                href="/portal${paginaPadre.getFriendlyURL()}"> 
63                                <span class="breadcrumb-text-truncate"> 
64                                    ${paginaPadre.getName(themeDisplay.getLanguageId())} 
65                                </span> 
66                            </a> 
67                            <span class="separator">/</span> 
68                        </li> 
69                        <li class="breadcrumb-item">${Titolo.getData()}</li> 
70                    </ol> 
71                </nav> 
72            </div> 
73        </div> 
74    </div> 
75</div> 
76 
77<#-- GET BOOLEANI --> 
78<#assign 
79    has_photo_gallery = GalleriaDiImmagini.getData()?has_content 
80    has_video_gallery = GalleriaDiVideo.getData()?has_content 
81    has_media =  has_photo_gallery || has_video_gallery 
82    has_evento_genitore = jsonFactoryUtil.createJSONObject(EventoGenitore.getData())?eval?has_content 
83    has_appuntamenti = Appuntamenti.getData()?has_content 
84    allegati = [] 
85    immagini_galleria = [] 
86/> 
87 
88<#-- GET TIPO EVENTO E ARGOMENTI --> 
89<#assign 
90    tipo_evento = [] 
91    argomenti = [] 
92/> 
93<#list categorie_evento as categoryEntry> 
94    <#assign 
95        vocabulary = AssetVocabularyLocalServiceUtil.getVocabulary(categoryEntry.getVocabularyId()) 
96        className = ClassNameService.fetchClassName("com.liferay.asset.kernel.model.AssetCategory") 
97        friendlyUrlEntry = FriendlyURLEntryLocalService.getMainFriendlyURLEntry(className.getClassNameId(), categoryEntry.categoryId) 
98        friendlyUrlList = FriendlyURLEntryLocalService.getFriendlyURLEntryLocalizations(friendlyUrlEntry.friendlyURLEntryId) 
99        cat_name = categoryEntry.name 
100        cat_localized_name = categoryEntry.getTitle(themeDisplay.getLocale(), true), 
101        cat_url = friendlyUrlList[0].urlTitle 
102    /> 
103    <#assign vocabulary = AssetVocabularyLocalServiceUtil.getVocabulary(categoryEntry.getVocabularyId()) /> 
104    <#if vocabulary.name == "tassonomia argomento"> 
105        <#assign 
106            argomenti += 
107            [{ 
108                "name": cat_localized_name, 
109                "url": "/portal/web/guest/${cat_url}" 
110            }] 
111        /> 
112 
113    <#elseif vocabulary.name == "tassonomia tipo di evento" || vocabulary.getDescription() == "tipo evento" /> 
114        <#assign tipo_evento += [ cat_localized_name ] /> 
115    </#if> 
116</#list> 
117 
118<#assign has_argomenti = argomenti?size gt 0 /> 
119 
120<#-- GET ALLEGATI --> 
121<#if Allegati.getSiblings()?has_content> 
122    <#list Allegati.getSiblings() as cur_allegato> 
123        <#if cur_allegato.File.getData()?has_content> 
124            <#assign 
125                url_allegato = "" 
126                nome_allegato = "" 
127                allegato_data = jsonFactoryUtil.createJSONObject(cur_allegato.File.data) 
128                url_allegato = cur_allegato.File.getData() 
129                nome_allegato = cur_allegato.Etichetta.getData()?has_content?string("${cur_allegato.Etichetta.getData()}", "${cur_allegato.File.getData()}" ) 
130                allegati += 
131                [{ 
132                    "url": url_allegato, 
133                    "nome": nome_allegato 
134                }] 
135            /> 
136        </#if> 
137    </#list> 
138</#if> 
139 
140<#if has_photo_gallery> 
141    <#list GalleriaDiImmagini.getSiblings() as cur_GalleriaDiImmagini> 
142        <#if cur_GalleriaDiImmagini.getData()?? && cur_GalleriaDiImmagini.getData() != ""> 
143            <#assign 
144                immagini_galleria += 
145                [{ 
146                    "alt": cur_GalleriaDiImmagini.getAttribute("alt")!"", 
147                    "fileentryid": cur_GalleriaDiImmagini.getAttribute("fileEntryId"), 
148                    "src": cur_GalleriaDiImmagini.getData() 
149                }] 
150            /> 
151        </#if> 
152    </#list> 
153</#if> 
154 
155<#if has_evento_genitore> 
156    <#assign 
157        evento_genitore_data = jsonFactoryUtil.createJSONObject(EventoGenitore.getData()) 
158        tipi_evento_genitore = [] 
159        relatedGenitori = JournalArticleLocalService.getArticlesByResourcePrimKey(evento_genitore_data.classPK?number) 
160    /> 
161    <#if relatedGenitori?? && relatedGenitori?size gt 0> 
162        <#assign 
163            relatedGenitore = relatedGenitori[0] 
164            document = relatedGenitore.getDocumentByLocale(themeDisplay.getLocale()) 
165            rootElement = document.getRootElement() 
166            url_genitore = "/portal/-/${relatedGenitore.getUrlTitle()}" 
167            nome_genitore = "" 
168            descrizione_genitore = "" 
169            immagine_genitore = "" 
170            competenze_genitore = "" 
171            data_inizio_genitore = "" 
172            contatti_genitore = [] 
173            evento_genitore_categories = assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle", evento_genitore_data.classPK?number) 
174        /> 
175        <#list evento_genitore_categories as categoryEntry> 
176            <#assign 
177                vocabulary = AssetVocabularyLocalServiceUtil.getVocabulary(categoryEntry.getVocabularyId()) 
178                className = ClassNameService.fetchClassName("com.liferay.asset.kernel.model.AssetCategory") 
179                friendlyUrlEntry = FriendlyURLEntryLocalService.getMainFriendlyURLEntry(className.getClassNameId(), categoryEntry.categoryId) 
180                friendlyUrlList = FriendlyURLEntryLocalService.getFriendlyURLEntryLocalizations(friendlyUrlEntry.friendlyURLEntryId) 
181                cat_name = categoryEntry.name 
182                cat_localized_name = categoryEntry.getTitle(themeDisplay.getLocale(), true), 
183                cat_url = friendlyUrlList[0].urlTitle 
184            /> 
185            <#if 
186                vocabulary.name == "tassonomia tipo di evento" 
187                || vocabulary.getDescription() == "tipo evento" 
188
189                <#assign tipi_evento_genitore += [ cat_localized_name ] /> 
190            </#if> 
191        </#list> 
192 
193        <#if rootElement.elements()?has_content> 
194            <#list rootElement.elements() as dynamicElement> 
195                <#if dynamicElement.attributeValue("field-reference") == "Titolo"> 
196                    <#assign nome_genitore = dynamicElement.element("dynamic-content").getText() /> 
197                <#elseif  dynamicElement.attributeValue("field-reference") == "DescrizioneBreve"> 
198                    <#assign descrizione_genitore = dynamicElement.element("dynamic-content").getText() /> 
199                <#elseif  dynamicElement.attributeValue("field-reference") == "DataInizio"> 
200                    <#assign data_inizio_genitore = getterUtil.getString(dynamicElement.element("dynamic-content").getData())?datetime("yyyy-MM-dd HH:mm")?string["dd/MM/yyyy"] /> 
201                    <#assign data_inizio_genitore_day = getterUtil.getString(dynamicElement.element("dynamic-content").getData())?datetime("yyyy-MM-dd HH:mm")?string["dd"] /> 
202                    <#assign data_inizio_genitore_month = getterUtil.getString(dynamicElement.element("dynamic-content").getData())?datetime("yyyy-MM-dd HH:mm")?string["MMMM"] /> 
203                <#elseif dynamicElement.attributeValue("field-reference") == "Immagine"> 
204                    <#assign immagine_genitore = dynamicElement.element("dynamic-content").getText() /> 
205                    <#if immagine_genitore?has_content> 
206                        <#assign immagine_genitore = jsonFactoryUtil.createJSONObject(immagine_genitore) /> 
207                        <#if immagine_genitore?has_content> 
208                            <#assign immagine_genitore = immagine_genitore?eval /> 
209                        </#if> 
210                    </#if> 
211                <#elseif dynamicElement.attributeValue("field-reference") == "Competenze"> 
212                    <#assign competenze_genitore = dynamicElement.element("dynamic-content").getText() /> 
213                <#elseif dynamicElement.attributeValue("field-reference") == "Contatti"> 
214                    <#assign 
215                        contatti_genitore_data = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData()) 
216                        relatedContatti = JournalArticleLocalService.getArticlesByResourcePrimKey(contatti_UO_data.classPK?number) 
217                        tipo_contatto = "" 
218                        valore_contatto = "" 
219                        categorie_contatti = assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle",contatti_UO_data.classPK?number) 
220                        relatedContatto = relatedContatti[0] 
221                        document = relatedContatto.getDocumentByLocale(themeDisplay.getLocale()) 
222                        rootElement = document.getRootElement() 
223                    /> 
224 
225                    <#list categorie_contatti as categoryEntry> 
226                        <#assign 
227                            vocabulary = AssetVocabularyLocalServiceUtil.getVocabulary(categoryEntry.getVocabularyId()) 
228                            className = ClassNameService.fetchClassName("com.liferay.asset.kernel.model.AssetCategory") 
229                            friendlyUrlEntry = FriendlyURLEntryLocalService.getMainFriendlyURLEntry(className.getClassNameId(), categoryEntry.categoryId) 
230                            friendlyUrlList = FriendlyURLEntryLocalService.getFriendlyURLEntryLocalizations(friendlyUrlEntry.friendlyURLEntryId) 
231                            cat_name = categoryEntry.name 
232                            cat_localized_name = categoryEntry.getTitle(themeDisplay.getLocale(), true), 
233                            cat_url = friendlyUrlList[0].urlTitle 
234                        /> 
235                        <#if categoryEntry.name?lower_case == "url"> 
236                            <#assign tipo_contatto = "${languageUtil.get(locale, 'Sito-Web')}" /> 
237                        <#else> 
238                            <#assign tipo_contatto = cat_localized_name /> 
239                        </#if> 
240                    </#list> 
241 
242                    <#list rootElement.elements() as dynamicElement> 
243                        <#if dynamicElement.attributeValue("name") == "Valore"> 
244                            <#assign valore_contatto = dynamicElement.element("dynamic-content").getText()/> 
245                        </#if> 
246                    </#list> 
247 
248                    <#assign contatti_UO += [tipo_contatto?string, valore_contatto?string] /> 
249                </#if> 
250            </#list> 
251        </#if> 
252    </#if> 
253</#if> 
254 
255<#assign appuntamenti = [] /> 
256<#if Appuntamenti.getSiblings()?has_content> 
257    <#list Appuntamenti.getSiblings() as cur_Appuntamenti> 
258        <#assign 
259            evento_appuntamento_data = jsonFactoryUtil.createJSONObject(cur_Appuntamenti.getData()) 
260        /> 
261        <#if evento_appuntamento_data.classPK?has_content> 
262            <#assign 
263                tipi_evento_appuntamento = [] 
264                relatedAppuntamenti = JournalArticleLocalService.getArticlesByResourcePrimKey(evento_appuntamento_data.classPK?number) 
265                relatedAppuntamento = relatedAppuntamenti[0] 
266                document = relatedAppuntamento.getDocumentByLocale(themeDisplay.getLocale()) 
267                rootElement = document.getRootElement() 
268                url_appuntamento = "/portal/-/${relatedAppuntamento.getUrlTitle()}" 
269                nome_appuntamento = "" 
270                descrizione_appuntamento = "" 
271                immagine_appuntamento = "" 
272                data_inizio_appuntamento = "" 
273                evento_appuntamento_categories = assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle", evento_appuntamento_data.classPK?number) 
274            /> 
275            <#list evento_appuntamento_categories as categoryEntry> 
276            <#assign 
277                vocabulary = AssetVocabularyLocalServiceUtil.getVocabulary(categoryEntry.getVocabularyId()) 
278                className = ClassNameService.fetchClassName("com.liferay.asset.kernel.model.AssetCategory") 
279                friendlyUrlEntry = FriendlyURLEntryLocalService.getMainFriendlyURLEntry(className.getClassNameId(), categoryEntry.categoryId) 
280                friendlyUrlList = FriendlyURLEntryLocalService.getFriendlyURLEntryLocalizations(friendlyUrlEntry.friendlyURLEntryId) 
281                cat_name = categoryEntry.name 
282                cat_localized_name = categoryEntry.getTitle(themeDisplay.getLocale(), true), 
283                cat_url = friendlyUrlList[0].urlTitle 
284            /> 
285                <#if 
286                    vocabulary.name == "tassonomia tipo di evento" 
287                    || vocabulary.getDescription() == "tipo evento" 
288
289                    <#assign tipi_evento_appuntamento += [ cat_localized_name ] /> 
290                </#if> 
291            </#list> 
292 
293            <#if rootElement.elements()?has_content> 
294                <#list rootElement.elements() as dynamicElement> 
295                    <#if dynamicElement.attributeValue("field-reference") == "Titolo"> 
296                        <#assign nome_appuntamento = dynamicElement.element("dynamic-content").getText() /> 
297                    <#elseif  dynamicElement.attributeValue("field-reference") == "DescrizioneBreve"> 
298                        <#assign descrizione_appuntamento = dynamicElement.element("dynamic-content").getText() /> 
299                    <#elseif  dynamicElement.attributeValue("field-reference") == "DataInizio"> 
300                        <#assign data_inizio_appuntamento = getterUtil.getString(dynamicElement.element("dynamic-content").getData())?datetime("yyyy-MM-dd HH:mm")?string["dd/MM/yyyy"] /> 
301                        <#assign data_inizio_appuntamento_day = getterUtil.getString(dynamicElement.element("dynamic-content").getData())?datetime("yyyy-MM-dd HH:mm")?string["dd"] /> 
302                        <#assign data_inizio_appuntamento_month = getterUtil.getString(dynamicElement.element("dynamic-content").getData())?datetime("yyyy-MM-dd HH:mm")?string["MMMM"] /> 
303                    <#elseif dynamicElement.attributeValue("field-reference") == "Immagine"> 
304                        <#assign immagine_appuntamento = dynamicElement.element("dynamic-content").getText() /> 
305                        <#if immagine_appuntamento?has_content> 
306                            <#assign immagine_appuntamento = jsonFactoryUtil.createJSONObject(immagine_appuntamento) /> 
307                            <#if immagine_appuntamento?has_content> 
308                                <#assign immagine_appuntamento = immagine_appuntamento?eval /> 
309                            </#if> 
310                        </#if> 
311                    <#elseif dynamicElement.attributeValue("field-reference") == "Competenze"> 
312                        <#assign competenze_appuntamento = dynamicElement.element("dynamic-content").getText() /> 
313                    </#if> 
314                </#list> 
315                <#assign appuntamenti += 
316                [{ 
317                    "nome": nome_appuntamento, 
318                    "immagine": immagine_appuntamento, 
319                    "descrizione": descrizione_appuntamento, 
320                    "data_inizio": data_inizio_appuntamento, 
321                    "giorno": data_inizio_appuntamento_day, 
322                    "mese": data_inizio_appuntamento_month, 
323                    "tipi": tipi_evento_appuntamento, 
324                    "url": url_appuntamento 
325                }] /> 
326            </#if> 
327        </#if> 
328    </#list> 
329</#if> 
330 
331<#-- GET LUOGO_DATA --> 
332<#assign 
333    luogo_data = jsonFactoryUtil.createJSONObject(Luogo.getData()) 
334    has_luogo = luogo_data?eval?has_content 
335/> 
336 
337<#if has_luogo> 
338    <#assign relatedLuoghi = JournalArticleLocalService.getArticlesByResourcePrimKey(luogo_data.classPK?number) /> 
339    <#if relatedLuoghi?? && relatedLuoghi?size gt 0> 
340        <#assign 
341            relatedLuogo = relatedLuoghi[0] 
342            document = relatedLuogo.getDocumentByLocale(themeDisplay.getLocale()) 
343            rootElement = document.getRootElement() 
344            nome_luogo = "" 
345            url_luogo = "/portal/-/${relatedLuogo.getUrlTitle()}" 
346            indirizzo_luogo = "" 
347            orari_luogo = "" 
348            immagine_luogo = "" 
349            urlImmagine_luogo = "" 
350            has_immagine_luogo = false 
351        /> 
352        <#list rootElement.elements() as dynamicElement> 
353            <#if dynamicElement.attributeValue("field-reference") == "Titolo"> 
354                <#assign nome_luogo = dynamicElement.element("dynamic-content").getText() /> 
355            <#elseif dynamicElement.attributeValue("field-reference") == "Indirizzo"> 
356                <#assign indirizzo_luogo = dynamicElement.element("dynamic-content").getText() /> 
357            <#elseif dynamicElement.attributeValue("field-reference") == "OrarioPerIlPubblico"> 
358                <#if dynamicElement.element("dynamic-content")??> 
359                    <#assign orari_luogo = dynamicElement.element("dynamic-content").getText() /> 
360                </#if> 
361            <#elseif dynamicElement.attributeValue("field-reference") == "Immagine"> 
362                <#assign immagine_luogo = "" /> 
363                <#if dynamicElement.element("dynamic-content")??> 
364                    <#assign immagine_luogo = dynamicElement.element("dynamic-content").getText() /> 
365                    <#if immagine_luogo?has_content> 
366                        <#assign immagine_luogo = jsonFactoryUtil.createJSONObject(immagine_luogo) /> 
367                        <#if immagine_luogo?has_content && immagine_luogo.url?has_content> 
368                            <#assign 
369                                immagine_luogo = immagine_luogo?eval 
370                                has_immagine_luogo = immagine_luogo?has_content && immagine_luogo.url?has_content /> 
371                        <#else> 
372                            <#assign has_immagine_luogo = false /> 
373                        </#if> 
374                    </#if> 
375                </#if> 
376            </#if> 
377        </#list> 
378    </#if> 
379</#if> 
380<#-- GET DATI UO --> 
381<#assign 
382    data_UO = jsonFactoryUtil.createJSONObject(OrganizzatoDa.getData()) 
383    has_UO = data_UO?eval?has_content 
384/> 
385<#if has_UO> 
386    <#assign relatedArticles = JournalArticleLocalService.getArticlesByResourcePrimKey(data_UO.classPK?number) /> 
387    <#if relatedArticles?? && relatedArticles?size gt 0> 
388        <#assign relatedArticle = relatedArticles[0] /> 
389        <#if relatedArticles?? && relatedArticles?size gt 0> 
390            <#assign 
391                document = relatedArticle.getDocumentByLocale(themeDisplay.getLocale()) 
392                rootElement = document.getRootElement() 
393                url_UO = relatedArticle.getUrlTitle() 
394                nome_UO = "" 
395                descrizione_UO = "" 
396                immagine_UO = "" 
397                urlImmagine_UO = "" 
398                competenze_UO = "" 
399                indirizzo_UO = "" 
400                contatti_UO = [] 
401            /> 
402            <#if rootElement.elements()?has_content> 
403                <#list rootElement.elements() as dynamicElement> 
404                    <#if dynamicElement.attributeValue("field-reference") == "Titolo"> 
405                        <#assign nome_UO = dynamicElement.element("dynamic-content").getText() /> 
406                    <#elseif dynamicElement.attributeValue("field-reference") == "DescrizioneBreve"> 
407                        <#assign descrizione_UO = dynamicElement.element("dynamic-content").getText() /> 
408                    <#elseif dynamicElement.attributeValue("field-reference") == "Immagine"> 
409                        <#assign immagine_UO = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData()) /> 
410                        <#if immagine_UO.uuid?has_content> 
411                            <#assign urlImmagine_UO = "/portal/c/document_library/get_file?uuid=" + immagine_UO.uuid + "&amp;groupId=" + immagine_UO.groupId /> 
412                        </#if> 
413                    <#elseif dynamicElement.attributeValue("field-reference") == "Competenze"> 
414                        <#assign competenze_UO = dynamicElement.element("dynamic-content").getText() /> 
415                    <#elseif dynamicElement.attributeValue("field-reference") == "SedePrincipale"> 
416                        <#assign sede_UO_data = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData()) /> 
417                        <#if sede_UO_data.classPK??> 
418                            <#assign 
419                                relatedSedi = JournalArticleLocalService.getArticlesByResourcePrimKey(sede_UO_data.classPK?number) 
420                                relatedSede = relatedSedi[0] 
421                                document = relatedSede.getDocumentByLocale(themeDisplay.getLocale()) 
422                                rootElement = document.getRootElement() 
423                            /> 
424                            <#list rootElement.elements() as dynamicElement> 
425                                <#if dynamicElement.attributeValue("field-reference") == "Indirizzo"> 
426                                    <#assign indirizzo_UO = dynamicElement.element("dynamic-content").getText() /> 
427                                </#if> 
428                            </#list> 
429                        </#if> 
430                    <#elseif dynamicElement.attributeValue("field-reference") == "Contatti"> 
431                        <#assign 
432                            valore_contatto = "" 
433                            contatti_UO_data = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData()) 
434                            relatedContatti = JournalArticleLocalService.getArticlesByResourcePrimKey(contatti_UO_data.classPK?number) 
435                            relatedContatto = relatedContatti[0] 
436                            document = relatedContatto.getDocumentByLocale(themeDisplay.getLocale()) 
437                            rootElement = document.getRootElement() 
438                        /> 
439                        <#list rootElement.elements() as dynamicElement> 
440                            <#if dynamicElement.element("dynamic-content").getText()?has_content> 
441                                <#assign 
442                                    tipo_contatto = (dynamicElement.attributeValue("field-reference") == "URL" )?string("Sito Web", dynamicElement.attributeValue("field-reference")) 
443                                    contatti_UO += 
444                                    [{ 
445                                        "tipo": tipo_contatto, 
446                                        "valore": dynamicElement.element("dynamic-content").getText() 
447                                    }] 
448                                /> 
449                            </#if> 
450                        </#list> 
451                    </#if> 
452                </#list> 
453            </#if> 
454        </#if> 
455    </#if> 
456</#if> 
457 
458<#-- SEZIONE GET CONTATTI --> 
459<#assign 
460    contatti_wallet = [] 
461    contatti_data = jsonFactoryUtil.createJSONObject(PuntiDiContatto.getData()) 
462    has_contatti = contatti_data?eval?has_content 
463/> 
464<#if has_contatti> 
465    <#assign relatedArticles = JournalArticleLocalService.getArticlesByResourcePrimKey(contatti_data.classPK?number) /> 
466    <#if relatedArticles?? && relatedArticles?size gt 0> 
467        <#assign 
468            relatedArticle = relatedArticles[0] 
469            document = relatedArticle.getDocumentByLocale(themeDisplay.getLocale()) 
470            rootElement = document.getRootElement() 
471        /> 
472        <#list rootElement.elements() as dynamicElement> 
473            <#if dynamicElement.element("dynamic-content")?? && dynamicElement.element("dynamic-content").getText()?has_content> 
474                <#assign 
475                    tipo_contatto = (dynamicElement.attributeValue("field-reference") == "URL" )?string("Sito Web", dynamicElement.attributeValue("field-reference")) 
476                    contatti_wallet += 
477                    [{ 
478                        "tipo": tipo_contatto, 
479                        "valore": dynamicElement.element("dynamic-content").getText() 
480                    }] 
481                /> 
482            </#if> 
483        </#list> 
484    </#if> 
485</#if> 
486 
487<#assign parteciperanno = [] /> 
488<#if Parteciperanno.getData()?has_content> 
489    <#list Parteciperanno.getSiblings() as cur_Persone> 
490        <#assign 
491            cur_persona_data = jsonFactoryUtil.createJSONObject(cur_Persone.getData()) 
492            relatedPersone = JournalArticleLocalService.getArticlesByResourcePrimKey(cur_persona_data.classPK?number) 
493        /> 
494        <#if relatedPersone?? && relatedPersone?size gt 0> 
495            <#assign 
496                relatedPersona = relatedPersone[0] 
497                document = saxReaderUtil.read(relatedPersona.getContent()) 
498                rootElement = document.getRootElement() 
499                nome_persona = "" 
500                cognome_persona = "" 
501                immagine_persona = "" 
502                biografia = "" 
503                incarichi = [] 
504            /> 
505            <#list rootElement.elements() as dynamicElement> 
506                <#if dynamicElement.attributeValue("field-reference") == "Nome"> 
507                    <#assign nome_persona = dynamicElement.element("dynamic-content").getText() /> 
508                <#elseif dynamicElement.attributeValue("field-reference") == "Cognome"> 
509                    <#assign cognome_persona = dynamicElement.element("dynamic-content").getText() /> 
510                <#elseif dynamicElement.attributeValue("field-reference") == "Incarichi"> 
511                    <#assign 
512                        incarichi_data = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getText()) 
513                        has_incarichi = incarichi_data?eval?? && incarichi_data?eval?has_content 
514                    /> 
515 
516                    <#if has_incarichi> 
517                        <#assign 
518                            relatedIncarichi = JournalArticleLocalService.getArticlesByResourcePrimKey(incarichi_data.classPK?number) 
519                            relatedIncarico = relatedIncarichi[0] 
520                            document = saxReaderUtil.read(relatedIncarico.getContent()) 
521                            rootElement = document.getRootElement() 
522                        /> 
523                        <#list rootElement.elements() as dynamicElement> 
524                            <#if dynamicElement.attributeValue("field-reference") == "Titolo"> 
525                                <#assign incarichi += [ dynamicElement.element("dynamic-content").getText() ] /> 
526                            </#if> 
527                        </#list> 
528                    </#if> 
529 
530                <#elseif dynamicElement.attributeValue("field-reference") == "Biografia"> 
531                    <#if dynamicElement.element("dynamic-content")??> 
532                        <#assign biografia = dynamicElement.element("dynamic-content").getText() /> 
533                    </#if> 
534                <#elseif dynamicElement.attributeValue("field-reference") == "Immagine"> 
535                    <#assign immagine = dynamicElement.element("dynamic-content").getText() /> 
536                    <#if immagine?has_content> 
537                        <#assign immagine = jsonFactoryUtil.createJSONObject(immagine) /> 
538                        <#if immagine?has_content> 
539                            <#assign immagine = immagine?eval /> 
540                        </#if> 
541                    </#if> 
542                </#if> 
543            </#list> 
544            <#assign 
545                parteciperanno += 
546                [{ 
547                    "nome": nome_persona + " " + cognome_persona, 
548                    "url": "${cur_Persone.getFriendlyUrl()}", 
549                    "immagine": immagine, 
550                    "biografia": biografia, 
551                    "incarichi": unique_list(incarichi) 
552                }] 
553            /> 
554        </#if> 
555    </#list> 
556</#if> 
557<div class="container"> 
558    <div class="row justify-content-center"> 
559        <div class="col-12 col-lg-10"> 
560            <div class="cmp-heading pb-3 pb-lg-4"> 
561                <div class="row"> 
562                    <div class="col-lg-8 py-lg-2"> 
563                        <h1> 
564                            ${Titolo.getData()} 
565                        </h1> 
566                        <h2 class="visually-hidden"><@liferay.language key="announcement-details" /></h2> 
567                        <p> 
568                            ${Sottotitolo.getData()} 
569                        </p> 
570                        <div class="row mt-5 mb-4"> 
571 
572                        <#if (DataInizio.getData())??> 
573                        <#assign DataInizio_Data = getterUtil.getString(DataInizio.getData()) /> 
574                            <#if validator.isNotNull(DataInizio_Data)> 
575                            <div class="col-6"> 
576                                <small><@liferay.language key="event-start" />:</small> 
577                                <p class="fw-semibold font-monospace"> 
578                                    ${DataInizio_Data?datetime("yyyy-MM-dd HH:mm")?string.short} 
579                            </div> 
580                            </#if> 
581                        </#if> 
582 
583                        <#if (DataFine.getData())??> 
584                        <#assign DataFine_Data = getterUtil.getString(DataFine.getData()) /> 
585                            <#if validator.isNotNull(DataFine_Data)> 
586                            <div class="col-6"> 
587                                    <small><@liferay.language key="event-end" />:</small> 
588                                    <p class="fw-semibold font-monospace"> 
589                                        ${DataFine_Data?datetime("yyyy-MM-dd HH:mm")?string.short} 
590                                    </p> 
591                            </div> 
592                            </#if> 
593                        </#if> 
594                        </div> 
595                    </div> 
596 
597                    <div class="col-lg-3 offset-lg-1 mt-5 mt-lg-0"> 
598 
599                        <div class="dropdown" id="fallback-share"> 
600                            <button 
601                                aria-label="condividi sui social" 
602                                class="btn btn-dropdown dropdown-toggle text-decoration-underline d-inline-flex align-items-center fs-6 text-primary" 
603                                type="button" 
604                                id="shareActions" 
605                                data-bs-toggle="dropdown" 
606                                aria-haspopup="true" 
607                                aria-expanded="false" 
608
609                                <svg class="icon icon-primary" aria-hidden="true"> 
610                                    <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-share"></use> 
611                                </svg> 
612                                <small><@liferay.language key="share" /></small> 
613                            </button> 
614                            <div class="dropdown-menu shadow-lg" aria-labelledby="shareActions"> 
615                                <div class="link-list-wrapper"> 
616                                    <ul class="link-list" role="menu"> 
617                                        <li role="none"> 
618                                            <button class="list-item text-primary px-3 fs-6" role="menuitem" onclick="shareOn('facebook')"> 
619                                                <svg class="icon icon-primary" aria-hidden="true"> 
620                                                    <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-facebook"></use> 
621                                                </svg> 
622                                                <span>Facebook</span> 
623                                            </button> 
624                                        </li> 
625                                        <li role="none"> 
626                                            <button class="list-item text-primary px-3 fs-6" role="menuitem" onclick="shareOn('twitter')"> 
627                                                <svg class="icon icon-primary" aria-hidden="true"> 
628                                                    <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-twitter"></use> 
629                                                </svg> 
630                                                <span><@liferay.language key="Twitter" /></span> 
631                                            </button> 
632                                        </li> 
633                                        <li role="none"> 
634                                            <button class="list-item text-primary px-3 fs-6" role="menuitem" onclick="shareOn('whatsapp')"> 
635                                                <svg class="icon icon-primary" aria-hidden="true"> 
636                                                    <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-whatsapp"></use> 
637                                                </svg> 
638                                                <span>Whatsapp</span> 
639                                            </button> 
640                                        </li> 
641                                    </ul> 
642                                </div> 
643                            </div> 
644                        </div> 
645 
646                        <div class="dropdown"> 
647                            <button 
648                                aria-label="vedi azioni da compiere sulla pagina" 
649                                class="btn btn-dropdown dropdown-toggle text-decoration-underline d-inline-flex align-items-center fs-0" 
650                                type="button" 
651                                id="viewActions" 
652                                data-bs-toggle="dropdown" 
653                                aria-haspopup="true" 
654                                aria-expanded="false" 
655
656                                <svg class="icon icon-primary" aria-hidden="true"> 
657                                    <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-more-items"></use> 
658                                </svg> 
659                                <small><@liferay.language key="actions" /></small> 
660                            </button> 
661                            <div class="dropdown-menu shadow-lg" aria-labelledby="viewActions"> 
662                                <div class="link-list-wrapper"> 
663                                    <ul class="link-list" role="menu"> 
664                                        <li role="none"> 
665                                            <button class="list-item px-3 fs-6 text-primary" onclick="window.print()" role="menuitem"> 
666                                                <svg class="icon icon-primary" aria-hidden="true"> 
667                                                    <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-print"></use> 
668                                                </svg> 
669                                                <span><@liferay.language key="print" /></span> 
670                                            </button> 
671                                        </li> 
672                                        <li role="none"> 
673                                            <a class="list-item mail-anchor px-3 fs-6" href="mailto:" role="menuitem"> 
674                                                <svg class="icon icon-primary" aria-hidden="true"> 
675                                                    <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-mail"></use> 
676                                                </svg> 
677                                                <span><@liferay.language key="send" /></span> 
678                                            </a> 
679                                        </li> 
680                                    </ul> 
681                                </div> 
682                            </div> 
683                        </div> 
684 
685                        <#list argomenti> 
686                        <div class="mt-4 mb-3"> 
687                            <span class="text-paragraph-small fw-semibold"><@liferay.language key="topics" />:</span> 
688                            <ul class="d-flex flex-wrap gap-2 mt-10 mb-3"> 
689 
690                                <#items as argomento> 
691                                <li> 
692                                    <a href="${argomento.url}" class="chip chip-simple"> 
693                                        <span class="chip-label"> 
694                                            ${argomento.name} 
695                                        </span> 
696                                    </a> 
697                                </li> 
698                                </#items> 
699 
700                            </ul> 
701                        </div> 
702                        </#list> 
703 
704                        <#list tipo_evento> 
705                        <div class="mb-3"> 
706                            <span class="text-paragraph-small fw-semibold"><@liferay.language key="event-type" />:</span> 
707                            <ul> 
708                                <#items as tipo> 
709                                <li> 
710                                    <span class="badge bg-primary"> 
711                                        ${tipo} 
712                                    </span> 
713                                </li> 
714                                </#items> 
715 
716                            </ul> 
717                        </div> 
718                        </#list> 
719 
720                    </div> 
721                </div> 
722            </div> 
723        </div> 
724 
725    </div> 
726</div> 
727 
728<#-- IMMAGINE HERO --> 
729<#if Immagine.getData()?? && Immagine.getData() != ""> 
730<div class="container-fluid my-3"> 
731    <div class="row"> 
732        <figure class="figure px-0 img-full"> 
733            <img src="${Immagine.getData()}" class="figure-img img-fluid" alt="${Immagine.getAttribute('alt')}" loading="lazy"> 
734            <figcaption class="figure-caption text-center pt-3"> 
735                ${Immagine.getAttribute("alt")} 
736            </figcaption> 
737        </figure> 
738    </div> 
739</div> 
740</#if> 
741<#-- NAVIGAZIONE E CONTENUTO --> 
742<div class="container"> 
743    <div class="row border-top border-light row-column-menu-left pb-4 pb-lg-80"> 
744        <div class="col-12 col-lg-3 mb-4 border-col"> 
745            <div class="cmp-navscroll sticky-top" aria-labelledby="accordion-title-one"> 
746                <nav class="navbar it-navscroll-wrapper navbar-expand-lg" aria-label="<@liferay.language key='page-index' />" data-bs-navscroll=""> 
747                    <div class="navbar-custom" id="navbarNavProgress"> 
748                        <div class="menu-wrapper"> 
749                            <div class="link-list-wrapper"> 
750                                <div class="accordion"> 
751                                    <div class="accordion-item"> 
752                                        <span class="accordion-header" id="accordion-title-one"> 
753                                            <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"> 
754                                                <@liferay.language key="page-index" /> 
755                                                <svg class="icon icon-xs right"> 
756                                                    <use href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-expand"></use> 
757                                                </svg> 
758                                            </button> 
759                                        </span> 
760                                        <div class="progress"> 
761                                            <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> 
762                                        </div> 
763                                        <div id="collapse-one" class="accordion-collapse collapse show" role="region" aria-labelledby="accordion-title-one"> 
764                                            <div class="accordion-body"> 
765                                                <ul class="link-list" data-element="page-index"> 
766                                                    <#-- LINK A SEZIONE --> 
767 
768                                                    <#if Descrizione.getData()?has_content> 
769                                                        <@navigatorLink sectionId="description" title="${languageUtil.get(locale, 'description')}" /> 
770                                                    </#if> 
771 
772                                                    <#if has_evento_genitore && nome_genitore?has_content> 
773                                                        <@navigatorLink sectionId="parent" title="${languageUtil.get(locale, 'parent-event')}" /> 
774                                                    </#if> 
775 
776                                                    <#if Parteciperanno.getData()?has_content && parteciperanno?size gt 0> 
777                                                        <@navigatorLink sectionId="people" title="${languageUtil.get(locale, 'will-participate')}" /> 
778                                                    </#if> 
779 
780                                                    <#if has_media> 
781                                                        <@navigatorLink sectionId="galleries" title="${languageUtil.get(locale, 'images-and-videos')}" /> 
782                                                    </#if> 
783 
784                                                    <#if AChieRivolto.getData()?has_content> 
785                                                        <@navigatorLink sectionId="who" title="${languageUtil.get(locale, 'aimed-at')}" /> 
786                                                    </#if> 
787 
788                                                    <#if has_luogo && nome_luogo?has_content> 
789                                                        <@navigatorLink sectionId="place" title="${languageUtil.get(locale, 'place')}" /> 
790                                                    </#if> 
791 
792                                                    <#if Costo.getData()?has_content> 
793                                                        <@navigatorLink sectionId="costs" title="${languageUtil.get(locale, 'costs')}" /> 
794                                                    </#if> 
795 
796                                                    <#if allegati?size gt 0> 
797                                                        <@navigatorLink sectionId="attachments" title="${languageUtil.get(locale, 'attachments')}" /> 
798                                                    </#if> 
799 
800                                                    <#if appuntamenti?size gt 0> 
801                                                        <@navigatorLink sectionId="appointments" title="${languageUtil.get(locale, 'meetups')}" /> 
802                                                    </#if> 
803 
804                                                    <#if has_contatti && contatti_wallet?size gt 0> 
805                                                        <@navigatorLink sectionId="contacts" title="${languageUtil.get(locale, 'contacts')}" /> 
806                                                    </#if> 
807 
808                                                    <#if has_UO && nome_UO?has_content> 
809                                                        <@navigatorLink sectionId="organizer" title="${languageUtil.get(locale, 'organized-by')}" /> 
810                                                    </#if> 
811 
812                                                    <#if PatrocinatoDa.getData()?? && PatrocinatoDa.getData()?has_content> 
813                                                        <@navigatorLink sectionId="patrocinato" title="${languageUtil.get(locale, 'sponsored-by')}" /> 
814                                                    </#if> 
815 
816                                                    <#if Sponsor.getData()?has_content> 
817                                                        <@navigatorLink sectionId="sponsors" title="${languageUtil.get(locale, 'sponsors')}" /> 
818                                                    </#if> 
819 
820                                                    <#if UlterioriInformazioni.getData()?has_content> 
821                                                        <@navigatorLink sectionId="more-info" title="${languageUtil.get(locale, 'additional-information')}" /> 
822                                                    </#if> 
823 
824                                                </ul> 
825                                            </div> 
826                                        </div> 
827                                    </div> 
828                                </div> 
829                            </div> 
830                        </div> 
831                    </div> 
832                </nav> 
833            </div> 
834        </div> 
835        <div class="col-12 col-lg-8 offset-lg-1"> 
836            <div class="it-page-sections-container pt-4 unstiled-lists-wrapper"> 
837 
838            <#-- CONTENUTO --> 
839            <#if Descrizione.getData()?has_content> 
840            <section class="it-page-section mb-30" id="description"> 
841                <h2 class="title-xxlarge mb-3"><@liferay.language key="description" /></h2> 
842                <div class="richtext-wrapper lora"> 
843                    ${Descrizione.getData()} 
844                </div> 
845            </section> 
846            </#if> 
847 
848            <#if has_evento_genitore && nome_genitore?has_content> 
849            <section class="it-page-section mb-30" id="parent"> 
850                <h2 class="title-xxlarge mb-3"><@liferay.language key="parent-event" /></h2> 
851                <div class="row"> 
852                    <div class="col-12"> 
853                        <div class="card-wrapper border border-light rounded shadow-sm cmp-list-card-img cmp-list-card-img-hr"> 
854                            <div class="card no-after rounded mw-100"> 
855                                <div class="row g-2 g-md-0 flex-md-column"> 
856                                    <#if immagine_genitore?has_content && immagine_genitore.url?has_content> 
857                                    <div class="col-4 order-2 order-md-1" style="position-relative"> 
858                                        <div class="card-calendar d-flex flex-column justify-content-center"> 
859                                            <span class="card-date">${data_inizio_genitore_day}</span> 
860                                            <span class="card-day">${data_inizio_genitore_month}</span> 
861                                        </div> 
862                                        <img 
863                                            class="rounded-top img-fluid img-responsive" 
864                                            src="${immagine_genitore.url}" 
865                                            title="${nome_genitore}" 
866                                            alt="${nome_genitore}" 
867                                        /> 
868                                    </div> 
869                                    </#if> 
870                                    <div class="col-8 order-1 order-md-2"> 
871                                        <div class="card-body pb-0"> 
872                                            <div class="category-top cmp-list-card-img__body"> 
873                                                <div> 
874                                                    <span class="category"> 
875                                                        <#list tipi_evento_genitore as tipo> 
876                                                        <div class="badge bg-primary">${tipo}</div> 
877                                                        </#list> 
878                                                    </span> 
879                                                    <span class="data">${data_inizio_genitore}</span> 
880                                                </div> 
881                                            </div> 
882                                            <a href="${url_genitore}" class="text-decoration-none"> 
883                                                <h3 class="h5 card-title">${nome_genitore}</h3> 
884                                            </a> 
885                                            <p class="card-text d-none d-md-block lora">${descrizione_genitore}</p> 
886                                        </div> 
887                                    </div> 
888                                </div> 
889                            </div> 
890                        </div> 
891                    </div> 
892                </div> 
893            </section> 
894            </#if> 
895 
896            <#list parteciperanno> 
897            <section class="it-page-section mb-30 pt-4" id="people"> 
898                <h2 class="title-xxlarge mb-3"><@liferay.language key="will-participate" /></h2> 
899                <div class="row"> 
900                    <#items as persona> 
901                        <div class="col-12${(parteciperanno?size gt 1)?string(' col-lg-6 ', ' ')}p-0 pe-3 mb-3"> 
902                            <div class="d-flex pe-0 shadow-sm rounded h-100"> 
903                                <div class="col-9 py-3"> 
904                                    <a href="${persona.url}" class="card-title text-paragraph-regular-medium-semi mb-1 primary-color-b3"> 
905                                        ${persona.nome} 
906                                    </a> 
907                                    <#list persona.incarichi> 
908                                        <h3 class="fs-6 fw-semibold mb-1">Incarichi</h3> 
909                                        <#items as incarico> 
910                                            <div class="card-text"> 
911                                                <div>${incarico}</div> 
912                                            </div> 
913                                        </#items> 
914                                    </#list> 
915 
916                                    <#if persona.biografia?has_content> 
917                                        <p class="fw-semibold mb-2"> 
918                                            ${persona.biografia} 
919                                        </p> 
920                                    </#if> 
921                                </div> 
922 
923                                <#if persona.immagine?has_content && persona.immagine.url?? && persona.immagine.url != ""> 
924                                    <a href="${persona.url}" class="col-3 p-0"> 
925                                        <img 
926                                            class="w-100 h-100" 
927                                            style="object-fit: cover; object-position: center;" 
928                                            alt="${persona.immagine.alt!""}" 
929                                            src="${persona.immagine.url}" 
930                                        /> 
931                                    </a> 
932                                </#if> 
933 
934                            </div> 
935                        </div> 
936                    </#items> 
937                </div> 
938            </section> 
939            </#list> 
940 
941            <#if has_media> 
942            <section class="it-page-section mb-30" id="galleries"> 
943                <h2 class="title-xxlarge mb-3"><@liferay.language key="images-and-videos" /></h2> 
944                <#list immagini_galleria> 
945                    <div class="it-carousel-wrapper it-carousel-landscape-abstract-three-cols splide splide--slide splide--ltr splide--draggable is-active is-initialized mb-4" data-bs-carousel-splide="" id="splide01"> 
946                        <div class="it-header-block"> 
947                            <div class="it-header-block-title"> 
948                                <h3 style="border: none;"><@liferay.language key="images" /></h3> 
949                            </div> 
950                        </div> 
951                        <div class="splide__track" id="splide01-track" style="padding-left: 0px; padding-right: 0px;"> 
952                            <ul class="splide__list it-carousel-all" id="splide01-list" style="transform: translateX(0px);"> 
953                                <#items as img> 
954                                <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"> 
955                                    <div class="it-single-slide-wrapper"> 
956                                        <figure> 
957                                            <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"> 
958                                            <figcaption class="figure-caption mt-2"> 
959                                                ${img.alt} 
960                                            </figcaption> 
961                                        </figure> 
962                                    </div> 
963                                </li> 
964                                </#items> 
965                            </ul> 
966                        </div> 
967                    </div> 
968                </#list> 
969 
970                <#if has_video_gallery> 
971                    <h3><@liferay.language key="videos" /></h3> 
972                    <div id="iframe-wrapper"> 
973                        <#list GalleriaDiVideo.getSiblings() as cur_GalleriaDiVideo> 
974                        <div class="iframe-element"> 
975                            ${cur_GalleriaDiVideo.getData()} 
976                        </div> 
977                        </#list> 
978                    </div> 
979                    </#if> 
980                </section> 
981                </#if> 
982 
983                <#if AChieRivolto.getData()?has_content> 
984                    <section class="it-page-section mb-30" id="who"> 
985                        <h2 class="title-xxlarge mb-3"><@liferay.language key="aimed-at" /></h2> 
986                        <div class="richtext-wrapper lora"> 
987                            ${AChieRivolto.getData()} 
988                        </div> 
989                    </section> 
990                </#if> 
991 
992                <#if has_luogo && nome_luogo?has_content> 
993                    <section class="it-page-section mb-30" id="place"> 
994                        <h2 class="title-xxlarge mb-3"><@liferay.language key="place" /></h2> 
995                        <div class=""> 
996                            <div class="card card-teaser card-teaser-info rounded shadow-sm p-4"> 
997                                <div class="card-body pe-3"> 
998                                    <h5 class="card-title mb-2"> 
999                                        <a class="text-decoration-none" href="${url_luogo}"> 
1000                                            ${nome_luogo} 
1001                                        </a> 
1002                                    </h5> 
1003                                    <div class="card-text"> 
1004                                        <#if indirizzo_luogo !=""> 
1005                                        <p class="mb-2"><@liferay.language key="address" />: ${indirizzo_luogo}</p> 
1006                                        </#if> 
1007                                        <#if orari_luogo !=""> 
1008                                            <p class="mb-2"><@liferay.language key="timetables" />: ${orari_luogo}</p> 
1009                                        </#if> 
1010                                    </div> 
1011                                </div> 
1012                                <#if has_immagine_luogo> 
1013                                <div class="avatar size-xl"> 
1014                                    <img 
1015                                        alt="${immagine_luogo.alt!nome_luogo}" 
1016                                        src="${immagine_luogo.url}" 
1017                                        style="aspect-ratio: 1;" 
1018                                    /> 
1019                                </div> 
1020                                </#if> 
1021                            </div> 
1022                        </div> 
1023                    </section> 
1024                </#if> 
1025 
1026                <#if Costo.getData()?has_content> 
1027                    <section class="it-page-section mb-30" id="costs"> 
1028                        <h2 class="title-xxlarge mb-3"><@liferay.language key="costs" /></h2> 
1029                        <div class="richtext-wrapper lora"> 
1030                            ${Costo.getData()} 
1031                        </div> 
1032                    </section> 
1033                </#if> 
1034 
1035                <#list allegati> 
1036                    <section class="it-page-section mb-30" id="attachments"> 
1037                        <h2 class="title-xxlarge mb-3"><@liferay.language key="attachments" /></h2> 
1038                        <div class="col-12 ps-0"> 
1039                            <ul class="col-12 shadow rounded my-4 p-3 bg-white"> 
1040                                <#items as allegato> 
1041                                <li group="attachments" class="d-flex align-items-center"> 
1042                                    <div class="row d-flex align-items-center w-100 ${allegato?has_next?string(" mb-2", "")}"> 
1043                                        <div class="col-1 d-flex justify-content-center align-items-center p-0"> 
1044                                            <svg class="icon icon-primary icon-lh" aria-hidden="true" viewBox="0 0 24 24"> 
1045                                                <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-13 C5.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" /> 
1046                                            </svg> 
1047                                        </div> 
1048                                        <div class="col-11 p-0"> 
1049                                            <a class="text-decoration_none fw-semibold t-primary" href="${allegato.url}"> 
1050                                                ${allegato.nome} 
1051                                            </a> 
1052                                        </div> 
1053                                    </div> 
1054                                </li> 
1055                                </#items> 
1056                            </ul> 
1057                        </div> 
1058                    </section> 
1059                </#list> 
1060 
1061                <#list appuntamenti> 
1062                <section class="it-page-section mb-30" id="appointments"> 
1063                    <h2 class="title-xxlarge mb-3"><@liferay.language key="meetups" /></h2> 
1064                    <div class="row"> 
1065                        <#items as app> 
1066                        <div class="col-12 col-md-6"> 
1067                            <div class="card-wrapper border border-light rounded shadow-sm cmp-list-card-img cmp-list-card-img-hr"> 
1068                                <div class="card no-after rounded"> 
1069                                    <div class="row g-2 g-md-0 flex-md-column"> 
1070                                        <#if app.immagine?has_content && app.immagine.url?has_content> 
1071                                        <div class="col-4 order-2 order-md-1" style="position-relative"> 
1072                                            <div class="card-calendar d-flex flex-column justify-content-center"> 
1073                                                <span class="card-date">${app.giorno}</span> 
1074                                                <span class="card-day">${app.mese}</span> 
1075                                            </div> 
1076                                            <img 
1077                                                class="rounded-top img-fluid img-responsive" 
1078                                                src="${app.immagine.url}" 
1079                                                title="${app.nome}" 
1080                                                alt="${app.nome}" 
1081                                            /> 
1082                                        </div> 
1083                                        </#if> 
1084 
1085                                        <div class="col-8 order-1 order-md-2"> 
1086                                            <div class="card-body pb-0"> 
1087                                                <div class="category-top cmp-list-card-img__body"> 
1088                                                    <div> 
1089                                                        <#list app.tipi> 
1090                                                        <span class="category"> 
1091                                                            <#items as tipo> 
1092                                                            <div class="badge bg-primary">${tipo}</div> 
1093                                                            </#items> 
1094                                                        </span> 
1095                                                        </#list> 
1096                                                        <span class="data">${app.data_inizio}</span> 
1097                                                    </div> 
1098                                                </div> 
1099                                                <a href="${app.url}" class="text-decoration-none"> 
1100                                                    <h3 class="h5 card-title">${app.nome}</h3> 
1101                                                </a> 
1102                                                <p class="card-text d-none d-md-block lora">${app.descrizione}</p> 
1103                                            </div> 
1104                                        </div> 
1105                                    </div> 
1106                                </div> 
1107                            </div> 
1108                        </div> 
1109                        </#items> 
1110                    </div> 
1111                </section> 
1112                </#list> 
1113 
1114                <#list contatti_wallet> 
1115                <section class="it-page-section mb-30 pt-4" id="contacts"> 
1116                    <h2 class="title-xxlarge mb-3"><@liferay.language key="contacts" /></h2> 
1117                    <div class="row"> 
1118                        <div class="col-12 col-lg-6 shadow rounded p-3"> 
1119                            <#items as contatto> 
1120                            <div> 
1121                                <#assign url_type="" /> 
1122                                <#if 
1123                                    contatto.tipo=="Email" 
1124                                    || contatto.tipo=="PEC" 
1125
1126                                    <#assign url_type="mailto:" /> 
1127                                <#elseif 
1128                                    contatto.tipo=="Telefono" 
1129                                    || contatto.tipo=="Whatsapp" 
1130                                    || contatto.tipo=="Telegram" 
1131
1132                                    <#assign url_type="tel:" /> 
1133                                </#if> 
1134                                <span class="fw-semibold">${contatto.tipo}:</span> 
1135                                <span class="ms-1"> 
1136                                    <a 
1137                                        href="${url_type}${contatto.valore}" 
1138                                        target="_blank" 
1139                                        class="t-primary" 
1140
1141                                        ${contatto.valore} 
1142                                    </a> 
1143                                </span> 
1144                            </div> 
1145                            </#items> 
1146                        </div> 
1147                    </div> 
1148                </section> 
1149                </#list> 
1150 
1151                <#if has_UO && nome_UO?has_content> 
1152                <section class="it-page-section mb-30" id="organizer"> 
1153                    <h2 class="mb-3"><@liferay.language key="organized-by" /></h2> 
1154                    <div class="row"> 
1155                        <div class="col-12 col-lg-6"> 
1156                            <div class="card-wrapper rounded h-auto mt-10"> 
1157                                <div class="card card-teaser card-teaser-info rounded shadow-sm p-3"> 
1158                                    <div class="card-body pe-3"> 
1159                                        <div class="mb-3"> 
1160                                            <a class="card-title text-paragraph-regular-medium-semi primary-color-b3" href="/portal/-/${url_UO}"> 
1161                                                ${nome_UO} 
1162                                            </a> 
1163                                            <#if indirizzo_UO?has_content> 
1164                                            <small class="d-block"> 
1165                                                ${indirizzo_UO} 
1166                                            </small> 
1167                                            </#if> 
1168                                        </div> 
1169                                        <div class="card-text"> 
1170                                            <#list contatti_UO> 
1171                                            <div class="col-12 rounded p-0"> 
1172                                                <#items as contatto> 
1173                                                <div> 
1174                                                    <#assign url_type="" /> 
1175                                                    <#if 
1176                                                        contatto.tipo=="Email" 
1177                                                        || contatto.tipo=="PEC" 
1178
1179                                                        <#assign url_type="mailto:" /> 
1180                                                    <#elseif 
1181                                                        contatto.tipo=="Telefono" 
1182                                                        || contatto.tipo=="Whatsapp" 
1183                                                        || contatto.tipo=="Telegram" 
1184
1185                                                        <#assign url_type="tel:" /> 
1186                                                    </#if> 
1187                                                    <span class="fw-semibold"> 
1188                                                        ${contatto.tipo}:</span> 
1189                                                    <span class="ms-1"> 
1190                                                        <a 
1191                                                            href="${url_type}${contatto.valore}" 
1192                                                            target="_blank" 
1193                                                            class="t-primary" 
1194
1195                                                            ${contatto.valore} 
1196                                                        </a> 
1197                                                    </span> 
1198                                                </div> 
1199                                                </#items> 
1200                                            </div> 
1201                                            </#list> 
1202                                        </div> 
1203                                    </div> 
1204                                    <#if urlImmagine_UO !=""> 
1205                                    <div class="avatar size-xl"> 
1206                                        <a href="/portal/-/${url_UO}"> 
1207                                            <img 
1208                                                alt="Immagine unità organizzativa responsabile" 
1209                                                src="${urlImmagine_UO}" 
1210                                                style="aspect-ratio: 1/1;" 
1211                                            /> 
1212                                        </a> 
1213                                    </div> 
1214                                    </#if> 
1215                                </div> 
1216                            </div> 
1217                        </div> 
1218                    </div> 
1219                </section> 
1220                </#if> 
1221 
1222                <#if PatrocinatoDa.getData()?? && PatrocinatoDa.getData()?has_content> 
1223                <section class="it-page-section mb-30" id="patrocinato"> 
1224                    <h2 class="title-xxlarge mb-3"><@liferay.language key="sponsored-by" /></h2> 
1225                    <div class="richtext-wrapper lora" > 
1226                        ${PatrocinatoDa.getData()} 
1227                    </div> 
1228                </section> 
1229                </#if> 
1230 
1231                <#if Sponsor.getData()?has_content> 
1232                <section class="it-page-section mb-30" id="sponsor"> 
1233                    <h2 class="title-xxlarge mb-3"><@liferay.language key="sponsors" /></h2> 
1234                    <div class="richtext-wrapper lora"> 
1235                        ${Sponsor.getData()} 
1236                    </div> 
1237                </section> 
1238                </#if> 
1239 
1240                <#if UlterioriInformazioni.getData()?has_content> 
1241                <section class="it-page-section mb-30" id="more-info"> 
1242                    <h2 class="title-xxlarge mb-3"><@liferay.language key="more-info" /></h2> 
1243                    <div class="richtext-wrapper lora"> 
1244                        ${UlterioriInformazioni.getData()} 
1245                    </div> 
1246                </section> 
1247                </#if> 
1248 
1249                <div class="border-top border-light pt-4 mt-3 mb-30"> 
1250 
1251                    <#-- DATA ULTIMA MODIFICA --> 
1252                    <#assign 
1253                        modifiedDate = dateUtil.parseDate("EEE, d MMM yyyy HH:mm:ss Z", .vars['reserved-article-modified-date'].data, localeUtil.getDefault()) 
1254                        displayModifiedDate = modifiedDate?datetime?string.short 
1255                    /> 
1256 
1257                    <p class="text-paragraph-small mb-0 lora"> 
1258                        <span class="fw-semibold"><@liferay.language key="last-update-date" />: </span> 
1259                        <span> 
1260                            ${displayModifiedDate} 
1261                        </span> 
1262                    </p> 
1263 
1264                </div> 
1265            </div> 
1266        </div> 
1267    </div> 
1268</div> 
1269 
1270<script defer> 
1271    document.querySelectorAll(".mail-anchor").forEach(anchor => anchor.href = "mailto:&subject=${Titolo.getData()}&body=" + window.location.href) 
1272 
1273    function shareOn(type) { 
1274        let articleUrl = window.location.href; 
1275        const mapping = { 
1276            "facebook": "https://facebook.com/sharer/sharer.php?u=" + articleUrl, 
1277            "twitter": "https://twitter.com/intent/tweet/?text=" + articleUrl, 
1278            "linkedin": "http://www.linkedin.com/sharing/share-offsite/?url=" + articleUrl, 
1279            "whatsapp": "whatsapp://send?text=" + articleUrl 
1280
1281 
1282        window.open(mapping[type], "_blank"); 
1283        return 
1284
1285 
1286    function bringMeTo(id) { 
1287        document.getElementById(id).scrollIntoView({behavior: 'smooth'}); 
1288
1289</script> 
1290 
1291<#macro navigatorLink sectionId title> 
1292<#local desc = "" /> 
1293 
1294<#if title?? && title?has_content> 
1295    <#local desc = title /> 
1296<#else> 
1297    <#local desc = sectionId /> 
1298</#if> 
1299 
1300<li class="nav-item"> 
1301    <a 
1302        class="nav-link active" 
1303        onclick="bringMeTo('${sectionId}')" 
1304        role="button" 
1305        aria-label="${languageUtil.get(locale, 'go-to-section')}: ${title}" 
1306
1307        <span class="title-medium">${title}</span> 
1308    </a> 
1309</li> 
1310</#macro> 
1311 
1312<#-- 
1313    CREA UNA LISTA CON VALORI UNICI 
1314    ------------ 
1315    @param list la lista da filtrare 
1316    @param key la chiave della proprietà dell'oggetto per cui filtrare se la lista è una lista di oggetti 
1317--> 
1318 
1319<#function unique_list list key=""> 
1320    <#if list?size lt 2> 
1321        <#return list /> 
1322    </#if> 
1323 
1324    <#assign 
1325    inserted_keys = [] 
1326    new_list = [] 
1327    /> 
1328 
1329    <#list list as original_item> 
1330        <#assign value_to_compare = "" /> 
1331        <#if key == ""> 
1332            <#assign value_to_compare = original_item> 
1333        <#else> 
1334            <#assign value_to_compare = original_item[key]> 
1335        </#if> 
1336        <#if ! inserted_keys?seq_contains(value_to_compare)> 
1337            <#assign inserted_keys = inserted_keys + [value_to_compare] /> 
1338            <#assign new_list = new_list + [original_item] /> 
1339        </#if> 
1340    </#list> 
1341 
1342    <#return new_list /> 
1343 
1344</#function>