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&ugrave; 
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>