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