Si è verificato un errore nell'elaborarazione del modello.
Java method "as.asac.template.tools.DLToolImpl.getThumbnailByJSON(String, String)" threw an exception when invoked on as.asac.template.tools.DLToolImpl object "as.asac.template.tools.DLToolImpl@74cfa682"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign slideThumbnail3 = dlTool.getT... [in template "37703#37743#1558915" at line 257, column 49] ----
1<#-- Services -->
2<#assign assetEntryLocalServiceUtil = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/>
3<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService")/>
4<#assign journalArticleResourceServiceUtil = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService")/>
5
6<#-- Reserved vbles -->
7<#assign title = .vars['reserved-article-title'].data>
8<#assign articleId=.vars["reserved-article-id"].data />
9<#assign description=.vars["reserved-article-description"].data />
10<#assign smallImageUrl=.vars["reserved-article-small-image-url"].data />
11<#assign date=.vars["reserved-article-display-date"].data />
12<#assign request = .vars['request']>
13
14<#-- Init -->
15<#assign assetEntry = journalTool.getAssetEntryByArticleId(groupId, articleId)>
16<#assign journalArticle = journalTool.getJournalArticleByAssetEntry(assetEntry)>
17<#assign articleURL = themeDisplay.getURLPortal()+themeDisplay.getURLCurrent()>
18<#assign articleSocialBookmarks = themeDisplay.getThemeSetting("article-social-bookmarks")!>
19<#assign layoutSetBannerPath = layoutTool.getLayoutSetBannerPath(groupId, themeDisplay.getLayout().isPrivateLayout())!>
20<#assign articleMainImageThumbnail3 = dlTool.getThumbnail(smallImageUrl, "3", layoutSetBannerPath)! />
21<#assign articleMainImageThumbnail1 = dlTool.getThumbnail(smallImageUrl, "1")! />
22
23<#assign ddmStructureNameNormalize = "template-${friendlyURLNormalizerTool.normalize(journalArticle.getDDMStructure().getName(localeUtil.getDefault()))}" />
24
25<#-- Build -->
26<#if Nombre.data?has_content>
27 <#assign title = Nombre.data>
28</#if>
29<#assign address = "">
30<#if Contacto.Direccion.data?has_content>
31 <#assign address = address +"${htmlUtil.extractText(Contacto.Direccion.data)}" />
32</#if>
33
34
35<article class="template ${ddmStructureNameNormalize}" role="article" itemscope itemtype="http://schema.org/TouristicAttraction">
36
37 <header class="article-header-wrapper row no-gutters">
38
39 <div class="article-header-container article-header-container-static">
40 <div class="container">
41 <div class="row no-gutters">
42 <div class="col-md-6">
43 <div class="article-image" style="background-image: url('${articleMainImageThumbnail3}')">
44 <img class="sr-only" src="${articleMainImageThumbnail3}" alt="${languageUtil.format(request,'go-to-x','image')} ${title}" itemprop="image"/>
45 </div>
46 </div>
47 <div class="article-info-wrapper col-md-6">
48 <div class="article-info">
49 <h2 class="article-title" itemprop="name">${title}</h2>
50 <div class="article-list-wrapper">
51
52 <ul class="article-list list-unstyled article-list-info">
53 <li class="article-list-item mb-4">
54 <span class="fas fa-map-marker-alt">
55 <span class="hide-accessible">${languageUtil.get(request,"title")}</span>
56 </span>
57 <span class="field-wrapper">
58 <#if Contacto.Concejo.data?has_content>
59 <span class="important">${Contacto.Concejo.data}</span>
60 </#if>
61 <#if Contacto.Zona.data?has_content>
62 <span class="text d-block">${Contacto.Zona.data}</span>
63 </#if>
64 </span>
65 </li>
66
67 <#if address?has_content>
68 <li class="article-list-item">
69 <span class="far fa-address-card">
70 <span class="hide-accessible">${languageUtil.get(request,"address")}</span>
71 </span>
72 <span class="field-wrapper">
73 <span class="field">${languageUtil.get(request, "address")}:</span>
74 <span class="text" itemprop="address">${address}</span>
75 </span>
76 </li>
77 </#if>
78
79 <#if Contacto.Titularidad.data?has_content>
80 <li class="article-list-item">
81 <span class="fas fa-scroll">
82 <span class="hide-accessible">${languageUtil.get(request,"infoasturias-titularidad")}</span>
83 </span>
84 <span class="field-wrapper">
85 <span class="field">${languageUtil.get(request, "infoasturias-titularidad")}:</span>
86 <span class="text">${Contacto.Titularidad.data}</span>
87 </span>
88 </li>
89 </#if>
90
91 <#if Contacto.Telefono.data?has_content>
92 <li class="article-list-item">
93 <span class="fas fa-phone-alt">
94 <span class="hide-accessible">${languageUtil.get(request,"phone")}</span>
95 </span>
96 <span class="field-wrapper">
97 <span class="field">${languageUtil.get(request, "phone")}:</span>
98 <span class="text" itemprop="phone">${Contacto.Telefono.data}</span>
99 </span>
100 </li>
101 </#if>
102
103 <#if Contacto.Email.getData()?has_content>
104 <li class="article-list-item">
105 <span class="far fa-envelope">
106 <span class="hide-accessible">${languageUtil.get(request,"email")}</span>
107 </span>
108 <span class="field-wrapper">
109 <span class="field">${languageUtil.get(request, "email")}:</span>
110 <span class="text">
111 <#list Contacto.Email.getSiblings() as Item>
112 <#if validator.isNotNull(Item.data)>
113 <a class="" href="mailto:${Item.data}" title="${languageUtil.format(request,'go-to-x', 'email')}" itemprop="email">${Item.data}</a><#if Item_has_next>, </#if>
114 </#if>
115 </#list>
116 </span>
117 </span>
118 </li>
119 </#if>
120
121 <#if Contacto.Web.data?has_content>
122 <li class="article-list-item web">
123 <span class="fas fa-link">
124 <span class="hide-accessible">${languageUtil.get(request,"site")}</span>
125 </span>
126 <span class="field-wrapper">
127 <span class="field">${languageUtil.get(request, "site")}:</span>
128 <span class="text">
129 <a href="${Contacto.Web.data}" title="${languageUtil.format(request,'go-to-x', 'site')}" itemprop="url">${Contacto.Web.data}</a>
130 </span>
131 </span>
132 </li>
133 </#if>
134
135
136 </ul>
137 </div>
138
139 <#if validator.isNotNull(RedesSociales.Facebook.data) || validator.isNotNull(RedesSociales.Twitter.data) || validator.isNotNull(RedesSociales.Youtube.data) || validator.isNotNull(RedesSociales.Pinterest.data) || validator.isNotNull(RedesSociales.Instagram.data) || validator.isNotNull(RedesSociales.Rss.data) || validator.isNotNull(RedesSociales.OtrosCanales.NombreCanal.data)>
140 <div class="article-socials-wrapper mt-4">
141 <div class="socials-wrapper">
142 <div class="socials">
143 <ul class="list-inline items socials">
144 <#if RedesSociales.Facebook.data?has_content>
145 <li class="list-inline-item item facebook">
146 <a href="${RedesSociales.Facebook.data}" title="${languageUtil.format(request,'go-to-x','Facebook')}" onclick="this.target='_blank'">
147 <span class="fab fa-facebook-f">
148 <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Facebook')}</span>
149 </span>
150 </a>
151 </li>
152 </#if>
153 <#if RedesSociales.Twitter.data?has_content>
154 <li class="list-inline-item item twitter">
155 <a href="${RedesSociales.Twitter.data}" title="${languageUtil.format(request,'go-to-x','Twitter')}" onclick="this.target='_blank'">
156 <span class="fa-brands fa-x twitter">
157 <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Twitter')}</span>
158 </span>
159 </a>
160 </li>
161 </#if>
162 <#if RedesSociales.Youtube.data?has_content>
163 <li class="list-inline-item item youtube">
164 <a href="${RedesSociales.Youtube.data}" title="${languageUtil.format(request,'go-to-x','Youtube')}" onclick="this.target='_blank'">
165 <span class="fab fa-youtube">
166 <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Youtube')}</span>
167 </span>
168 </a>
169 </li>
170 </#if>
171 <#if RedesSociales.Pinterest.data?has_content>
172 <li class="list-inline-item item pinterest">
173 <a href="${RedesSociales.Pinterest.data}" title="${languageUtil.format(request,'go-to-x','Pinterest')}" onclick="this.target='_blank'">
174 <span class="fab fa-pinterest-p">
175 <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Pinterest')}</span>
176 </span>
177 </a>
178 </li>
179 </#if>
180 <#if RedesSociales.Instagram.data?has_content>
181 <li class="list-inline-item item instagram">
182 <a href="${RedesSociales.Instagram.data}" title="${languageUtil.format(request,'go-to-x','Instagram')}" onclick="this.target='_blank'">
183 <span class="fab fa-instagram">
184 <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Instagram')}</span>
185 </span>
186 </a>
187 </li>
188 </#if>
189 <#if RedesSociales.Rss.data?has_content>
190 <li class="list-inline-item item rss">
191 <a href="${RedesSociales.Rss.data}" title="${languageUtil.format(request,'go-to-x','Rss')}" onclick="this.target='_blank'">
192 <span class="fas fa-rss">
193 <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Rss')}</span>
194 </span>
195 </a>
196 </li>
197 </#if>
198 <#list RedesSociales.OtrosCanales.NombreCanal.getSiblings() as Canal>
199 <#if Canal.CanalUrl.data?has_content>
200 <li class="list-inline-item item instagram">
201 <a href="${Canal.CanalUrl.data}" title="${languageUtil.format(request,'go-to-x',Canal.data)}" onclick="this.target='_blank'">
202 <span class="fas fa-share-alt">
203 <span class="hide-accessible">${languageUtil.format(request,'go-to-x',Canal.data)}</span>
204 </span>
205 </a>
206 </li>
207 </#if>
208 </#list>
209 </ul>
210 </div>
211 </div>
212 </div>
213 </#if>
214 <#if getterUtil.getBoolean(Informacion.PatromonioUnesco.getData()) || getterUtil.getBoolean(Informacion.ReservaBiosfera.getData())>
215 <div class="article-info-table">
216 <ul class="article-list article-list-characteristics article-info-border">
217 <#if Informacion.PatromonioUnesco.data?has_content && Informacion.PatromonioUnesco.data == "true">
218 <li class="list-inline-item">
219 <img class="" src="${themeDisplay.getPathThemeImages()}/icons/unesco.png" data-toggle="tooltip" data-placement="bottom" title="${languageUtil.get(request, 'infoasturias-patrimonio-unesco')}" alt="${languageUtil.get(request, 'infoasturias-patrimonio-unesco')}"/>
220 </li>
221 </#if>
222
223 <#if Informacion.ReservaBiosfera.data?has_content && Informacion.ReservaBiosfera.data == "true">
224 <li class="list-inline-item">
225 <img class="" src="${themeDisplay.getPathThemeImages()}/icons/bioesfera.png" data-toggle="tooltip" data-placement="bottom" title="${languageUtil.get(request, 'infoasturias-reserva-biosfera')}" alt="${languageUtil.get(request, 'infoasturias-reserva-biosfera')}"/>
226 </li>
227 </#if>
228 </ul>
229 </div>
230 </#if>
231
232 </div>
233 </div>
234 </div>
235 </div>
236 </div>
237 </header>
238
239 <div class="sheet sheet-lg">
240
241 <#if Informacion.Titulo.data?has_content>
242 <div class="article-great">
243 ${Informacion.Titulo.data}
244 </div>
245 </#if>
246
247 <#assign hasTab1 = Informacion.Texto.data?has_content>
248 <#assign hasTab2 = Geolocalizacion.Coordenadas.data?has_content>
249 <#assign hasTab3 = Informacion.Tarifas?? || Informacion.Tarifas.data?has_content || Informacion.Horario?? || Informacion.Horario.data?has_content>
250 <#assign showFirstTab = true>
251
252 <div class="article-accordion accordion">
253
254 <#if Visualizador.Slide.getData()?has_content>
255 <div class="slick article-slick article-section <#if Visualizador.Slide.getSiblings()?size==1>hide</#if>">
256 <#list Visualizador.Slide.getSiblings() as Slide>
257 <#assign slideThumbnail3 = dlTool.getThumbnailByJSON(Slide.data, "3")! />
258 <#assign slideThumbnail2 = dlTool.getThumbnailByJSON(Slide.data, "2")! />
259 <#assign slidePath = dlTool.getPathByJSON(Slide.data, themeDisplay.getScopeGroupId())! />
260 <#assign slideUrl = Slide.SlideUrl.data />
261 <#assign dataMap = "" />
262
263 <#if slideUrl?has_content>
264
265 <#assign slideTitle = "${languageUtil.get(request, 'video')} ${Slide?index}" />
266 <#if Slide.SlideTitulo.data?has_content>
267 <#assign slideTitle = Slide.SlideTitulo.data />
268 </#if>
269
270 <#-- Youtube -->
271 <#assign slideUrl = stringUtil.replace(slideUrl, 'watch?v=', 'embed/') />
272 <#assign slideThumbnail2 = stringUtil.replace(slideUrl, 'www', 'img') />
273 <#assign slideThumbnail2 = stringUtil.replace(slideThumbnail2, 'embed', 'vi') />
274 <#assign slideThumbnail2 = '${slideThumbnail2}/mqdefault.jpg' />
275
276 <#-- Vimeo -->
277 <#if slideUrl?contains("vimeo")>
278 <#assign slideUrl = stringUtil.replace(slideUrl, 'http://vimeo.com/', 'https://player.vimeo.com/video/') />
279 <#assign slideVimeoId = stringUtil.extractLast(slideUrl, 'https://player.vimeo.com/video/') />
280 <#if slideVimeoId?has_content>
281 <#assign slideVimeoJsonPath = 'http://vimeo.com/api/v2/video/${slideVimeoId}.json' />
282 <#assign slideVimeoJsonContent = getUrlContent.getContent(slideVimeoJsonPath)! />
283 <#if slideVimeoJsonContent?has_content>
284 <#assign slideVimeoJsonArray = jsonFactoryUtil.createJSONArray(slideVimeoJsonContent) />
285 <#assign slideVimeoJsonItem = slideVimeoJsonArray.get(0) />
286 <#assign slideThumbnail2 = slideVimeoJsonItem.thumbnail_medium />
287 </#if>
288 </#if>
289 </#if>
290
291 <div id="slide-${Slide?index}" class="slide">
292 <a class="card card-simple card-video" href="#" onclick="javascript: event.preventDefault(); showDialogIframe('${slideUrl}', '${slideTitle}', 800, 600, 'videoPopup', 'videoPopupIframe');" title="${slideTitle}">
293 <span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${slideThumbnail2}');">
294 <img class="hide-accessible" alt="${slideTitle}" src="${slideThumbnail2}">
295 </a>
296 </div>
297 <#else>
298
299 <#assign slideTitle = "${languageUtil.get(request, 'image')} ${Slide?index}" />
300 <#if Slide.SlideTitulo.data?has_content>
301 <#assign slideTitle = Slide.SlideTitulo.data />
302 </#if>
303
304 <div class="slide">
305 <a class="card card-simple lightbox" href="${slidePath}" title="${slideTitle}">
306 <span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${slideThumbnail2}');">
307 <img class="hide-accessible" alt="${slideTitle}" src="${slideThumbnail2}">
308 </a>
309 </div>
310 </#if>
311 </#list>
312 </div>
313 </#if>
314
315 <#if hasTab1>
316 <div id="tab1" class="article-section accordion-item">
317 <a href="#tabContent1" id="tabHeading" class="tab <#if !showFirstTab>collapsed</#if>" aria-expanded="${getterUtil.getString(showFirstTab)}" data-toggle="liferay-collapse" aria-controls="tabContent1" role="button">
318 <h3 class="h3 accordion-header">${languageUtil.get(request,'info')}</h3>
319 </a>
320 <div id="tabContent1" class="article-section-content article-section-info accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading">
321 <#if Informacion.Texto.data?has_content>
322 ${Informacion.Texto.data}
323 </#if>
324 <#if Informacion.FechaDeConstruccion.data?has_content>
325 <span class="field">${languageUtil.get(request, "infoasturias-fecha-de-construccion")}:</span>
326 <span class="text">${htmlUtil.extractText(Informacion.FechaDeConstruccion.data)}</span>
327 </#if>
328 </div>
329 </div>
330 <#assign showFirstTab = false>
331 </#if>
332
333 <#if hasTab2>
334 <#assign coordenadas=stringUtil.split(Geolocalizacion.Coordenadas.data) />
335 <div id="tab2" class="article-section article-section-map accordion-item">
336 <a href="#tabContent2" id="tabHeading2" class="tab <#if !showFirstTab>collapsed</#if>" aria-expanded="${getterUtil.getString(showFirstTab)}" data-toggle="liferay-collapse" aria-controls="tabContent2" role="button">
337 <h3 class="h3 accordion-header">${languageUtil.get(request,'map')}</h3>
338 </a>
339 <div id="tabContent2" class="article-section-content accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading2">
340 <div id="article-map-wrapper-${articleId}" class="article-map-wrapper">
341 <div id="article-map-content-${articleId}" style="width: 100%; height: 388px; z-index:1"><!-- MAP --></div>
342 <div class="article-map-form">
343 <div class="name important">${title}</div>
344 <div class="gps"><span class="label">GPS:</span> <span class="value important" itemprop="geo">${Geolocalizacion.Coordenadas.data}</span></div>
345 <form action="https://maps.google.es/maps" method="get" target="_blank">
346 <input type="hidden" name="daddr" value="${coordenadas[0]},${coordenadas[1]}">
347 <label for="saddr"><span class="label">${languageUtil.get(request,'infoasturias-from')}: </span></label>
348 <input class="form-control" type="text" maxlength="40" name="saddrText" id="saddrText" value="" placeholder="${languageUtil.get(request,'infoasturias-insert-from')}">
349 <input class="form-control" type="hidden" name="saddr" id="saddr" value="" placeholder="${languageUtil.get(request,'infoasturias-insert-from')}">
350 <button class="btn btn-text" type="submit">${languageUtil.get(request,'infoasturias-como-llegar')} »</button>
351 </form>
352 </div>
353 </div>
354 <script src="/o/turismo-asturias-theme/js/leaflet/leaflet.js"></script>
355 <script type="text/javascript">
356 AUI().ready('aui-base', function(A){
357 var lat = ${coordenadas[0]},
358 lng = ${coordenadas[1]},
359 zoom = 16;
360 mapContent = new L.map('article-map-content-${articleId}', {center: [lat, lng], zoom: 16});
361
362 //Marker
363 var defaultIconTheme = '/o/turismo-asturias-theme/css/images/icons/mark-box.png';
364 var defaultIcon = L.icon({
365 iconUrl: defaultIconTheme,
366 iconSize: [36, 53],
367 iconAnchor: [18, 53],
368 iconShadow: [0,0],
369 popupAnchor: [0, -30]
370 });
371 var marker = L.marker([lat, lng], {icon: defaultIcon}).addTo(mapContent);
372
373 var contentString = '<div class="row">';
374 contentString += '<div class="col-12">';
375 contentString += '<div class="h4">${htmlUtil.escape(title)}</div>';
376 contentString += '</div>';
377 contentString += '</div>';
378
379 contentString += '<div class="row">';
380 contentString += '<div class="col-12">';
381 <#if validator.isNotNull(articleMainImageThumbnail1)>
382 contentString += '<img class="pull-right mb-2 ml-2" src="${articleMainImageThumbnail1}" alt="$title"/>';
383 </#if>
384 contentString += '<dl class="mb-0">';
385 <#if address?has_content>
386 contentString += '<dt>${languageUtil.get(request,'address')}</dt>';
387 contentString += '<dd>${address}</dd>';
388 </#if>
389 <#if Contacto.Telefono.data?has_content>
390 contentString += '<dt>${languageUtil.get(request,'phone')}</dt>';
391 contentString += '<dd>${Contacto.Telefono.data}</dd>';
392 </#if>
393 <#if Contacto.Email.getData()?has_content>
394 contentString += '<dt>${languageUtil.get(request,'email')}</dt>';
395 <#list Contacto.Email.getSiblings() as Item>
396 contentString += '<dd><a href="mailto:${Item.data}" title="${languageUtil.format(request,'go-to-x', 'email')}">${Item.data}</a></dd>';
397 </#list>
398 </#if>
399 <#if Contacto.Web.data?has_content>
400 contentString += '<dt>${languageUtil.get(request,'site')}</dt>';
401 contentString += '<dd><a href="${Contacto.Web.data}" title="${languageUtil.format(request,'go-to-x', 'site')}">${Contacto.Web.data}</a></dd';
402 </#if>
403 contentString += '</dl>';
404 contentString += '</div>';
405 contentString += '</div>';
406 <#if validator.isNotNull(description)>
407 contentString += '<div class="row"><div class="col-12">${description}</div></div>';
408 </#if>
409 marker.bindPopup(contentString);
410
411 //Contributor
412 L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
413 attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors.'
414 }).addTo(mapContent);
415
416 }); //AUI.ready
417 </script>
418 </div>
419 </div>
420 <#assign showFirstTab = false>
421 </#if>
422
423 <#if hasTab3>
424 <div id="tab3" class="article-section accordion-item">
425 <a href="#tabContent3" id="tabHeading3" class="tab <#if !showFirstTab>collapsed</#if>" aria-expanded="${getterUtil.getString(showFirstTab)}" data-toggle="liferay-collapse" aria-controls="tabContent3" role="button"><h3 class="h3 accordion-header">${languageUtil.get(request,'infoasturias-horarios-y-tarifas')}</h3></a>
426 <div id="tabContent3" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading3">
427
428 <#if Informacion.Horario.data?has_content>
429 <div class="mb-1 font-weight-semi-bold text-success"><span class="far fa-clock mr-2 text-success"></span>${languageUtil.get(request,'infoasturias-horario')}:</div>
430 <div>${Informacion.Horario.data}</div>
431 </#if>
432
433 <#if Informacion.Tarifas.data?has_content>
434 <div class="mb-1 font-weight-semi-bold text-success"><span class="fas fa-coins mr-2 text-success"></span>${languageUtil.get(request,'infoasturias-tarifas')}:</div>
435 <div>${Informacion.Tarifas.data}</div>
436 </#if>
437 </div>
438 </div>
439 <#assign showFirstTab = false>
440 </#if>
441 </div>
442
443 <#if validator.isNotNull(Informacion.Observaciones.data) || validator.isNotNull(Contacto.MasInformacion.data) >
444 <div class="article-border">
445 <#if Informacion.Observaciones?has_content>
446 ${Informacion.Observaciones.data}
447 </#if>
448 <#if Contacto.MasInformacion?has_content>
449 <#list Contacto.MasInformacion.getSiblings() as Item>
450 <#if stringUtil.matches(Item.data, "//") >
451 <div><a class="" href="${Item.data}" title="${languageUtil.format(request,'go-to-x', 'link')}">${Item.data}</a></div>
452 <#else>
453 <div><span class="">${Item.data}</span></div>
454 </#if>
455 </#list>
456 </#if>
457 </div>
458 </#if>
459 </div>
460
461 <#-- Related -->
462 <#assign relatedJournalArticles = assetTool.getRelatedJournalArticlesApproved(assetEntry)/>
463 <#if validator.isNotNull(relatedJournalArticles) && relatedJournalArticles?size gt 0>
464 <div class="article-related portlet-background-grey-container">
465 <div class="container">
466 <h3 class="title-section">${languageUtil.get(request,'related-assets')}</h3>
467 <div class="slick article-related-slick">
468 <#list relatedJournalArticles as currentJournalArticle>
469 <#assign viewURL = journalTool.getDisplayPage(currentJournalArticle, themeDisplay, true)/>
470 <div class="slide">
471 <a class="card background card-background-9-14" href="${viewURL}" title="${languageUtil.format(request, 'go-to-x', currentJournalArticle.getTitle(locale))}">
472 <span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${currentJournalArticle.getSmallImageURL()}');">
473 <img class="hide-accessible" src="${currentJournalArticle.getSmallImageURL()}" alt="${currentJournalArticle.getTitle(locale)}">
474 <span class="card-body">
475 <span class="card-title">${currentJournalArticle.getTitle(locale)}</span>
476 </span>
477 </span>
478 </a>
479 </div>
480 </#list>
481 </div>
482 </div>
483 </div>
484 </#if>
485
486 <#-- Nearby -->
487 <#assign classTypeIds = []>
488 <#assign assetsNearJournalArticles = assetNearTool.getNearJournalArticles(themeDisplay.getScopeGroupId(), assetEntry.getEntryId(), 50.0, classTypeIds, 10)! />
489 <#if validator.isNotNull(assetsNearJournalArticles) && assetsNearJournalArticles?size gt 0>
490 <div class="article-nearby portlet-container-margin">
491 <div class="container">
492 <div class="article-nearby-container">
493 <h3 class="title-section">${languageUtil.get(request,'infoasturias-near-here')}</h3>
494 <div class="slick article-nearby-slick">
495 <#list assetsNearJournalArticles as currentJournalArticle>
496 <#assign viewURL = journalTool.getDisplayPage(currentJournalArticle, themeDisplay, true)/>
497 <div class="slide">
498 <a class="card" href="${viewURL}" title="${languageUtil.format(request, 'go-to-x', currentJournalArticle.getTitle(locale))}">
499 <span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${currentJournalArticle.getSmallImageURL()}');">
500 <img class="hide-accessible" src="${currentJournalArticle.getSmallImageURL()}" alt="${currentJournalArticle.getTitle(locale)}">
501 <span class="card-hover">
502 <span class="card-text">${currentJournalArticle.getDescription(locale)}</span>
503 </span>
504 </span>
505 <span class="card-body">
506 <span class="card-title">${currentJournalArticle.getTitle(locale)}</span>
507 <span class="card-subtitle">
508 <span class="d-block">${currentJournalArticle.getVersion()} Kms</span>
509 <span class="d-block">${journalTool.getCategoriesNames(groupId, currentJournalArticle.getArticleId(), locale, ["Concejos"])}</span>
510 </span>
511 </span>
512 </a>
513 </div>
514 </#list>
515 </div>
516 </div>
517 </div>
518 </div>
519 </#if>
520
521</article>