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