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