Mezz'ora dopo la chiusura - Mezz'ora dopo la chiusura
Si è verificato un errore nell'elaborarazione del modello.
The following has evaluated to null or missing: ==> immagine_banner [in template "20099#20135#33907" at line 78, column 22] ---- Tip: If the failing expression is known to be 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: #assign urlBanner = immagine_banner.g... [in template "20099#20135#33907" at line 78, column 1] ----
1<#--EVENTO 09022024-->
2<#assign structureService = serviceLocator.findService("it.inera.structure.service.StructureService")>
3
4<#assign eventoStructureKey = structureService.getStructureEventoKey()>
5<#assign eventoStructureId = structureService.getStructureEventoId()>
6
7<#assign attrattoreStructureKey = structureService.getStructureAttrattoreKey()>
8<#assign attrattoreStructureId = structureService.getStructureAttrattoreId()>
9
10<#assign elasticService = serviceLocator.findService("it.inera.elastic.service.ElasticService")>
11<#assign journalArticleId = .vars['reserved-article-id'].data/>
12
13<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
14<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")>
15<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
16<#assign journalArticleConverter = serviceLocator.findService("it.inera.journalarticleconverter.service.JournalArticleConverter")>
17
18<#assign vocabularyIdUmbria = structureService.getVocabularyIdByVocabularyName("Vocabolario Umbria") >
19<#assign vocabularyIdEventi = structureService.getVocabularyIdByVocabularyName("Eventi") >
20
21
22<#if coordinate_principali.getData()?has_content && coordinate_principali.getData()?trim?length gt 0 >
23 <#assign coordinatePrincipaliJson = coordinate_principali.getData()?eval >
24 <#if coordinatePrincipaliJson.latitude?has_content && coordinatePrincipaliJson.latitude?trim?length gt 0 >
25 <#assign latitude = coordinatePrincipaliJson.latitude?c >
26 </#if>
27 <#if coordinatePrincipaliJson.longitude?has_content && coordinatePrincipaliJson.longitude?trim?length gt 0 >
28 <#assign longitude = coordinatePrincipaliJson.longitude?c >
29 </#if>
30<#else>
31 <#assign latitude = "" >
32 <#assign longitude = "" >
33</#if>
34
35<#assign currentArticle = journalArticleLocalService.getArticle(groupId, journalArticleId) />
36
37<#-- GESTIONE ASSET LINGUA DI DEFAULT -->
38<#assign currentObjectDefaultLanguage = journalArticleConverter.getEvento(currentArticle, localeUtil.getDefault())>
39
40<#assign titolo1 = "" />
41
42<#if currentArticle.getExpandoBridge()?? && currentArticle.getExpandoBridge().getAttribute("titolo_fascia_1")?has_content>
43 <#assign titolo1_custom_field = currentArticle.getExpandoBridge().getAttribute("titolo_fascia_1") />
44 <#list titolo1_custom_field?keys as key>
45 <#if key == locale>
46 <#assign titolo1 = titolo1_custom_field?values[key_index] />
47 </#if>
48 </#list>
49</#if>
50
51<#assign currentArticleResourcePrimKey = currentArticle.getResourcePrimKey() />
52<#assign currentArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", currentArticleResourcePrimKey) />
53<#assign currentArticleAssetEntryId = currentArticleAssetEntry.getEntryId() />
54
55<#assign categoryList = assetCategoryLocalService.getAssetEntryAssetCategories(currentArticleAssetEntryId) >
56
57<#assign categoryListIds = [] >
58
59<#list categoryList as category>
60 <#assign categoryListIds = categoryListIds + [category.getCategoryId()]>
61</#list>
62
63<#assign attrattoresByCoord = elasticService.getRelatedArticlesOrderByPriority(themeDisplay, latitude, longitude, distanza.getData(), attrattoreStructureKey, attrattoreStructureId?c, locale, "6", null , null, journalArticleId, null, null, null) />
64
65<#assign dateToday = .now?long />
66<#assign next15Days = dateToday + (15 * 24 * 60 * 60 * 1000) />
67
68<#assign startDate = dateToday?number_to_date?string("yyyyMMdd") + "0000000">
69<#assign endDate = next15Days?number_to_date?string("yyyyMMdd") + "0000000" >
70
71<#assign eventsrelated = elasticService.getRelatedArticlesOrderByPriority(themeDisplay, eventoStructureKey, eventoStructureId?c, locale, "6", null , categoryListIds, journalArticleId, startDate, endDate, true) />
72
73<#assign widthBannerImg = propsUtil.get("image.scale.fullpage") />
74<#assign widthSliderImg = propsUtil.get("image.slider.testobarra.height") />
75<#assign widthRelatedImg = propsUtil.get("image.proplista.height") />
76<#assign widthCardImg = propsUtil.get("image.scale.allpage") />
77
78<#assign urlBanner = immagine_banner.getData() >
79<#assign testAlternativoImmagineBanner = testo_alternativo_immagine_banner.getData() >
80<#attempt>
81 <#if currentObjectDefaultLanguage?? && currentObjectDefaultLanguage?has_content && currentObjectDefaultLanguage.getImmagineBanner()?has_content>
82 <#assign urlBanner = currentObjectDefaultLanguage.getImmagineBanner().getUrl() >
83 </#if>
84 <#if currentObjectDefaultLanguage?? && currentObjectDefaultLanguage?has_content && currentObjectDefaultLanguage.getTestoAlternativoImmagineBanner()?has_content>
85 <#assign testAlternativoImmagineBanner = currentObjectDefaultLanguage.getTestoAlternativoImmagineBanner() >
86 </#if>
87 <#recover>
88 <#assign urlBanner = immagine_banner.getData() >
89 <#assign testAlternativoImmagineBanner = testo_alternativo_immagine_banner.getData() >
90</#attempt>
91
92<#assign titleCategory = "">
93<#assign titleParentCategory = "">
94<#attempt>
95 <#list categoryList as category>
96 <#if vocabularyIdEventi == category.getVocabularyId() >
97 <#assign titleCategory = category.getTitle(themeDisplay.getLocale())>
98 <#assign parentCategoryId = category.getParentCategoryId()>
99 <span class="hidden" id="tagmanager_init_pagegroup">Eventi</span>
100 <span class="hidden" id="tagmanager_init_pagecategory">${titleCategory}</span>
101 </#if>
102 </#list>
103 <#recover>
104</#attempt>
105
106<style>
107 @media (max-width: 768px) {
108 .header-block{
109 height: auto;
110 padding: 0px !important;
111 .bg{
112 position: relative;
113 }
114 }
115
116 }
117</style>
118
119<#assign hasImage = 0>
120<#if urlBanner?? && urlBanner?has_content>
121<assign hasImage = 1>
122 <div class="container-fluid">
123 <div class="row">
124 <div class="header-block header-block-1 padding-top-em-5 padding-bottom-em-5 header-block-image-main">
125 <img class="bg img-fluid w-100" src="${urlBanner}?width=${widthBannerImg}" alt="${testAlternativoImmagineBanner}">
126 </div>
127 <div class="map map-container map-container-header hidden">
128 <div class="map-content">
129 <div class="leaflet-interactive-map map-summary-results" id="header-map" data-results="${themeDisplay.getPortalURL()}/o/geolocation/get-positions?articleId=${journalArticleId}" data-config="{"clustering":true}"></div>
130 </div>
131 </div>
132 </div>
133 </div>
134 </#if>
135
136 <#if hasImage?? && hasImage==1>
137 <div class="container-fluid bg-white">
138 <#else>
139 <div class="container-fluid bg-white">
140 </#if>
141 <div class="row">
142 <article class="container bridge bg-white translate-top-md-rem-5 translate-top-lg-rem-10">
143 <div class="row">
144 <div class="col-12">
145
146 <div class="text-left link-back-container margin-left-rem-1"><a class="link-1 link-back margin-top-em-2 padding-left-rem-1" id="backLink" href="#"><i class="im im-angle-left"></i><span class="hidden display-inline-lg"><@liferay.language key="label.indietro" /></span></a></div>
147
148 <div class="text-center padding-top-em-2">
149 <div class="link-1 link-toggle-map" data-target="#header-map" style="color: #000;"><@liferay.language key="label.visualizza.sulla.mappa" /></div>
150 </div>
151 <div class="link-tripplanner-container">
152 <#assign currentUrl = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent() />
153 <a data-id="${journalArticleId}" class="link link-tripplanner link-tripplanner-extended link-tripplanner-top-right margin-right-em-1 padding-right-rem-1" href="${currentUrl}" data-tom="false">
154 <i class="far fa-heart text-red"></i>
155 <i class="fas fa-heart text-red" style="display:none"></i>
156 <span class="label hidden display-lg"><@liferay.language key="label.aggiungi.al.mio.viaggio" /></span>
157 </a>
158 </div>
159 </div>
160 <div class="col-12 col-md-10 offset-md-1">
161 <div class="text-block text-block-center">
162 <h1 class="title-2 margin-top-em-0">${titolo.getData()}</h1>
163 <div class="text"></div>
164 </div>
165 </div>
166
167 <div class="row padding-left-md-em-1 padding-right-md-em-1 padding-left-lg-em-4 padding-right-lg-em-4">
168 <div class="col-12 col-md-8 padding-right-md-em-5">
169 <div class="text-block text-block-center">
170 <div class="text text-block-left">${descrizione.getData()}</div>
171 </div>
172
173 <#if descrizione_immagine?? && descrizione_immagine.getSiblings()?has_content && descrizione_immagine.getSiblings()?size gt 0 && descrizione_immagine.getSiblings()[0].immagine.getData()?? && descrizione_immagine.getSiblings()[0].immagine.getData()?has_content>
174 <div class="carousel-container carousel-no-ctrl transparent margin-top-em-1 margin-bottom-em-1 carousel-image-slide carousel-draggable">
175 <div class="tns-carousel tns-carousel-no-ctrl" data-tns-config="{"items":1,"autoplay":true,"autoplayHoverPause":true}">
176 <#if descrizione_immagine?? && descrizione_immagine.getData()?has_content>
177 <#list descrizione_immagine.getSiblings() as cur_descrizione_immagine>
178 <div class="item-with-caption">
179 <img class="slide-image w-100" src="${cur_descrizione_immagine.immagine.getData()}?width=${widthSliderImg}" alt="${cur_descrizione_immagine.testo_alternativo.getData()}">
180 <#if cur_descrizione_immagine.didascalia.getData()?? && cur_descrizione_immagine.didascalia.getData()?has_content && cur_descrizione_immagine.didascalia.getData()?trim?length gt 0 && cur_descrizione_immagine.didascalia.getData()?trim != "null">
181 <p class="caption">${cur_descrizione_immagine.didascalia.getData()}</p>
182 </#if>
183 </div>
184 </#list>
185 </#if>
186 </div>
187 </div>
188 <#else>
189 <#attempt>
190 <#if currentObjectDefaultLanguage?? && currentObjectDefaultLanguage?has_content && currentObjectDefaultLanguage.getImmagini()?has_content>
191 <div class="carousel-container carousel-no-ctrl transparent margin-top-em-1 margin-bottom-em-1 carousel-image-slide carousel-draggable">
192 <div class="tns-carousel tns-carousel-no-ctrl" data-tns-config="{"items":1,"autoplay":true,"autoplayHoverPause":true}">
193 <#list currentObjectDefaultLanguage.getImmagini() as imm>
194 <div class="item-with-caption">
195 <#if imm.getImmagine()?? && imm.getImmagine()?has_content && imm.getImmagine().getUrl()?? && imm.getImmagine().getUrl()?has_content>
196 <img class="slide-image w-100" src="${imm.getImmagine().getUrl()}?width=${widthSliderImg}" alt="${imm.getTestoAlternativo()}">
197 <#if imm.getDidascalia()?? && imm.getDidascalia()?has_content && imm.getDidascalia()?trim?length gt 0 && imm.getDidascalia()?trim != "null">
198 <p class="caption">${imm.getDidascalia()}</p>
199 </#if>
200 </#if>
201 </div>
202 </#list>
203 </div>
204 </div>
205 </#if>
206 <#recover>
207
208 </#attempt>
209 </#if>
210
211 <div class="text-block text-block-center">
212 <div class="text text-block-left">${descrizione_due.getData()}</div>
213 </div>
214 </div>
215
216 <aside class="col-12 col-md-4">
217 <div class="sidebar sidebar-border padding-top-em-4 padding-bottom-em-4 padding-top-md-em-0 padding-bottom-md-em-0 mx-auto px-3">
218 <#if comune?? && comune.getData()?has_content>
219 <div class="text-block text-block-sidebar text-block-left">
220 <div class="title-2">
221 <i class="fas fa-map-pin"></i>
222 <span class="padding-left-em-1"><@liferay.language key="label.dove" /></span>
223 </div>
224 <#list comune.getSiblings() as cur_comune>
225 <#if cur_comune.getData()?? && cur_comune.getData()?has_content && cur_comune.getData()?trim?length gt 0>
226 <div class="text">
227 ${cur_comune.getData()}
228 <#if cur_comune.via_piazza.getData()?? && cur_comune.via_piazza.getData()?has_content && cur_comune.via_piazza.getData()?trim?length gt 0 && cur_comune.via_piazza.getData()?trim != "null">
229 ${cur_comune.via_piazza.getData()}
230 </#if>
231 <#if cur_comune.cap.getData()?? && cur_comune.cap.getData()?has_content && cur_comune.cap.getData()?trim?length gt 0 && cur_comune.cap.getData()?trim != "null">
232 ${cur_comune.cap.getData()}
233 </#if>
234 </div>
235 </#if>
236 </#list>
237 </div>
238 </#if>
239 <#if data.getSiblings()?has_content>
240 <div class="text-block text-block-sidebar text-block-left">
241 <div class="title-2">
242 <i class="far fa-calendar"></i>
243 <span class="padding-left-em-1"><@liferay.language key="label.quando" /></span>
244 </div>
245 <#assign dataDa = "" />
246 <#assign dataA = "" />
247
248 <#list data.getSiblings() as cur_data>
249 <#assign dataDaT = cur_data.data_da.getData()>
250 <#if dataDaT?has_content && dataDaT?trim?length gt 0>
251 <#assign dataDa = dataDaT />
252 </#if>
253 <#assign dataAT = cur_data.data_a.getData()>
254 <#if dataAT?has_content && dataAT?trim?length gt 0>
255 <#assign dataA = dataAT />
256 </#if>
257 </#list>
258
259 <#if dataDa?has_content && dataDa?trim?length gt 0>
260 <#assign dataDa = dataDa?trim />
261 <#assign dataDaDateObj = dateUtil.parseDate("yyyy-MM-dd", dataDa, locale)>
262 <#assign dataDa = dateUtil.getDate(dataDaDateObj, "dd/MM/yyyy", locale) />
263 </#if>
264
265 <#if dataA?has_content && dataA?trim?length gt 0>
266 <#assign dataA = dataA?trim />
267 <#assign dataADateObj = dateUtil.parseDate("yyyy-MM-dd", dataA, locale)>
268 <#assign dataA = dateUtil.getDate(dataADateObj, "dd/MM/yyyy", locale) />
269 </#if>
270 <div class="text">${dataDa} - ${dataA}</div>
271 </div>
272 </#if>
273 <#if fascia_di_prezzo?? && fascia_di_prezzo.getData()?has_content && fascia_di_prezzo.getSiblings()?has_content>
274 <div class="text-block text-block-sidebar text-block-left">
275 <div class="title-2">
276 <i class="fas fa-money-bill-wave"></i>
277 <span class="padding-left-em-1"><@liferay.language key="label.costo" /></span>
278 </div>
279 <#list fascia_di_prezzo.getSiblings() as fascia_di_prezzo_cur>
280 <#if fascia_di_prezzo_cur.getData()?? && fascia_di_prezzo_cur.getData()?has_content>
281 <div class="text">${fascia_di_prezzo_cur.getData()} ${fascia_di_prezzo_cur.valore.getData()}</div>
282 </#if>
283 </#list>
284 </div>
285 </#if>
286 </div>
287 </aside>
288 </div>
289 </div>
290 </article>
291 </div>
292 </div>
293
294
295 <#if eventsrelated?has_content >
296 <div class="container-fluid bg-gray">
297 <div class="row">
298 <div class="container padding-top-em-4 padding-bottom-em-5">
299 <div class="row">
300 <div class="col-12">
301 <div class="d-flex flex-justify-content-between flex-align-items-baseline">
302 <#assign site_eventi_custom_field = layout.getGroup().getExpandoBridge().getAttribute("eventi") />
303 <#assign value_eventi = "" />
304 <#list site_eventi_custom_field?keys as key>
305 <#if key == locale>
306 <#assign value_eventi = site_eventi_custom_field?values[key_index] />
307 </#if>
308 </#list>
309
310 <div class="text text-top-events">
311 <@liferay.language key="label.ti.potrebbe.interessare" />:
312 </div>
313 <a class="link-showall" href="${value_eventi}"><@liferay.language key="label.vedi.tutti" />
314 <svg class="svg-inline--fa fa-angle-right fa-w-8" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="angle-right" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 512" data-fa-i2svg="">
315 <path fill="currentColor" d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"></path>
316 </svg>
317 </a>
318 </div>
319 </div>
320 <div class="col-12">
321 <div class="carousel-container carousel-no-ctrl transparent margin-top-em-1 tns-overflow-show carousel-draggable carousel-desktop-disabled">
322 <div class="tns-carousel tns-carousel-no-ctrl" data-tns-config="{"disable":false,"responsive":{"768":{"items":2},"991":{"disable":true}}}">
323 <#list eventsrelated as related>
324 <#assign langId = themeDisplay.getLanguageId() />
325 <#assign contentByLocale = related.getContentByLocale(themeDisplay.getLanguageId()) />
326 <#assign document = saxReaderUtil.read(contentByLocale) >
327 <#assign rootElement = document.getRootElement()>
328
329 <#assign xPathTitolo = saxReaderUtil.createXPath("dynamic-element[@name='titolo']")>
330 <#assign relatedTitolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()>
331
332 <#assign xPathImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='immagine_banner']")>
333 <#assign relatedImmagineBanner = "" >
334
335 <#if xPathImmagineBanner?? && xPathImmagineBanner?has_content>
336 <#if xPathImmagineBanner.selectSingleNode(rootElement)?? && xPathImmagineBanner.selectSingleNode(rootElement)?has_content>
337 <#assign relatedImmagineBanner = xPathImmagineBanner.selectSingleNode(rootElement).getStringValue()>
338 </#if>
339 </#if>
340
341 <#assign xPathTestoAlternativoImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_immagine_banner']")>
342 <#assign relatedTestoAlternativoImmagineBanner = "" >
343 <#if xPathTestoAlternativoImmagineBanner?? && xPathTestoAlternativoImmagineBanner?has_content>
344 <#if xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement)?? && xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement)?has_content>
345 <#assign relatedTestoAlternativoImmagineBanner = xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement).getStringValue()>
346 </#if>
347 </#if>
348
349 <#assign url = "" >
350 <#if relatedImmagineBanner?? && relatedImmagineBanner?has_content && relatedImmagineBanner?trim?length gt 0 >
351 <#attempt>
352 <#assign immagineBannerJson = relatedImmagineBanner?eval >
353 <#assign url = "/documents/${immagineBannerJson.groupId}/${immagineBannerJson.classPK}/${immagineBannerJson.title}/${immagineBannerJson.uuid}?width=${widthRelatedImg}">
354 <#recover>
355
356 </#attempt>
357 <#else>
358 <#assign url = "" >
359 </#if>
360
361 <#assign resourcePrimKey = related.getResourcePrimKey() />
362 <#assign assetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", resourcePrimKey) />
363 <#assign assetEntryId = assetEntry.getEntryId() />
364
365 <#assign categories = assetCategoryLocalService.getAssetEntryAssetCategories(assetEntryId) >
366
367 <#assign categoryNames = [] >
368
369 <#list categories as category>
370 <#if vocabularyIdUmbria == category.getVocabularyId() >
371 <#assign categoryNames = categoryNames + [category.getTitle(themeDisplay.getLanguageId())] >
372 </#if>
373 </#list>
374
375 <#assign xPathData = saxReaderUtil.createXPath("dynamic-element[@name='data']")>
376 <#assign xPathDataDa = saxReaderUtil.createXPath("dynamic-element[@name='data_da']")>
377 <#assign xPathDataA = saxReaderUtil.createXPath("dynamic-element[@name='data_a']")>
378 <#assign relatedDatas = xPathData.selectNodes(rootElement)>
379
380 <#assign relatedDataDa = "" />
381 <#assign relatedDataA = "" />
382
383 <#list relatedDatas as relatedData>
384 <#assign relatedDataDaT = xPathDataDa.selectSingleNode(relatedData).getStringValue()>
385 <#if relatedDataDaT?has_content && relatedDataDaT?trim?length gt 0 >
386 <#assign relatedDataDa = relatedDataDaT />
387 </#if>
388 <#assign relatedDataAT = xPathDataA.selectSingleNode(relatedData).getStringValue()>
389 <#if relatedDataAT?has_content && relatedDataAT?trim?length gt 0 >
390 <#assign relatedDataA = relatedDataAT />
391 </#if>
392 </#list>
393
394 <#if relatedDataDa?has_content && relatedDataDa?trim?length gt 0 >
395 <#assign relatedDataDa = relatedDataDa?trim />
396 <#assign relatedDataDaDateObj = dateUtil.parseDate("yyyy-MM-dd", relatedDataDa, locale)>
397 <#assign relatedDataDa = dateUtil.getDate(relatedDataDaDateObj, "dd/MM/yyyy", locale) />
398 </#if>
399
400 <#if relatedDataA?has_content && relatedDataA?trim?length gt 0 >
401 <#assign relatedDataA = relatedDataA?trim />
402 <#assign relatedDataADateObj = dateUtil.parseDate("yyyy-MM-dd", relatedDataA, locale)>
403 <#assign relatedDataA = dateUtil.getDate(relatedDataADateObj, "dd/MM/yyyy", locale) />
404 </#if>
405
406 <div>
407 <div class="card card-horizontal card-event-1 card-event-default">
408 <a class="card-link" href="/-/${related.getUrlTitle(locale)}"></a>
409 <span class="card-row">
410 <span class="card-image aspect-ratio card-item-first" href="/-/${related.getUrlTitle(locale)}">
411 <img class="aspect-ratio-item aspect-ratio-item-center-ceil aspect-ratio-item-fluid" src="${url}" alt="${relatedTestoAlternativoImmagineBanner}">
412 </span>
413 <button data-id="${related.getArticleId()}" data-tom="false" class="link link-tripplanner link-tripplanner-1 link-tripplanner-top-right margin-top-em-2 margin-right-em-1" data-tom="false">
414 <i class="far fa-heart text-red"></i><i class="fas fa-heart text-red" style="display:none"></i>
415 </button>
416 <span class="card-body">
417 <div class="row">
418 <div class="col-12">
419 <#list categoryNames as categoryName>
420 <div class="badge badge-red">${categoryName}</div><a class="header-title title-5" href="#"></a>
421 </#list>
422 </div>
423 <div class="col-12">
424 <span class="card-subtitle title-6">
425 <i class="far fa-calendar"></i>${relatedDataDa} - ${relatedDataA}
426 </span>
427 </div>
428 <div class="col-12">
429 <span class="card-title">${relatedTitolo}</span>
430 </div>
431 </div>
432 </span>
433 </span>
434 </div>
435 </div>
436 <#assign relatedDataDa = "" />
437 <#assign relatedDataA = "" />
438 </#list>
439 </div>
440 </div>
441 </div>
442 </div>
443 </div>
444 </div>
445 </div>
446 </#if>
447
448 <#if attrattoresByCoord?? && attrattoresByCoord?has_content && attrattoresByCoord?size gt 0 >
449 <aside class="container-fluid bg-white">
450 <div class="row">
451 <div class="container">
452 <div class="row">
453 <div class="col-12 col-md-10 offset-md-1">
454 <div class="text-block text-block-center">
455 <div class="title-2">
456 <#if titolo1?has_content && titolo1?trim?length gt 0 >
457 ${titolo1}
458 <#else>
459 <@liferay.language key="label.nei.dintorni" />
460 </#if>
461 </div>
462 </div>
463 </div>
464 </div>
465
466 <div class="row">
467 <div class="col-12">
468 <div class="row">
469 <div class="col-12 padding-bottom-em-3">
470 <div class="carousel-container transparent margin-top-em-1 margin-bottom-em-2">
471 <div class="tns-carousel tns-carousel-default">
472 <#list attrattoresByCoord as relatedCoord>
473 <#assign langId = themeDisplay.getLanguageId() />
474 <#assign contentByLocale = relatedCoord.getContentByLocale(themeDisplay.getLanguageId()) />
475 <#assign document = saxReaderUtil.read(contentByLocale) >
476 <#assign rootElement = document.getRootElement()>
477
478 <#assign xPathTitolo = saxReaderUtil.createXPath("dynamic-element[@name='titolo']")>
479 <#assign relatedTitolo = xPathTitolo.selectSingleNode(rootElement).getStringValue()>
480
481 <#assign xPathSottotitolo = saxReaderUtil.createXPath("dynamic-element[@name='sottotitolo']")>
482 <#assign relatedSottotitolo = xPathSottotitolo.selectSingleNode(rootElement).getStringValue()>
483
484 <#assign xPathImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='immagine_banner']")>
485 <#assign relatedImmagineBanner = "" >
486
487 <#if xPathImmagineBanner?? && xPathImmagineBanner?has_content>
488 <#if xPathImmagineBanner.selectSingleNode(rootElement)?? && xPathImmagineBanner.selectSingleNode(rootElement)?has_content>
489 <#assign relatedImmagineBanner = xPathImmagineBanner.selectSingleNode(rootElement).getStringValue()>
490 </#if>
491 </#if>
492
493 <#assign xPathTestoAlternativoImmagineBanner = saxReaderUtil.createXPath("dynamic-element[@name='testo_alternativo_immagine_banner']")>
494 <#assign relatedTestoAlternativoImmagineBanner = "" >
495 <#if xPathTestoAlternativoImmagineBanner?? && xPathTestoAlternativoImmagineBanner?has_content>
496 <#if xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement)?? && xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement)?has_content>
497 <#assign relatedTestoAlternativoImmagineBanner = xPathTestoAlternativoImmagineBanner.selectSingleNode(rootElement).getStringValue()>
498 </#if>
499 </#if>
500
501 <#if relatedImmagineBanner?has_content && relatedImmagineBanner?trim?length gt 0 >
502 <#assign immagineBannerJson = relatedImmagineBanner?eval >
503 <#assign url = "/documents/${immagineBannerJson.groupId}/${immagineBannerJson.classPK}/${immagineBannerJson.title}/${immagineBannerJson.uuid}?width=${widthCardImg}">
504 <#else>
505 <#assign url = "" >
506 </#if>
507
508 <#assign resourcePrimKey = relatedCoord.getResourcePrimKey() />
509 <#assign assetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", resourcePrimKey) />
510 <#assign assetEntryId = assetEntry.getEntryId() />
511
512 <#assign categories = assetCategoryLocalService.getAssetEntryAssetCategories(assetEntryId) >
513
514 <#assign categoryNames = [] >
515
516 <#list categories as category>
517 <#if vocabularyIdUmbria == category.getVocabularyId() >
518 <#assign categoryNames = categoryNames + [category.getTitle(themeDisplay.getLanguageId())] >
519 </#if>
520 </#list>
521
522 <div>
523 <div class="card card-1 card-offerta">
524 <a class="card-link" href="/-/${relatedCoord.getUrlTitle(locale)}"></a>
525 <div class="card-header">
526 <div class="card-header-bg aspect-ratio aspect-ratio-4-3">
527 <img src="${url}" alt="${relatedTestoAlternativoImmagineBanner}">
528 </div>
529 <button data-id="${relatedCoord.getArticleId()}" data-tom="false" class="link link-tripplanner link-tripplanner-1 link-tripplanner-top-right margin-top-em-2 margin-right-em-1" data-tom="false">
530 <i class="far fa-heart text-red"></i><i class="fas fa-heart text-red" style="display:none"></i>
531 </button>
532 <div class="card-header-info">
533 <div class="card-badges">
534 <#list categoryNames as categoryName>
535 <div class="badge badge-red">
536 ${categoryName}
537 </div>
538 <div class="hidden" id="tagmanager_item">
539 <span id="tagmanager_item_id">${relatedCoord.getArticleId()}</span>
540 <span id="tagmanager_item_category">${categoryName}</span>
541 <span id="tagmanager_item_name">${relatedTitolo}</span>
542 <span id="tagmanager_item_list_name">${categoryName}</span>
543 <span id="tagmanager_item_list_id">${categoryName}</span>
544 <span id="tagmanager_item_brand">${categoryName}</span>
545 <span id="tagmanager_index">${relatedCoord_index}</span>
546 </div>
547 <a class="header-title title-5" href="#"></a>
548 </#list>
549 </div>
550 </div>
551 </div>
552 <div class="card-body">
553 <a class="card-body-title title-4" href="/-/${relatedCoord.getUrlTitle(locale)}">
554 ${relatedTitolo}
555 </a>
556 <div class="card-body-subtitle">
557 ${relatedSottotitolo}
558 </div>
559 </div>
560 <div class="card-info">
561 <span class="info"></span>
562 </div>
563 </div>
564 </div>
565
566 <#assign categoryNames = [] >
567 <#assign categories = [] >
568 </#list>
569 </div>
570 </div>
571 </div>
572 </div>
573 </div>
574 </div>
575 </div>
576 </div>
577 </aside>
578 </#if>
579
580
581
582 <script>
583 $("#backLink").click(function(event) {
584 event.preventDefault();
585 history.back(1);
586 });
587 </script>
588 <!-- Go to www.addthis.com/dashboard to customize your tools -->
589 <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5c629e6303f68c9f"></script>