null Richiesta Paesaggistica

Si è verificato un errore nell'elaborarazione del modello.
Java method "com.sun.proxy.$Proxy321.findJournalArticleContainingArticleReferenceClassPk(String, String)" threw an exception when invoked on com.sun.proxy.$Proxy321 object "it.linksmt.liferay.util.service.api.service.impl.LiferayServiceApiLocalServiceImpl@7c8bd81b"; see cause exception in the Java stack trace.

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