Dati, Analytics e AI per la Sostenibilità
Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing: ==> cur_DocumentiAllegati.testoDoc [in template "20101#20128#44261" at line 230, column 28] ---- 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 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: #if cur_DocumentiAllegati.testoDoc.ge... [in template "20101#20128#44261" at line 230, column 23] ----
1<#-- Evento template New -->
2
3<#assign assetEntryLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")>
4<#assign assetLinkLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService")>
5<#assign journalArticleLocalService = serviceLocator.findService('com.liferay.journal.service.JournalArticleLocalService') />
6<#assign dlFileEntryService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') />
7<#assign abilabCommonService = serviceLocator.findService('it.extracube.abilab.common.service.AbilabCommonService')/>
8<#assign groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService")/>
9
10<#assign journalArticle = serviceLocator.findService('com.liferay.journal.service.JournalArticleLocalService') />
11<#assign article = journalArticle.getArticle(groupId, .vars['reserved-article-id'].data)/>
12
13<#assign currentArticleResourcePrimKey = article.getResourcePrimKey() />
14<#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) />
15<#assign currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() />
16<#assign currentArticleRelatedLinks = assetLinkLocalService.getDirectLinks(currentArticleAssetEntryId) />
17
18<#assign view = languageUtil.get(locale, "abi_view") />
19<#assign press = languageUtil.get(locale, "abi_press") />
20<#assign meet = languageUtil.get(locale, "abi_act_meet") />
21<#assign agendaEvent = languageUtil.get(locale, "abi_agenda") />
22<#assign goMinisito = languageUtil.get(locale, "abi_go_minisito") />
23<#assign documentsTitle = languageUtil.get(locale, "abi_documents") />
24<#assign downloadTitle = languageUtil.get(locale, "abi_download") />
25<#assign newsRelated = languageUtil.get(locale, "abi_news_related") />
26
27<#assign is_signed_in = themeDisplay.isSignedIn() />
28
29<#-- Controllo permessi per download dei file -->
30<#assign roleLocalService = serviceLocator.findService('com.liferay.portal.kernel.service.RoleLocalService') />
31<#assign user = themeDisplay.getRealUser() />
32
33<#-- Controllo sul gruppo -->
34<#assign userGroups = user.getUserGroups() />
35
36<#assign acceptedGroup = "Consorziato" />
37<#assign findGroup = false />
38<#list userGroups as group>
39 <#if group.getName() == acceptedGroup>
40 <#assign findGroup = true />
41 </#if>
42</#list>
43
44<#-- Controllo sul Ruolo -->
45<#assign roleLocalService = serviceLocator.findService('com.liferay.portal.kernel.service.RoleLocalService') />
46<#assign userRoles = roleLocalService.getUserRoles(user.getUserId())>
47
48<#assign acceptedRole = "Consorziato" />
49<#assign acceptedRoleAdmin = "Administrator" />
50<#assign acceptedRoleEditor = "Editor ABI-Lab" />
51<#assign findRole = false />
52<#list userRoles as role>
53 <#if (role.getName() == acceptedRole) || (role.getName() == acceptedRoleAdmin) || (role.getName() == acceptedRoleEditor)>
54 <#assign findRole = true />
55 </#if>
56</#list>
57
58<div class="evento">
59 <div class="main">
60 <div class="evento-header" style="background-image: url(${ImmagineEvento.getData()});">
61 <div class="container">
62 <div class="margin-100"></div>
63 <div class="header-cover row">
64 <#assign title = .vars['reserved-article-title'].data />
65 <#assign subscribe=languageUtil.get(locale, "abi_subscribe_event" ) />
66
67 <#assign program=languageUtil.get(locale, "abi_program" ) />
68 <#assign reach=languageUtil.get(locale, "abi_reach_event" ) />
69 <#assign calculate=languageUtil.get(locale, "abi_route" ) />
70 <#assign download=languageUtil.get(locale, "abi_download_app" ) />
71
72 <div class="col-titolo col-12 col-lg-7">
73 <h1 class="underscore">${title}</h1>
74 </div>
75 <#assign startDate=getterUtil.getString(DataInizio.getData())>
76 <#assign startdate_DateObj=dateUtil.parseDate("yyyy-MM-dd", startDate?string, locale) />
77 <#assign start_d_year=dateUtil.getDate(startdate_DateObj, "yyyy" , locale) />
78 <#assign start_d_day=dateUtil.getDate(startdate_DateObj, "dd" , locale) />
79 <#assign start_d_month=dateUtil.getDate(startdate_DateObj, "MMMM" , locale) />
80
81 <#assign endDate=getterUtil.getString(DataFine.getData())>
82 <#assign enddate_DateObj=dateUtil.parseDate("yyyy-MM-dd", endDate?string, locale) />
83 <#assign end_d_year=dateUtil.getDate(enddate_DateObj, "yyyy" , locale) />
84 <#assign end_d_day=dateUtil.getDate(enddate_DateObj, "dd" , locale) />
85 <#assign end_d_month=dateUtil.getDate(enddate_DateObj, "MMMM" , locale) />
86
87 <div class="col-dettaglio col-12 col-lg-4 offset-lg-1">
88 <div class="data-evento">
89 <div class="data-evento-detail">
90 <div class="data-evento-detail-firtcol">
91 <span class="gg">${start_d_day}</span>
92 <span class="mm">${start_d_month}</span>
93 <span class="yyyy">${start_d_year}</span>
94 <#--
95 <#if startDate != endDate>
96 <hr style="border:1px solid #002D6C">
97 <span class="gg">${end_d_day}</span>
98 <span class="mm">${end_d_month}</span>
99 <span class="yyyy">${end_d_year}</span>
100 </#if>
101 -->
102 </div>
103 <div class="data-evento-detail-secondcol align-self-center">
104 <span class="icon"></span>
105 <span class="event-start">${OraInizio.getData()}</span>
106 <span class="event-end">${OraFine.getData()}</span>
107 </div>
108 </div>
109 <div class="border-gray"></div>
110 <#if Luogo.getData()?has_content || Indirizzo.getData()?has_content>
111 <div class="calcola-tragitto">
112 <#if Luogo.getData()?has_content || Indirizzo.getData()?has_content>
113 <div class="icona">
114 <img src="/o/abilab-theme/images/pointer.svg" alt="">
115 </div>
116 <div class="indirizzo">
117 <#if Luogo.getData()?has_content>
118 <span class="loco">${Luogo.getData()}</span>
119 </#if>
120 <#if Indirizzo.getData()?has_content>
121 <span class="via">${Indirizzo.getData()}</span>
122 </#if>
123 </div>
124 </#if>
125 <#--<div class="link">
126 <a href="#" class="arrow">${calculate}</a>
127 </div>-->
128 </div>
129 </#if>
130 </div>
131 </div>
132 </div>
133 </div>
134 </div>
135 <div class="evento-content">
136 <div class="container row">
137 <div class="col-12 col-lg-7 evento-content-detail">
138 <div class="main-content">
139 <h3>${TestoOverviewTile.getData()}</h3>
140
141 <#-- Video Corporate -->
142 <#if video?? && video.getData()?has_content && video.getData() != "" >
143 <#assign videoCorporate = video.getData() >
144 <iframe class="video-corporate" src="${videoCorporate}" type=video/mp4>
145 </iframe>
146 </#if>
147
148 <#-- Testo Evento -->
149 <#if Testo.getData()?has_content>
150 ${Testo.getData()}
151 </#if>
152
153 <#-- Galleria -->
154 <#assign countGallery = 0 />
155 <#if immagine?? && immagine.getSiblings()?has_content>
156 <#list immagine.getSiblings() as cur_immagine>
157 <#if cur_immagine.getData()?? && cur_immagine.getData() !="">
158 <#assign countGallery = countGallery + 1 />
159 </#if>
160 </#list>
161 </#if>
162
163 <#if countGallery gt 0>
164 <div class="editoriale main evento-gallery">
165 <div class="swiper-with-thumbs swiper-with-thumbs-custom mb-0">
166 <div class="swiper-container gallery-top gallery-top-custom">
167 <div class="swiper-wrapper">
168 <#list immagine.getSiblings() as cur_immagine>
169 <#if cur_immagine.getData()?? && cur_immagine.getData() !="">
170 <div class="swiper-slide">
171 <div class="swiper-slide-img">
172 <img src="${cur_immagine.getData()}" />
173 </div>
174 </div>
175 </#if>
176 </#list>
177 </div>
178
179 <div class="swiper-navigation-wrapper">
180 <#if countGallery gt 1>
181 <div class="d-none d-lg-block desktop-navigation">
182 <div class="swiper-navigation">
183 <!-- If we need navigation buttons -->
184 <div class="swiper-prev" tabindex="0" role="button" aria-label="Previous slide"></div>
185 <div class="swiper-next" tabindex="0" role="button" aria-label="Next slide"></div>
186 </div>
187 </div>
188 <div class="swiper-bullets d-block d-lg-none"></div>
189 </#if>
190 </div>
191 </div>
192 <div class="swiper-container gallery-thumbs d-none">
193 <div class="swiper-wrapper">
194 <#list immagine.getSiblings() as cur_immagine>
195 <#if cur_immagine.getData()?? && cur_immagine.getData() !="">
196 <div class="swiper-slide" style="background-image:url(${cur_immagine.getData()})"></div>
197 </#if>
198 </#list>
199 </div>
200 </div>
201 </div>
202 </div>
203 </#if>
204
205 <#-- Atti dell'incontro -->
206 <#assign countDoc = 0 >
207 <#if DocumentiAllegati?? && DocumentiAllegati.getSiblings()?has_content >
208 <#list DocumentiAllegati.getSiblings() as cur_DocumentiAllegati >
209 <#if cur_DocumentiAllegati?? && cur_DocumentiAllegati.getData()?has_content && cur_DocumentiAllegati.getData() != "" && cur_DocumentiAllegati.getData()?length gt 0 >
210 <#assign countDoc = countDoc + 1 >
211 </#if>
212 </#list>
213 </#if>
214 <#if countDoc gt 0 >
215 <div class="documenti-evento">
216 <h2 class="underscore">${meet}</h2>
217 <#list DocumentiAllegati.getSiblings() as cur_DocumentiAllegati>
218 <#assign urlDoc = "" />
219 <#assign titoloDoc = "" />
220 <#assign descrizioneDoc = "" />
221
222 <#if cur_DocumentiAllegati?? && cur_DocumentiAllegati.getData()?has_content && cur_DocumentiAllegati.getData() != "" && cur_DocumentiAllegati.getData()?length gt 0 >
223 <#assign urlDoc = cur_DocumentiAllegati.getData() />
224 </#if>
225
226 <#if cur_DocumentiAllegati.TitoloDocumento.getData()?has_content && cur_DocumentiAllegati.TitoloDocumento.getData() != "" && cur_DocumentiAllegati.TitoloDocumento.getData()?length gt 0 >
227 <#assign titoloDoc = cur_DocumentiAllegati.TitoloDocumento.getData() />
228 </#if>
229
230 <#if cur_DocumentiAllegati.testoDoc.getData()?has_content && cur_DocumentiAllegati.testoDoc.getData() != "" && cur_DocumentiAllegati.testoDoc.getData()?length gt 0 >
231 <#assign descrizioneDoc = cur_DocumentiAllegati.testoDoc.getData() />
232 </#if>
233
234 <#if urlDoc?has_content>
235 <#if titoloDoc?has_content || descrizioneDoc?has_content>
236 <#if titoloDoc?has_content>
237 <a href="${urlDoc}" download>
238 ${titoloDoc}
239 </a>
240 ${descrizioneDoc}
241 <#else>
242 <a href="${urlDoc}" download>
243 ${descrizioneDoc}
244 </a>
245 </#if>
246 <#else>
247 <span>${urlDoc}</span>
248 </#if>
249 <#else>
250 <#if titoloDoc?has_content>
251 <b>${titoloDoc}</b>
252 </#if>
253
254 <#if descrizioneDoc?has_content>
255 ${descrizioneDoc}
256 </#if>
257 </#if>
258
259 <#if cur_DocumentiAllegati?? && (
260 (cur_DocumentiAllegati.getData()?has_content && cur_DocumentiAllegati.getData()?length gt 0) ||
261 (cur_DocumentiAllegati.TitoloDocumento.getData()?has_content && cur_DocumentiAllegati.TitoloDocumento.getData()?length gt 0) ||
262 (cur_DocumentiAllegati.testoDoc.getData()?has_content && cur_DocumentiAllegati.testoDoc.getData()?length gt 0)) >
263 <div class="border-bottom-gray"></div>
264 </#if>
265 </#list>
266 </div>
267 </#if>
268
269 <#-- Documenti in evidenza -->
270 <#assign countDocumentInEvidenza = 0 />
271 <#if docEvidenza?? && docEvidenza.getSiblings()?has_content>
272 <#list docEvidenza.getSiblings() as cur_documento>
273 <#if cur_documento.getData()?has_content && cur_documento.getData() != "" && cur_documento.getData()?length gt 0>
274 <#assign countDocumentInEvidenza = countDocumentInEvidenza + 1 />
275 </#if>
276 </#list>
277 </#if>
278
279 <#if countDocumentInEvidenza gt 0>
280 <div class="working-table margin-30 mb-5">
281 <div class="main pb-0">
282 <div class="container">
283 <div class="content-wrapper">
284 <div class="main-content mb-0">
285 <div class="report-documenti">
286 <h2 class="underscore">${documentsTitle}</h2>
287 <div class="report-documenti-wrapper row">
288
289 <#list docEvidenza.getSiblings() as cur_documento>
290 <#if cur_documento ?? && cur_documento.getData()?has_content && cur_documento.getData() != "">
291
292 <#assign assetEntryDocumento = assetEntryLocalService.getEntry(cur_documento.getData()?eval.className, cur_documento.getData()?eval.classPK?number) />
293
294 <#assign assetEntryDocumentoPrimKey = assetEntryDocumento.getClassPK() />
295 <#assign articleDocumento = journalArticleLocalService.getLatestArticle(assetEntryDocumentoPrimKey) />
296 <#assign docXml = saxReaderUtil.read(articleDocumento.getContentByLocale(locale)) />
297
298 <#assign title = articleDocumento.getTitle(locale) />
299 <#assign description = docXml.valueOf("//dynamic-element[@name='Descrizione']/dynamic-content/text()") />
300 <#assign date = docXml.valueOf("//dynamic-element[@name='Data']/dynamic-content/text()") />
301 <#assign date_DateObj = dateUtil.parseDate("yyyy-MM-dd", date?string, locale)>
302 <#assign d_fullDay = dateUtil.getDate(date_DateObj, "dd.MM.yyyy", locale) />
303 <#assign d_year = dateUtil.getDate(date_DateObj, "yyyy", locale) />
304
305 <#assign tipoContenuto = docXml.valueOf("//dynamic-element[@name='TipoContenuto']/dynamic-content/text()") />
306
307 <div class="col-lg-6 col-12">
308 <div class="singolo-report-documenti">
309 <div class="singolo-report-documenti-content">
310 <div class="singolo-report-documenti-head">
311 <#if tipoContenuto?has_content && tipoContenuto != "">
312 <div class="singolo-report-documenti-name">
313 ${tipoContenuto}
314 </div>
315 </#if>
316 <div class="singolo-report-documenti-calendar">
317 ${d_fullDay}
318 </div>
319 </div>
320 <h4 class="singolo-report-documenti-title">
321 ${title}
322 </h4>
323 <div class="singolo-report-documenti-descrizione">
324 <#if description?length gt 150>
325 ${description?replace('<[^>]+>','','r')?substring(0, 149)}...
326 <#else>
327 ${description}
328 </#if>
329 </div>
330 <div class="singolo-report-documenti-cta">
331 <#assign doc = docXml.valueOf("//dynamic-element[@name='Documento']/dynamic-content/text()") />
332 <#if doc?has_content && doc?length gt 0>
333 <#assign document = doc?eval />
334 <#assign dlFileEntryService = serviceLocator.findService('com.liferay.document.library.kernel.service.DLFileEntryService') />
335 <#attempt>
336 <#assign file = dlFileEntryService.getFileEntryByUuidAndGroupId(document.uuid, document.groupId?number) />
337 <#assign assetEntry=assetEntryLocalService.getEntry("com.liferay.document.library.kernel.model.DLFileEntry", file.fileEntryId) />
338 <#assign assetRenderer=assetEntry.assetRenderer />
339 <#assign docUrl=assetRenderer.getURLDownload(themeDisplay) />
340
341 <a href="${docUrl}" class="btn green download" title="${downloadTitle}" download >${downloadTitle}</a>
342 <#recover>
343 </#attempt>
344 </#if>
345 </div>
346 </div>
347 </div>
348 </div>
349 </#if>
350 </#list>
351 </div>
352 </div>
353 </div>
354 </div>
355 </div>
356 </div>
357 </div>
358 </#if>
359 </div>
360 </div>
361 <div class="col-12 col-lg-4 offset-lg-1 sidebar-content">
362 <#if LinkRegistrazione.getData()?has_content && LinkRegistrazione.getData() != "">
363 <a class="btn green arrow mt-1" href="${LinkRegistrazione.getData()}">
364 ${subscribe}
365 </a>
366
367 <#if agenda?? && agenda.getData()?has_content && agenda.getData() != "">
368 <a class="btn transparent blue download mt-1" href="${agenda.getData()}" download>
369 ${agendaEvent}
370 </a>
371 </#if>
372 <#else>
373 <#-- Video dell'incontro -->
374 <#if VideoIncontro?? && VideoIncontro.getData()?has_content && VideoIncontro.getData() != ''>
375 <#assign splitter = VideoIncontro.getData()?split("/") />
376 <#assign docGroupId = splitter[2]?number />
377
378 <#-- Controllo sul membro -->
379 <#assign userLocalService = serviceLocator.findService('com.liferay.portal.kernel.service.UserLocalService') />
380 <#assign findMember = userLocalService.hasGroupUser(docGroupId, user.getUserId()) />
381
382 <#if findGroup || findRole || findMember>
383 <a href="${VideoIncontro.getData()}" class="btn green download" download>
384 ${VideoIncontro.TitoloBottone.getData()}
385 </a>
386 <#else>
387 <a href="#" class="btn locked" data-toggle="modal" data-target="#login-form">
388 ${VideoIncontro.TitoloBottone.getData()}
389 </a>
390 </#if>
391 </#if>
392
393 <#-- Rapporto in evidenza dell'incontro -->
394 <#if RapportoEvidenza?? && RapportoEvidenza.getData()?has_content && RapportoEvidenza.getData() != ''>
395 <#assign splitter2 = RapportoEvidenza.getData()?split("/") />
396 <#assign docGroupId2 = splitter2[2]?number />
397
398 <#-- Controllo sul membro -->
399 <#assign userLocalService = serviceLocator.findService('com.liferay.portal.kernel.service.UserLocalService') />
400 <#assign findMember2 = userLocalService.hasGroupUser(docGroupId2, user.getUserId()) />
401
402 <#if findGroup || findRole || findMember2>
403 <a href="${RapportoEvidenza.getData()}" class="btn green download" download>
404 ${RapportoEvidenza.TitoloBottone1.getData()}
405 </a>
406 <#else>
407 <a href="#" class="btn locked" data-toggle="modal" data-target="#login-form">
408 ${RapportoEvidenza.TitoloBottone1.getData()}
409 </a>
410 </#if>
411 </#if>
412
413
414 <#-- Link minisito -->
415 <#assign countlinkMinisito = 0 />
416 <#if titoloLinkMinisito?? && titoloLinkMinisito.getData()?has_content && titoloLinkMinisito.getData() !="" >
417 <#if titoloLinkMinisito.getSiblings()?has_content>
418 <#list titoloLinkMinisito.getSiblings() as cur_linkMinisito>
419 <#if cur_linkMinisito.getData()?has_content && cur_linkMinisito.getData()?length gt 0>
420 <#assign countlinkMinisito = countlinkMinisito + 1 />
421 </#if>
422 </#list>
423 </#if>
424 </#if>
425
426 <#assign findMemberSite = false />
427 <#if countlinkMinisito gt 0>
428 <#if titoloLinkMinisito.getSiblings()?has_content >
429 <#list titoloLinkMinisito.getSiblings() as cur_linkMinisito>
430 <#assign groupSite = groupLocalService.fetchFriendlyURLGroup(themeDisplay.getCompanyId()?long, cur_linkMinisito.getData())/>
431 <#if groupSite?? && groupSite?has_content && groupSite != "">
432 <#assign userLocalService = serviceLocator.findService('com.liferay.portal.kernel.service.UserLocalService') />
433 <#assign findMemberSite = userLocalService.hasGroupUser(groupSite.getGroupId(), user.getUserId()) />
434 </#if>
435
436 <#assign titoloBottone = goMinisito />
437 <#if cur_linkMinisito.urlLinkMinisito.getData()?has_content && cur_linkMinisito.urlLinkMinisito.getData()?length gt 0>
438 <#assign titoloBottone = cur_linkMinisito.urlLinkMinisito.getData() />
439 </#if>
440
441 <#if findGroup || findRole || findMemberSite >
442 <#if cur_linkMinisito.getData()?has_content && cur_linkMinisito.getData()?length gt 0>
443 <a href="/web${cur_linkMinisito.getData()}" class="btn green arrow w-100">
444 ${titoloBottone}
445 </a>
446 </#if>
447 <#else>
448 <a href="#" class="btn locked w-100" data-toggle="modal" data-target="#login-form">
449 ${titoloBottone}
450 </a>
451 </#if>
452 </#list>
453 </#if>
454 </#if>
455 </#if>
456
457 <#-- Contenuti Correlati -->
458 <#assign countContenutiCorrelati = 0 />
459 <#if contenutiCorrelati?? && contenutiCorrelati.getSiblings()?has_content>
460 <#list contenutiCorrelati.getSiblings() as cur_contenutoCorrelato>
461 <#if cur_contenutoCorrelato?? && cur_contenutoCorrelato.getData()?has_content && cur_contenutoCorrelato.getData() != "">
462 <#assign countContenutiCorrelati = countContenutiCorrelati + 1 />
463 </#if>
464 </#list>
465 </#if>
466
467 <#if countContenutiCorrelati gt 0>
468 <div class="working-table bg-white mt-1">
469 <div class="main py-0">
470 <div class="container">
471 <div class="content-wrapper">
472 <div class="sidebar">
473 <div class="title">
474 ${newsRelated}
475 </div>
476 <div class="correlated-link">
477 <#list contenutiCorrelati.getSiblings() as cur_contenutoCorrelato>
478 <#if contenutiCorrelati?? && cur_contenutoCorrelato.getData()?has_content && cur_contenutoCorrelato.getData() != "" >
479 <a class="arrow" href="${cur_contenutoCorrelato.getData()}" >
480 ${cur_contenutoCorrelato.testoContenutoCorrelato.getData()}
481 </a>
482 </#if>
483 </#list>
484 </div>
485 </div>
486 </div>
487 </div>
488 </div>
489 </div>
490 </#if>
491 </div>
492 </div>
493 </div>
494 </div>
495</div>