null 2024 AVVISO PUBBLICO PER LA CONCESSIONE IN USO DI ALCUNI SPAZI SCOLASTICI DEL MUNICIPIO 2 IN ORARIO EXTRASCOLASTICO RESISI DISPONIBILI DA NOVEMBRE 2024 A GIUGNO 2025 - ANNO SCOLASTICO 202425
Chiara Santese
Modified 1 Day ago.
An error occurred while processing the template.
Java method "com.sun.proxy.$Proxy1680.getArticle(long, String)" threw an exception when invoked on com.sun.proxy.$Proxy1680 object "it.comune.milano.jacategory.service.wrapper.CdmJacategoryServicewrapper@24674afe"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign currentArticle = journalArtic... [in template "20097#20123#" at line 20, column 1] ----
1<#-- Get themeDisplay -->
2<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() />
3<#assign themeDisplay = serviceContext.getThemeDisplay() />
4<#assign portalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"]>
5
6<#-- Get SERVICE Start -->
7<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
8<#assign categoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")>
9<#assign vocabularyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")>
10<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
11<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService") />
12<#assign dLFileLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") />
13<#assign textFormatter = staticUtil["com.liferay.portal.kernel.util.TextFormatter"]>
14<#assign jsonFactoryUtil = serviceLocator.findService("com.liferay.portal.kernel.json.JSONFactoryUtil")/>
15<#assign cdmLocalService = serviceLocator.findService("it.comune.milano.service.service.CdmLocalService") />
16<#assign layoutLocalService = staticUtil["com.liferay.portal.kernel.service.LayoutLocalServiceUtil"]>
17<#-- Get SERVICE End -->
18
19<#-- Get Article Data-->
20<#assign currentArticle = journalArticleLocalService.getArticle(groupId, .vars['reserved-article-id'].data) />
21<#assign rootMioArticolo = saxReaderUtil.read(currentArticle.getContentByLocale(localeUtil.toLanguageId(localeUtil.getDefault()))).getRootElement() />
22<#assign currentArticleResourcePrimKey = currentArticle.getResourcePrimKey() />
23
24<#-- Get Category e Vocabulary -->
25<#assign categoryList=categoryService.getCategories("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) >
26<#assign vocabularyStatoBando = vocabularyService.getGroupVocabulary(groupId, "Tipo Stato Bando Gara"?lower_case) />
27<#assign vocabularyTipoCategoriaBando = vocabularyService.getGroupVocabulary(groupId, "tipo categoria bando di gara"?lower_case) />
28<#assign vocabularyTipoBando = vocabularyService.getGroupVocabulary(groupId, "Tipo Bando"?lower_case) />
29<#assign vocabularyDirezione = vocabularyService.getGroupVocabulary(groupId, "Direzione Riferimento Bando di Gara"?lower_case) />
30
31<#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) />
32<#assign currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() />
33<#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(currentArticleAssetEntryId) />
34
35<#assign rootBreadcrumb = cdmLocalService.titoloRootBreadCrumb(themeDisplay, currentArticle.getDDMStructureKey())/>
36
37<style>
38 .component-title, .lfr-asset-anchor, .metadata-author {
39 display: none !important;
40 }
41
42 .text-primary {
43 color: #007bff !important;
44 }
45
46 a.text-primary:hover {
47 color: #007bff !important;
48 }
49
50 #_com_liferay_site_navigation_breadcrumb_web_portlet_SiteNavigationBreadcrumbPortlet_breadcrumbs-defaultScreen {
51 display: none !important;
52 }
53</style>
54
55<nav aria-label="Briciole di pane">
56 <ul class="breadcrumb breadcrumb-vertical">
57 <li class="">
58 <a href="/ricerca-bandi-gara">
59 ${rootBreadcrumb}
60 </a>
61 </li>
62 <li class="active" aria-current="page">
63 ${titolo.getData()?truncate(50)}
64 </li>
65 </ul>
66</nav>
67
68<div class="row">
69 <div class="col-md-12">
70 <#if saxReaderUtil.createXPath("dynamic-element[@name='titolo']").selectNodes(rootMioArticolo)?size != 0 && titolo.getData() !=''>
71 <h2>${titolo.getData()}</h2>
72 </#if>
73
74 <section class="lista_generica">
75 <ul>
76 <li>
77 <#if categoryList?has_content>
78 <#list categoryList as categoryList>
79 <#if categoryList.vocabularyId == vocabularyTipoCategoriaBando.vocabularyId>
80 <p><strong>Categoria: </strong>
81 <span class="uppercase">${categoryList.getName()}</span>
82 </p>
83 </#if>
84 </#list>
85 </#if>
86 <#if categoryList?has_content>
87 <#list categoryList as categoryList>
88 <#if categoryList.vocabularyId == vocabularyTipoBando.vocabularyId>
89 <p><strong>Tipologia: </strong>
90 <span class="uppercase">${categoryList.getName()}</span>
91 </p>
92 </#if>
93 </#list>
94 </#if>
95 <#if categoryList?has_content>
96 <#list categoryList as categoryList>
97 <#if categoryList.vocabularyId == vocabularyDirezione.vocabularyId>
98 <p><strong>Direzione: </strong>
99 <span class="uppercase">${categoryList.getName()}</span>
100 </p>
101 </#if>
102 </#list>
103 </#if>
104 <#if categoryList?has_content>
105 <#list categoryList as categoryList>
106 <#if categoryList.vocabularyId == vocabularyStatoBando.vocabularyId>
107 <p><strong>Stato: </strong>
108 <#if categoryList.getName()?upper_case == "APERTO">
109 <span class="text-success">
110 <#elseif categoryList.getName()?upper_case == "CHIUSO">
111 <span class="text-danger">
112 <#elseif categoryList.getName()?upper_case == "AGGIUDICATO">
113 <span class="text-primary">
114 </#if >
115 <b>${categoryList.getName()?upper_case}</b></span>
116 </p>
117 </#if>
118 </#list>
119 </#if>
120 <#if dataEmissioneBandoDiGara.getData() !=''>
121 <p><strong>Data Emissione: </strong>
122 <#assign dataEmissioneBandoDiGara_Data = getterUtil.getString(dataEmissioneBandoDiGara.getData())>
123 <#if validator.isNotNull(dataEmissioneBandoDiGara_Data)>
124 <#assign dataEmissioneBandoDiGara_DateObj = dateUtil.parseDate("yyyy-MM-dd", dataEmissioneBandoDiGara_Data, locale)>
125
126 ${dateUtil.getDate(dataEmissioneBandoDiGara_DateObj, "dd/MM/yyyy", locale)}
127 </#if>
128 <#if orarioEmissioneDocumentoBando?? && orarioEmissioneDocumentoBando.getData() != '' >
129 <#assign secondoStr = '00' >
130 <#if minutoEmissioneDocumentoBando?? && minutoEmissioneDocumentoBando.getData() != '' >
131 ${orarioEmissioneDocumentoBando.getData()?substring(0,2)}:${minutoEmissioneDocumentoBando.getData()}:${secondoStr}
132 <#else>
133 ${orarioEmissioneDocumentoBando.getData()?substring(0,2)}:00:${secondoStr}
134 </#if>
135 </#if>
136 </p>
137 </#if>
138 <#if dataScadenzaBandoDiGara.getData() !=''>
139 <p><strong>Data Scadenza: </strong>
140 <#assign dataScadenzaBandoDiGara_Data = getterUtil.getString(dataScadenzaBandoDiGara.getData())>
141
142 <#if validator.isNotNull(dataScadenzaBandoDiGara_Data)>
143 <#assign dataScadenzaBandoDiGara_DateObj = dateUtil.parseDate("yyyy-MM-dd", dataScadenzaBandoDiGara_Data, locale)>
144
145 ${dateUtil.getDate(dataScadenzaBandoDiGara_DateObj, "dd/MM/yyyy", locale)}
146 </#if>
147 <#if orarioScadenzaBandoDiGara?? && orarioScadenzaBandoDiGara.getData() != '' >
148 <#assign secondoStr = '00' >
149 <#if minutoScadenzaBandoDiGara?? && minutoScadenzaBandoDiGara.getData() != '' >
150 ${orarioScadenzaBandoDiGara.getData()?substring(0,2)}:${minutoScadenzaBandoDiGara.getData()}:${secondoStr}
151 <#else>
152 ${orarioScadenzaBandoDiGara.getData()?substring(0,2)}:00:${secondoStr}
153 </#if>
154 </#if>
155 </p>
156 </#if>
157 <#if dataPubblicazioneEsitoBandoDiGara.getData() !=''>
158 <p><strong>Data Determina Graduatoria: </strong>
159 <#assign dataPubblicazioneEsitoBandoDiGara_Data = getterUtil.getString(dataPubblicazioneEsitoBandoDiGara.getData())>
160
161 <#if validator.isNotNull(dataPubblicazioneEsitoBandoDiGara_Data)>
162 <#assign dataPubblicazioneEsitoBandoDiGara_DateObj = dateUtil.parseDate("yyyy-MM-dd", dataPubblicazioneEsitoBandoDiGara_Data, locale)>
163 ${dateUtil.getDate(dataPubblicazioneEsitoBandoDiGara_DateObj, "dd/MM/yyyy", locale)}
164 </#if>
165 </p>
166 </#if>
167 </li>
168 </ul>
169 </section>
170
171 <#if (descrizione?has_content && descrizione.getData() !='') || noteBandoDiGara.getData() !=''>
172 <section id="accordionservizi1" class="accordion boxed servizi">
173 <article class="card">
174 <div class="card-header" id="headingservizi2">
175 <h4 class="mb-0">
176 <a class="collapsed" data-toggle="collapse" href="#collapseservizi2" aria-expanded="false" aria-controls="collapseservizi2">Testo del bando</a>
177 </h4>
178 </div>
179 <div id="collapseservizi2" data-parent="#accordionservizi1" class="collapse" role="tabpanel" aria-labelledby="headingservizi2">
180 <div class="card-body">
181 <div class="content-editor blu">
182 <#if descrizione?has_content && descrizione.getData() !=''>
183 <p>${descrizione.getData()}</p>
184 </#if>
185 <#if noteBandoDiGara.getData() !='' >
186 <p>Note: ${noteBandoDiGara.getData()}</p>
187 </#if>
188 </div>
189 </div>
190 </div>
191 </article>
192 </section>
193 </#if>
194
195<!-- ACCORDION "FAQ" -->
196 <#if faq?has_content && faq.getData() !=''>
197 <section id="accordion21" class="accordion boxed">
198 <h3 class="sr-only">Accordion</h3>
199 <article class="card collegamenti">
200 <div class="card-header" id="heading21">
201 <h4 class="mb-0"> <a class="collapsed" data-toggle="collapse" href="#collapse21" aria-expanded="false" aria-controls="collapse41">FAQ</a></h4>
202 </div>
203 <div id="collapse21" class="collapse" role="tabpanel" aria-labelledby="heading21">
204 <div class="card-body">
205 ${faq.getData()}
206 </div>
207 </div>
208 </article>
209 </section>
210 </#if>
211
212 <#if urlAccediBando.getData() != ''>
213 <h3 class="servizionline">
214 <a href="${urlAccediBando.getData()}" title="Accedi al bando" target="_blank">Accedi al bando</a>
215 </h3>
216 </#if>
217
218 <!-- ACCORDION "ALLEGATI" -->
219 <#if documentoAllegato?has_content && documentoAllegato.getData() !=''>
220 <section id="accordion31" class="accordion boxed">
221 <article class="card allegati">
222 <div class="card-header" id="heading31">
223 <h4 class="mb-0">
224 <a class="collapsed" data-toggle="collapse" href="#collapse31" aria-expanded="false" aria-controls="collapse31">
225 Allegati
226 </a>
227 </h4>
228 </div>
229 <div id="collapse31" class="collapse" role="tabpanel" aria-labelledby="heading31">
230 <div class="card-body">
231 <ul>
232 <#list documentoAllegato.getSiblings() as node>
233 <#assign doc=getDlFileEntry(node.getData()) />
234 <#if doc != ''>
235 <#assign nomeAllegato = "">
236 <#if node.label.getData() != ''>
237 <#assign nomeAllegato = node.label.getData()>
238 <#else>
239 <#assign nomeAllegato = doc.getTitle()>
240 </#if>
241 <li class="${doc.getExtension()?lower_case}">
242 <a class="anchorNomeAllegato" href="${node.getData()}" target="_blank">${nomeAllegato}</a>
243 <span>(${doc.getExtension()} - ${textFormatter.formatStorageSize(doc.size, locale)}) - ${dateUtil.getDate(doc.getCreateDate(), "dd/MM/yyyy", locale)}</span>
244 <br/>
245 <#if node.descrizioneAllegato?? && node.descrizioneAllegato.getData() != ''>
246 <em>${node.descrizioneAllegato.getData()}</em>
247 </#if>
248 </li>
249 </#if>
250 </#list>
251 </ul>
252 </div>
253 </div>
254 </article>
255 </section>
256 </#if>
257
258 <!-- ACCORDION "COLLEGAMENTI" -->
259 <#if Collegamenti.urlCollegamentoEsternoPaginaStandard.getData()!= "" || Collegamenti.collegamentoContenutoWeb.getData()!="" >
260 <section id="accordion41" class="accordion boxed">
261 <article class="card collegamenti">
262 <div class="card-header" id="heading41">
263 <h4 class="mb-0">
264 <a class="collapsed" data-toggle="collapse" href="#collapse41" aria-expanded="false" aria-controls="collapse41">
265 Collegamenti
266 </a>
267 </h4>
268 </div>
269 <div id="collapse41" class="collapse" role="tabpanel" aria-labelledby="heading41">
270 <div class="card-body">
271 <#if Collegamenti.collegamentoContenutoWeb.getData()!='' >
272 <#list Collegamenti.collegamentoContenutoWeb.getSiblings() as cur_urlCollegamentoContenutoWeb >
273 <#assign clsPk = jsonFactoryUtil.createJSONObject(cur_urlCollegamentoContenutoWeb.getData()).getLong("classPK")/>
274 <#assign articleTitle = jsonFactoryUtil.createJSONObject(cur_urlCollegamentoContenutoWeb.getData()).getString("title")/>
275 <#assign jArtic = journalArticleLocalService.getLatestArticle(clsPk)/>
276 <#assign urlFromArticleId = cdmLocalService.getUrlFromArticleId(jArtic.articleId)/>
277 <p>
278 <a href="${urlFromArticleId}" target="_blank">${articleTitle}</a>
279 </p>
280 </#list>
281 </#if>
282 <#if Collegamenti.urlCollegamentoEsternoPaginaStandard.getData()!='' >
283 <#list Collegamenti.urlCollegamentoEsternoPaginaStandard.getSiblings() as cur_urlCollegamentoEsternoPaginaStandard >
284 <#if cur_urlCollegamentoEsternoPaginaStandard.checkAperturaNuovaPaginaCollegamentoEsternoPaginaStandard.getData() = "true">
285 <p>
286 <a href="${cur_urlCollegamentoEsternoPaginaStandard.getData()}" target="_blank">
287 ${cur_urlCollegamentoEsternoPaginaStandard.campoLiberoCollegamentoEsternoPaginaStandard.getData()}
288 </a>
289 </p>
290 <#else>
291 <p>
292 <a href="{$cur_urlCollegamentoEsternoPaginaStandard.getData()}">
293 ${cur_urlCollegamentoEsternoPaginaStandard.campoLiberoCollegamentoEsternoPaginaStandard.getData()}
294 </a>
295 </p>
296 </#if>
297 </#list>
298 </#if>
299 </div>
300 </div>
301 </article>
302 </section>
303 </#if>
304
305 <#if urlChiarimentiBando.getData() != ''>
306 <h3 class="servizionline">
307 <a href="${urlChiarimentiBando.getData()}" title="Richiedi chiarimenti sul bando" target="_blank">Richiedi chiarimenti sul bando</a>
308 </h3>
309 </#if>
310
311 </div>
312</div>
313
314<section class="infopage">
315 <#if validator.isNotNull(currentArticle.getModifiedDate())>
316 <p class="updatedpage">Aggiornato il: ${dateUtil.getDate(currentArticle.getModifiedDate(), "dd/MM/yyyy", locale)}</p>
317 </#if>
318 <div>
319 <p class="printpage">
320 <a href="#" onclick="window.print();" title="stampa il contenuto di questa pagina">Stampa<span class="sr-only"> questa pagina</span></a>
321 </p>
322 </div>
323</section>
324
325
326<#function getDlFileEntry url>
327 <#assign parts=url?string?split("/") />
328
329 <#assign groupId=0 />
330 <#assign uuid='' />
331 <#assign dlFileEntry='' />
332
333 <#list parts as curPart>
334
335 <#if curPart_index == 2>
336 <#assign groupId=parts[2]?number />
337 </#if>
338
339 <#if curPart_index == 5>
340 <#assign uuid=parts[5]?string?split("?")[0] />
341 </#if>
342 </#list>
343
344 <#if groupId != 0 && uuid != ''>
345 <#assign dlFileEntry=dLFileLocalService.fetchDLFileEntryByUuidAndGroupId(uuid, groupId)! />
346 </#if>
347
348 <#return dlFileEntry />
349
350</#function>
351
352<!--<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>-->
353<script type="text/javascript" src="https://getbootstrap.com/docs/4.0/dist/js/bootstrap.min.js"></script>
354<script type="text/javascript">
355 // Codice JS per lo scrollTop all'apertura dell'accordion
356 $('.collapse').on('shown.bs.collapse', function(e) {
357 var $card = $(this).closest('.card'),
358 $card_offset = $card.offset().top,
359 $header_group_h = $('.group-header').outerHeight(); // Altezza del gruppo header (inclusi margin, padding e border)
360 $('html,body').animate({
361 scrollTop: $card_offset - $header_group_h
362 }, 200);
363 });
364</script>