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