Ravenna Festival
Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing: ==> heraTemplateCustomService.getArticoloXml(classPKArticolo) [in template "20099#20135#1717449" at line 219, column 51] ---- 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: article = heraTemplateCustomService.g... [in template "20099#20135#1717449" at line 219, column 41] ----
1<#assign currentUrl = themeDisplay.getURLCurrent() />
2<#assign currentUrlOriginal = currentUrl> <!-- Inizializza currentUrlOriginal con currentUrl per evitare null -->
3<#if themeDisplay.getURLCurrent()?contains("?") >
4 <#assign currentUrlOriginal = themeDisplay.getURLCurrent()?split("?")[0]/>
5</#if>
6<#if currentUrlOriginal?starts_with('/web/heracomm')>
7 <#assign currentUrl = currentUrlOriginal?replace('/web/heracomm', '')>
8<#else>
9 <#assign currentUrl = currentUrlOriginal>
10</#if>
11
12<#assign nameArticle = currentUrl?split("/") />
13
14<#assign
15<#-- articleEvento = JournalArticleService.fetchArticleByUrlTitle(themeDisplay.getScopeGroupId(), nameArticle?last)!""-->
16articleEvento = heraContributorLocalService.fetchArticleByUrlTitle(themeDisplay.getScopeGroupId(), nameArticle?last)!"" />
17<#if articleEvento == "">
18 <#assign
19 articleEvento = heraContributorLocalService.fetchArticleByUrlTitle(themeDisplay.getSiteGroupId(), currentUrl)!""
20 />
21</#if>
22
23<#assign
24articleEvento = heraContributorLocalService.fetchArticleByUrlTitle(themeDisplay.getScopeGroupId(), currentUrl)!""
25/>
26<#attempt>
27 <#assign
28 articleIdEvento = articleEvento.getArticleId()
29 />
30 <#recover>
31</#attempt>
32
33<div data-sticky-cart-container>
34 <section class="canvas evento1">
35 <div class="iniziativa1__carouselWrapper">
36
37 <#if HeaderPage?? && HeaderPage.getSiblings()?has_content>
38 <section class="page-head testataBackgroundImage d-none d-lg-block">
39 <div class="container py-5 position-relative">
40 <#list HeaderPage.getSiblings() as cur_HeaderEvento>
41 <div class="row">
42 <div class="col-lg-8">
43 <#if LinkBreadcrumb?? && LinkBreadcrumb.getSiblings()?has_content>
44 <ul class="breadcrumbs">
45 <#list LinkBreadcrumb.getSiblings() as cur_LinkBreadcrumb>
46 <#assign breadcrumbLink = (cur_LinkBreadcrumb.getFriendlyUrl()??)?then(cur_LinkBreadcrumb.getFriendlyUrl(), "") />
47 <#if breadcrumbLink?has_content>
48 <li class="breadcrumbs__item">
49 <a class="breadcrumbs__itemLink" href="${breadcrumbLink}">${cur_LinkBreadcrumb.LabelLink.getData()}</a>
50 </li>
51 </#if>
52 </#list>
53 </ul>
54 </#if>
55 <div class="pt-3 pt-5">
56 <h1 class="white title-xx-bigger bolder letter-spacing-md mt-0 mb-3 d-none d-lg-block">${cur_HeaderEvento.TitoloHeadPage.getData()}</h1>
57 <span class="h1 white title-x-bigger bolder letter-spacing-md mt-0 mb-3 mobile d-lg-none">${cur_HeaderEvento.TitoloHeadPage.DescrizioneHeadPage.getData()}</span>
58
59 </div>
60 </div>
61 <#if cur_HeaderEvento.ImmaginePrincipaleMobile?has_content && cur_HeaderEvento.ImmaginePrincipaleMobile?? &&cur_HeaderEvento.ImmaginePrincipale?? && cur_HeaderEvento.ImmaginePrincipale?has_content>
62 <style>
63 .testataBackgroundImage {
64 background-image: url('${cur_HeaderEvento.ImmaginePrincipale.getData()}');
65 min-height: 451px;
66 }
67 @media (max-width: 767px) {
68 .testataBackgroundImage {
69 background-image: url('${cur_HeaderEvento.ImmaginePrincipaleMobile.getData()}');
70 }
71 }
72 </style>
73 </#if>
74 </div>
75 </#list>
76 </div>
77 </section>
78 <section class="page-head testataBackgroundImage mobile d-lg-none">
79 <div class="container py-5 position-relative">
80 <#list HeaderPage.getSiblings() as cur_HeaderEventoMobile>
81 <div class="row">
82 <div class="col-lg-8">
83 <#if LinkBreadcrumb?? && LinkBreadcrumb.getSiblings()?has_content>
84 <ul class="breadcrumbs">
85 <#list LinkBreadcrumb.getSiblings() as cur_LinkBreadcrumb>
86 <#assign breadcrumbLink = (cur_LinkBreadcrumb.getFriendlyUrl()??)?then(cur_LinkBreadcrumb.getFriendlyUrl(), "") />
87 <#if breadcrumbLink?has_content>
88 <li class="breadcrumbs__item">
89 <a class="breadcrumbs__itemLink" href="${breadcrumbLink}">${cur_LinkBreadcrumb.LabelLink.getData()}</a>
90 </li>
91 </#if>
92 </#list>
93 </ul>
94 </#if>
95 <div class="pt-3 pt-5">
96 <h1 class="white title-xx-bigger bolder letter-spacing-md mt-0 mb-3 d-none d-lg-block">${cur_HeaderEventoMobile.TitoloHeadPage.getData()}</h1>
97 <span class="h1 white title-x-bigger bolder letter-spacing-md mt-0 mb-3 mobile d-lg-none">${cur_HeaderEventoMobile.TitoloHeadPage.DescrizioneHeadPage.getData()}</span>
98
99 </div>
100 </div>
101 <#if cur_HeaderEventoMobile.ImmaginePrincipaleMobile?has_content && cur_HeaderEventoMobile.ImmaginePrincipaleMobile?? && cur_HeaderEventoMobile.ImmaginePrincipale?? && cur_HeaderEventoMobile.ImmaginePrincipale?has_content>
102 <style>
103 .testataBackgroundImage {
104 background-image: url('${cur_HeaderEventoMobile.ImmaginePrincipale.getData()}');
105 min-height: 451px;
106 }
107 @media (max-width: 767px) {
108 .testataBackgroundImage {
109 background-image: url('${cur_HeaderEventoMobile.ImmaginePrincipaleMobile.getData()}');
110 }
111 }
112 </style>
113 </#if>
114 </div>
115 </#list>
116
117 </div>
118 </section>
119 </#if>
120
121 </div>
122 </section>
123
124
125 <section class="evento1">
126 <div class="container">
127 <div class="eventiHome__header evento_1">
128 <h1 class="eventiHome__headerTitle">${TitoloEvento1.getData()}</h1>
129 <#if TitoloEvento1.DescrizioneEvento?? && TitoloEvento1.DescrizioneEvento.getData()!= "">
130 <p class="eventiHome__headerSubtitle eventiHome__headerSubtitle--withBox">${TitoloEvento1.DescrizioneEvento.getData()}</p>
131 </#if>
132 <#if getterUtil.getBoolean(BuonoDettaglio.AttivaCardBuono.getData())>
133 <div class="eventiHome__boxBuono">
134 <#if getterUtil.getBoolean(BuonoDettaglio.AttivaCardBuono.AttivaOmaggio.getData())>
135 <div class="eventiHome__ItemBonus">
136 <span class="eventiHome__ItemBonusN"></span>
137 <span class="eventiHome__ItemBonusTxt eventiHome__ItemBonusTxt--onlyText">OMAGGIO</span>
138 </div>
139 <#elseif BuonoDettaglio.AttivaCardBuono.NumeroSconto?? && BuonoDettaglio.AttivaCardBuono.NumeroSconto.getData() == "">
140 <div class="eventiHome__ItemBonus" style="display:none"></div>
141 <#else>
142 <div class="eventiHome__ItemBonus">
143 <span class="eventiHome__ItemBonusN">${BuonoDettaglio.AttivaCardBuono.NumeroSconto.getData()}%</span>
144 <span class="eventiHome__ItemBonusTxt">di sconto</span>
145 </div>
146 </#if>
147 <div class="eventiHome__ItemInfo">
148 <div class="eventiHome__ItemWhen">
149 <h3 class="eventiHome__ItemTitle">Quando</h3>
150 <p class="eventiHome__ItemSubtitle">${BuonoDettaglio.RangeDate.getData()}</p>
151 <p style="display: none;">
152 <#assign Buono_BuonoData_Data = getterUtil.getString(BuonoDettaglio.AttivaCardBuono.BuonoData.getData())>
153 <#if validator.isNotNull(Buono_BuonoData_Data)>
154 <#assign Buono_BuonoData_DateObj = dateUtil.parseDate("yyyy-MM-dd", Buono_BuonoData_Data, locale)>
155 ${dateUtil.getDate(Buono_BuonoData_DateObj, "dd MMMM yyyy", locale)}, ${BuonoDettaglio.AttivaCardBuono.BuonoData.BuonoOra.getData()}:${BuonoDettaglio.AttivaCardBuono.BuonoData.BuonoMinuti.getData()}
156 </#if>
157 </p>
158 </div>
159 <div class="eventiHome__ItemWhere">
160 <h3 class="eventiHome__ItemTitle">Dove</h3>
161 <p class="eventiHome__ItemSubtitle">
162 ${BuonoDettaglio.AttivaCardBuono.BuonoDove.getData()}
163 </p>
164 <#assign linkGoogle = heraTemplateCustomService.linkforGoogleMaps(BuonoDettaglio.AttivaCardBuono.BuonoDove.BuonoIndirizzo.getData())/>
165 <a class="eventiHome__ItemSubInfo" href="${linkGoogle}">Vedi sulla mappa</a>
166 </div>
167 </div>
168 <div class="eventiHome__ItemInfo">
169 <button class="eventiHome__ItemShare" style="display:none">
170 <span class="eventiHome__ItemShareText">Condividi</span>
171 </button>
172 <#assign linkFormWithID = "#" />
173 <#if LinkFormPage?? && LinkFormPage?has_content >
174 <#assign
175 formURL = LinkFormPage.getFriendlyUrl()
176 linkFormWithID = formURL+"?articleId="+articleIdEvento />
177 <a href="${linkFormWithID}" id="eventoBottone" data-senna-off="true">
178 <button class="btnGradient tc-white evento1Btn">
179 <span id="spanEvento">${BuonoDettaglio.LabelBottoneCarello.getData()}</span>
180 </button></a>
181 <#else>
182 <a href="${linkFormWithID}" id="eventoBottone" data-senna-off="true">
183 <button class="btnGradient tc-white eventiHome__ItemBtn">
184 <span id="spanEvento">${BuonoDettaglio.LabelBottoneCarello.getData()}</span>
185 </button>
186 </a>
187 </#if>
188 <div class="eventiHome__ItemSpots">
189 <span class="eventiHome__ItemSpotsN" id ="postiEvento"></span>
190
191 </div>
192 </div>
193 </div>
194 <#else>
195 </#if>
196 <input type="hidden" id="postiTotEvento" value="${Posti.getData()}" />
197 <#attempt>
198 <input type="hidden" id="articoloIdEvento" value="${articleIdEvento}" />
199 <#recover>
200 </#attempt>
201 <#if getterUtil.getBoolean(AttivaIniziativeInCorso.getData())>
202 <div class="eventiHome__iniziativeAtt">
203 <h1 class="eventiHome__headerTitle">${TitoloAggregatoreIniziativeInCorso.getData()}</h1>
204 <div class="eventiHome__iniziativeAttWrapper row">
205 <#assign
206 count = 1
207 sizeOfIniziativeInCorso = IniziativeInCorso1.getSiblings()?size
208
209 />
210 <#list count..sizeOfIniziativeInCorso as index>
211 <#list IniziativeInCorso1.getSiblings() as cur_IniziativeInCorso1>
212 <#if cur_IniziativeInCorso1.getData()?? && cur_IniziativeInCorso1.getData()?has_content && cur_IniziativeInCorso1.Priorita.getData()==index?string >
213
214 <#assign
215 articleInfo = cur_IniziativeInCorso1.getData()?eval
216 classPKArticolo = (articleInfo.classPK??)?then(articleInfo.classPK, 0)
217 classPKArticolo = classPKArticolo?string
218 article = heraTemplateCustomService.getArticoloXml(classPKArticolo)
219 docXml = saxReaderUtil.read(article.getContentByLocale(locale.toString()))
220 urlArticolo = "/-/"+article.getUrlTitle()
221 articleIniziativa = heraContributorLocalService.fetchArticleByUrlTitle(themeDisplay.getScopeGroupId(), article.getUrlTitle())!""
222 articleIdIniziativa = articleIniziativa.getArticleId()
223 buonoDove = docXml.valueOf("//dynamic-element[@name='BuonoDove']/dynamic-content/text()")
224 buonoNumero = docXml.valueOf("//dynamic-element[@name='NumeroSconto']/dynamic-content/text()")
225 buonoData = docXml.valueOf("//dynamic-element[@name='BuonoData']/dynamic-content/text()")
226 linkFormPage = docXml.valueOf("//dynamic-element[@name='LinkFormPage']/dynamic-content/text()")
227 postiIniziativa = docXml.valueOf("//dynamic-element[@name='Posti']/dynamic-content/text()")
228 attivaCard = docXml.valueOf("//dynamic-element[@name='AttivaCardBuono']/dynamic-content/text()")
229 scopriDiPiu = docXml.valueOf("//dynamic-element[@name='ScopriDiPiu']/dynamic-content/text()")
230 rangeDate = docXml.valueOf("//dynamic-element[@name='RangeDate']/dynamic-content/text()")
231 linkForm = "#"
232 labelBottoneForm = docXml.valueOf("//dynamic-element[@name='LabelBottoneForm']/dynamic-content/text()")
233 attivaOmaggio = docXml.valueOf("//dynamic-element[@name='AttivaOmaggio']/dynamic-content/text()")
234 header = docXml.selectNodes("//dynamic-element[@name='HeaderPage']/dynamic-element[@name='TitoloHeadPage']/dynamic-content/text()")
235 titolo = ""
236 img = docXml.valueOf("//dynamic-element[@name='ImmagineCardIniziativa']/dynamic-content/text()")
237 />
238 <input type="hidden" class="postiTotIniziativa" value="${postiIniziativa}" />
239 <input type="hidden" class="articoloIdIniziativa" value="${articleIdIniziativa}" />
240 <#if header?? && header?has_content && header[0].getText()!= "">
241 <#assign
242 titolo = header[0].getText()
243 />
244 </#if>
245 <#attempt>
246 <#assign
247 immagineSoIn = img?eval
248 immagineStrGroupID = immagineSoIn.groupId
249 immagineStrName = immagineSoIn.name
250 immagineStrUUID = immagineSoIn.uuid
251 <#-- fileEntryImage = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService").fetchDLFileEntryByUuidAndGroupId(immagineStrUUID, immagineStrGroupID?number)-->
252 fileEntryImage= heraContributorLocalService.fetchDLFileEntryByUuidAndGroupId(immagineStrUUID, immagineStrGroupID?number)
253 immagineStrFolderId = (fileEntryImage??)?then(fileEntryImage.getFolderId(), "")
254 immagineUrl = "#"
255 link = docXml.valueOf("//dynamic-element[@name='CTADettaglioEvento']/dynamic-content/text()")
256 values = link?split("@")
257 />
258 <#recover>
259 <#assign
260 immagineSoIn = docXml.valueOf("//dynamic-element[@name='ImmagineCardIniziativa']/dynamic-content/text()")?eval
261 immagineStrGroupID = immagineSoIn.groupId
262 immagineStrName = immagineSoIn.name
263 immagineStrUUID = immagineSoIn.uuid
264 <#--fileEntryImage = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService").fetchDLFileEntryByUuidAndGroupId(immagineStrUUID, immagineStrGroupID?number-->
265 fileEntryImage= heraContributorLocalService.fetchDLFileEntryByUuidAndGroupId(immagineStrUUID, immagineStrGroupID?number)
266 immagineStrFolderId = (fileEntryImage??)?then(fileEntryImage.getFolderId(), "")
267 immagineUrl = "#"
268 link = docXml.valueOf("//dynamic-element[@name='CTADettaglioEvento']/dynamic-content/text()")
269 values = link?split("@")
270 />
271 </#attempt>
272 <#attempt>
273 <#if values?has_content>
274 <#if (values?size > 2)>
275 <#assign groupId= values[2]?number/>
276 </#if>
277 <#assign layoutId=values[0]?number/>
278 <#if values[1]?contains("public")>
279 <#assign privateLayout = false/>
280 <#else>
281 <#assign privateLayout = true/>
282 </#if>
283 <#assign
284 <#-- pageLayout = layoutLocalService.getLayout(groupId, privateLayout, layoutId) -->
285 pageLayout=heraContributorLocalService.getLayout(groupId, privateLayout, layoutId)
286 ctaURL = pageLayout.getFriendlyURL()
287 />
288 </#if>
289 <#recover>
290 <#assign ctaURL="#" />
291 </#attempt>
292 <#if immagineStrGroupID?? && immagineStrName?? && immagineStrUUID?? && immagineStrFolderId?has_content>
293 <#assign
294 immagineUrl = "/documents/" + immagineStrGroupID + "/${immagineStrFolderId}/" + immagineStrName + "/" + immagineStrUUID
295
296
297 />
298 </#if>
299 <#if validator.isNotNull(buonoData)>
300 <#assign Buono_Data = dateUtil.parseDate("yyyy-MM-dd", buonoData, locale)>
301 </#if>
302 <div class="col-md-6">
303 <div class="eventiHome__iniziativeAttItem">
304 <div class="eventiHome__iniziativeImgWrapper">
305 <img loading="lazy" class="eventiHome__iniziativeAttImg" src="${immagineUrl}" alt="evento att 1">
306 <#if attivaCard == "true">
307 <#if attivaOmaggio == "true">
308 <div class="eventiHome__ItemBonus">
309 <span class="eventiHome__ItemBonusN"></span>
310 <span class="eventiHome__ItemBonusTxt">OMAGGIO</span>
311 </div>
312 <#elseif buonoNumero?? && buonoNumero=="">
313 <div class="eventiHome__ItemBonus" style="display:none">
314 </div>
315 <#else>
316 <div class="eventiHome__ItemBonus">
317 <span class="eventiHome__ItemBonusN">${buonoNumero}%</span>
318 <span class="eventiHome__ItemBonusTxt">di sconto</span>
319 </div>
320 </#if>
321
322 </#if>
323
324 </div>
325 <div class="eventiHome__iniziativeAttTxt">
326 <div class="eventiHome__iniziativeAttTxt__top">
327 <h3 class="eventiHome__ItemTitle">${titolo}</h3>
328 <#attempt>
329 <p class="eventiHome__ItemSubtitle">${rangeDate}</p>
330
331 <#recover>
332 </#attempt>
333 <p class="eventiHome__ItemSubInfo">${buonoDove}</p>
334 </div>
335 <div class="eventiHome__ItemCta">
336 <#if linkFormPage?? && linkFormPage?has_content && attivaCard == "true">
337 <#assign
338 linkInfosObj = linkFormPage?eval
339 privateLayout = linkInfosObj.privateLayout
340 layout = heraContributorLocalService.fetchLayout(linkInfosObj.groupId?number, privateLayout, linkInfosObj.layoutId?number)
341 />
342 <#if layout??>
343 <#assign linkForm = layout.getFriendlyURL()+ "?articleId=" +articleIdIniziativa />
344 </#if>
345 <#if labelBottoneForm != "">
346 <a href="${linkForm}" class="
347
348 iniziativaBottone" data-senna-off="true">
349 <button class="
350 btnGradient tc-white eventiHome__ItemBtn">
351 <span class="spanIniziativa">${labelBottoneForm}</span>
352 </button>
353 </a>
354 </#if>
355 <#else>
356 <#if labelBottoneForm != "">
357
358 <a href="#" class="iniziativaBottone">
359 <button class="
360 btnGradient tc-white eventiHome__ItemBtn">
361 <span class="spanIniziativa">${labelBottoneForm}</span>
362 </button>
363 </a>
364 </#if>
365
366 </#if>
367
368 <#if scopriDiPiu="true">
369 <#assign
370 LinkInterno = docXml.valueOf("//dynamic-element[@name='CTADettaglioEvento']/dynamic-content/text()")
371 layoutIDJsonString = LinkInterno?split("@")?first
372 layoutIDJsonObject = jsonFactoryUtil.createJSONObject(layoutIDJsonString)
373 groupIDJsonString = LinkInterno?split("@")?last
374 groupIDJsonObject = jsonFactoryUtil.createJSONObject(groupIDJsonString)
375 pageLayout = heraContributorLocalService.getLayout(groupIDJsonObject.getLong("groupId"), false, layoutIDJsonObject.getLong('layoutId'))
376 link = pageLayout.getFriendlyURL(local)
377 target = ""
378 />
379 <#attempt>
380 <#if values?has_content>
381 <#if (values?size > 2)>
382 <#assign groupId= values[2]?number/>
383 </#if>
384 <#assign layoutId=values[0]?number/>
385 <#if values[1]?contains("public")>
386 <#assign privateLayout = false/>
387 <#else>
388 <#assign privateLayout = true/>
389 </#if>
390 <#assign
391 <#-- pageLayout = layoutLocalService.getLayout(groupId, privateLayout, layoutId) -->
392 pageLayout=heraContributorLocalService.getLayout(groupId, privateLayout, layoutId)
393 ctaURL = pageLayout.getFriendlyURL()
394 />
395 </#if>
396
397 <#recover>
398 </#attempt>
399 <a class="
400 <#if labelBottoneForm == "">btnGradient tc-white eventiHome__ItemBtn</#if>
401 eventiHome__ItemLink" href="${link}"
402 <#if labelBottoneForm == "">style ="color: white; text-decoration: none; width: fit-content; padding: 10px; display: ruby;"</#if>
403 data-senna-off="true">
404 Scopri di più
405 </a>
406 </#if>
407
408 </div>
409 </div>
410 </div>
411 </div>
412 </#if>
413 </#list>
414 </#list>
415 </div>
416 </div>
417 </#if>
418 <#if getterUtil.getBoolean(IniziativePassate.Attiva1.getData())>
419 <div class="eventiHome__iniziativePass">
420 <h1 class="eventiHome__headerTitle">Iniziative passate</h1>
421 <div class="eventiHome__iniziativPassItemWrapper row">
422 <div class="col-12 col-md-8">
423 <div class="row">
424 <#list IniziativePassate.getSiblings() as cur_IniziativePassate>
425 <#if cur_IniziativePassate.getData()?? && cur_IniziativePassate.getData()?has_content>
426 <#assign articleInfo = cur_IniziativePassate.getData()?eval
427 classPKArticolo = (articleInfo.classPK??)?then(articleInfo.classPK, 0)
428 article = heraTemplateCustomService.getArticoloXml(classPKArticolo?string)
429 docXml = saxReaderUtil.read(article.getContentByLocale(locale.toString()))
430 iniziativaDove = docXml.valueOf("//dynamic-element[@name='BuonoDove']/dynamic-content/text()")
431
432 immagineSoIn = docXml.valueOf("//dynamic-element[@name='ImmagineCardIniziativa']/dynamic-content/text()")?eval
433 immagineStrGroupID = immagineSoIn.groupId
434 immagineStrName = immagineSoIn.name
435 immagineStrUUID = immagineSoIn.uuid
436 <#-- fileEntryImage = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService").fetchDLFileEntryByUuidAndGroupId(immagineStrUUID, immagineStrGroupID?number)-->
437 fileEntryImage = heraContributorLocalService.fetchDLFileEntryByUuidAndGroupId(immagineStrUUID, immagineStrGroupID?number)
438 immagineStrFolderId = (fileEntryImage??)?then(fileEntryImage.getFolderId(), "")
439 immagineUrl = ""
440 link = docXml.valueOf("//dynamic-element[@name='CTADettaglioEvento']/dynamic-content/text()")
441 values = link?split("@")
442 header = docXml.selectNodes("//dynamic-element[@name='HeaderPage']/dynamic-element[@name='TitoloHeadPage']/dynamic-content/text()")
443 />
444 <#if header?? && header?has_content && header[0].getText()!= "">
445 <#assign
446 titolo = header[0].getText()
447 />
448 </#if>
449 <#if immagineStrGroupID?? && immagineStrName?? && immagineStrUUID?? && immagineStrFolderId?has_content>
450 <#assign
451 immagineUrl = "/documents/" + immagineStrGroupID + "/${immagineStrFolderId}/" + immagineStrName + "/" + immagineStrUUID
452 />
453 </#if>
454 <#attempt >
455 <#assign jsonLink = jsonFactoryUtil.createJSONObject(link) />
456 <#-- Estrarre i valori dal JSON -->
457 <#assign groupId = jsonLink.getString("groupId")?number />
458 <#assign layoutId = jsonLink.getString("layoutId")?number />
459 <#assign privateLayout = jsonLink.getBoolean("privateLayout") />
460 <#assign ctaURL = jsonLink.getString("value") />
461 <#assign pageLayout = heraContributorLocalService.getLayout(groupId, privateLayout, layoutId) />
462 <#assign ctaURL = pageLayout.getFriendlyURL() />
463 <#recover>
464 </#attempt>
465 <div class="col-12 col-md-4">
466 <div class="eventiHome__iniziativPassItem">
467 <img loading="lazy" class="eventiHome__iniziativePassImg" src="${immagineUrl}" alt="">
468 <div class="eventiHome__iniziativePassTxt">
469 <h3 class="eventiHome__ItemTitle">${titolo}</h3>
470 ${iniziativaDove}
471 </div>
472 <div class="eventiHome__ItemCta">
473 <button class="eventiHome__ItemBtn" onclick="window.location.href='${ctaURL}'">
474 <span>Guarda</span>
475 </button>
476 </div>
477 </div>
478 </div>
479 </#if>
480 </#list>
481 </div>
482 </div>
483 </div>
484 </div>
485 </#if>
486 </div>
487 </div>
488 </section>
489</div>
490<section class="eventoShow">
491 <div class="container">
492 <div class="eventiHome__show">
493
494 <#if ImmagineBanner.getData()?? && ImmagineBanner? has_content &&ImmagineBanner.getData() != "">
495 <img loading="lazy" class="eventiHome__iniziativePassImg" src="${ImmagineBanner.getData()}" alt="evento att 1">
496 </#if>
497
498 <#if getterUtil.getBoolean(ArticoloDettaglioEvento.Attiva2.getData())>
499 <div class="eventiHome__showItemWrapper row">
500 <div class="col-12 col-md-8">
501 <div class="row">
502 <#list ArticoloDettaglioEvento.getSiblings() as cur_ArticoloDettaglioEvento>
503 <#assign articleInfo = cur_ArticoloDettaglioEvento.getData()?eval
504 classPKArticolo = (articleInfo.classPK??)?then(articleInfo.classPK, 0)
505 article = heraTemplateCustomService.getArticoloXml(classPKArticolo?string)
506 docXml = saxReaderUtil.read(article.getContentByLocale(locale.toString()))
507 iniziativaDove = docXml.valueOf("//dynamic-element[@name='BuonoDove']/dynamic-content/text()")
508 link = docXml.valueOf("//dynamic-element[@name='CTADettaglioEvento']/dynamic-content/text()")
509 values = link?split("@")
510 immagineSoIn = docXml.valueOf("//dynamic-element[@name='ImmagineCardIniziativa']/dynamic-content/text()")?eval
511 immagineStrGroupID = immagineSoIn.groupId
512 immagineStrName = immagineSoIn.name
513 immagineStrUUID = immagineSoIn.uuid
514 <#-- fileEntryImage = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService").fetchDLFileEntryByUuidAndGroupId(immagineStrUUID, immagineStrGroupID?number)-->
515
516 fileEntryImage = heraContributorLocalService.fetchDLFileEntryByUuidAndGroupId(immagineStrUUID, immagineStrGroupID?number)
517 immagineStrFolderId = (fileEntryImage??)?then(fileEntryImage.getFolderId(), "")
518 immagineUrl = ""
519
520 header = docXml.selectNodes("//dynamic-element[@name='HeaderPage']/dynamic-element[@name='TitoloHeadPage']/dynamic-content/text()")
521 titolo = ""
522 headerDesc = docXml.valueOf("//dynamic-element[@name='DescrizionePerArticolo']/dynamic-content/text()")
523 descrizione = ""
524 />
525 <#if headerDesc?? && headerDesc?has_content && headerDesc!= "">
526 <#assign
527 descrizione = headerDesc
528 />
529 </#if>
530 <#if header?? && header?has_content && header[0].getText()!= "">
531 <#assign
532 titolo = header[0].getText()
533 />
534 </#if>
535 <#if immagineStrGroupID?? && immagineStrName?? && immagineStrUUID?? && immagineStrFolderId?has_content>
536 <#assign
537 immagineUrl = "/documents/" + immagineStrGroupID + "/${immagineStrFolderId}/" + immagineStrName + "/" + immagineStrUUID
538 />
539 </#if>
540 <#attempt >
541 <#assign jsonLink = jsonFactoryUtil.createJSONObject(link) />
542 <#-- Estrarre i valori dal JSON -->
543 <#assign groupId = jsonLink.getString("groupId")?number />
544 <#assign layoutId = jsonLink.getString("layoutId")?number />
545 <#assign privateLayout = jsonLink.getBoolean("privateLayout") />
546 <#assign ctaURL = jsonLink.getString("value") />
547 <#assign pageLayout = heraContributorLocalService.getLayout(groupId, privateLayout, layoutId) />
548 <#assign ctaURL = pageLayout.getFriendlyURL() />
549 <#recover>
550 </#attempt>
551 <div class="col-12 col-md-6">
552 <div class="eventiHome__showItem">
553 <img loading="lazy" class="eventiHome__iniziativeCImg" src="${immagineUrl}" alt="evento att 1">
554 <div class="eventiHome__iniziativePassTxt">
555 <h3 class="eventiHome__ItemTitle">${titolo}</h3>
556 <p class="eventiHome__ItemSubtitle">${descrizione}</p>
557 </div>
558 <a href="${ctaURL}" data-senna-off="true">
559 <button class="btnGradient tc-white eventiHome__ItemBtn">
560 <span>Approfondisci</span>
561 </button>
562 </a>
563 </div>
564 </div>
565 </#list>
566 </div>
567 </div>
568 </div>
569 </#if>
570 </div>
571 </div>
572</section>
573<script>
574 var postiEventi = document.getElementById("postiTotEvento").value;
575 var articleIdEvento = document.getElementById("articoloIdEvento").value;
576 $(document).ready(function(){
577 if((postiEventi != "") && (articleIdEvento != "")){
578 var ajaxSettings = {
579 type: 'GET',
580 headers: {
581
582 'Content-Type' : 'application/json'
583 },
584 url: "/o/heracomm-landing-eventi/checkPosti?articleId="+articleIdEvento+"&postiTot="+postiEventi+"&groupId="+themeDisplay.getScopeGroupId(),
585 async: true
586 };
587 $.ajax(ajaxSettings).done(function(data) {
588 console.log( 'Ajax Posti |'+data );
589 if(data){
590 document.getElementById("postiEvento").innerHTML = data+" disponibili";
591 document.getElementsByClassName("eventiHome__ItemSpots")[0].style.display="block";
592 }
593 else{
594 console.log("sold-out");
595 document.getElementById("eventoBottone").onclick = function() {
596 var link = document.getElementById("eventoBottone");
597 link.setAttribute("href", "#");
598 return false;
599 }
600 $('#spanEvento').text('SOLD-OUT');
601 document.getElementsByClassName("eventiHome__ItemSpots")[0].style.display="none";
602 }
603 }).fail(function(data) {
604 console.log('Ajax posti evento failed')
605 });
606 }
607 const element = document.querySelector(".postiTotIniziativa");
608
609
610 if(element){
611 console.log("start check posti")
612 var count = 0;
613 var postiTot = document.getElementsByClassName("postiTotIniziativa");
614 var articoloId = document.getElementsByClassName("articoloIdIniziativa");
615
616 document.querySelectorAll('.postiTotIniziativa').forEach(function(){
617 console.log(count);
618 console.log(postiTot[count].value);
619 if((postiTot[count].value != "") && (articoloId[count].value != "")){
620 var ajaxSettings = {
621 type: 'GET',
622 headers: {
623 'Content-Type' : 'application/json'
624 },
625 url: "/o/heracomm-landing-eventi/checkPosti?articleId="+articoloId[count].value+"&postiTot="+postiTot[count].value+"&groupId="+themeDisplay.getScopeGroupId(),
626 async: true
627 };
628 $.ajax(ajaxSettings).done(function(data) {
629 console.log( 'Ajax Posti |'+data );
630 if(data != 0){
631 // document.getElementsByClassName("postiIniziativa")[count].innerHTML = data+" Posti disponibili";
632 // document.getElementsByClassName("eventiHome__ItemSpots")[0].style.display="block";
633 }
634 else{
635 console.log("sold-out");
636 //document.getElementsByClassName("iniziativaBottone")[count].setAttribute("href","#");
637 document.getElementsByClassName("spanIniziativa")[count].textContent = "SOLD-OUT";
638 }
639 }).fail(function(data) {
640 console.log('Ajax posti iniziativa failed')
641 });
642 }
643 else{
644 console.log("Posti o Articolo non presente")
645 }
646 count = count + 1;
647 });
648 }
649 });
650</script>