null Untitled Avviso pubblico

Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing:
==> administrative_people_webContentData.classPK  [in template "34140#34167#38494" at line 505, column 133]

----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to be 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: #assign cur_administrative_staff_clas...  [in template "34140#34167#38494" at line 505, column 89]
----
1<#-- ricavo i valori dei custom field con structureKey --> 
2<#if validator.isNotNull(themeDisplay.getLayout().getGroup().getExpandoBridge()) > 
3	<#assign STRUCTURE_KEY_UFFICIO = "" /> 
4	<#assign STRUCTURE_KEY_PERSONALE_AMMINISTRATIVO = "" /> 
5	<#if (( themeDisplay.getLayout().getGroup().getExpandoBridge().hasAttribute("structure_key_ufficio"))) > 
6		<#if themeDisplay.getLayout().getGroup().getExpandoBridge().getAttribute("structure_key_ufficio")??> 
7			<#assign STRUCTURE_KEY_UFFICIO = themeDisplay.getLayout().getGroup().getExpandoBridge().getAttribute("structure_key_ufficio")/> 
8		</#if> 
9	</#if> 
10	<#if (( themeDisplay.getLayout().getGroup().getExpandoBridge().hasAttribute("structure_key_personale_amministrativo"))) > 
11		<#if themeDisplay.getLayout().getGroup().getExpandoBridge().getAttribute("structure_key_personale_amministrativo")??> 
12			<#assign STRUCTURE_KEY_PERSONALE_AMMINISTRATIVO = themeDisplay.getLayout().getGroup().getExpandoBridge().getAttribute("structure_key_personale_amministrativo")/> 
13		</#if> 
14	</#if> 
15</#if> 
16 
17<#-- instanceId --> 
18<#assign instanceId = themeDisplay.getPortletDisplay().getId()?keep_after("INSTANCE_") /> 
19 
20<#-- etichette --> 
21<#assign label_del = languageUtil.get(locale, "label_del") /> 
22<#assign label_date = languageUtil.get(locale, "label_date") /> 
23<#assign label_data_emissione = languageUtil.get(locale, "label_data_emissione") /> 
24<#assign label_data_ultima_modifica = languageUtil.get(locale, "label_data_ultima_modifica") /> 
25<#assign label_data_inizio_validita = languageUtil.get(locale, "label_data_inizio_validita") /> 
26<#assign label_data_fine_validita = languageUtil.get(locale, "label_data_fine_validita") /> 
27<#assign label_importo = languageUtil.get(locale, "label_importo") /> 
28<#assign label_documenti = languageUtil.get(locale, "label_documenti") /> 
29<#assign label_ulteriori_informazioni = languageUtil.get(locale, "label_ulteriori_informazioni") /> 
30<#assign label_ultimo_aggiornamento = languageUtil.get(locale, "label_ultimo_aggiornamento") /> 
31<#assign label_responsabile_del_procedimento = languageUtil.get(locale, "label_responsabile_del_procedimento") /> 
32<#assign label_ufficio_responsabile = languageUtil.get(locale, "label_ufficio_responsabile") /> 
33 
34<#assign label_condividi = languageUtil.get(locale, "label_condividi") /> 
35<#assign label_vedi_azioni = languageUtil.get(locale, "label_vedi_azioni") /> 
36<#assign label_argomenti = languageUtil.get(locale, "label_argomenti") /> 
37<#assign label_facebook = languageUtil.get(locale, "label_facebook") /> 
38<#assign label_twitter = languageUtil.get(locale, "label_twitter") /> 
39<#assign label_linkedin = languageUtil.get(locale, "label_linkedin") /> 
40<#assign label_whatsapp = languageUtil.get(locale, "label_whatsapp") /> 
41<#assign label_stampa = languageUtil.get(locale, "label_stampa") /> 
42<#assign label_invia = languageUtil.get(locale, "label_invia") /> 
43<#assign label_indice_pagina = languageUtil.get(locale, "label_indice_pagina") /> 
44 
45<#assign label_vai_sezione = languageUtil.get(locale, "label_vai_sezione") /> 
46<#assign label_vai_alla_pagina = languageUtil.get(locale, "label_vai_alla_pagina") /> 
47<#assign label_documento = languageUtil.get(locale, "label_documento") /> 
48<#assign label_data = languageUtil.get(locale, "label_data") /> 
49 
50<#-- Ricavo servizi utili in seguito --> 
51<#-- Servizo per ricavare le categorie --> 
52<#assign catLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
53<#-- Servizio per ricavare dati del journal article --> 
54<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") /> 
55<#-- Servizio per ricavare il nome del gruppo corrente --> 
56<#assign groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService") /> 
57<#-- Nome del sito --> 
58<#assign currentGroupName = groupLocalService.getGroup(groupId).getName(locale) /> 
59<#-- Servizio per ricavare l'oggetto layout --> 
60<#assign layoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") /> 
61 
62<#-- Ricavo alcuni meta dati associati all'articolo --> 
63<#-- Ricavo article id --> 
64<#assign articleId = .vars['reserved-article-id'].data /> 
65<#-- Ricavo il titolo --> 
66<#assign titolo = .vars['reserved-article-title'].data /> 
67<#assign titolo = escapeExtraChar(titolo) /> 
68 
69<#-- Altri dati associati all'articolo che ricavo tramite API --> 
70<#assign article = journalArticleLocalService.getArticle( groupId,  articleId ) /> 
71 
72<#-- Data ultima modifica articolo --> 
73<#assign articleModifiedDateObj = article.getModifiedDate() /> 
74<#if validator.isNotNull(articleModifiedDateObj)> 
75	<#assign articleModifiedDate = dateUtil.getDate(articleModifiedDateObj, "dd/MM/yyyy, hh:mm", locale) /> 
76</#if> 
77 
78<#-- Url Title journal article --> 
79<#assign articleUrlTitle = article.getUrlTitle() /> 
80<#-- Primary key journal article --> 
81<#assign articlePrimKey = article.resourcePrimKey/> 
82 
83<#-- Se il carattere indicato è il prefisso della categoria, indica che la stessa non deve essere mostrata a video, ma viene solo usata per scopi funzionali --> 
84<#assign PREFIX_SERVICE_CATEGORY = "_" /> 
85 
86<#-- Ricavo tutte le categorie associate ad un articolo a meno di quelle che hanno un prefisso "_" --> 
87<#function getCategoryByArticlePrimKey articlePrimKey> 
88    <#assign tmp = "" />	 
89    <#assign articleCatNames = catLocalService.getCategories("com.liferay.journal.model.JournalArticle", getterUtil.getLong(articlePrimKey)) /> 
90	<#if (articleCatNames?size > 0)> 
91		<#list articleCatNames as category>	 
92			<#if category.name?substring(0,1) != PREFIX_SERVICE_CATEGORY > 
93				<#assign tmp = tmp + category.name + ", " />	 
94			</#if> 
95		</#list> 
96		<#assign tmp = tmp?keep_before_last(",") />				 
97	</#if>  
98    <#return tmp> 
99</#function> 
100 
101<#-- Variante: restituisce solo la lista di oggetti category --> 
102<#function getListCategoryByArticlePrimKey articlePrimKey> 
103    <#assign listCategories = [] />	 
104    <#assign articleCat = catLocalService.getCategories("com.liferay.journal.model.JournalArticle", getterUtil.getLong(articlePrimKey)) /> 
105	<#if (articleCat?size > 0)> 
106		<#list articleCat as category>	 
107			<#if category.name?substring(0,1) != PREFIX_SERVICE_CATEGORY > 
108				<#assign listCategories = listCategories + [category] />	 
109			</#if> 
110		</#list> 
111	</#if>  
112    <#return listCategories> 
113</#function> 
114 
115<#-- Funzione formatta euro  --> 
116<#function formatEuro amount> 
117	<#assign str = amount?replace("\\.","" "r")?replace(",","." "r")> 
118	<#assign x = str?number> 
119    <#return x?string[",##0.00"]> 
120</#function> 
121 
122<#-- Funzione escape su stringa  --> 
123<#function escapeExtraChar text> 
124    <#return text?replace("\"","&quot;", "r")?replace("'","&rsquo;", "r")> 
125</#function> 
126 
127<#-- Verifico se il primo elemento di una lista esiste --> 
128<#function firstOfListNotEmpty list> 
129    <#assign result = false /> 
130	<#if list?? && list?has_content && list.getSiblings()?has_content && list.getSiblings()?first.getData()?has_content> 
131    	<#assign result = true />  
132    </#if> 
133    <#return result> 
134</#function> 
135 
136<#-- Verifico che ci sia almeno un elemento in lista --> 
137<#function oneAtLeastOfListNotEmpty list> 
138	 <#assign esito = false /> 
139	 <#if list?? && list?has_content && list.getSiblings()?has_content> 
140	 	<#list list.getSiblings() as cur_elem> 
141	 		<#if cur_elem.getData()?has_content> 
142	    		<#assign esito = true /> 
143		    	<#break> 
144	    	</#if> 
145	 	</#list> 
146    </#if> 
147    <#return esito> 
148</#function> 
149 
150<#-- parso tutte le date della struttura --> 
151<#-- data dell'atto --> 
152<#if validator.isNotNull(release_date) && validator.isNotNull(release_date.getData())> 
153	<#assign release_date_string = getterUtil.getString(release_date.getData()) /> 
154	<#if validator.isNotNull(release_date_string) && release_date_string?trim != ""> 
155		<#assign release_date_DateObj = dateUtil.parseDate("yyyy-MM-dd", release_date.getData(), locale) /> 
156		<#assign release_date_res = dateUtil.getDate(release_date_DateObj, "dd MMMM yyyy", locale) /> 
157		<#assign release_date_compact = dateUtil.getDate(release_date_DateObj, "dd-MMM-yy", locale) /> 
158	</#if> 
159</#if> 
160 
161<#-- data ultima modifica dell'atto --> 
162<#if validator.isNotNull(last_modification_date) && validator.isNotNull(last_modification_date.getData())> 
163	<#assign last_modification_date_string = getterUtil.getString(last_modification_date.getData()) /> 
164	<#if validator.isNotNull(last_modification_date_string) && last_modification_date_string?trim != ""> 
165		<#assign last_modification_date_DateObj = dateUtil.parseDate("yyyy-MM-dd", last_modification_date.getData(), locale) /> 
166		<#assign last_modification_date_res = dateUtil.getDate(last_modification_date_DateObj, "dd MMMM yyyy", locale) /> 
167		<#assign last_modification_date_compact = dateUtil.getDate(last_modification_date_DateObj, "dd-MMM-yy", locale) /> 
168	</#if> 
169</#if> 
170 
171<#-- data inizio validita' --> 
172<#if validator.isNotNull(start_date) && validator.isNotNull(start_date.getData())> 
173	<#assign start_date_string = getterUtil.getString(start_date.getData()) /> 
174	<#if validator.isNotNull(start_date_string) && start_date_string?trim != ""> 
175		<#assign start_date_DateObj = dateUtil.parseDate("yyyy-MM-dd", start_date.getData(), locale) /> 
176		<#assign start_date_res = dateUtil.getDate(start_date_DateObj, "dd MMMM yyyy", locale) /> 
177		<#assign start_date_compact = dateUtil.getDate(start_date_DateObj, "dd-MMM-yy", locale) /> 
178	</#if> 
179</#if> 
180 
181<#-- data fine validita' --> 
182<#if validator.isNotNull(end_date) && validator.isNotNull(end_date.getData())> 
183	<#assign end_date_string = getterUtil.getString(end_date.getData()) /> 
184	<#if validator.isNotNull(end_date_string) && end_date_string?trim != ""> 
185		<#assign end_date_DateObj = dateUtil.parseDate("yyyy-MM-dd", end_date.getData(), locale) /> 
186		<#assign end_date_res = dateUtil.getDate(end_date_DateObj, "dd MMMM yyyy", locale) /> 
187		<#assign end_date_compact = dateUtil.getDate(end_date_DateObj, "dd-MMM-yy", locale) /> 
188	</#if> 
189</#if> 
190 
191<#-- HTML --> 
192<section class="comuni-scheda scheda-avviso-pubblico"> 
193	<div class="container"> 
194		 
195		<#-- intro scheda + funzionalita trasversali --> 
196		<div class="row"> 
197			<div class="offset-lg-1 col-lg-6 col-md-8"> 
198				<section class="intro-sezione"> 
199					<#-- titolo --> 
200					<#assign titoloScheda = escapeExtraChar(titolo) /> 
201					<#if validator.isNotNull(title) && validator.isNotNull(title.getData())> 
202						<h2 class="titolo-sezione">${title.getData()}</h2> 
203						<#assign titoloScheda = escapeExtraChar(title.getData()) /> 
204					</#if> 
205					 
206					<#-- non cè sottotitolo, ma inserisco le date di validita --> 
207					<#if start_date_res?has_content> 
208						<h4 class="sottotitolo-sezione mb-0"><strong>${label_data_inizio_validita}:</strong> ${start_date_res}</h4> 
209						<#if end_date_res?has_content> 
210							<h4 class="sottotitolo-sezione"><strong>${label_data_fine_validita}:</strong> ${end_date_res}</h4> 
211						</#if>						 
212					</#if> 
213				</section> 
214			</div> 
215			 
216			<#-- blocco funzionalita trasversali --> 
217			<div class="offset-lg-1 col-lg-3 col-md-4"> 
218				<#-- condivisione sui social --> 
219				<#assign currentPageURL = themeDisplay.getPortalURL()+themeDisplay.getURLCurrent() /> 
220				<#assign companyName = themeDisplay.getCompany().getName() /> 
221				 
222				<#assign twitterUrl = "http://twitter.com/share?text=${companyName} - ${titoloScheda} &url=${currentPageURL}" /> 
223				<#assign facebookUrl = "http://www.facebook.com/sharer/sharer.php?u=${currentPageURL}" /> 
224				<#assign linkedinUrl = "https://www.linkedin.com/shareArticle?mini=true&url=${currentPageURL}&title=${companyName} - ${titoloScheda}" /> 
225				<#assign whatsappUrl = "https://api.whatsapp.com/send?text=${companyName} - ${titoloScheda} - ${currentPageURL}" /> 
226				 
227				<#-- condivisione social --> 
228				<div class="dropdown d-inline share-functions"> 
229					<button class="btn btn-dropdown dropdown-toggle btn-sm" type="button" id="shareActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 
230						<svg class="icon"> 
231							<use xlink:href="/o/comuni-theme/svg/sprite.svg#it-share"></use> 
232						</svg> 
233						<span>${label_condividi}</span> 
234					</button> 
235					 
236					<div class="dropdown-menu shadow-lg" aria-labelledby="shareActions"> 
237						<div class="link-list-wrapper"> 
238							<ul class="link-list"> 
239								<li> 
240									<a class="list-item" href="${facebookUrl}" target="_blank"> 
241										<svg class="icon icon-sm"> 
242											<use xlink:href="/o/comuni-theme/svg/sprite.svg#it-facebook"></use> 
243										</svg> 
244										<span>${label_facebook}</span> 
245									</a> 
246								</li> 
247								<li> 
248									<a class="list-item" href="${twitterUrl}" target="_blank"> 
249										<svg class="icon icon-sm"> 
250											<use xlink:href="/o/comuni-theme/svg/sprite.svg#it-twitter"></use> 
251										</svg> 
252										<span>${label_twitter}</span> 
253									</a> 
254								</li> 
255								<li> 
256									<a class="list-item" href="${linkedinUrl}" target="_blank"> 
257										<svg class="icon icon-sm"> 
258											<use xlink:href="/o/comuni-theme/svg/sprite.svg#it-linkedin"></use> 
259										</svg> 
260										<span>${label_linkedin}</span> 
261									</a> 
262								</li> 
263								<li> 
264									<a class="list-item" href="${whatsappUrl}" target="_blank"> 
265										<svg class="icon icon-sm"> 
266											<use xlink:href="/o/comuni-theme/svg/sprite.svg#it-whatsapp"></use> 
267										</svg> 
268										<span>${label_whatsapp}</span> 
269									</a> 
270								</li> 
271							</ul> 
272						</div> 
273					</div> 
274				</div> 
275			 
276				<#-- stampa + invia via email --> 
277				<#assign subjectEmail = companyName+" - "+titoloScheda /> 
278				<#assign bodyEmail = currentPageURL /> 
279				 
280				<div class="dropdown d-inline other-functions"> 
281					<button class="btn btn-dropdown dropdown-toggle btn-sm" type="button" id="viewActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 
282						<svg class="icon"> 
283							<use xlink:href="/o/comuni-theme/svg/sprite.svg#it-more-items"></use> 
284						</svg> 
285						<span>${label_vedi_azioni}</span> 
286					</button> 
287					<div class="dropdown-menu shadow-lg" aria-labelledby="viewActions"> 
288						<div class="link-list-wrapper"> 
289							<ul class="link-list"> 
290								<li> 
291									<a class="list-item" href="javascript:void(0);" onclick="window.print();"> 
292										<svg class="icon icon-sm"> 
293              								<use xlink:href="/o/comuni-theme/svg/sprite.svg#it-print"></use> 
294            							</svg> 
295            							<span>${label_stampa}</span> 
296									</a> 
297								</li> 
298								<li> 
299									<a class="list-item" href="mailto:?subject=${subjectEmail}&body=${bodyEmail}"> 
300										<svg class="icon icon-sm"> 
301              								<use xlink:href="/o/comuni-theme/svg/sprite.svg#it-mail"></use> 
302            							</svg> 
303            							<span>${label_invia}</span> 
304									</a> 
305								</li> 
306							</ul> 
307						</div> 
308					</div>	 
309				</div> 
310				 
311				<#-- categorie --> 
312				<#assign categorie = [] /> 
313 
314				<#-- recupero l'elenco delle categorie da visualizzare --> 
315				<#assign categorie = getListCategoryByArticlePrimKey(articlePrimKey) /> 
316				 
317				<#if categorie?? && (categorie?size > 0)>	 
318					<div class="mt-4 mb-4"> 
319						<h6>${label_argomenti}</h6> 
320						<#list categorie as cur_cat> 
321							<#if validator.isNotNull(cur_cat) && cur_cat != ""> 
322								<div class="chip chip-simple chip-primary no-link"> 
323									<span class="chip-label">${cur_cat.getName()}</span> 
324								</div> 
325							</#if> 
326						</#list> 
327					</div> 
328				</#if> 
329			</div> 
330		</div> 
331	</div> 
332	 
333	<#-- dettaglio scheda --> 
334	<div class="container"> 
335		<div class="row"> 
336			<div class="col"> 
337				<section class="dettaglio-scheda border-top"> 
338					<div class="row">				 
339						<#-- menu ancore sinistra --> 
340						<div class="col-lg-3 col-md-4"> 
341							<aside class="left-anchor-menu"> 
342								 
343								<h4 class="left-anchor-menu-header" id="${instanceId}_${articleId}_left-anchor-menu-header" data-toggle="collapse" data-target="#${instanceId}_${articleId}_left-anchor-menu" aria-expanded="true" aria-controls="${instanceId}_${articleId}_left-anchor-menu"> 
344									<span>${label_indice_pagina}</span> 
345									<svg class="icon icon-sm"> 
346										<use xlink:href="/o/comuni-theme/svg/sprite.svg#it-arrow-up"></use> 
347									</svg> 
348								</h4>							 
349								 
350								<div class="left-anchor-menu-separator"><div class="left-anchor-menu-separator-inner"></div></div> 
351								 
352								<div id="${instanceId}_${articleId}_left-anchor-menu" class="collapse show" aria-labelledby="${instanceId}_${articleId}_left-anchor-menu-header"> 
353									<div class="anchor-menu-wrapper"> 
354										<ul> 
355											<#-- gia ricavato nella sezione principale della scheda --> 
356											<#if release_date_compact?has_content || last_modification_date_compact?has_content || start_date_compact?has_content || end_date_compact?has_content> 
357												<li class="anchor-item"> 
358													<a class="anchor-link" href="#${instanceId}_${articleId}_date" title="${label_vai_sezione} ${label_date}">${label_date}</a>													 
359												</li> 
360											</#if> 
361											<#-- sezione responsabile procedimento --> 
362											<#if administrative_people?has_content> 
363												<li class="anchor-item"> 
364													<a class="anchor-link" href="#${instanceId}_${articleId}_responsabile_del_procedimento" title="${label_vai_sezione} ${label_responsabile_del_procedimento}">${label_responsabile_del_procedimento}</a>													 
365												</li> 
366											</#if> 
367											<#-- sezione ufficio --> 
368											<#if office?has_content> 
369												<li class="anchor-item"> 
370													<a class="anchor-link" href="#${instanceId}_${articleId}_ufficio" title="${label_vai_sezione} ${label_ufficio_responsabile}">${label_ufficio_responsabile}</a>													 
371												</li> 
372											</#if> 
373											<#-- sezione documenti --> 
374											<#if oneAtLeastOfListNotEmpty(attachment)> 
375												<li class="anchor-item"> 
376													<a class="anchor-link" href="#${instanceId}_${articleId}_attachments" title="${label_vai_sezione} ${label_documenti}">${label_documenti}</a>													 
377												</li> 
378											</#if>	 
379											<#-- sezione ulteriori informazioni + ultimo aggiornamento --> 
380											<li class="anchor-item"> 
381												<a class="anchor-link" href="#${instanceId}_${articleId}_further_information" title="${label_vai_sezione} ${label_ulteriori_informazioni}">${label_ulteriori_informazioni}</a>													 
382											</li> 
383										</ul> 
384									</div> 
385								</div> 
386							</aside> 
387						</div> 
388						 
389						<div class="col-lg-9 col-md-8"> 
390							<div class="border-left pl-md-4 pt-4"> 
391								<#-- sezione testo principale --> 
392								<#if  
393									(validator.isNotNull(description) && validator.isNotNull(description.getData())) 
394
395									<article class="page-section"> 
396										<div class="row"> 
397											<div class="col-12"> 
398												<div class="page-section-text"> 
399													<#if validator.isNotNull(description) && validator.isNotNull(description.getData())> 
400														${description.getData()} 
401													</#if> 
402												</div> 
403											</div> 
404										</div> 
405									</article>	 
406								</#if> 
407								 
408								<#-- sezione date dell' atto --> 
409								<#if release_date_compact?has_content || last_modification_date_compact?has_content || start_date_compact?has_content || end_date_compact?has_content> 
410									<article id="${instanceId}_${articleId}_date" class="page-section anchor-section"> 
411										<h4 class="h2">${label_date}</h4> 
412										<div class="row"> 
413											<div class="col-12"> 
414												<div class="point-list-wrapper my-4"> 
415												 
416													<#-- data ultima modifica dell'atto --> 
417													<#if last_modification_date_compact?has_content> 
418														<#assign last_modification_date_split = last_modification_date_compact?split("-") />	 
419														<div class="point-list"> 
420															<div class="point-list-aside point-list-warning"> 
421																<div class="point-date">${last_modification_date_split[0]}</div> 
422																<div class="point-month">${last_modification_date_split[1]}/${last_modification_date_split[2]}</div> 
423																<#-- <div class="point-year">${last_modification_date_split[2]}</div> --> 
424															</div> 
425															<div class="point-list-content"> 
426																<div class="card m-0"> 
427																	<div class="card-body"> 
428																		<h5 class="h3 card-title m-0"><span>${label_data_ultima_modifica}</span></h5> 
429																	</div> 
430																</div> 
431															</div> 
432														</div> 
433													</#if> 
434												 
435													<#-- data dell'atto --> 
436													<#if release_date_compact?has_content> 
437														<#assign release_date_split = release_date_compact?split("-") />	 
438														<div class="point-list"> 
439															<div class="point-list-aside point-list-warning"> 
440																<div class="point-date">${release_date_split[0]}</div> 
441																<div class="point-month">${release_date_split[1]}/${release_date_split[2]}</div> 
442																<#-- <div class="point-year">${release_date_split[2]}</div> --> 
443															</div> 
444															<div class="point-list-content"> 
445																<div class="card m-0"> 
446																	<div class="card-body"> 
447																		<h5 class="h3 card-title m-0"><span>${label_data_emissione}</span></h5> 
448																	</div> 
449																</div> 
450															</div> 
451														</div> 
452													</#if> 
453													 
454													<#-- data inizio validita' --> 
455													<#if start_date_compact?has_content> 
456														<#assign start_date_split = start_date_compact?split("-") />	 
457														<div class="point-list"> 
458															<div class="point-list-aside point-list-warning"> 
459																<div class="point-date">${start_date_split[0]}</div> 
460																<div class="point-month">${start_date_split[1]}/${start_date_split[2]}</div> 
461																<#-- <div class="point-year">${start_date_split[2]}</div> --> 
462															</div> 
463															<div class="point-list-content"> 
464																<div class="card m-0"> 
465																	<div class="card-body"> 
466																		<h5 class="h3 card-title m-0"><span>${label_data_inizio_validita}</span></h5> 
467																	</div> 
468																</div> 
469															</div> 
470														</div> 
471													</#if> 
472													 
473													<#-- data fine validita' --> 
474													<#if end_date_compact?has_content> 
475														<#assign end_date_split = end_date_compact?split("-") />	 
476														<div class="point-list"> 
477															<div class="point-list-aside point-list-warning"> 
478																<div class="point-date">${end_date_split[0]}</div> 
479																<div class="point-month">${end_date_split[1]}/${end_date_split[2]}</div> 
480																<#-- <div class="point-year">${end_date_split[2]}</div> --> 
481															</div> 
482															<div class="point-list-content"> 
483																<div class="card m-0"> 
484																	<div class="card-body"> 
485																		<h5 class="h3 card-title m-0"><span>${label_data_fine_validita}</span></h5> 
486																	</div> 
487																</div> 
488															</div> 
489														</div> 
490													</#if> 
491													 
492												</div> 
493											</div> 
494										</div> 
495									</article>	 
496								</#if> 
497								 
498								<#-- sezione responsabile procedimento --> 
499								<article id="${instanceId}_${articleId}_responsabile_del_procedimento" class="page-section anchor-section"> 
500									<h4 class="h2">${label_responsabile_del_procedimento}</h4> 
501									<div class="row"> 
502										<div class="col-12"> 
503											<#assign administrative_people_webContentData = jsonFactoryUtil.createJSONObject(administrative_people.getData()) /> 
504											<#-- ricavo il classPK --> 
505											<#assign cur_administrative_staff_classPK = administrative_people_webContentData.classPK?number /> 
506											<#-- ricavo il journal article --> 
507											<#assign cur_administrative_staff_ja = journalArticleLocalService.getLatestArticle(cur_administrative_staff_classPK) /> 
508											<#-- ricavo il nome della struttura --> 
509											<#assign cur_administrative_staff_ja_structure_name = cur_administrative_staff_ja.getDDMStructure().getName(locale) /> 
510											<#-- ricavo structureKey --> 
511											<#assign cur_administrative_staff_ja_structureKey = cur_administrative_staff_ja.getDDMStructureKey() /> 
512 
513											<#if cur_administrative_staff_ja??> 
514												<#if cur_administrative_staff_ja_structureKey == STRUCTURE_KEY_PERSONALE_AMMINISTRATIVO> 
515												 
516													<#-- ricavo l'url title associato all'articolo --> 
517													<#assign cur_administrative_staff_ja_url_title= cur_administrative_staff_ja.getUrlTitle() /> 
518												 
519													<#-- ricavo il metodo di saxReaderUtil utile per ricavare poi gli elementi della struttura --> 
520													<#assign document = saxReaderUtil.read(cur_administrative_staff_ja.getContentByLocale(locale)) /> 
521													<#assign rootElement = document.getRootElement() /> 
522													 
523													<#-- inizio a ricavare i dati dalla struttura dell'articolo --> 
524													<#-- nome --> 
525													<#assign name = "" /> 
526													<#assign name_xpath = saxReaderUtil.createXPath("dynamic-element[@name='name']") /> 
527													<#assign name = name_xpath.selectSingleNode(rootElement).getStringValue() /> 
528													<#assign name = name?trim /> 
529 
530													<#-- cognome --> 
531													<#assign surname = "" /> 
532													<#assign surname_xpath = saxReaderUtil.createXPath("dynamic-element[@name='surname']") /> 
533													<#assign surname = surname_xpath.selectSingleNode(rootElement).getStringValue() /> 
534													<#assign surname = surname?trim /> 
535													 
536													<#if name?has_content && surname?has_content> 
537														<a class="chip-link" href="/-/${cur_administrative_staff_ja_url_title}" title="${label_vai_alla_pagina} ${escapeExtraChar(name)} ${escapeExtraChar(surname)}"> 
538															<div class="chip chip-simple chip-primary"> 
539																<span class="chip-label">${name} ${surname}</span> 
540															</div> 
541														</a>		 
542													</#if> 
543												 
544												</#if> 
545											</#if> 
546										</div> 
547									</div> 
548								</article> 
549								 
550								<#-- sezione ufficio --> 
551								<article id="${instanceId}_${articleId}_ufficio" class="page-section anchor-section"> 
552									<h4 class="h2">${label_ufficio_responsabile}</h4> 
553									<div class="row"> 
554										<div class="col-12"> 
555											<#assign office_webContentData = jsonFactoryUtil.createJSONObject(office.getData()) /> 
556											<#-- ricavo il classPK --> 
557											<#assign cur_office_classPK = office_webContentData.classPK?number /> 
558											<#-- ricavo il journal article --> 
559											<#assign cur_office_ja = journalArticleLocalService.getLatestArticle(cur_office_classPK) /> 
560											<#-- ricavo il nome della struttura --> 
561											<#assign cur_office_ja_structure_name = cur_office_ja.getDDMStructure().getName(locale) /> 
562											<#-- ricavo structureKey --> 
563											<#assign cur_office_ja_structureKey = cur_office_ja.getDDMStructureKey() /> 
564 
565											<#if cur_office_ja??> 
566												<#if cur_office_ja_structureKey == STRUCTURE_KEY_UFFICIO> 
567												 
568													<#-- ricavo l'url title associato all'articolo --> 
569													<#assign cur_office_ja_url_title= cur_office_ja.getUrlTitle() /> 
570												 
571													<#-- ricavo il metodo di saxReaderUtil utile per ricavare poi gli elementi della struttura --> 
572													<#assign document = saxReaderUtil.read(cur_office_ja.getContentByLocale(locale)) /> 
573													<#assign rootElement = document.getRootElement() /> 
574													 
575													<#-- inizio a ricavare i dati dalla struttura dell'articolo --> 
576													<#-- titolo --> 
577													<#assign title = "" /> 
578													<#assign title_xpath = saxReaderUtil.createXPath("dynamic-element[@name='title']") /> 
579													<#assign title = title_xpath.selectSingleNode(rootElement).getStringValue() /> 
580													<#assign title = title?trim /> 
581													 
582													<#if title?has_content> 
583														<div class="col-lg-6"> 
584															<div class="card"> 
585																<div class="card-body p-3"> 
586																	<h2 class="h2 card-title m-0 d-inline-flex"> 
587																		<div class="category-top mb-0 mr-2"> 
588																			<svg class="icon icon-primary"> 
589																				<use xlink:href="/o/comuni-theme/svg/sprite.svg#it-pa"></use> 
590																			</svg> 
591																		</div> 
592																		<a href="/-/${cur_office_ja_url_title}" title="${label_vai_alla_pagina} ${escapeExtraChar(title)}"> 
593																			${title} 
594																		</a> 
595																	</h2> 
596																</div> 
597															</div> 
598														</div> 
599													</#if> 
600												 
601												</#if> 
602											</#if> 
603										</div> 
604									</div> 
605								</article> 
606								 
607								<#-- sezione documenti --> 
608								<#if oneAtLeastOfListNotEmpty(attachment)> 
609									<article id="${instanceId}_${articleId}_attachments" class="page-section anchor-section"> 
610										<h4 class="h2">${label_documenti}</h4>									 
611										<div class="row"> 
612											<#list attachment.getSiblings() as cur_attachment> 
613												<#if validator.isNotNull(cur_attachment) && validator.isNotNull(cur_attachment.getData())> 
614													<#attempt> 
615													 
616														<#-- ricavo la size del documento --> 
617														<#-- a partire dal link, lo splitto e ricavo il secondo ed il 5 argomento che mi servono per il metodo successivo --> 
618														<#assign dlFileEntrySize = "" /> 
619														<#assign parts = (cur_attachment.getData())?split("/") /> 
620														<#assign groupId = parts[2] /> 
621														<#assign uuId = parts[5]?split("?")[0] /> 
622														 
623														<#assign dlFileEntryService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryLocalService') /> 
624														<#assign dlFileEntry = dlFileEntryService.getFileEntryByUuidAndGroupId(uuId,groupId?number) />									 
625														 
626														<#assign dlFileEntrySize = dlFileEntry.getSize() /> 
627														<#assign dlFileEntryExtension = dlFileEntry.getExtension()?upper_case?trim /> 
628														 
629														<#-- trasformo la dimensione in KB --> 
630														<#if (dlFileEntrySize gt 0) > 
631															<#assign dlFileEntrySize = (dlFileEntrySize / 1000) + " KB"/> 
632														</#if> 
633								 
634														<#-- ricavo il titolo dell'allegato: se nn c'è passo un titolo generico --> 
635														<#assign attachment_header = label_documento /> 
636														<#if validator.isNotNull(cur_attachment.attachment_header) && validator.isNotNull(cur_attachment.attachment_header.getData()) > 
637															<#assign attachment_header = cur_attachment.attachment_header.getData()?trim /> 
638														</#if> 
639														 
640														<#-- visualizzo il link dell'allegato -->  
641														<div class="col-lg-6"> 
642															<div class="card allegati-card"> 
643																<div class="card-body"> 
644																	<div class="allegato d-flex"> 
645																		<div class="icon-img-wrapper"> 
646																			<svg class="icon"> 
647																				<use xlink:href="/o/comuni-theme/svg/sprite.svg#it-clip"></use> 
648																			</svg> 
649																		</div> 
650																		<div class="text-wrapper pl-3"> 
651																			<h5 class="h3 card-title m-0"> 
652																				<a href="${cur_attachment.getData()}" target="_blank" title='File <#if dlFileEntryExtension != "">in formato ${dlFileEntryExtension}</#if> - ${dlFileEntrySize}'> 
653																					<strong>${attachment_header}</strong> 
654																				</a> 
655																			</h5> 
656																			<#if cur_attachment.attachment_description?? && validator.isNotNull(cur_attachment.attachment_description) && validator.isNotNull(cur_attachment.attachment_description.getData()) > 
657																				<div class="card-text"><small>${cur_attachment.attachment_description.getData()}</small></div> 
658																			</#if> 
659																		</div> 
660																	</div> 
661																</div> 
662															</div> 
663														</div> 
664													<#recover> 
665														<#-- non visualizzo nulla -->															 
666													</#attempt>					 
667												</#if> 
668											</#list> 
669										</div> 
670									</article> 
671								</#if> 
672								 
673								<#-- sezione ulteriori informazioni + data ultimo aggiornamento --> 
674								<article id="${instanceId}_${articleId}_further_information" class="page-section anchor-section"> 
675									<h4 class="h2">${label_ulteriori_informazioni}</h4> 
676									<#if validator.isNotNull(further_information) && validator.isNotNull(further_information.getData())> 
677										<div class="row"> 
678											<div class="col-12"> 
679												<div class="callout"> 
680													<div class="callout-title"> 
681														<svg class="icon"> 
682															<use xlink:href="/o/comuni-theme/svg/sprite.svg#it-info-circle"></use> 
683														</svg> 
684													</div> 
685													<div class="callout-text"> 
686														${further_information.getData()} 
687													</div> 
688												</div> 
689											</div> 
690										</div> 
691									</#if>	 
692									<#-- data ultimo aggiornamento --> 
693									<div class="row"> 
694										<div class="col-12"> 
695											<p class="mb-0">${label_ultimo_aggiornamento}</p> 
696											<p><strong>${articleModifiedDate}</strong></p> 
697										</div> 
698									</div> 
699								</article> 
700								 
701							</div> 
702						</div> 
703					</div> 
704				</section> 
705			</div> 
706		</div> 
707	</div> 
708</section>