Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing:
==> Sedi[0] [in template "20095#20121#34615" at line 144, column 22]
----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: Sede = Sedi[0] [in template "20095#20121#34615" at line 144, column 17]
----
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=localeUtil.getDefault() />
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<#list ancestors as parente>
23 <#assign
24 sorted_ancestors +=
25 [{
26 "name": parente.name,
27 "ancestors": parente.getAncestors()?size,
28 "data": parente
29 }]
30 />
31</#list>
32
33<div class="container finmatica-breadcrumb-container mb-4">
34 <div class="row justify-content-center">
35 <div class="col-12 col-lg-10">
36 <div class="cmp-breadcrumbs" role="navigation">
37 <nav class="breadcrumb-container" aria-label="breadcrumb">
38 <ol class="breadcrumb p-0" data-element="breadcrumb">
39 <li class="breadcrumb-item"><a
40 href="${themeDisplay.getThemeSetting('Home URL')}">
41 <span class="breadcrumb-text-truncate">Home</span>
42 </a>
43 <span class="separator">/</span>
44 </li>
45 <#list sorted_ancestors?sort_by("ancestors") as ancestor>
46 <li class="breadcrumb-item"><a
47 href="/portal${ancestor.data.getFriendlyURL()}">
48 <span class="breadcrumb-text-truncate">
49 ${ancestor.data.getName()}
50 </span>
51 </a>
52 <span class="separator">/</span>
53 </li>
54 </#list>
55 <li class="breadcrumb-item"><a
56 href="/portal${paginaPadre.getFriendlyURL()}">
57 <span class="breadcrumb-text-truncate">
58 ${paginaPadre.getName()}
59 </span>
60 </a>
61 <span class="separator">/</span>
62 </li>
63 <li class="breadcrumb-item">${Titolo.getData()}</li>
64 </ol>
65 </nav>
66 </div>
67 </div>
68 </div>
69</div>
70
71<#-- GET TASSONOMIE -->
72<#assign
73 argomenti=[]
74 tipiDocumento=[]
75 tipoAlbo=""
76 lifeEvents=[]
77 businessEvents=[]
78 licenza=""
79/>
80<#list categoryList as categoryEntry>
81
82 <#assign
83 vocabulary = AssetVocabularyLocalServiceUtil.getVocabulary(categoryEntry.getVocabularyId())
84 className = ClassNameService.fetchClassName("com.liferay.asset.kernel.model.AssetCategory")
85 friendlyUrlEntry = FriendlyURLEntryLocalService.getMainFriendlyURLEntry(className.getClassNameId(), categoryEntry.categoryId)
86 friendlyUrlList = FriendlyURLEntryLocalService.getFriendlyURLEntryLocalizations(friendlyUrlEntry.friendlyURLEntryId)
87 cat_name = categoryEntry.name
88 cat_localized_name = categoryEntry.getTitle(themeDisplay.getLocale(), true),
89 cat_url = friendlyUrlList[0].urlTitle
90 />
91 <#if vocabulary.name=="tassonomia licenze" || vocabulary.description=="licenze">
92 <#assign licenza=cat_name />
93 <#elseif vocabulary.name=="tassonomia tipi di documento" || vocabulary.description=="tipi di documento">
94 <#assign tipiDocumento +=[ cat_localized_name ] />
95 <#elseif vocabulary.name=="life events" || vocabulary.description=="eventi della vita delle persone">
96 <#assign lifeEvents +=[ cat_localized_name ] />
97 <#elseif vocabulary.name=="tassonomia business events" || vocabulary.description=="eventi della vita delle imprese">
98 <#assign businessEvents +=[ cat_localized_name ] />
99 <#elseif vocabulary.name=="tassonomia documenti albo pretorio" || vocabulary.description=="documenti albo pretorio">
100 <#assign tipoAlbo=cat_name />
101 <#elseif vocabulary.name=="tassonomia argomento" || vocabulary.description=="argomenti">
102 <#assign
103 argomenti +=
104 [{
105 "name": cat_localized_name,
106 "url": cat_url
107 }]
108 />
109 </#if>
110</#list>
111
112<#-- GET UO RESPONSBAILE -->
113<#if jsonFactoryUtil.createJSONObject(UfficioResponsabileDocumento.getData())?has_content>
114 <#assign UO_data=jsonFactoryUtil.createJSONObject(UfficioResponsabileDocumento.getData()) />
115<#else>
116 <#assign UO_data="" />
117</#if>
118
119<#if UO_data !="">
120 <#assign
121 UfficiResponsabili=JournalArticleLocalService.getArticlesByResourcePrimKey(UO_data.classPK?number)
122 UfficioResponsabile=UfficiResponsabili[0]
123 document=saxReaderUtil.read(UfficioResponsabile.getContent())
124 rootElement=document.getRootElement()
125 nome_UO=""
126 indirizzo_UO=""
127 immagine_UO=""
128 urlImmagine_UO=""
129 />
130 <#list rootElement.elements() as dynamicElement>
131 <#if dynamicElement.attributeValue("field-reference")=="Titolo">
132 <#assign nome_UO=dynamicElement.element("dynamic-content").getText() />
133 <#elseif dynamicElement.attributeValue("field-reference")=="Indirizzo">
134 <#assign indirizzo_UO=dynamicElement.element("dynamic-content").getText() />
135 <#elseif dynamicElement.attributeValue("field-reference")=="Immagine">
136 <#assign immagine_UO=jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData()) />
137 <#if immagine_UO.uuid?has_content>
138 <#assign urlImmagine_UO="/portal/c/document_library/get_file?uuid=" + immagine_UO.uuid + "&groupId=" + immagine_UO.groupId />
139 </#if>
140 <#elseif dynamicElement.attributeValue("field-reference")=="SedePrincipale">
141 <#assign
142 sede_data=jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData())
143 Sedi=JournalArticleLocalService.getArticlesByResourcePrimKey(sede_data.classPK?number)
144 Sede=Sedi[0]
145 document=saxReaderUtil.read(Sede.getContent())
146 rootElement=document.getRootElement()
147 />
148 <#list rootElement.elements() as dynamicElement>
149 <#if dynamicElement.attributeValue("field-reference")=="Indirizzo">
150 <#assign indirizzo_UO=dynamicElement.element("dynamic-content").getText() />
151 </#if>
152 </#list>
153 </#if>
154 </#list>
155</#if>
156
157<#-- GET AUTORI -->
158<#assign autori=[] />
159<#if Autori.getData()?has_content>
160 <#list Autori.getSiblings() as cur_autore>
161 <#assign
162 cur_autore_data=jsonFactoryUtil.createJSONObject(cur_autore.getData())
163 relatedAutori=JournalArticleLocalService.getArticlesByResourcePrimKey(cur_autore_data.classPK?number)
164 relatedAutore=relatedAutori[0]
165 document=saxReaderUtil.read(relatedAutore.getContent())
166 rootElement=document.getRootElement()
167 nome_autore=""
168 cognome_autore=""
169 immagine_autore=""
170 urlImmagine_autore=""
171 incarico_autore=""
172 />
173 <#list rootElement.elements() as dynamicElement>
174 <#if dynamicElement.attributeValue("field-reference")=="Nome">
175 <#assign nome_autore=dynamicElement.element("dynamic-content").getText() />
176 <#elseif dynamicElement.attributeValue("field-reference")=="Cognome">
177 <#assign cognome_autore=dynamicElement.element("dynamic-content").getText() />
178 <#elseif dynamicElement.attributeValue("field-reference")=="Immagine">
179 <#assign immagine_autore=jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData()) />
180 <#if immagine_autore.uuid?has_content>
181 <#assign urlImmagine_autore="/portal/c/document_library/get_file?uuid=" + immagine_autore.uuid + "&groupId=" + immagine_autore.groupId />
182 </#if>
183 <#elseif dynamicElement.attributeValue("field-reference")=="Incarichi">
184 <#assign
185 incarichi_autore=jsonFactoryUtil.createJSONObject(dynamicElement.element("dynamic-content").getData())
186 />
187 <#if incarichi_autore?eval?has_content>
188 <#assign
189 relatedIncarichiAutore=JournalArticleLocalService.getArticlesByResourcePrimKey(incarichi_autore.classPK?number)
190 relatedIncaricoAutore=relatedIncarichiAutore[0]
191 document=saxReaderUtil.read(relatedIncaricoAutore.getContent())
192 rootElement=document.getRootElement()
193 />
194 <#list rootElement.elements() as dynamicElement>
195 <#if dynamicElement.attributeValue("field-reference")=="Titolo">
196 <#assign incarico_autore=dynamicElement.element("dynamic-content").getText() />
197 </#if>
198 </#list>
199 </#if>
200 </#if>
201 </#list>
202 <#assign
203 autori +=
204 [{
205 "nome": nome_autore,
206 "cognome": cognome_autore,
207 "urlImmagine": urlImmagine_autore,
208 "immagine": immagine_autore,
209 "incarico": incarico_autore,
210 "urlPagina": "/portal-/${relatedAutore.getUrlTitle()}"
211 }]
212 />
213 </#list>
214</#if>
215
216<#-- GET SERVIZI COLLEGATI -->
217<#assign servizi_collegati=[] />
218<#if Servizi.getData()?has_content>
219 <#list Servizi.getSiblings() as cur_servizio>
220 <#assign
221 cur_servizio_data=jsonFactoryUtil.createJSONObject(cur_servizio.getData())
222 categorie_cur_servizio=assetCategoryLocalServiceUtil.getCategories("com.liferay.journal.model.JournalArticle", cur_servizio_data.classPK?number)
223 relatedServizi=JournalArticleLocalService.getArticlesByResourcePrimKey(cur_servizio_data.classPK?number)
224 relatedServizio=relatedServizi[0]
225 document=saxReaderUtil.read(relatedServizio.getContent())
226 rootElement=document.getRootElement()
227 nome_servizio=""
228 descrizione_servizio=""
229 categorie_servizio=[]
230 />
231 <#list rootElement.elements() as dynamicElement>
232 <#if dynamicElement.attributeValue("field-reference")=="Titolo">
233 <#assign nome_servizio=dynamicElement.element("dynamic-content").getText() />
234 <#elseif dynamicElement.attributeValue("field-reference")=="DescrizioneBreve">
235 <#assign descrizione_servizio=dynamicElement.element("dynamic-content").getText() />
236 </#if>
237 </#list>
238 <#list categorie_cur_servizio as cur_categoria_cur_servizio>
239 <#assign cur_vocabulary=AssetVocabularyLocalServiceUtil.getVocabulary(cur_categoria_cur_servizio.getVocabularyId()) />
240 <#if cur_vocabulary.getTitle()?lower_case=="tassonomia categoria servizi" || cur_vocabulary.getName()?lower_case=="tassonomia categoria servizi" || cur_vocabulary.getDescription()?lower_case=="categorie servizi">
241 <#assign categorie_servizio +=[cur_categoria_cur_servizio] />
242 </#if>
243 </#list>
244 <#assign
245 servizi_collegati +=
246 [{
247 "nome": nome_servizio,
248 "descrizione"
249 : descrizione_servizio,
250 "categorie": categorie_servizio
251 }]
252 />
253 </#list>
254</#if>
255
256<#-- GET DATE -->
257<#assign
258 data_inizio=""
259 data_fine=""
260 data_protocollo=""
261 DataInizio_Data=getterUtil.getString(DataInizio.getData())
262 DataFine_Data=getterUtil.getString(DataFine.getData())
263 DataProtocollo_Data=getterUtil.getString(DataProtocollo.getData())
264/>
265<#if validator.isNotNull(DataInizio_Data)>
266 <#assign
267 DataInizio_DateObj=dateUtil.parseDate("yyyy-MM-dd", DataInizio_Data, locale)
268 data_inizio=dateUtil.getDate(DataInizio_DateObj, "dd MMMM yyyy" , locale)
269 />
270</#if>
271<#if validator.isNotNull(DataFine_Data)>
272 <#assign
273 DataFine_DateObj=dateUtil.parseDate("yyyy-MM-dd", DataFine_Data, locale)
274 data_fine=dateUtil.getDate(DataFine_DateObj, "dd MMMM yyyy" , locale)
275 />
276</#if>
277<#if validator.isNotNull(DataProtocollo_Data)>
278 <#assign
279 DataProtocollo_DateObj=dateUtil.parseDate("yyyy-MM-dd", DataProtocollo_Data, locale)
280 data_protocollo=dateUtil.getDate(DataProtocollo_DateObj, "dd MMMM yyyy" , locale)
281 />
282</#if>
283
284<#-- SEZIONE GET ALLEGATI -->
285<#assign documenti_collegati=[] />
286<#if DocumentiCollegati.getData()?has_content>
287 <#if DocumentiCollegati.getSiblings()?has_content>
288 <#list DocumentiCollegati.getSiblings() as cur_allegato>
289 <#assign
290 cur_allegato_data=jsonFactoryUtil.createJSONObject(cur_allegato.getData())
291 relatedAllegati=JournalArticleLocalService.getArticlesByResourcePrimKey(cur_allegato_data.classPK?number)
292 relatedAllegato=relatedAllegati[0]
293 document=saxReaderUtil.read(relatedAllegato.getContent())
294 rootElement=document.getRootElement()
295 nome_allegato=""
296 url_allegato="/portal/-/${relatedAllegato.getUrlTitle()}"
297 />
298 <#list rootElement.elements() as dynamicElement>
299 <#if dynamicElement.attributeValue("field-reference")=="Titolo">
300 <#assign nome_allegato=dynamicElement.element("dynamic-content").getText() />
301 </#if>
302 </#list>
303 <#assign
304 documenti_collegati +=
305 [{
306 "nome": nome_allegato,
307 "url": url_allegato
308 }]
309 />
310 </#list>
311 </#if>
312</#if>
313<#if Dataset.getData()?has_content>
314 <#if Dataset.getSiblings()?has_content>
315 <#list Dataset.getSiblings() as cur_allegato>
316 <#assign
317 cur_allegato_data=jsonFactoryUtil.createJSONObject(cur_allegato.getData())
318 relatedAllegati=JournalArticleLocalService.getArticlesByResourcePrimKey(cur_allegato_data.classPK?number)
319 relatedAllegato=relatedAllegati[0]
320 document=saxReaderUtil.read(relatedAllegato.getContent())
321 rootElement=document.getRootElement()
322 nome_allegato=""
323 url_allegato="/portal/-/${relatedAllegato.getUrlTitle()}"
324 />
325 <#list rootElement.elements() as dynamicElement>
326 <#if dynamicElement.attributeValue("field-reference")=="Titolo">
327 <#assign nome_allegato=dynamicElement.element("dynamic-content").getText() />
328 </#if>
329 </#list>
330 <#assign
331 documenti_collegati +=
332 [{
333 "nome": nome_allegato,
334 "url": url_allegato
335 }]
336 />
337 </#list>
338 </#if>
339</#if>
340<#assign
341 immagini_galleria = []
342/>
343
344<#-- GET PHOTOGALLERY -->
345<#if GalleriaImmagini.getData()?has_content>
346 <#list GalleriaImmagini.getSiblings() as cur_GalleriaImmagini>
347 <#if cur_GalleriaImmagini.getData()?? && cur_GalleriaImmagini.getData() !="">
348 <#assign
349 immagini_galleria +=
350 [{
351 "alt": cur_GalleriaImmagini.getAttribute("alt")!"",
352 "fileentryid": cur_GalleriaImmagini.getAttribute("fileEntryId"),
353 "src": cur_GalleriaImmagini.getData()
354 }]
355 />
356 </#if>
357 </#list>
358</#if>
359
360<div class="container">
361 <div class="row justify-content-center">
362 <div class="col-12 col-lg-10">
363 <div class="cmp-heading pb-3 pb-lg-4">
364 <div class="row">
365 <div class="col-lg-8">
366 <h1 class="title-xxxlarge" data-element="service-title">
367 ${Titolo.getData()}
368 </h1>
369 <#if Protocollo.getData()?has_content>
370 <p class="primary-color-b5 mb-3 fs-4 fw-bold">
371 ${Protocollo.getData()}${data_protocollo?has_content?string(", ${data_protocollo}", "")}
372 </p>
373 </#if>
374 <p class="subtitle-small mb-3">
375 ${DescrizioneBreve.getData()}
376 </p>
377 </div>
378
379 <div class="col-lg-3 offset-lg-1 mt-5 mt-lg-0">
380 <div class="dropdown" id="fallback-share">
381 <button
382 aria-label="condividi sui social"
383 class="btn btn-dropdown dropdown-toggle text-decoration-underline d-inline-flex align-items-center fs-6 text-primary"
384 type="button"
385 id="shareActions"
386 data-bs-toggle="dropdown"
387 aria-haspopup="true"
388 aria-expanded="false"
389 >
390 <svg class="icon icon-primary" aria-hidden="true">
391 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-share"></use>
392 </svg>
393 <small><@liferay.language key="share" /></small>
394 </button>
395 <div class="dropdown-menu shadow-lg" aria-labelledby="shareActions">
396 <div class="link-list-wrapper">
397 <ul class="link-list" role="menu">
398 <li role="none">
399 <button class="list-item text-primary px-3 fs-6" role="menuitem" onclick="shareOn('facebook')">
400 <svg class="icon icon-primary" aria-hidden="true">
401 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-facebook"></use>
402 </svg>
403 <span>Facebook</span>
404 </button>
405 </li>
406 <li role="none">
407 <button class="list-item text-primary px-3 fs-6" role="menuitem" onclick="shareOn('twitter')">
408 <svg class="icon icon-primary" aria-hidden="true">
409 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-twitter"></use>
410 </svg>
411 <span><@liferay.language key="Twitter" /></span>
412 </button>
413 </li>
414 <li role="none">
415 <button class="list-item text-primary px-3 fs-6" role="menuitem" onclick="shareOn('whatsapp')">
416 <svg class="icon icon-primary" aria-hidden="true">
417 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-whatsapp"></use>
418 </svg>
419 <span>Whatsapp</span>
420 </button>
421 </li>
422 </ul>
423 </div>
424 </div>
425 </div>
426
427 <div class="dropdown">
428 <button
429 aria-label="vedi azioni da compiere sulla pagina"
430 class="btn btn-dropdown dropdown-toggle text-decoration-underline d-inline-flex align-items-center fs-0"
431 type="button"
432 id="viewActions"
433 data-bs-toggle="dropdown"
434 aria-haspopup="true"
435 aria-expanded="false"
436 >
437 <svg class="icon icon-primary" aria-hidden="true">
438 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-more-items"></use>
439 </svg>
440 <small><@liferay.language key="actions" /></small>
441 </button>
442 <div class="dropdown-menu shadow-lg" aria-labelledby="viewActions">
443 <div class="link-list-wrapper">
444 <ul class="link-list" role="menu">
445 <li role="none">
446 <button class="list-item px-3 fs-6 text-primary" onclick="window.print()" role="menuitem">
447 <svg class="icon icon-primary" aria-hidden="true">
448 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-print"></use>
449 </svg>
450 <span><@liferay.language key="print" /></span>
451 </button>
452 </li>
453 <li role="none">
454 <a class="list-item mail-anchor px-3 fs-6" href="mailto:" role="menuitem">
455 <svg class="icon icon-primary" aria-hidden="true">
456 <use xlink:href="${themeDisplay.getPathThemeImages()}/sprite.svg#it-mail"></use>
457 </svg>
458 <span><@liferay.language key="send" /></span>
459 </a>
460 </li>
461 </ul>
462 </div>
463 </div>
464 </div>
465 <#list argomenti>
466 <div class=" mt-4 mb-3">
467 <span class="text-paragraph-small fw-semibold"><@liferay.language key="topics" />:</span>
468 <ul class="d-flex flex-wrap gap-2 mt-10 mb-3">
469
470 <#items as argomento>
471 <li>
472 <a href="${argomento.url}" class="chip chip-simple">
473 <span class="chip-label">
474 ${argomento.name}
475 </span>
476 </a>
477 </li>
478 </#items>
479
480 </ul>
481 </div>
482 </#list>
483 <#list tipiDocumento>
484 <div class="mb-3">
485 <span class="text-paragraph-small fw-semibold"><@liferay.language key="document-type" />:</span>
486 <ul class="d-flex flex-wrap gap-2 mt-10 mb-3">
487
488 <#items as tipo>
489 <li>
490 <span class="badge bg-primary">${tipo}</span>
491 </li>
492 </#items>
493
494 </ul>
495 </div>
496 </#list>
497 </div>
498 </div>
499 <div class="row mt-5 mb-4">
500
501 <#if (IdentificativoDelDocumento.getData())??>
502 <div class="col col-lg-4">
503 <small><@liferay.language key="identifier" />:</small>
504 <p class="fw-semibold font-monospace">${IdentificativoDelDocumento.getData()}</p>
505 </div>
506 </#if>
507
508 <#if data_inizio !="">
509 <div class="col col-lg-4">
510 <small><@liferay.language key="start-date" />:</small>
511 <p class="fw-semibold font-monospace">${data_inizio}</p>
512 </div>
513 </#if>
514
515 <#if data_fine !="">
516 <div class="col col-lg-4">
517 <small><@liferay.language key="end-date" />:</small>
518 <p class="fw-semibold font-monospace">${data_fine}</p>
519 </div>
520 </#if>
521
522 </div>
523 </div>
524 </div>
525 </div>
526</div>
527
528<#if Immagine.getData()?? && Immagine.getData() !="">
529 <#assign immagineHero_alt=Immagine.getAttribute("alt")!"" />
530 <div class="container-fluid my-3">
531 <div class="row">
532 <figure class="figure px-0 img-full">
533 <img class="figure-img img-fluid" alt="${immagineHero_alt!}" data-fileentryid="${Immagine.getAttribute('fileEntryId')}" src="${Immagine.getData()}" />
534 <#if immagineHero_alt !="">
535 <figcaption class="figure-caption text-center pt-3">
536 ${immagineHero_alt}
537 </figcaption>
538 </#if>
539 </figure>
540 </div>
541 </div>
542</#if>
543
544<div class="container">
545 <div class="row border-top border-light row-column-menu-left pb-4 pb-lg-80">
546 <div class="col-12 col-lg-3 mb-4 border-col">
547 <div class="cmp-navscroll sticky-top" aria-labelledby="accordion-title-one">
548 <nav class="navbar it-navscroll-wrapper navbar-expand-lg" aria-label="${languageUtil.get(locale, 'page-index')}" data-bs-navscroll="">
549 <div class="navbar-custom" id="navbarNavProgress">
550 <div class="menu-wrapper">
551 <div class="link-list-wrapper">
552 <div class="accordion">
553 <div class="accordion-item">
554 <span class="accordion-header" id="accordion-title-one">
555 <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">
556 <@liferay.language key="page-index" />
557 <svg class="icon icon-xs right" viewBox="0 0 24 24">
558 <path d="M11.6 15.4L6 9.8l.7-.8 4.9 4.9L16.5 9l.7.8z"></path>
559 </svg>
560 </button>
561 </span>
562 <div class="progress">
563 <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>
564 </div>
565 <div id="collapse-one" class="accordion-collapse collapse show" role="region" aria-labelledby="accordion-title-one">
566 <div class="accordion-body">
567 <ul class="link-list" data-element="page-index">
568
569 <#if DescrizioneEstesa.getData()?has_content>
570 <li class="nav-item">
571 <a class="nav-link" href="#description">
572 <span class="title-medium"><@liferay.language key="description" /></span>
573 </a>
574 </li>
575 </#if>
576
577 <li class="nav-item">
578 <a class="nav-link" href="#document">
579 <span class="title-medium"><@liferay.language key="document" /></span>
580 </a>
581 </li>
582
583 <li class="nav-item">
584 <a class="nav-link" href="#image-gallery">
585 <span class="title-medium"><@liferay.language key="image-gallery" /></span>
586 </a>
587 </li>
588
589 <li class="nav-item">
590 <a class="nav-link" href="#office">
591 <span class="title-medium"><@liferay.language key="organization-unit" /></span>
592 </a>
593 </li>
594
595 <#if Autori.getData()?has_content>
596 <li class="nav-item">
597 <a class="nav-link" href="#authors">
598 <span class="title-medium"><@liferay.language key="author" /></span>
599 </a>
600 </li>
601 </#if>
602
603 <li class="nav-item">
604 <a class="nav-link" href="#formats">
605 <span class="title-medium"><@liferay.language key="available-formats" /></span>
606 </a>
607 </li>
608
609 <#if licenza !="">
610 <li class="nav-item">
611 <a class="nav-link" href="#license">
612 <span class="title-medium"><@liferay.language key="distribution-license" /></span>
613 </a>
614 </li>
615 </#if>
616
617 <#if servizi_collegati?has_content>
618 <li class="nav-item">
619 <a class="nav-link" href="#related-services">
620 <span class="title-medium"><@liferay.language key="related-services" /></span>
621 </a>
622 </li>
623 </#if>
624
625 <#if documenti_collegati?has_content>
626 <li class="nav-item">
627 <a class="nav-link" href="#related-documents">
628 <span class="title-medium"><@liferay.language key="related-documents" /></span>
629 </a>
630 </li>
631 </#if>
632
633 <#if (RiferimentiNormativi.getData())??>
634 <li class="nav-item">
635 <a class="nav-link" href="#law-requirements">
636 <span class="title-medium"><@liferay.language key="normative-requirements" /></span>
637 </a>
638 </li>
639 </#if>
640
641 <#if (UlterioriInformazioni.getData())??>
642 <li class="nav-item">
643 <a class="nav-link" href="#more-info">
644 <span class="title-medium"><@liferay.language key="additional-information" /></span>
645 </a>
646 </li>
647 </#if>
648
649 </ul>
650 </div>
651 </div>
652 </div>
653 </div>
654 </div>
655 </div>
656 </div>
657 </nav>
658 </div>
659 </div>
660 <div class="col-12 col-lg-8 offset-lg-1">
661 <div class="it-page-sections-container">
662
663 <#if DescrizioneEstesa.getData()?has_content>
664 <section class="it-page-section mb-30 pt-4" id="description">
665 <h2 class="title-xxlarge mb-3"><@liferay.language key="description" /></h2>
666 <div class="richtext-wrapper lora">
667 <p>
668 ${DescrizioneEstesa.getData()}
669 </p>
670 </div>
671 </section>
672 </#if>
673
674 <section class="it-page-section mb-30 has-bg-grey p-4" id="document">
675 <h2 class="title-xxlarge mb-3"><@liferay.language key="document" /></h2>
676 <div class="d-flex align-items-center p-3 shadow rounded bg-white">
677 <svg class="icon icon-primary icon-lh me-2" aria-hidden="true" viewBox="0 0 24 24">
678 <path d="M12,14.2L7.7,9.9l0.7-0.7l3.1,3.1V3h1v9.2l3.1-3l0.7,0.7L12,14.2z M19,12v7.5c0,0.3-0.2,0.5-0.5,0.5h-13C5.2,20,5,19.8,5,19.5V12H4v7.5C4,20.3,4.7,21,5.5,21h13c0.8,0,1.5-0.7,1.5-1.5V12H19z" />
679 </svg>
680 <a class="text-decoration_none fw-semibold t-primary" href="${URLDocumento.getData()}" target="_blank" rel="noopener noreferrer">
681 ${Titolo.getData()}
682 </a>
683 </div>
684 </section>
685
686 <#list immagini_galleria>
687 <section class="it-page-section mb-30" id="image-gallery">
688 <h2 class="title-xxlarge mb-3"><@liferay.language key="image-gallery" /></h2>
689 <div class="it-carousel-wrapper it-carousel-landscape-abstract-three-cols splide splide--slide splide--ltr splide--draggable is-active is-initialized mb-4" data-bs-carousel-splide="" id="splide01">
690 <div class="splide__track" id="splide01-track" style="padding-left: 0px; padding-right: 0px;">
691 <ul class="splide__list it-carousel-all py-4" id="splide01-list" style="transform: translateX(0px);">
692 <#items as img>
693 <li class="splide__slide is-active is-visible h-100" id="splide01-slide0${img?counter}" style="margin-right: 24px; width: calc(calc(100% / 3) - 16px);" tabindex="0" data-focus-mouse="false">
694 <div class="it-single-slide-wrapper">
695 <figure>
696 <img src="${img.src}" alt="${img.alt}" class="img-fluid" style="width: 100%; aspect-ratio: 1/1; object-fit: cover; object-position: center;" loading="lazy">
697 <figcaption class="figure-caption mt-2">
698 ${img.alt}
699 </figcaption>
700 </figure>
701 </div>
702 </li>
703 </#items>
704 </ul>
705 </div>
706 </div>
707 </section>
708 </#list>
709
710 <section class="it-page-section mb-30 pt-4" id="office">
711 <h2 class="title-xxlarge mb-3"><@liferay.language key="chief-office" /></h2>
712 <div class="card card-teaser card-teaser-info shadow-sm rounded d-flex align-items-center p-3 p-lg-4">
713 <div class="card-body">
714 <h4 class="mb-1 title-small-semi-bold-medium">
715 <a href="/portal/web/guest/-/${UfficioResponsabile.getUrlTitle()}" class="card-title text-paragraph-regular-medium-semi mb-3 primary-color-b3">
716 ${nome_UO}
717 </a>
718 </h4>
719 <div class="card-text">
720 <p class="u-main-black">
721 ${indirizzo_UO}
722 </p>
723 </div>
724 </div>
725 <#if urlImmagine_UO?has_content>
726 <a href="${urlImmagine_UO}">
727 <div class="avatar size-xl">
728 <img src="${urlImmagine_UO}" alt="${immagine_UO.description!'Immagine unità organizzativa'}">
729 </div>
730 </a>
731 </#if>
732 </div>
733 </section>
734
735 <#list autori>
736 <section class="it-page-section mb-30 pt-4" id="authors">
737 <h2 class="title-xxlarge mb-3"><@liferay.language key="author" /></h2>
738 <#items as persona>
739 <div class="col-12 col-lg-6 p-0 pe-3 mb-3">
740 <div class="d-flex pe-0 shadow-sm rounded" style="height: 120px;">
741 <div class="col-12 col-lg-9 pt-3">
742 <a href="${persona.urlPagina}" class="card-title text-paragraph-regular-medium-semi mb-1 primary-color-b3">
743 ${persona.nome} ${persona.cognome}
744 </a>
745 <#if persona.incarico?has_content>
746 <div class="card-text">
747 ${persona.incarico}
748 </div>
749 </#if>
750 </div>
751 <#if persona.urlImmagine !="">
752 <a href="${persona.urlPagina}" class="d-none d-lg-block col-lg-3 p-0">
753 <img
754 class="w-100 h-100"
755 style="object-fit: cover; object-position: center;"
756 alt="${persona.immagine.alt!"Immagine componente staff dell'unità organizzativa"}"
757 src="${persona.urlImmagine}"
758 />
759 </a>
760 </#if>
761 </div>
762 </div>
763 </#items>
764 </section>
765 </#list>
766
767 <section class="it-page-section mb-30 pt-4" id="format">
768 <h2 class="title-xxlarge mb-3"><@liferay.language key="available-formats" /></h2>
769 <div class="richtext-wrapper lora">
770 ${FormatiDisponibili.getData()}
771 </div>
772 </section>
773
774 <#if licenza !="">
775 <section class="it-page-section mb-30 pt-4" id="license">
776 <h2 class="title-xxlarge mb-3"><@liferay.language key="distribution-license" /></h2>
777 <div class="richtext-wrapper lora">
778 ${licenza}
779 </div>
780 </section>
781 </#if>
782
783 <#list servizi_collegati>
784 <section class="it-page-section mb-30 pt-4" id="related-services">
785 <h2 class="title-xxlarge mb-3"><@liferay.language key="related-services" /></h2>
786 <div class="row">
787 <#items as servizio>
788 <div class="col-12 col-lg-6 p-0 pe-3 mb-3">
789 <div class="p-3 shadow-sm rounded h-100">
790 <div class="category-top fw-semibold t-primary text-uppercase" style="font-size: .8rem;">
791 <#list servizio.categorie as categoria>
792 <div>
793 <div class="category">
794 ${categoria.name}
795 </div>
796 </div>
797 </#list>
798 </div>
799 <div class="col-12 col-lg-9 p-0 pt-3">
800 <p class="card-title text-paragraph-regular-medium-semi mb-1 primary-color-b3">
801 ${servizio.nome}
802 </p>
803 <div class="card-text">
804 ${servizio.descrizione}
805 </div>
806 </div>
807 </div>
808 </div>
809 </#items>
810 </div>
811 </section>
812 </#list>
813
814 <#list documenti_collegati>
815 <section class="it-page-section mb-30 pt-4" id="attachments">
816 <h2 class="title-xxlarge mb-3"><@liferay.language key="related-documents" /></h2>
817 <div class="col-12 col-md-6 shadow p-3 mb-4 rounded">
818 <#items as allegato>
819 <div class="d-flex align-items-center${allegato?has_next?string(' mb-3', '')}">
820 <svg class="icon icon-primary icon-lh me-2" aria-hidden="true" viewBox="0 0 24 24">
821 <path d="M21,3v6h-1V4.7l-7.6,7.7l-0.8-0.8L19.3,4H15V3H21z M17,19.5c0,0.3-0.2,0.5-0.5,0.5h-12C4.2,20,4,19.8,4,19.5v-12C4,7.2,4.2,7,4.5,7H12V6H4.5C3.7,6,3,6.7,3,7.5v12C3,20.3,3.7,21,4.5,21h12c0.8,0,1.5-0.7,1.5-1.5V12h-1V19.5z" />
822 </svg>
823 <a class="text-decoration_none fw-semibold t-primary" href="${allegato.url}">
824 ${allegato.nome}
825 </a>
826 </div>
827 </#items>
828 </div>
829 </section>
830 </#list>
831
832 <#if (RiferimentiNormativi.getData())??>
833 <section class="it-page-section mb-30 pt-4" id="law-requirements">
834 <h2 class="title-xxlarge mb-3"><@liferay.language key="normative-requirements" /></h2>
835 <div class="richtext-wrapper lora">
836 <p>
837 ${RiferimentiNormativi.getData()}
838 </p>
839 </div>
840 </section>
841 </#if>
842
843 <#if (UlterioriInformazioni.getData())??>
844 <section class="it-page-section mb-30 pt-4" id="more-info">
845 <h2 class="title-xxlarge mb-3"><@liferay.language key="additional-information" /></h2>
846 <div class="richtext-wrapper lora">
847 <p>
848 ${UlterioriInformazioni.getData()}
849 </p>
850 </div>
851 </section>
852 </#if>
853
854 </div>
855 <#assign
856 modifiedDate=.vars['reserved-article-modified-date'].getData()?split(", ")[1]?split(" +")[0]
857 displayModifiedDate=modifiedDate?datetime("dd MMM yyyy hh:mm:ss")
858 />
859 <p class="text-paragraph-small mb-0 lora">
860 <span class="fw-semibold"><@liferay.language key="last-update-date" />: </span>
861 <span>
862 ${displayModifiedDate?string["dd/MM/yyyy, HH:mm"]}
863 </span>
864 </p>
865 </div>
866 </div>
867</div>
868
869<style>
870.chip.chip-simple .chip-label {
871 translate: 0 -25%;
872}
873</style>