Se ha producido un error al procesar la plantilla.
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@1856b2c7"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign slideThumbnail3 = dlTool.getT... [in template "37703#37743#1558615" at line 281, 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
30
31<article class="template ${ddmStructureNameNormalize}" role="article"itemscope itemtype="http://schema.org/Place">
32
33 <header class="article-header-wrapper row no-gutters">
34
35 <div class="article-header-container article-header-container-static">
36 <div class="container">
37 <div class="row no-gutters">
38 <div class="col-md-6">
39 <div class="article-image" style="background-image: url('${articleMainImageThumbnail3}')">
40 <img class="sr-only" src="${articleMainImageThumbnail3}" alt="${languageUtil.format(request,'go-to-x','image')} ${title}"/>
41 </div>
42 </div>
43 <div class="article-info-wrapper col-md-6">
44 <div class="article-info">
45 <div class="article-title" itemprop="name">${title}</div>
46 <#if validator.isNotNull(ImagenMapa.getData())>
47 <div class="comarca-image mb-4">
48 <img src="${ImagenMapa.getData()}" alt="${languageUtil.get(request,'image')} ${title}"/>
49 </div>
50 </#if>
51 <div class="article-list-wrapper">
52
53 <ul class="article-list list-unstyled article-list-info">
54 <#if Municipios.CoordenadasMunicipios.getSiblings()?has_content>
55 <li class="article-list-item mb-4">
56 <span class="fas fa-map-marker-alt">
57 <span class="hide-accessible">${languageUtil.get(request,"title")}</span>
58 </span>
59 <span class="field-wrapper">
60 <span class="important">${languageUtil.get(request,'infoasturias-city-region')}</span>
61 <span class="text d-block">
62 <#list Municipios.CoordenadasMunicipios.getSiblings() as coorMunicipio>
63
64 <#assign municipioURLContent = "${coorMunicipio.EnlaceMunicipio.getData()}"/>
65 <#if stringUtil.startsWith(municipioURLContent , "/"+locale.getLanguage()+"/")>
66 <#assign municipioURLContent = "/" + stringUtil.extractLast("${coorMunicipio.EnlaceMunicipio.getData()}" , "/"+locale.getLanguage()+"/") />
67 </#if>
68 <#assign municipioLayout = layoutTool.getLayoutByFriendlyURL(groupId, false, municipioURLContent)!>
69 <#if validator.isNotNull(municipioLayout)>
70 <#assign municipioURL = portalUtil.getLayoutFullURL(municipioLayout, themeDisplay)>
71 <a href="${municipioURL}" itemprop="addressLocality">${coorMunicipio.NombreMunicipio.data}</a><#if coorMunicipio_has_next>, </#if>
72 </#if>
73 </#list>
74 </span>
75 </span>
76 </li>
77 </#if>
78
79 <#if Web.data?has_content>
80 <#assign linkURL = Web.data/>
81
82 <#if !stringUtil.startsWith(linkURL, "http")>
83 <#assign linkURL = "https://${Web.data}"/>
84 </#if>
85 <li class="article-list-item web">
86 <span class="fas fa-link">
87 <span class="hide-accessible">${languageUtil.get(request,"site")}</span>
88 </span>
89 <span class="field-wrapper">
90 <span class="field">${languageUtil.get(request, "site")}:</span>
91 <span class="text">
92 <a href="${linkURL}" title="${languageUtil.format(request,'go-to-x', 'site')}" itemprop="url">${Web.data}</a>
93 </span>
94 </span>
95 </li>
96 </#if>
97
98 <#if Documento?? && Documento.data?has_content>
99 <#assign dlFileEntry = dlTool.getDLFileEntryByPath(Documento.data) />
100 <#if validator.isNotNull(dlFileEntry)>
101 <#assign ext = dlFileEntry.getExtension()!/>
102 <li class="article-list-item document document-${ext}">
103 <span class="fas fa-file">
104 <span class="hide-accessible">${languageUtil.get(request,"related-documents")}</span>
105 </span>
106 <span class="field-wrapper">
107 <span class="field">${languageUtil.get(request, "related-documents")}:</span>
108 <span class="text">
109 <#list Documento.getSiblings() as Item>
110 <#assign dlFileEntry = dlTool.getDLFileEntryByPath(Item.data) />
111 <#assign downloadURL = "/documents/${groupId}/${dlFileEntry.getUuid()}" />
112 <#if validator.isNotNull(dlFileEntry)>
113 <#if Item.ArchivoTitulo.data?has_content>
114 <a href="${downloadURL}" title='${languageUtil.get(request, "${Item.ArchivoTitulo.data}")} ${htmlUtil.escape(title)}' class="">${Item.ArchivoTitulo.data}</a>
115 <#if Item_has_next>, </#if>
116 <#else>
117 <a href="${downloadURL}" title='${languageUtil.get(request, "${dlFileEntry.getTitle()}")} ${htmlUtil.escape(title)}' class="">${dlFileEntry.getTitle()}</a>
118 <#if Item_has_next>, </#if>
119 </#if>
120 </#if>
121 </#list>
122 </span>
123 </span>
124 </li>
125 </#if>
126 </#if>
127 </ul>
128 </div>
129
130 <#if Facebook.data?has_content || Twitter.data?has_content || Youtube.data?has_content || GooglePlus.data?has_content || Pinterest.data?has_content || Instagram.data?has_content || Rss.data?has_content || OtrosCanales.NombreCanal.data?has_content>
131 <div class="article-socials-wrapper mt-4">
132 <div class="socials-wrapper">
133 <div class="socials">
134 <ul class="list-inline items socials">
135 <#if Facebook.data?has_content>
136 <#assign linkURL = Facebook.data/>
137
138 <#if !stringUtil.startsWith(linkURL, "http")>
139 <#assign linkURL = "https://${Facebook.data}"/>
140 </#if>
141 <li class="list-inline-item item facebook">
142 <a href="${linkURL}" title="${languageUtil.format(request,'go-to-x','Facebook')}" onclick="this.target='_blank'">
143 <span class="fab fa-facebook-f">
144 <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Facebook')}</span>
145 </span>
146 </a>
147 </li>
148 </#if>
149 <#if Twitter.data?has_content>
150 <#assign linkURL = Twitter.data/>
151
152 <#if !stringUtil.startsWith(linkURL, "http")>
153 <#assign linkURL = "https://${Twitter.data}"/>
154 </#if>
155 <li class="list-inline-item item twitter">
156 <a href="${linkURL}" title="${languageUtil.format(request,'go-to-x','Twitter')}" onclick="this.target='_blank'">
157 <span class="fab fa-twitter">
158 <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Twitter')}</span>
159 </span>
160 </a>
161 </li>
162 </#if>
163 <#if Youtube.data?has_content>
164 <#assign linkURL = Youtube.data/>
165
166 <#if !stringUtil.startsWith(linkURL, "http")>
167 <#assign linkURL = "https://${Youtube.data}"/>
168 </#if>
169 <li class="list-inline-item item youtube">
170 <a href="${linkURL}" title="${languageUtil.format(request,'go-to-x','Youtube')}" onclick="this.target='_blank'">
171 <span class="fab fa-youtube">
172 <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Youtube')}</span>
173 </span>
174 </a>
175 </li>
176 </#if>
177 <#if GooglePlus.data?has_content>
178 <#assign linkURL = GooglePlus.data/>
179
180 <#if !stringUtil.startsWith(linkURL, "http")>
181 <#assign linkURL = "https://${GooglePlus.data}"/>
182 </#if>
183 <li class="list-inline-item item gplus">
184 <a href="${linkURL}" title="${languageUtil.format(request,'go-to-x','Google Plus')}" onclick="this.target='_blank'">
185 <span class="fab fa-google-plus-g">
186 <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Google Plus')}</span>
187 </span>
188 </a>
189 </li>
190 </#if>
191 <#if Pinterest.data?has_content>
192 <#assign linkURL = Pinterest.data/>
193
194 <#if !stringUtil.startsWith(linkURL, "http")>
195 <#assign linkURL = "https://${Pinterest.data}"/>
196 </#if>
197 <li class="list-inline-item item pinterest">
198 <a href="${linkURL}" title="${languageUtil.format(request,'go-to-x','Pinterest')}" onclick="this.target='_blank'">
199 <span class="fab fa-pinterest-p">
200 <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Pinterest')}</span>
201 </span>
202 </a>
203 </li>
204 </#if>
205 <#if Instagram.data?has_content>
206 <#assign linkURL = Instagram.data/>
207
208 <#if !stringUtil.startsWith(linkURL, "http")>
209 <#assign linkURL = "https://${Instagram.data}"/>
210 </#if>
211 <li class="list-inline-item item instagram">
212 <a href="${Instagram.data}" title="${languageUtil.format(request,'go-to-x','Instagram')}" onclick="this.target='_blank'">
213 <span class="fab fa-instagram">
214 <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Instagram')}</span>
215 </span>
216 </a>
217 </li>
218 </#if>
219 <#if Rss.data?has_content>
220 <#assign linkURL = Rss.data/>
221
222 <#if !stringUtil.startsWith(linkURL, "http")>
223 <#assign linkURL = "https://${Rss.data}"/>
224 </#if>
225 <li class="list-inline-item item rss">
226 <a href="${linkURL}" title="${languageUtil.format(request,'go-to-x','Rss')}" onclick="this.target='_blank'">
227 <span class="fas fa-rss">
228 <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Rss')}</span>
229 </span>
230 </a>
231 </li>
232 </#if>
233 <#list OtrosCanales.NombreCanal.getSiblings() as Canal>
234 <#if Canal.CanalUrl.data?has_content>
235 <#assign linkURL = Canal.CanalUrl.data/>
236
237 <#if !stringUtil.startsWith(linkURL, "http")>
238 <#assign linkURL = "https://${Canal.CanalUrl.data}"/>
239 </#if>
240 <li class="list-inline-item item instagram">
241 <a href="${linkURL}" title="${languageUtil.format(request,'go-to-x',Canal.data)}" onclick="this.target='_blank'">
242 <span class="fas fa-share-alt">
243 <span class="hide-accessible">${languageUtil.format(request,'go-to-x',Canal.data)}</span>
244 </span>
245 </a>
246 </li>
247 </#if>
248 </#list>
249 </ul>
250 </div>
251 </div>
252 </div>
253 </#if>
254
255 </div>
256 </div>
257 </div>
258 </div>
259 </div>
260 </header>
261
262 <div class="sheet sheet-lg">
263
264 <#if Titulo.data?has_content>
265 <div class="article-great">
266 ${Titulo.data}
267 </div>
268 </#if>
269
270 <#assign hasTab1 = DescripcionLarga.data?has_content>
271 <#assign hasTab2 = Geolocalizacion.Coordenadas.data?has_content>
272 <#assign hasTab3 = QueVer.data?has_content>
273 <#assign hasTab4 = Observaciones?? && Observaciones.data?has_content>
274 <#assign showFirstTab = true>
275
276 <div class="article-accordion accordion">
277
278 <#if Visualizador.Slide.getData()?has_content>
279 <div class="slick article-slick article-section <#if Visualizador.Slide.getSiblings()?size==1>hide</#if>">
280 <#list Visualizador.Slide.getSiblings() as Slide>
281 <#assign slideThumbnail3 = dlTool.getThumbnailByJSON(Slide.data, "3")! />
282 <#assign slideThumbnail2 = dlTool.getThumbnailByJSON(Slide.data, "2")! />
283 <#assign slidePath = dlTool.getPathByJSON(Slide.data, themeDisplay.getScopeGroupId())! />
284 <#assign slideUrl = Slide.SlideUrl.data />
285 <#assign dataMap = "" />
286
287 <#if slideUrl?has_content>
288
289 <#assign slideTitle = "${languageUtil.get(request, 'video')} ${Slide?index}" />
290 <#if Slide.SlideTitulo.data?has_content>
291 <#assign slideTitle = Slide.SlideTitulo.data />
292 </#if>
293
294 <#-- Youtube -->
295 <#assign slideUrl = stringUtil.replace(slideUrl, 'watch?v=', 'embed/') />
296 <#assign slideThumbnail2 = stringUtil.replace(slideUrl, 'www', 'img') />
297 <#assign slideThumbnail2 = stringUtil.replace(slideThumbnail2, 'embed', 'vi') />
298 <#assign slideThumbnail2 = '${slideThumbnail2}/mqdefault.jpg' />
299
300 <#-- Vimeo -->
301 <#if slideUrl?contains("vimeo")>
302 <#assign slideUrl = stringUtil.replace(slideUrl, 'http://vimeo.com/', 'https://player.vimeo.com/video/') />
303 <#assign slideVimeoId = stringUtil.extractLast(slideUrl, 'https://player.vimeo.com/video/') />
304 <#if slideVimeoId?has_content>
305 <#assign slideVimeoJsonPath = 'http://vimeo.com/api/v2/video/${slideVimeoId}.json' />
306 <#assign slideVimeoJsonContent = getUrlContent.getContent(slideVimeoJsonPath)! />
307 <#if slideVimeoJsonContent?has_content>
308 <#assign slideVimeoJsonArray = jsonFactoryUtil.createJSONArray(slideVimeoJsonContent) />
309 <#assign slideVimeoJsonItem = slideVimeoJsonArray.get(0) />
310 <#assign slideThumbnail2 = slideVimeoJsonItem.thumbnail_medium />
311 </#if>
312 </#if>
313 </#if>
314
315 <div id="slide-${Slide?index}" class="slide">
316 <a class="card card-simple card-video" href="#" onclick="javascript: event.preventDefault(); showDialogIframe('${slideUrl}', '${slideTitle}', 800, 600, 'videoPopup', 'videoPopupIframe');" title="${slideTitle}">
317 <span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${slideThumbnail2}');">
318 <img class="hide-accessible" alt="${slideTitle}" src="${slideThumbnail2}">
319 </a>
320 </div>
321 <#else>
322
323 <#assign slideTitle = "${languageUtil.get(request, 'image')} ${Slide?index}" />
324 <#if Slide.SlideTitulo.data?has_content>
325 <#assign slideTitle = Slide.SlideTitulo.data />
326 </#if>
327
328 <div class="slide">
329 <a class="card card-simple lightbox" href="${slidePath}" title="${slideTitle}">
330 <span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${slideThumbnail2}');">
331 <img class="hide-accessible" alt="${slideTitle}" src="${slideThumbnail2}">
332 </a>
333 </div>
334 </#if>
335 </#list>
336 </div>
337 </#if>
338
339 <#if hasTab1>
340 <div id="tab1" class="article-section accordion-item">
341 <a href="#tabContent1" id="tabHeading" class="h3 accordion-header <#if !showFirstTab>collapsed</#if>" aria-expanded="${getterUtil.getString(showFirstTab)}" data-toggle="liferay-collapse" aria-controls="tabContent1" role="button">
342 ${languageUtil.get(request,'info')}
343 </a>
344 <div id="tabContent1" class="article-section-content article-section-info accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading">
345 <#if DescripcionLarga.data?has_content>
346 ${DescripcionLarga.data}
347 </#if>
348 </div>
349 </div>
350 <#assign showFirstTab = false>
351 </#if>
352
353 <#if hasTab2>
354 <#assign coordenadas=stringUtil.split(Geolocalizacion.Coordenadas.data) />
355 <div id="tab2" class="article-section accordion-item">
356 <a href="#tabContent2" id="tabHeading2" class="h3 accordion-header <#if !showFirstTab>collapsed</#if>" aria-expanded="${getterUtil.getString(showFirstTab)}" data-toggle="liferay-collapse" aria-controls="tabContent2" role="button">
357 ${languageUtil.get(request,'map')}
358 </a>
359 <div id="tabContent2" class="article-section-content accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading2">
360 <div id="article-map-wrapper-${articleId}" class="article-map-wrapper">
361 <div id="article-map-content-${articleId}" style="width: 100%; height: 500px; z-index:1"><!-- MAP --></div>
362 <div class="article-map-form">
363 <div class="name important">${title}</div>
364 <div class="gps"><span class="label">GPS:</span> <span class="value important" itemprop="geo">${Geolocalizacion.Coordenadas.data}</span></div>
365 <form action="https://maps.google.es/maps" method="get" target="_blank">
366 <input type="hidden" name="daddr" value="${coordenadas[0]},${coordenadas[1]}">
367 <label for="saddr"><span class="label">${languageUtil.get(request,'infoasturias-from')}: </span></label>
368 <input class="form-control" type="text" maxlength="40" name="saddrText" id="saddrText" value="" placeholder="${languageUtil.get(request,'infoasturias-insert-from')}">
369 <input class="form-control" type="hidden" name="saddr" id="saddr" value="" placeholder="${languageUtil.get(request,'infoasturias-insert-from')}">
370 <button class="btn btn-text" type="submit">${languageUtil.get(request,'infoasturias-como-llegar')} »</button>
371 </form>
372 </div>
373 </div>
374 <script src="/o/turismo-asturias-theme/js/leaflet/leaflet.js"></script>
375 <#if validator.isNotNull(Kml.getData())>
376 <script src="/o/turismo-asturias-theme/js/leaflet/leaflet-omnivore.min.js"></script>
377 </#if>
378 <script type="text/javascript">
379 AUI().ready('aui-base', function(A){
380 var lat = ${coordenadas[0]},
381 lng = ${coordenadas[1]},
382 marker="";
383 contentString="";
384 mapContent = new L.map('article-map-content-${articleId}', {center: [lat, lng], zoom: 10});
385
386
387
388 //Marker
389 var defaultIconTheme = '/o/turismo-asturias-theme/css/images/icons/mark-box.png';
390 var defaultIcon = L.icon({
391 iconUrl: defaultIconTheme,
392 iconSize: [36, 53],
393 iconAnchor: [18, 53],
394 iconShadow: [0,0],
395 popupAnchor: [0, -30]
396 });
397 //paint KML
398 <#if validator.isNotNull(Kml.getData())>
399 var customLayer = L.geoJson(null, {
400 style: function(feature) {
401 return { color: '#55aa00' };
402 }
403 });
404 omnivore.kml('${Kml.getData()}', null, customLayer).addTo(mapContent);
405 </#if>
406
407 <#if Municipios.CoordenadasMunicipios.getSiblings()?has_content>
408 <#list Municipios.CoordenadasMunicipios.getSiblings() as coorMunicipio>
409 marker = L.marker([${coorMunicipio.getData()}], {icon: defaultIcon}).addTo(mapContent);
410 <#if validator.isNotNull(coorMunicipio.NombreMunicipio.getData())>
411 var contentString = '<div class="row">';
412 contentString += '<div class="col-12">';
413 contentString += '<div class="h4">${coorMunicipio.NombreMunicipio.getData()}</div>';
414 <#if validator.isNotNull(coorMunicipio.CapitalMunicipio.getData())>
415 contentString += '<div class="title">(${coorMunicipio.CapitalMunicipio.getData()})</div>';
416 </#if>
417 contentString += '</div>';
418 contentString += '</div>';
419 marker.bindPopup(contentString);
420 </#if>
421
422 </#list>
423 <#else>
424 marker = L.marker([lat, lng], {icon: defaultIcon}).addTo(mapContent);
425
426 contentString = '<div class="row">';
427 contentString += '<div class="col-12">';
428 contentString += '<div class="h4">${htmlUtil.escape(title)}</div>';
429 contentString += '</div>';
430 contentString += '</div>';
431
432 contentString += '<div class="row">';
433 contentString += '<div class="col-12">';
434 <#if validator.isNotNull(articleMainImageThumbnail1)>
435 contentString += '<img class="pull-right mb-2 ml-2" src="${articleMainImageThumbnail1}" alt="$title"/>';
436 </#if>
437 contentString += '<dl class="mb-0">';
438 <#if address?has_content>
439 contentString += '<dt>${languageUtil.get(request,'address')}</dt>';
440 contentString += '<dd>${htmlUtil.escape(address)}</dd>';
441 </#if>
442 <#if Web.data?has_content>
443 <#assign linkURL = Web.data/>
444
445 <#if !stringUtil.startsWith(linkURL, "http")>
446 <#assign linkURL = "https://${Web.data}"/>
447 </#if>
448 contentString += '<dt>${languageUtil.get(request,'site')}</dt>';
449 contentString += '<dd><a href="${linkURL}" title="${languageUtil.format(request,'go-to-x', 'site')}">${Web.data}</a></dd';
450 </#if>
451 contentString += '</dl>';
452 contentString += '</div>';
453 contentString += '</div>';
454 <#if validator.isNotNull(description)>
455 contentString += '<div class="row"><div class="col-12">${htmlUtil.escape(description)}</div></div>';
456 </#if>
457 marker.bindPopup(contentString);
458 </#if>
459
460 //Contributor
461 L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
462 attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors.'
463 }).addTo(mapContent);
464
465 }); //AUI.ready
466 </script>
467 </div>
468 </div>
469 <#assign showFirstTab = false>
470 </#if>
471
472 <#if hasTab3>
473 <div id="tab3" class="article-section accordion-item">
474 <a href="#tabContent3" id="tabHeading3" class="h3 accordion-header <#if !showFirstTab>collapsed</#if>" aria-expanded="${getterUtil.getString(showFirstTab)}" data-toggle="liferay-collapse" aria-controls="tabContent3" role="button">${languageUtil.get(request,'infoasturias-que-ver')}</a>
475 <div id="tabContent3" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading3">
476 <#if QueVer.data?has_content>
477 ${QueVer.data}
478 </#if>
479 </div>
480 </div>
481 <#assign showFirstTab = false>
482 </#if>
483
484 <#if hasTab4>
485 <div id="tab4" class="article-section accordion-item">
486 <a href="#tabContent4" id="tabHeading4" class="h3 accordion-header <#if !showFirstTab>collapsed</#if>" aria-expanded="${getterUtil.getString(showFirstTab)}" data-toggle="liferay-collapse" aria-controls="tabContent4" role="button">${languageUtil.get(request,'infoasturias-observaciones')}</a>
487 <div id="tabContent4" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading4">
488 <#if validator.isNotNull(Observaciones.data)>
489 ${Observaciones.data}
490 </#if>
491 </div>
492 </div>
493 <#assign showFirstTab = false>
494 </#if>
495 </div>
496
497 <#if validator.isNotNull(MasInformacion.data) >
498 <div class="article-border">
499 <#if stringUtil.startsWith(MasInformacion.data, "http://") || stringUtil.startsWith(MasInformacion.data, "https://")>
500 <a class="d-block" href="${MasInformacion.data}" title="${languageUtil.format(request,'go-to-x', 'link')}">${MasInformacion.data}</a>
501 <#else>
502 ${MasInformacion.data}
503 </#if>
504 </div>
505 </#if>
506 </div>
507
508 <#-- Related -->
509 <#assign relatedJournalArticles = assetTool.getRelatedJournalArticlesApproved(assetEntry)/>
510 <#if validator.isNotNull(relatedJournalArticles) && relatedJournalArticles?size gt 0>
511 <div class="article-related portlet-background-grey-container">
512 <div class="container">
513 <h3 class="title-section">${languageUtil.get(request,'related-assets')}</h3>
514 <div class="slick article-related-slick">
515 <#list relatedJournalArticles as currentJournalArticle>
516 <#assign viewURL = journalTool.getDisplayPage(currentJournalArticle, themeDisplay, true)/>
517 <div class="slide">
518 <a class="card background card-background-9-14" href="${viewURL}" title="${languageUtil.format(request, 'go-to-x', currentJournalArticle.getTitle(locale))}">
519 <span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${currentJournalArticle.getSmallImageURL()}');">
520 <img class="hide-accessible" src="${currentJournalArticle.getSmallImageURL()}" alt="${currentJournalArticle.getTitle(locale)}">
521 <span class="card-body">
522 <span class="card-title">${currentJournalArticle.getTitle(locale)}</span>
523 </span>
524 </span>
525 </a>
526 </div>
527 </#list>
528 </div>
529 </div>
530 </div>
531 </#if>
532
533 <#-- Nearby -->
534 <#assign classTypeIds = []>
535 <#assign assetsNearJournalArticles = assetNearTool.getNearJournalArticles(themeDisplay.getScopeGroupId(), assetEntry.getEntryId(), 50.0, classTypeIds, 10)! />
536 <#if validator.isNotNull(assetsNearJournalArticles) && assetsNearJournalArticles?size gt 0>
537 <div class="article-nearby portlet-container-margin">
538 <div class="container">
539 <div class="article-nearby-container">
540 <h3 class="title-section">${languageUtil.get(request,'infoasturias-near-here')}</h3>
541 <div class="slick article-nearby-slick">
542 <#list assetsNearJournalArticles as currentJournalArticle>
543 <#assign viewURL = journalTool.getDisplayPage(currentJournalArticle, themeDisplay, true)/>
544 <div class="slide">
545 <a class="card" href="${viewURL}" title="${languageUtil.format(request, 'go-to-x', currentJournalArticle.getTitle(locale))}">
546 <span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${currentJournalArticle.getSmallImageURL()}');">
547 <img class="hide-accessible" src="${currentJournalArticle.getSmallImageURL()}" alt="${currentJournalArticle.getTitle(locale)}">
548 <span class="card-hover">
549 <span class="card-text">${currentJournalArticle.getDescription(locale)}</span>
550 </span>
551 </span>
552 <span class="card-body">
553 <span class="card-title">${currentJournalArticle.getTitle(locale)}</span>
554 <span class="card-subtitle">
555 <span class="d-block">${currentJournalArticle.getVersion()} Kms</span>
556 <span class="d-block">${journalTool.getCategoriesNames(groupId, currentJournalArticle.getArticleId(), locale, ["Concejos"])}</span>
557 </span>
558 </span>
559 </a>
560 </div>
561 </#list>
562 </div>
563 </div>
564 </div>
565 </div>
566 </#if>
567
568</article>