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