Si è verificato un errore nell'elaborarazione del modello.
Java method "com.sun.proxy.$Proxy83.getLayout(long, boolean, long)" threw an exception when invoked on com.sun.proxy.$Proxy83 object "com.liferay.layout.internal.service.LayoutLocalServiceWrapper@62495844"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: paginaPadre = LayoutLocalService.getL... [in template "20095#20121#35022" at line 18, column 5] ----
1<#assign
2 FriendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService")
3 ClassNameService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameService")
4 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
5 LayoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")
6 journalArticleId = .vars['reserved-article-id'].data
7 journalArticleResourceLocalServiceUtil = staticUtil["com.liferay.journal.service.JournalArticleResourceLocalServiceUtil"]
8 assetCategoryLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetCategoryLocalServiceUtil"]
9 articleResourcePK = journalArticleResourceLocalServiceUtil.getArticleResourcePrimKey(groupId, journalArticleId)
10 categoryList = assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle",articleResourcePK)
11 AssetVocabularyLocalServiceUtil = staticUtil["com.liferay.asset.kernel.service.AssetVocabularyLocalServiceUtil"]
12/>
13
14<#setting locale = themeDisplay.getLocale() />
15
16<#-- gestione dei breadcrumbs -->
17<#assign
18 paginaPadre = LayoutLocalService.getLayout(groupId, PaginaPadre.getData()?eval.privateLayout, PaginaPadre.getData()?eval.layoutId?number)
19 ancestors = paginaPadre.getAncestors()
20 sorted_ancestors = []
21/>
22
23<#list ancestors as parente>
24 <#assign
25 sorted_ancestors +=
26 [{
27 "name": parente.getName(themeDisplay.getLanguageId()),
28 "ancestors": parente.getAncestors()?size,
29 "data": parente
30 }]
31 />
32</#list>
33
34<div class="container finmatica-breadcrumb-container mb-4">
35 <div class="row justify-content-center">
36 <div class="col-12 col-lg-10">
37 <div class="cmp-breadcrumbs" role="navigation">
38 <nav class="breadcrumb-container" aria-label="breadcrumb">
39 <ol class="breadcrumb p-0" data-element="breadcrumb">
40 <li class="breadcrumb-item"><a
41 href="${themeDisplay.getThemeSetting('Home URL')}">
42 <span class="breadcrumb-text-truncate">Home</span>
43 </a>
44 <span class="separator">/</span>
45 </li>
46 <#list sorted_ancestors?sort_by("ancestors") as ancestor>
47 <li class="breadcrumb-item"><a
48 href="/portal${ancestor.data.getFriendlyURL()}">
49 <span class="breadcrumb-text-truncate">
50 ${ancestor.name}
51 </span>
52 </a>
53 <span class="separator">/</span>
54 </li>
55 </#list>
56 <li class="breadcrumb-item"><a
57 href="/portal${paginaPadre.getFriendlyURL()}">
58 <span class="breadcrumb-text-truncate">
59 ${paginaPadre.getName(themeDisplay.getLanguageId())}
60 </span>
61 </a>
62 <span class="separator">/</span>
63 </li>
64 <li class="breadcrumb-item">${Titolo.getData()}</li>
65 </ol>
66 </nav>
67 </div>
68 </div>
69 </div>
70</div>
71
72
73<#assign
74 tipoUO = ""
75 argomenti = []
76/>
77
78<#list categoryList as categoryEntry>
79
80 <#assign
81 vocabulary = AssetVocabularyLocalServiceUtil.getVocabulary(categoryEntry.getVocabularyId())
82 className = ClassNameService.fetchClassName("com.liferay.asset.kernel.model.AssetCategory")
83 friendlyUrlEntry = FriendlyURLEntryLocalService.getMainFriendlyURLEntry(className.getClassNameId(), categoryEntry.categoryId)
84 friendlyUrlList = FriendlyURLEntryLocalService.getFriendlyURLEntryLocalizations(friendlyUrlEntry.friendlyURLEntryId)
85 cat_name = categoryEntry.name
86 cat_localized_name = categoryEntry.getTitle(themeDisplay.getLocale(), true),
87 cat_url = friendlyUrlList[0].urlTitle
88 />
89 <#if
90 vocabulary.getDescription()?lower_case == "tipo unita organizzativa"
91 || vocabulary.name == "tassonomie tipi di unità organizzativa"
92 >
93 <#assign tipoUO = cat_localized_name />
94 <#elseif
95 vocabulary.getDescription()?lower_case == "argomenti"
96 || vocabulary.name?lower_case == "tassonomia argomento"
97 >
98 <#assign
99 argomenti +=
100 [{
101 "name": cat_localized_name,
102 "url": cat_url
103 }]
104 />
105 </#if>
106</#list>
107
108
109<#-- GET ASSESSORE -->
110<#assign
111 assessore_Data = jsonFactoryUtil.createJSONObject(Assessore.getData())
112 has_assessore = assessore_Data?eval?has_content
113 assessore = []
114/>
115
116<#if has_assessore>
117 <#assign assessori = JournalArticleLocalService.getArticlesByResourcePrimKey(assessore_Data.classPK?number) />
118 <#if assessori?? && assessori?size gt 0>
119 <#assign
120 assessore = assessori[0]
121 document = assessore.getDocumentByLocale(themeDisplay.getLocale())
122 rootElement = document.getRootElement()
123 nome_assessore = ""
124 cognome_assessore = ""
125 immagine_assessore = ""
126 incarichi_assessore = []
127 has_immagine_assessore = false
128 urlPagina_assessore = "/portal/web/guest/-/${assessore.getUrlTitle()}"
129 />
130
131 <#if rootElement.elements()?has_content>
132 <#list rootElement.elements() as dynamicElement>
133 <#if dynamicElement.attributeValue("field-reference") == "Nome">
134 <#assign nome_assessore = dynamicElement.element("dynamic-content").getText() />
135 <#elseif dynamicElement.attributeValue("field-reference") == "Cognome">
136 <#assign cognome_assessore = dynamicElement.element("dynamic-content").getText() />
137 <#elseif dynamicElement.attributeValue("field-reference") == "Immagine">
138 <#assign immagine_assessore = dynamicElement.element("dynamic-content").getText() />
139 <#if immagine_assessore?has_content>
140 <#assign immagine_assessore = jsonFactoryUtil.createJSONObject(immagine_assessore) />
141 <#if immagine_assessore?has_content>
142 <#assign
143 immagine_assessore = immagine_assessore?eval
144 has_immagine_assessore = true
145 />
146 </#if>
147 </#if>
148 <#elseif dynamicElement.attributeValue("field-reference") == "Incarichi">
149 <#assign cur_incarichi_responsabile = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData()) />
150 <#if cur_incarichi_responsabile.classPK??>
151 <#assign
152 cur_relatedIncarichi = JournalArticleLocalService.getArticlesByResourcePrimKey(cur_incarichi_responsabile.classPK?number)
153 cur_relatedIncarico = cur_relatedIncarichi[0]
154 document = cur_relatedIncarico.getDocumentByLocale(themeDisplay.getLocale())
155 rootElement = document.getRootElement()
156 />
157 <#list rootElement.elements() as dynamicElement>
158 <#if dynamicElement.attributeValue("field-reference") == "Titolo">
159 <#assign incarichi_assessore += [ dynamicElement.element("dynamic-content").getText() ] />
160 </#if>
161 </#list>
162 </#if>
163 </#if>
164 </#list>
165 </#if>
166 </#if>
167</#if>
168
169
170<#-- SEZIONE GET DATI RESPONSABILE -->
171<#assign responsabili=[] />
172<#if Responsabile.getData()?has_content && Responsabile.getSiblings()?has_content>
173 <#list Responsabile.getSiblings() as cur_responsabile>
174 <#assign
175 cur_responsabile_data = jsonFactoryUtil.createJSONObject(cur_responsabile.getData())
176 cur_responsabile_content = JournalArticleLocalService.getArticlesByResourcePrimKey(cur_responsabile_data.classPK?number)
177 />
178 <#if cur_responsabile_content?? && cur_responsabile_content?size gt 0>
179 <#assign
180 cur_responsabile_content = cur_responsabile_content[0]
181 document = cur_responsabile_content.getDocumentByLocale(themeDisplay.getLocale())
182 rootElement = document.getRootElement()
183 cur_nome_reponsabile = ""
184 cur_cognome_responsabile = ""
185 cur_immagine_responsabile = ""
186 cur_urlImmagine_responsabile = ""
187 cur_incarichi_responsabile = ""
188 cur_incarichi_del_responsabile = ""
189 />
190 <#if rootElement.elements()?has_content>
191 <#list rootElement.elements() as dynamicElement>
192 <#if dynamicElement.attributeValue("field-reference") == "Nome">
193 <#assign cur_nome_responsabile = dynamicElement.element("dynamic-content").getText() />
194 <#elseif dynamicElement.attributeValue("field-reference") == "Cognome">
195 <#assign cur_cognome_responsabile = dynamicElement.element("dynamic-content").getText() />
196 <#elseif dynamicElement.attributeValue("field-reference") == "Immagine">
197 <#assign cur_immagine_responsabile = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData()) />
198 <#if cur_immagine_responsabile.uuid?has_content>
199 <#assign cur_urlImmagine_responsabile = "/portal/c/document_library/get_file?uuid=" + cur_immagine_responsabile.uuid + "&groupId=" + cur_immagine_responsabile.groupId />
200 </#if>
201 <#elseif dynamicElement.attributeValue("field-reference") == "Incarichi">
202 <#assign cur_incarichi_responsabile = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData()) />
203 <#if cur_incarichi_responsabile.classPK??>
204 <#assign
205 cur_relatedIncarichi = JournalArticleLocalService.getArticlesByResourcePrimKey(cur_incarichi_responsabile.classPK?number)
206 cur_relatedIncarico = cur_relatedIncarichi[0]
207 document = cur_relatedIncarico.getDocumentByLocale(themeDisplay.getLocale())
208 rootElement = document.getRootElement()
209 />
210 </#if>
211 <#list rootElement.elements() as dynamicElement>
212 <#if dynamicElement.attributeValue("field-reference") == "Titolo">
213 <#assign cur_incarichi_del_responsabile = dynamicElement.element("dynamic-content").getText() />
214 </#if>
215 </#list>
216 </#if>
217 </#list>
218 </#if>
219 <#assign
220 responsabili +=
221 [{
222 "nome" : cur_nome_responsabile,
223 "cognome" : cur_cognome_responsabile,
224 "immagine" : cur_immagine_responsabile,
225 "urlImmagine" : cur_urlImmagine_responsabile,
226 "incarichi" : cur_incarichi_del_responsabile,
227 "urlPagina" : "/portal/-/${cur_responsabile_content.getUrlTitle()}"
228 }]
229 />
230 </#if>
231 </#list>
232</#if>
233<#-- SEZIONE GET DATI PERSONALE UO -->
234<#assign persone_della_struttura = [] />
235<#list Persone.getSiblings() as cur_persona>
236 <#assign cur_persona_data = jsonFactoryUtil.createJSONObject(cur_persona.getData()) />
237 <#if cur_persona_data.classPK??>
238 <#assign relatedPersone = JournalArticleLocalService.getArticlesByResourcePrimKey(cur_persona_data.classPK?number) />
239 <#if relatedPersone?? && relatedPersone?size gt 0>
240 <#assign
241 relatedPersona = relatedPersone[0]
242 document = relatedPersona.getDocumentByLocale(themeDisplay.getLocale())
243 rootElement = document.getRootElement()
244 nome_persona = ""
245 cognome_persona = ""
246 immagine_persona = ""
247 urlImmaginePersona = ""
248 incarico_persona = "" />
249
250 <#list rootElement.elements() as dynamicElement>
251 <#if dynamicElement.attributeValue("field-reference") == "Nome">
252 <#assign nome_persona = dynamicElement.element("dynamic-content").getText() />
253 <#elseif dynamicElement.attributeValue("field-reference") == "Cognome">
254 <#assign cognome_persona = dynamicElement.element("dynamic-content").getText() />
255 <#elseif dynamicElement.attributeValue("field-reference") == "Immagine">
256 <#assign immagine_persona = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData()) />
257 <#if immagine_persona.uuid?has_content>
258 <#assign urlImmaginePersona = "/portal/c/document_library/get_file?uuid=" + immagine_persona.uuid + "&groupId=" + immagine_persona.groupId />
259 </#if>
260 <#elseif dynamicElement.attributeValue("field-reference") == "Incarichi">
261 <#assign incarichi_persona = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData()) />
262 <#if incarichi_persona?eval?has_content>
263 <#assign
264 relatedIncarichiPersona = JournalArticleLocalService.getArticlesByResourcePrimKey(incarichi_persona.classPK?number)
265 relatedIncaricoPersona = relatedIncarichiPersona[0]
266 document = relatedIncaricoPersona.getDocumentByLocale(themeDisplay.getLocale())
267 rootElement = document.getRootElement()
268 />
269 <#list rootElement.elements() as dynamicElement>
270 <#if dynamicElement.attributeValue("field-reference") == "Titolo">
271 <#assign incarico_persona = dynamicElement.element("dynamic-content").getText() />
272 </#if>
273 </#list>
274 </#if>
275 </#if>
276 </#list>
277 <#assign
278 persone_della_struttura +=
279 [{
280 "nome": nome_persona,
281 "cognome": cognome_persona,
282 "urlImmagine": urlImmaginePersona,
283 "immagine": immagine_persona,
284 "incarico": incarico_persona,
285 "urlPagina": "/portal/-/${relatedPersona.getUrlTitle()}"
286 }]
287 />
288 </#if>
289 </#if>
290</#list>
291<#-- GET SERVIZI COLLEGATI -->
292<#assign servizi_collegati = [] />
293<#if ServiziOfferti.getData()?has_content>
294 <#list ServiziOfferti.getSiblings() as cur_servizio>
295 <#assign
296 cur_servizio_data = jsonFactoryUtil.createJSONObject(cur_servizio.getData())
297 categorie_cur_servizio = assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle", cur_servizio_data.classPK?number)
298 relatedServizi = JournalArticleLocalService.getArticlesByResourcePrimKey(cur_servizio_data.classPK?number)
299 />
300 <#if relatedServizi?? && relatedServizi?size gt 0>
301 <#assign
302 relatedServizio = relatedServizi[0]
303 document = relatedServizio.getDocumentByLocale(themeDisplay.getLocale())
304 rootElement = document.getRootElement()
305 nome_servizio = ""
306 descrizione_servizio = ""
307 categorie_servizio = []
308 />
309 <#list rootElement.elements() as dynamicElement>
310 <#if dynamicElement.attributeValue("field-reference") == "Titolo">
311 <#assign nome_servizio = dynamicElement.element("dynamic-content").getText() />
312 <#elseif dynamicElement.attributeValue("field-reference") == "DescrizioneBreve">
313 <#assign descrizione_servizio = dynamicElement.element("dynamic-content").getText() />
314 </#if>
315 </#list>
316
317 <#list categorie_cur_servizio as cur_categoria_cur_servizio>
318
319 <#assign
320 FriendlyURLEntryLocalService = serviceLocator.findService("com.liferay.friendly.url.service.FriendlyURLEntryLocalService")
321 ClassNameService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameService")
322 <#-- SPOSTARE I DUE ELEMENTI SOPRA AD INIZIO FILE -->
323
324 cur_vocabulary = AssetVocabularyLocalServiceUtil.getVocabulary(cur_categoria_cur_servizio.getVocabularyId())
325 className = ClassNameService.fetchClassName("com.liferay.asset.kernel.model.AssetCategory")
326 friendlyUrlEntry = FriendlyURLEntryLocalService.getMainFriendlyURLEntry(className.getClassNameId(), cur_categoria_cur_servizio.categoryId)
327 friendlyUrlList = FriendlyURLEntryLocalService.getFriendlyURLEntryLocalizations(friendlyUrlEntry.friendlyURLEntryId)
328 cat_name = cur_categoria_cur_servizio.name
329 cat_localized_name = cur_categoria_cur_servizio.getTitle(themeDisplay.getLocale(), true),
330 cat_url = friendlyUrlList[0].urlTitle
331 />
332 <#if
333 cur_vocabulary.getTitle()?lower_case == "tassonomia categoria servizi"
334 || cur_vocabulary.getName()?lower_case == "tassonomia categoria servizi"
335 || cur_vocabulary.getDescription()?lower_case == "categorie servizi"
336 >
337 <#assign
338 categorie_servizio +=
339 [{
340 "name": cat_localized_name,
341 "url": cat_url
342 }]
343 />
344 </#if>
345 </#list>
346 <#assign
347 servizi_collegati +=
348 [{
349 "nome": nome_servizio,
350 "descrizione": descrizione_servizio,
351 "categorie": categorie_servizio,
352 "urlPagina": "/portal/web/guest/${relatedServizio.getUrlTitle()}"
353 }]
354 />
355 </#if>
356 </#list>
357</#if>
358
359<#-- SEZIONE GET DATI SEDE PRINCIPALE -->
360<#assign sede_principale_data = jsonFactoryUtil.createJSONObject(SedePrincipale.getData()) />
361<#if sede_principale_data.classPK??>
362 <#assign SediPrincipali = JournalArticleLocalService.getArticlesByResourcePrimKey(sede_principale_data.classPK?number) />
363 <#if SediPrincipali?? && SediPrincipali?size gt 0>
364 <#assign
365 SedePrincipale = SediPrincipali[0]
366 document = SedePrincipale.getDocumentByLocale(themeDisplay.getLocale())
367 rootElement = document.getRootElement()
368 nome_sede_principale = SedePrincipale.getTitle(themeDisplay.getLocale(), true)
369 indirizzo_sede_principale = ""
370 orari_sede_principale = ""
371 immagine_sede_principale = ""
372 urlImmagine_sede_principale = ""
373 />
374 <#list rootElement.elements() as dynamicElement>
375 <#if dynamicElement.attributeValue("field-reference") == "Titolo">
376 <#assign nome_sede_principale = dynamicElement.element("dynamic-content").getText() />
377 <#elseif dynamicElement.attributeValue("field-reference") == "Indirizzo">
378 <#assign indirizzo_sede_principale = dynamicElement.element("dynamic-content").getText() />
379 <#elseif dynamicElement.attributeValue("field-reference") == "OrarioPerIlPubblico">
380 <#assign orari_sede_principale = dynamicElement.element("dynamic-content").getText() />
381 <#elseif dynamicElement.attributeValue("field-reference") == "Immagine">
382 <#assign
383 immagine_sede_principale = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData())
384 />
385 <#if immagine_sede_principale?has_content && immagine_sede_principale.uuid??>
386 <#assign
387 urlImmagine_sede_principale="/portal/c/document_library/get_file?uuid="
388 + immagine_sede_principale.uuid
389 + "&groupId="
390 + immagine_sede_principale.groupId
391 />
392 </#if>
393 </#if>
394 </#list>
395 </#if>
396</#if>
397<#-- SEZIONE GET ALTRE SEDI -->
398<#assign altre_sedi = [] />
399<#if AltreSedi.getData()?has_content>
400<#-- try -->
401<#attempt>
402 <#assign AltreSedi = AltreSedi.getSiblings() />
403<#-- catch -->
404<#recover>
405 <#assign AltreSedi = [] />
406</#attempt>
407 <#list AltreSedi as cur_sede>
408 <#assign
409 cur_sede_data = jsonFactoryUtil.createJSONObject(cur_sede.getData())
410 relatedSedi = JournalArticleLocalService.getArticlesByResourcePrimKey(cur_sede_data.classPK?number)
411 />
412 <#if relatedSedi?? && relatedSedi?size gt 0>
413 <#assign
414 relatedSede = relatedSedi[0]
415 document = relatedSede.getDocumentByLocale(themeDisplay.getLocale())
416 rootElement = document.getRootElement()
417 nome_cur_sede = ""
418 indirizzo_cur_sede = ""
419 orari_cur_sede = ""
420 immagine_cur_sede = ""
421 urlImmagine_cur_sede = ""
422 />
423 <#list rootElement.elements() as dynamicElement>
424 <#if dynamicElement.attributeValue("field-reference") == "Titolo">
425 <#assign nome_cur_sede = dynamicElement.element("dynamic-content").getText() />
426 <#elseif dynamicElement.attributeValue("field-reference") == "Indirizzo">
427 <#assign indirizzo_cur_sede = dynamicElement.element("dynamic-content").getText() />
428 <#elseif dynamicElement.attributeValue("field-reference") == "OrarioPerIlPubblico">
429 <#assign orari_cur_sede = dynamicElement.element("dynamic-content").getText() />
430 <#elseif dynamicElement.attributeValue("field-reference") == "Immagine">
431 <#assign
432 immagine_cur_sede = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData())
433 />
434 <#if immagine_cur_sede?has_content && immagine_cur_sede.uuid??>
435 <#assign
436 urlImmagine_cur_sede = "/portal/c/document_library/get_file?uuid="
437 + immagine_cur_sede.uuid
438 + "&groupId="
439 + immagine_cur_sede.groupId
440 />
441 </#if>
442 </#if>
443 </#list>
444 <#assign
445 altre_sedi +=
446 [{
447 "nome": nome_cur_sede,
448 "indirizzo": indirizzo_cur_sede,
449 "orari": orari_cur_sede,
450 "immagine": immagine_cur_sede,
451 "urlImmagine": urlImmagine_cur_sede
452 }]
453 />
454 </#if>
455 </#list>
456</#if>
457<#-- GET CONTATTI -->
458<#assign
459 has_contatti = PuntiDiContatto.getData()?has_content
460 contatti_UO = []
461/>
462<#if has_contatti>
463 <#list PuntiDiContatto.getSiblings() as cur_PuntiDiContatto>
464 <#assign
465 nome_wallet = ""
466 contatti_wallet = []
467 contatti_data = jsonFactoryUtil.createJSONObject(cur_PuntiDiContatto.getData())
468 relatedArticles = JournalArticleLocalService.getArticlesByResourcePrimKey(contatti_data.classPK?number)
469 />
470 <#if relatedArticle?? && relatedArticle?size gt 0>
471 <#assign
472 relatedArticle = relatedArticles[0]
473 document = relatedArticle.getDocumentByLocale(themeDisplay.getLocale())
474 rootElement = document.getRootElement()
475 />
476 <#list rootElement.elements() as dynamicElement>
477 <#-- AGGIUNGO IL CONTATTO SOLO SE VALORIZZATO E DEFINISCO IL NOME DEL WALLET -->
478 <#if dynamicElement.attributeValue("field-reference") == "Titolo">
479 <#assign nome_wallet = dynamicElement.element("dynamic-content").getText() />
480 <#elseif dynamicElement.element("dynamic-content").getText()?has_content>
481 <#assign
482 tipo_contatto = (dynamicElement.attributeValue("field-reference") == "URL" )?string("Sito Web", dynamicElement.attributeValue("field-reference"))
483 contatti_wallet +=
484 [{
485 "tipo": tipo_contatto,
486 "valore": dynamicElement.element("dynamic-content").getText()
487 }]
488 />
489 </#if>
490 </#list>
491 </#if>
492 <#if contatti_wallet?size gt 0>
493 <#assign
494 contatti_UO +=
495 [{
496 "titolo": nome_wallet,
497 "contatti": contatti_wallet
498 }]
499 />
500 </#if>
501 </#list>
502</#if>
503
504<#-- GET ALLEGATI -->
505<#assign
506 has_allegati = Allegati.getSiblings()?has_content
507 allegati = []
508/>
509<#if has_allegati>
510<#list Allegati.getSiblings() as cur_allegato>
511 <#if cur_allegato.File.getData()?? && cur_allegato.File.getData()?has_content>
512 <#assign
513 allegato_data = jsonFactoryUtil.createJSONObject(cur_allegato.File.data)
514 url_allegato = cur_allegato.File.getData()
515 nome_allegato = cur_allegato.Etichetta.getData()?has_content?string("${cur_allegato.Etichetta.getData()}", "${allegato_data.getString('title')}" )
516 allegati +=
517 [{
518 "nome": nome_allegato,
519 "url": url_allegato
520 }]
521 />
522 </#if>
523</#list>
524</#if>
525<#-- SEZIONE UO GENITORE -->
526<#if UnitaOrganizzativaGenitore.getData()?has_content>
527 <#list UnitaOrganizzativaGenitore.getSiblings() as cur_UnitaOrganizzativaGenitore>
528 <#assign
529 cur_uo_padre_data = jsonFactoryUtil.createJSONObject(cur_UnitaOrganizzativaGenitore.getData())
530 relatedUOGenitori = JournalArticleLocalService.getArticlesByResourcePrimKey(cur_uo_padre_data.classPK?number)
531 />
532 <#if relatedUOGenitori?? && relatedUOGenitori?has_content>
533 <#assign
534 relatedUOGenitore = relatedUOGenitori[0]
535 document = relatedUOGenitore.getDocumentByLocale(themeDisplay.getLocale())
536 rootElement = document.getRootElement()
537 url_pagina_UO_padre = "/portal/-/${relatedUOGenitore.getUrlTitle()}"
538 nome_UO_padre = ""
539 descrizione_UO_padre = ""
540 immagine_UO_padre = ""
541 urlImmagine_UO_padre = ""
542 contatti_UO_padre = []
543 />
544 <#if rootElement.elements()?has_content>
545 <#list rootElement.elements() as dynamicElement>
546 <#if dynamicElement.attributeValue("field-reference") == "Titolo">
547 <#assign nome_UO_padre = dynamicElement.element("dynamic-content").getText() />
548 <#elseif dynamicElement.attributeValue("field-reference") == "DescrizioneBreve">
549 <#assign descrizione_UO_padre = dynamicElement.element("dynamic-content").getText() />
550 <#elseif dynamicElement.attributeValue("field-reference") == "Immagine">
551 <#assign immagine_UO_padre = dynamicElement.element("dynamic-content").getText() />
552 <#if immagine_UO_padre?has_content>
553 <#assign immagine_UO_padre = jsonFactoryUtil.createJSONObject(immagine_UO_padre) />
554 <#if immagine_UO_padre?has_content && immagine_UO_padre.url??>
555 <#assign
556 immagine_UO_padre = immagine_UO_padre?eval
557 has_immagine_UO_padre = true
558 urlImmagine_UO_padre = immagine_UO_padre.url
559 />
560 </#if>
561 </#if>
562 <#elseif dynamicElement.attributeValue("field-reference") == "Contatti">
563 <#assign
564 contatti_UO_data = jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData())
565 relatedContatti = JournalArticleLocalService.getArticlesByResourcePrimKey(contatti_UO_data.classPK?number)
566 relatedContatto = relatedContatti[0]
567 document = relatedContatto.getDocumentByLocale(themeDisplay.getLocale())
568 rootElement = document.getRootElement()
569 nome_wallet = ""
570 contatti_wallet = []
571 />
572 <#list rootElement.elements() as dynamicElement>
573 <#if dynamicElement.attributeValue("field-reference") == "Titolo">
574 <#assign nome_wallet = dynamicElement.element("dynamic-content").getText() />
575 <#elseif dynamicElement.element("dynamic-content").getText()?has_content>
576 <#assign
577 tipo_contatto = (dynamicElement.attributeValue("field-reference") == "URL" )?string("Sito Web", dynamicElement.attributeValue("field-reference"))
578 contatti_wallet +=
579 [{
580 "tipo": tipo_contatto,
581 "valore": dynamicElement.element("dynamic-content").getText()
582 }]
583 />
584 </#if>
585 </#list>
586 </#if>
587 </#list>
588 <#assign
589 contatti_UO_padre +=[{
590 "titolo": nome_wallet,
591 "contatti": contatti_wallet
592 }]
593 />
594 </#if>
595 </#if>
596 </#list>
597</#if>
598
599<div class="container">
600 <div class="row justify-content-center">
601 <div class="col-12 col-lg-10">
602 <div class="cmp-heading pb-3 pb-lg-4">
603 <div class="row">
604 <div class="col-lg-8">
605 <h1 class="title-xxxlarge" data-element="service-title">
606 ${Titolo.getData()}
607 </h1>
608 <p class="subtitle-small mb-3">
609 ${DescrizioneBreve.getData()}
610 </p>
611 </div>
612 <div class="col-lg-3 offset-lg-1 mt-5 mt-lg-0">
613
614 <div class="dropdown" id="fallback-share">
615 <button
616 aria-label="condividi sui social"
617 class="btn btn-dropdown dropdown-toggle text-decoration-underline d-inline-flex align-items-center fs-6 text-primary"
618 type="button"
619 id="shareActions"
620 data-bs-toggle="dropdown"
621 aria-haspopup="true"
622 aria-expanded="false"
623 >
624 <svg class="icon icon-primary" aria-hidden="true">
625 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-share"></use>
626 </svg>
627 <small><@liferay.language key="share" /></small>
628 </button>
629 <div class="dropdown-menu shadow-lg" aria-labelledby="shareActions">
630 <div class="link-list-wrapper">
631 <ul class="link-list" role="menu">
632 <li role="none">
633 <button class="list-item text-primary px-3 fs-6" role="menuitem" onclick="shareOn('facebook')">
634 <svg class="icon icon-primary" aria-hidden="true">
635 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-facebook"></use>
636 </svg>
637 <span>Facebook</span>
638 </button>
639 </li>
640 <li role="none">
641 <button class="list-item text-primary px-3 fs-6" role="menuitem" onclick="shareOn('twitter')">
642 <svg class="icon icon-primary" aria-hidden="true">
643 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-twitter"></use>
644 </svg>
645 <span><@liferay.language key="Twitter" /></span>
646 </button>
647 </li>
648 <li role="none">
649 <button class="list-item text-primary px-3 fs-6" role="menuitem" onclick="shareOn('whatsapp')">
650 <svg class="icon icon-primary" aria-hidden="true">
651 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-whatsapp"></use>
652 </svg>
653 <span>Whatsapp</span>
654 </button>
655 </li>
656 </ul>
657 </div>
658 </div>
659 </div>
660
661 <div class="dropdown">
662 <button
663 aria-label="vedi azioni da compiere sulla pagina"
664 class="btn btn-dropdown dropdown-toggle text-decoration-underline d-inline-flex align-items-center fs-0"
665 type="button"
666 id="viewActions"
667 data-bs-toggle="dropdown"
668 aria-haspopup="true"
669 aria-expanded="false"
670 >
671 <svg class="icon icon-primary" aria-hidden="true">
672 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-more-items"></use>
673 </svg>
674 <small><@liferay.language key="actions" /></small>
675 </button>
676 <div class="dropdown-menu shadow-lg" aria-labelledby="viewActions">
677 <div class="link-list-wrapper">
678 <ul class="link-list" role="menu">
679 <li role="none">
680 <button class="list-item px-3 fs-6 text-primary" onclick="window.print()" role="menuitem">
681 <svg class="icon icon-primary" aria-hidden="true">
682 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-print"></use>
683 </svg>
684 <span><@liferay.language key="print" /></span>
685 </button>
686 </li>
687 <li role="none">
688 <a class="list-item mail-anchor px-3 fs-6" href="mailto:" role="menuitem">
689 <svg class="icon icon-primary" aria-hidden="true">
690 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-mail"></use>
691 </svg>
692 <span><@liferay.language key="send" /></span>
693 </a>
694 </li>
695 </ul>
696 </div>
697 </div>
698 </div>
699
700 <#list argomenti>
701 <div class="mb-3">
702 <span class="text-paragraph-small fw-semibold"><@liferay.language key="topics" />:</span>
703 <ul class="d-flex flex-wrap gap-2 mt-10 mb-3">
704 <#items as argomento>
705 <li>
706 <a href="${argomento.url}" class="chip chip-simple">
707 <span class="chip-label">
708 ${argomento.name}
709 </span>
710 </a>
711 </li>
712 </#items>
713 </ul>
714 </div>
715 </#list>
716 </div>
717 </div>
718 </div>
719 </div>
720 </div>
721</div>
722<#if Immagine.getData()?? && Immagine.getData() !="">
723 <#assign immagine_alt=Immagine.getAttribute("alt")!"" />
724 <div class="container-fluid my-3">
725 <div class="row">
726 <figure class="figure px-0 img-full">
727 <img alt="${Immagine.getAttribute('alt')}" data-fileentryid="${Immagine.getAttribute('fileEntryId')}" src="${Immagine.getData()}" />
728 <#if immagine_alt !="">
729 <figcaption class="figure-caption text-center pt-3">
730 ${immagine_alt}
731 </figcaption>
732 </#if>
733 </figure>
734 </div>
735 </div>
736</#if>
737<div class="container">
738 <div class="row border-top border-light row-column-menu-left pb-4 pb-lg-80">
739 <div class="col-12 col-lg-3 mb-4 border-col">
740 <div class="cmp-navscroll sticky-top" aria-labelledby="accordion-title-one">
741 <nav class="navbar it-navscroll-wrapper navbar-expand-lg" aria-label="${languageUtil.get(locale, 'page-index')}" data-bs-navscroll="">
742 <div class="navbar-custom" id="navbarNavProgress">
743 <div class="menu-wrapper">
744 <div class="link-list-wrapper">
745 <div class="accordion">
746 <div class="accordion-item">
747 <span class="accordion-header" id="accordion-title-one">
748 <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">
749 <@liferay.language key="page-index" />
750 <svg class="icon icon-xs right" viewBox="0 0 24 24">
751 <path d="M11.6 15.4L6 9.8l.7-.8 4.9 4.9L16.5 9l.7.8z"></path>
752 </svg>
753 </button>
754 </span>
755 <div class="progress">
756 <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>
757 </div>
758 <div id="collapse-one" class="accordion-collapse collapse show" role="region" aria-labelledby="accordion-title-one">
759 <div class="accordion-body">
760 <ul class="link-list" data-element="page-index">
761 <#if Competenze.getData()?has_content>
762 <@navigatorLink sectionId="competences" title="${languageUtil.get(locale, 'responsibilities')}" />
763 </#if>
764
765 <#if tipoUO != "">
766 <@navigatorLink sectionId="office-type" title="${languageUtil.get(locale, 'organization-type')}" />
767 </#if>
768
769 <#if has_assessore && nome_assessore?has_content>
770 <@navigatorLink sectionId="councilor" title="${languageUtil.get(locale, 'councilor')}" />
771 </#if>
772
773 <#if Responsabile.getData()?has_content && responsabili?size gt 0>
774 <@navigatorLink sectionId="chief" title="${languageUtil.get(locale, 'manager')}" />
775 </#if>
776
777 <#if persone_della_struttura?size gt 0>
778 <@navigatorLink sectionId="people" title="${languageUtil.get(locale, 'people')}" />
779 </#if>
780
781 <#if ServiziOfferti.getData()?has_content && servizi_collegati?size gt 0>
782 <@navigatorLink sectionId="related-services" title="${languageUtil.get(locale, 'related-services')}" />
783 </#if>
784
785 <#if nome_sede_principale?has_content>
786 <@navigatorLink sectionId="main-location" title="${languageUtil.get(locale, 'main-location')}" />
787 </#if>
788
789 <#if altre_sedi?has_content>
790 <@navigatorLink sectionId="other-locations" title="${languageUtil.get(locale, 'other-locations')}" />
791 </#if>
792
793 <#if UnitaOrganizzativaGenitore.getData()?has_content && nome_UO_padre?has_content>
794 <@navigatorLink sectionId="parent-uo" title="${languageUtil.get(locale, 'parent-UO')}" />
795 </#if>
796
797 <#if contatti_UO?size gt 0>
798 <@navigatorLink sectionId="contacts" title="${languageUtil.get(locale, 'contact')}" />
799 </#if>
800
801 <#if has_allegati && allegati?size gt 0>
802 <@navigatorLink sectionId="attachments" title="${languageUtil.get(locale, 'attachments')}" />
803 </#if>
804
805 <#if
806 (UlterioriInformazioni.getData())??
807 && (UlterioriInformazioni.getData()?has_content)
808 >
809 <@navigatorLink sectionId="more-info" title="${languageUtil.get(locale, 'additional-information')}" />
810 </#if>
811
812 </ul>
813 </div>
814 </div>
815 </div>
816 </div>
817 </div>
818 </div>
819 </div>
820 </nav>
821 </div>
822 </div>
823 <div class="col-12 col-lg-8 offset-lg-1">
824 <div class="it-page-sections-container">
825 <#if Competenze.getData()?has_content>
826 <section class="it-page-section mb-30 pt-4" id="competences">
827 <h2 class="title-xxlarge mb-3"><@liferay.language key="responsibilities" /></h2>
828 <div class="richtext-wrapper lora">
829 <p>
830 ${Competenze.getData()}
831 </p>
832 </div>
833 </section>
834 </#if>
835
836 <#if tipoUO !="">
837 <section class="it-page-section mb-30 pt-4" id="office-type">
838 <h2 class="title-xxlarge mb-3"><@liferay.language key="organization-type" /></h2>
839 <div class="richtext-wrapper">
840 <span class="badge bg-primary">
841 ${tipoUO}
842 </span>
843 </div>
844 </section>
845 </#if>
846
847 <#if has_assessore && nome_assessore?has_content>
848 <section class="it-page-section mb-30 pt-4" id="councilor">
849 <h2 class="title-xxlarge mb-3"><@liferay.language key="councilor" /></h2>
850 <div class="row">
851 <div class="col-12 col-lg-6 shadow-sm d-flex rounded pe-0" style="height: 120px;">
852 <div class="col-12 col-lg-9 pt-3">
853
854 <a href="${urlPagina_assessore}" class="card-title text-paragraph-regular-medium-semi mb-1 primary-color-b3">
855 ${nome_assessore} ${cognome_assessore}
856 </a>
857 <#list incarichi_assessore as incarico>
858 <div class="card-text">
859 <div>${incarico}</div>
860 </div>
861 </#list>
862 </div>
863 <#if has_immagine_assessore?has_content>
864 <a href="${urlPagina_assessore}" class="d-none d-lg-block col-lg-3 p-0"></a>
865 <#if immagine_assessore.url??>
866 <img
867 class="w-100 h-100"
868 style="object-fit: cover; object-position: center;"
869 alt="${immagine_assessore.alt!}"
870 src="${immagine_assessore.url}"
871 />
872 </#if>
873 </#if>
874 </div>
875 </div>
876 </section>
877 </#if>
878
879 <#list responsabili>
880 <section class="it-page-section mb-30 pt-4" id="chief">
881 <h2 class="title-xxlarge mb-3"><@liferay.language key="manager" /></h2>
882 <div class="row">
883 <#items as responsabile>
884 <div class="col-12 col-lg-6 shadow-sm d-flex rounded pe-0" style="height: 120px;">
885 <div class="col-12 col-lg-9 pt-3">
886 <a href="${responsabile.urlPagina}" class="card-title text-paragraph-regular-medium-semi mb-1 primary-color-b3">
887 ${responsabile.nome} ${responsabile.cognome}
888 </a>
889 <#if responsabile.incarichi?has_content>
890 <div class="card-text">
891 ${responsabile.incarichi}
892 </div>
893 </#if>
894 </div>
895 <#if responsabile.urlImmagine !="">
896 <a href="${responsabile.urlPagina}" class="d-none d-lg-block col-lg-3 p-0">
897 <img
898 class="w-100 h-100"
899 style="object-fit: cover; object-position: center;"
900 alt="${responsabile.immagine.alt!'Immagine responsabile unità organizzativa'}"
901 src="${responsabile.urlImmagine}"
902 />
903 </a>
904 </#if>
905 </div>
906 </#items>
907 </div>
908 </section>
909 </#list>
910
911 <#list persone_della_struttura>
912 <section class="it-page-section mb-30 pt-4" id="people">
913 <h2 class="title-xxlarge mb-3"><@liferay.language key="people" /></h2>
914 <div class="row">
915 <#items as persona>
916 <div class="col-12 col-lg-6 p-0 pe-3 mb-3">
917 <div class="d-flex pe-0 shadow-sm rounded" style="height: 120px;">
918 <div class="col-12 col-lg-9 pt-3">
919 <a href="${persona.urlPagina}" class="card-title text-paragraph-regular-medium-semi mb-1 primary-color-b3">
920 ${persona.nome} ${persona.cognome}
921 </a>
922 <#if persona.incarico?has_content>
923 <div class="card-text">
924 ${persona.incarico}
925 </div>
926 </#if>
927 </div>
928 <#if persona.urlImmagine !="">
929 <a href="${persona.urlPagina}" class="d-none d-lg-block col-lg-3 p-0">
930 <img
931 class="w-100 h-100"
932 style="object-fit: cover; object-position: center;"
933 alt="${persona.immagine.alt!'Immagine componente staff dell\'unità organizzativa'}"
934 src="${persona.urlImmagine}" />
935 </a>
936 </#if>
937 </div>
938 </div>
939 </#items>
940 </div>
941 </section>
942 </#list>
943
944 <#list servizi_collegati>
945 <section class="it-page-section mb-30 pt-4" id="related-services">
946 <h2 class="title-xxlarge mb-3"><@liferay.language key="related-services" /></h2>
947 <div class="row">
948 <#items as servizio>
949 <div class="col-12 col-lg-6 p-0 pe-3 mb-3">
950 <div class="p-3 shadow-sm rounded h-100">
951 <div class="category-top fw-semibold t-primary text-uppercase" style="font-size: .8rem;">
952 <#list servizio.categorie as categoria>
953 <div>
954 <div class="category">
955 ${categoria.name}
956 </div>
957 </div>
958 </#list>
959 </div>
960 <div class="col-12 col-lg-9 p-0 pt-3">
961 <p class="card-title text-paragraph-regular-medium-semi mb-1 primary-color-b3">
962 <a
963 href="${servizio.urlPagina}"
964 class="card-title text-paragraph-regular-medium-semi mb-1 primary-color-b3">
965 ${servizio.nome}
966 </a>
967 </p>
968 <div class="card-text">
969 ${servizio.descrizione}
970 </div>
971 </div>
972 </div>
973 </div>
974 </#items>
975 </div>
976 </section>
977 </#list>
978
979 <#if nome_sede_principale?has_content>
980 <section class="it-page-section mb-30 pt-4" id="main-location">
981 <h2 class="title-xxlarge mb-3"><@liferay.language key="main-location" /></h2>
982 <div class="">
983 <div class="card card-teaser card-teaser-info rounded shadow-sm p-4">
984 <div class="card-body pe-3">
985 <h5 class="card-title mb-2">
986 <a class="text-decoration-none" href="/portal/-/${SedePrincipale.getUrlTitle()}">
987 ${nome_sede_principale}
988 </a>
989 </h5>
990 <div class="card-text">
991 <#if indirizzo_sede_principale !="">
992 <p class="mb-2">
993 ${indirizzo_sede_principale}
994 </p>
995 </#if>
996 <#if orari_sede_principale !="">
997 <p class="mb-2">
998 ${orari_sede_principale}
999 </p>
1000 </#if>
1001 </div>
1002 </div>
1003 <#if immagine_sede_principale.uuid??>
1004 <div class="avatar size-xl">
1005 <img
1006 alt="${immagine_sede_principale!'Immagine ' + nome_sede_principale}"
1007 src="${urlImmagine_sede_principale}" />
1008 </div>
1009 </#if>
1010 </div>
1011 </div>
1012 </section>
1013 </#if>
1014
1015 <#list altre_sedi>
1016 <section class="it-page-section mb-30 pt-4" id="other-locations">
1017 <h2 class="title-xxlarge mb-3"><@liferay.language key="other-locations" /></h2>
1018 <div class="">
1019 <#items as sede>
1020 <div class="card card-teaser card-teaser-info rounded shadow-sm p-4">
1021 <div class="card-body pe-3">
1022 <h5 class="card-title mb-2">
1023 <a class="text-decoration-none" href="/portal/-/${relatedSede.getUrlTitle()}">
1024 ${sede.nome}
1025 </a>
1026 </h5>
1027 <div class="card-text">
1028 <#if sede.indirizzo !="">
1029 <p class="mb-2">
1030 ${sede.indirizzo}
1031 </p>
1032 </#if>
1033 <#if sede.orari !="">
1034 <p class="mb-2">
1035 ${sede.orari}
1036 </p>
1037 </#if>
1038 </div>
1039 </div>
1040 <#if sede.urlImmagine?has_content>
1041 <div class="avatar size-xl">
1042 <img
1043 alt="${sede.immagine.alt!'Immagine ' + nome_cur_sede}"
1044 src="${sede.urlImmagine}" />
1045 </div>
1046 </#if>
1047 </div>
1048 </#items>
1049 </div>
1050 </section>
1051 </#list>
1052
1053 <#if UnitaOrganizzativaGenitore.getData()?has_content && nome_UO_padre?has_content>
1054 <section class="it-page-section mb-30 pt-4" id="parent-uo">
1055 <h2 class="title-xxlarge mb-3"><@liferay.language key="parent-UO" /></h2>
1056 <div class="">
1057 <div class="card card-teaser card-teaser-info rounded shadow-sm p-4">
1058 <div class="card-body pe-3">
1059 <h5 class="card-title mb-2">
1060 <a class="text-decoration-none" href="${url_pagina_UO_padre}">
1061 ${nome_UO_padre}
1062 </a>
1063 </h5>
1064 <#list contatti_UO_padre>
1065 <div class="card-text pt-3">
1066 <#items as wallet_contatti>
1067 <div class="col-12 col-md-6 px-0">
1068 <div class="col-11 px-0">
1069 <#list wallet_contatti.contatti as contatto>
1070 <div>
1071 <span class="fw-semibold">
1072 <@liferay.language key="${contatto.tipo?replace(' ', '-')}" />:</span>
1073 <#assign url_type="" />
1074 <#if
1075 contatto.tipo=="Email"
1076 || contatto.tipo=="PEC"
1077 >
1078 <#assign url_type="mailto:" />
1079 <#elseif
1080 contatto.tipo=="Telefono"
1081 || contatto.tipo=="Whatsapp"
1082 || contatto.tipo=="Telegram"
1083 >
1084 <#assign url_type="tel:" />
1085 </#if>
1086 <span class="ms-1">
1087 <a
1088 href="${url_type}${contatto.valore}"
1089 target="_blank"
1090 class="text-primary">
1091 ${contatto.valore}
1092 </a>
1093 </span>
1094 </div>
1095 </#list>
1096 </div>
1097 </div>
1098 </#items>
1099 </div>
1100 </#list>
1101 </div>
1102 <#if immagine_UO_padre?has_content && immagine_UO_padre.url?has_content>
1103 <div class="avatar size-xl">
1104 <img
1105 src="${immagine_UO_padre.url}"
1106 alt="${immagine_UO_padre.alt}" />
1107 </div>
1108 </#if>
1109 </div>
1110 </div>
1111 </section>
1112 </#if>
1113 <#if contatti_UO?size gt 0>
1114 <#list contatti_UO>
1115 <section class="it-page-section mb-30" id="contacts">
1116 <h2 class="title-xxlarge mb-3"><@liferay.language key="contact" /></h2>
1117 <div class="row">
1118 <#items as wallet_contatti>
1119 <div class="col-12 col-md-6 pe-3">
1120 <div class="col-11 p-3 shadow-sm rounded">
1121 <div class="h6 mb-2">
1122 ${wallet_contatti.titolo}
1123 </div>
1124 <#list wallet_contatti.contatti as contatto>
1125 <div>
1126 <span class="fw-semibold">
1127 <@liferay.language key="${contatto.tipo?replace(' ', '-')}" />:</span>
1128 <#assign url_type="" />
1129 <#if
1130 contatto.tipo=="Email"
1131 || contatto.tipo=="PEC">
1132 <#assign url_type="mailto:" />
1133 <#elseif
1134 contatto.tipo=="Telefono"
1135 || contatto.tipo=="Whatsapp"
1136 || contatto.tipo=="Telegram">
1137 <#assign url_type="tel:" />
1138 </#if>
1139 <span class="ms-1">
1140 <a
1141 href="${url_type}${contatto.valore}"
1142 target="_blank"
1143 class="text-primary">
1144 ${contatto.valore}
1145 </a>
1146 </span>
1147 </div>
1148 </#list>
1149 </div>
1150 </div>
1151 </#items>
1152 </div>
1153 </section>
1154 </#list>
1155 </#if>
1156
1157 <#list allegati>
1158 <section class="it-page-section mb-30" id="attachments">
1159 <h2 class="mb-3"><@liferay.language key="attachments" /></h2>
1160 <div class="col-12">
1161 <ul class="p-3 my-3 shadow rounded">
1162 <#items as allegato>
1163 <li group="attachments">
1164 <div class="d-flex align-items-center ${allegato?has_next?string(' mb-2', '')}">
1165 <a class="text-decoration_none fw-semibold t-primary" target="_blank" href="${allegato.url}">
1166 <svg class="icon icon-primary me-2" aria-hidden="true">
1167 <use
1168 xlink:href="/portal/o/agid-liferay-theme/images/sprite.svg#it-download"
1169 ></use>
1170 </svg>
1171 ${allegato.nome}
1172 </a>
1173 </div>
1174 </li>
1175 </#items>
1176 </ul>
1177 </div>
1178 </section>
1179 </#list>
1180
1181 <#if (UlterioriInformazioni.getData())?? && (UlterioriInformazioni.getData()?has_content)>
1182 <section class="it-page-section mb-30" id="more-info">
1183 <h2 class="mb-3"><@liferay.language key="additional-information" /></h2>
1184 <div class="col-12">
1185 ${UlterioriInformazioni.getData()}
1186 </div>
1187 </section>
1188 </#if>
1189
1190 </div>
1191 <#assign
1192 modifiedDate = .vars['reserved-article-modified-date'].getData()?split(", ")[1]?split(" +")[0]
1193 displayModifiedDate = modifiedDate?datetime("dd MMM yyyy hh:mm:ss")?datetime
1194 />
1195 <p class="text-paragraph-small mb-0 lora">
1196 <span class="fw-semibold"><@liferay.language key="last-update-date" />: </span>
1197 <span>
1198 <span>
1199 ${displayModifiedDate?string.short}
1200 </span>
1201 </span>
1202 </p>
1203 </div>
1204 </div>
1205</div>
1206<script defer>
1207
1208 document.querySelectorAll(".mail-anchor").forEach(anchor => anchor.href = "mailto:&subject=${Titolo.getData()}&body=" + window.location.href)
1209
1210 function shareOn(type) {
1211 let articleUrl = window.location.href;
1212 const mapping = {
1213 "facebook": "https://facebook.com/sharer/sharer.php?u=" + articleUrl,
1214 "twitter": "https://twitter.com/intent/tweet/?text=" + articleUrl,
1215 "linkedin": "http://www.linkedin.com/sharing/share-offsite/?url=" + articleUrl,
1216 "whatsapp": "whatsapp://send?text=" + articleUrl
1217 }
1218
1219 window.open(mapping[type], "_blank");
1220 return
1221 }
1222
1223 function redirect(url) {
1224 window.location.href = url;
1225 }
1226
1227 function bringMeTo(id) {
1228 document.getElementById(id).scrollIntoView({behavior: 'smooth'});
1229 }
1230
1231</script>
1232
1233<#macro navigatorLink sectionId title>
1234<#local desc = "" />
1235
1236<#if title?? && title?has_content>
1237 <#local desc = title />
1238<#else>
1239 <#local desc = sectionId />
1240</#if>
1241
1242<li class="nav-item">
1243 <a
1244 class="nav-link active"
1245 onclick="bringMeTo('${sectionId}')"
1246 role="button"
1247 aria-label="${languageUtil.get(locale, 'go-to-section')}: ${title}"
1248 >
1249 <span class="title-medium">${title}</span>
1250 </a>
1251</li>
1252</#macro>