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