Une erreur s'est produite lors du traitement du gabarit.
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@43e2dc83"; 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 346, 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 <h3 class="section-title">${languageUtil.get(locale,'model.resource.com.liferay.portlet.imagegallery')}</h3>
344 <div class="slick article-slick article-section <#if Visualizador.Slide.getSiblings()?size==1>hide</#if>">
345 <#list Visualizador.Slide.getSiblings() as Slide>
346 <#assign slideThumbnail3 = dlTool.getThumbnailByJSON(Slide.data, "3")! />
347 <#assign slideThumbnail2 = dlTool.getThumbnailByJSON(Slide.data, "2")! />
348 <#assign slidePath = dlTool.getPathByJSON(Slide.data, themeDisplay.getScopeGroupId())! />
349 <#assign slideUrl = Slide.SlideUrl.data />
350 <#assign dataMap = "" />
351
352 <#if slideUrl?has_content>
353
354 <#assign slideTitle = "${languageUtil.get(request, 'video')} ${Slide?index}" />
355 <#if Slide.SlideTitulo.data?has_content>
356 <#assign slideTitle = Slide.SlideTitulo.data />
357 </#if>
358
359 <#-- Youtube -->
360 <#assign slideUrl = stringUtil.replace(slideUrl, 'watch?v=', 'embed/') />
361 <#assign slideThumbnail2 = stringUtil.replace(slideUrl, 'www', 'img') />
362 <#assign slideThumbnail2 = stringUtil.replace(slideThumbnail2, 'embed', 'vi') />
363 <#assign slideThumbnail2 = '${slideThumbnail2}/mqdefault.jpg' />
364
365 <#-- Vimeo -->
366 <#if slideUrl?contains("vimeo")>
367 <#assign slideUrl = stringUtil.replace(slideUrl, 'http://vimeo.com/', 'https://player.vimeo.com/video/') />
368 <#assign slideVimeoId = stringUtil.extractLast(slideUrl, 'https://player.vimeo.com/video/') />
369 <#if slideVimeoId?has_content>
370 <#assign slideVimeoJsonPath = 'http://vimeo.com/api/v2/video/${slideVimeoId}.json' />
371 <#assign slideVimeoJsonContent = getUrlContent.getContent(slideVimeoJsonPath)! />
372 <#if slideVimeoJsonContent?has_content>
373 <#assign slideVimeoJsonArray = jsonFactoryUtil.createJSONArray(slideVimeoJsonContent) />
374 <#assign slideVimeoJsonItem = slideVimeoJsonArray.get(0) />
375 <#assign slideThumbnail2 = slideVimeoJsonItem.thumbnail_medium />
376 </#if>
377 </#if>
378 </#if>
379
380 <div id="slide-${Slide?index}" class="slide">
381 <a class="card card-simple card-video" href="#" onclick="javascript: event.preventDefault(); showDialogIframe('${slideUrl}', '${slideTitle}', 800, 600, 'videoPopup', 'videoPopupIframe');" title="${slideTitle}">
382 <span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${slideThumbnail2}');">
383 <img class="hide-accessible" alt="${slideTitle}" src="${slideThumbnail2}">
384 </a>
385 </div>
386 <#else>
387
388 <#assign slideTitle = "${languageUtil.get(request, 'image')} ${Slide?index}" />
389 <#if Slide.SlideTitulo.data?has_content>
390 <#assign slideTitle = Slide.SlideTitulo.data />
391 </#if>
392
393 <div class="slide">
394 <a class="card card-simple lightbox" href="${slidePath}" title="${slideTitle}">
395 <span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${slideThumbnail2}');">
396 <img class="hide-accessible" alt="${slideTitle}" src="${slideThumbnail2}">
397 </a>
398 </div>
399 </#if>
400 </#list>
401 </div>
402 </#if>
403
404 <#if hasTab1>
405 <div id="tab1" class="article-section accordion-item">
406 <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">
407 <h3 class="h3 accordion-header">${languageUtil.get(request,'info')}</h3>
408 </a>
409 <div id="tabContent1" class="article-section-content article-section-info accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading">
410 <#if Informacion.Texto.data?has_content>
411 ${Informacion.Texto.data}
412 </#if>
413 <#if Informacion.FechaDeConstruccion.data?has_content>
414 <span class="field">${languageUtil.get(request, "infoasturias-fecha-de-construccion")}:</span>
415 <span class="text">${htmlUtil.extractText(Informacion.FechaDeConstruccion.data)}</span>
416 </#if>
417 </div>
418 </div>
419 <#assign showFirstTab = false>
420 </#if>
421
422 <#if hasTab2>
423 <#assign coordenadas=stringUtil.split(Geolocalizacion.Coordenadas.data) />
424 <div id="tab2" class="article-section article-section-map accordion-item">
425 <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">
426 <h3 class="h3 accordion-header">${languageUtil.get(request,'map')}</h3>
427 </a>
428 <div id="tabContent2" class="article-section-content accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading2">
429 <div id="article-map-wrapper-${articleId}" class="article-map-wrapper">
430 <div id="article-map-content-${articleId}" style="width: 100%; height: 388px; z-index:1"><!-- MAP --></div>
431 <div class="article-map-form">
432 <div class="name important">${title}</div>
433 <div class="gps"><span class="label">GPS:</span> <span class="value important" itemprop="geo">${Geolocalizacion.Coordenadas.data}</span></div>
434 <form action="https://maps.google.es/maps" method="get" target="_blank">
435 <input type="hidden" name="daddr" value="${coordenadas[0]},${coordenadas[1]}">
436 <label for="saddr"><span class="label">${languageUtil.get(request,'infoasturias-from')}: </span></label>
437 <input class="form-control" type="text" maxlength="40" name="saddrText" id="saddrText" value="" placeholder="${languageUtil.get(request,'infoasturias-insert-from')}">
438 <input class="form-control" type="hidden" name="saddr" id="saddr" value="" placeholder="${languageUtil.get(request,'infoasturias-insert-from')}">
439 <button class="btn btn-text" type="submit">${languageUtil.get(request,'infoasturias-como-llegar')} »</button>
440 </form>
441 </div>
442 </div>
443 <script src="/o/turismo-asturias-theme/js/leaflet/leaflet.js"></script>
444 <script type="text/javascript">
445 AUI().ready('aui-base', function(A){
446 var lat = ${coordenadas[0]},
447 lng = ${coordenadas[1]},
448 zoom = 16;
449 mapContent = new L.map('article-map-content-${articleId}', {center: [lat, lng], zoom: 16});
450
451 //Marker
452 var defaultIconTheme = '/o/turismo-asturias-theme/css/images/icons/mark-box.png';
453 var defaultIcon = L.icon({
454 iconUrl: defaultIconTheme,
455 iconSize: [36, 53],
456 iconAnchor: [18, 53],
457 iconShadow: [0,0],
458 popupAnchor: [0, -30]
459 });
460 var marker = L.marker([lat, lng], {icon: defaultIcon}).addTo(mapContent);
461
462 var contentString = '<div class="row">';
463 contentString += '<div class="col-12">';
464 contentString += '<div class="h4">${htmlUtil.escape(title)}</div>';
465 contentString += '</div>';
466 contentString += '</div>';
467
468 contentString += '<div class="row">';
469 contentString += '<div class="col-12">';
470 <#if validator.isNotNull(articleMainImageThumbnail1)>
471 contentString += '<img class="pull-right mb-2 ml-2" src="${articleMainImageThumbnail1}" alt="$title"/>';
472 </#if>
473 contentString += '<dl class="mb-0">';
474 <#if address?has_content>
475 contentString += '<dt>${languageUtil.get(request,'address')}</dt>';
476 contentString += '<dd>${address}</dd>';
477 </#if>
478 <#if Contacto.Telefono.data?has_content>
479 contentString += '<dt>${languageUtil.get(request,'phone')}</dt>';
480 contentString += '<dd>${Contacto.Telefono.data}</dd>';
481 </#if>
482 <#if Contacto.Email.getData()?has_content>
483 contentString += '<dt>${languageUtil.get(request,'email')}</dt>';
484 <#list Contacto.Email.getSiblings() as Item>
485 contentString += '<dd><a href="mailto:${Item.data}" title="${languageUtil.format(request,'go-to-x', 'email')}">${Item.data}</a></dd>';
486 </#list>
487 </#if>
488 <#if Contacto.Web.data?has_content>
489 contentString += '<dt>${languageUtil.get(request,'site')}</dt>';
490 contentString += '<dd><a href="${Contacto.Web.data}" title="${languageUtil.format(request,'go-to-x', 'site')}">${Contacto.Web.data}</a></dd';
491 </#if>
492 contentString += '</dl>';
493 contentString += '</div>';
494 contentString += '</div>';
495 <#if validator.isNotNull(description)>
496 contentString += '<div class="row"><div class="col-12">${description}</div></div>';
497 </#if>
498 marker.bindPopup(contentString);
499
500 //Contributor
501 L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
502 attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors.'
503 }).addTo(mapContent);
504
505 }); //AUI.ready
506 </script>
507 </div>
508 </div>
509 <#assign showFirstTab = false>
510 </#if>
511
512 <#if hasTab3>
513 <div id="tab3" class="article-section accordion-item">
514 <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>
515 <div id="tabContent3" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading3">
516
517 <#if Informacion.Horario.data?has_content>
518 <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>
519 <div>${Informacion.Horario.data}</div>
520 </#if>
521
522 <#if Informacion.Tarifas.data?has_content>
523 <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>
524 <div>${Informacion.Tarifas.data}</div>
525 </#if>
526 </div>
527 </div>
528 <#assign showFirstTab = false>
529 </#if>
530 </div>
531
532 <#if validator.isNotNull(Informacion.Observaciones.data) || validator.isNotNull(Contacto.MasInformacion.data) >
533 <div class="article-border">
534 <#if Informacion.Observaciones?has_content>
535 ${Informacion.Observaciones.data}
536 </#if>
537 <#if Contacto.MasInformacion?has_content>
538 <#list Contacto.MasInformacion.getSiblings() as Item>
539 <#if stringUtil.matches(Item.data, "//") >
540 <div><a class="" href="${Item.data}" title="${languageUtil.format(request,'go-to-x', 'link')}">${Item.data}</a></div>
541 <#else>
542 <div><span class="">${Item.data}</span></div>
543 </#if>
544 </#list>
545 </#if>
546 </div>
547 </#if>
548 </div>
549
550 <#-- Related -->
551 <#assign relatedJournalArticles = assetTool.getRelatedJournalArticlesApproved(assetEntry)/>
552 <#if validator.isNotNull(relatedJournalArticles) && relatedJournalArticles?size gt 0>
553 <div class="article-related portlet-background-grey-container">
554 <div class="container">
555 <h3 class="title-section">${languageUtil.get(request,'related-assets')}</h3>
556 <div class="slick article-related-slick">
557 <#list relatedJournalArticles as currentJournalArticle>
558 <#assign viewURL = journalTool.getDisplayPage(currentJournalArticle, themeDisplay, true)/>
559 <div class="slide">
560 <a class="card background card-background-9-14" href="${viewURL}" title="${languageUtil.format(request, 'go-to-x', currentJournalArticle.getTitle(locale))}">
561 <span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${currentJournalArticle.getSmallImageURL()}');">
562 <img class="hide-accessible" src="${currentJournalArticle.getSmallImageURL()}" alt="${currentJournalArticle.getTitle(locale)}">
563 <span class="card-body">
564 <span class="card-title">${currentJournalArticle.getTitle(locale)}</span>
565 </span>
566 </span>
567 </a>
568 </div>
569 </#list>
570 </div>
571 </div>
572 </div>
573 </#if>
574
575 <#-- Nearby -->
576 <#assign classTypeIds = []>
577 <#assign assetsNearJournalArticles = assetNearTool.getNearJournalArticles(themeDisplay.getScopeGroupId(), assetEntry.getEntryId(), 50.0, classTypeIds, 10)! />
578 <#if validator.isNotNull(assetsNearJournalArticles) && assetsNearJournalArticles?size gt 0>
579 <div class="article-nearby portlet-container-margin">
580 <div class="container">
581 <div class="article-nearby-container">
582 <h3 class="title-section">${languageUtil.get(request,'infoasturias-near-here')}</h3>
583 <div class="slick article-nearby-slick">
584 <#list assetsNearJournalArticles as currentJournalArticle>
585 <#assign viewURL = journalTool.getDisplayPage(currentJournalArticle, themeDisplay, true)/>
586 <div class="slide">
587 <a class="card" href="${viewURL}" title="${languageUtil.format(request, 'go-to-x', currentJournalArticle.getTitle(locale))}">
588 <span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${currentJournalArticle.getSmallImageURL()}');">
589 <img class="hide-accessible" src="${currentJournalArticle.getSmallImageURL()}" alt="${currentJournalArticle.getTitle(locale)}">
590 <span class="card-hover">
591 <span class="card-text">${currentJournalArticle.getDescription(locale)}</span>
592 </span>
593 </span>
594 <span class="card-body">
595 <span class="card-title">${currentJournalArticle.getTitle(locale)}</span>
596 <span class="card-subtitle">
597 <span class="d-block">${currentJournalArticle.getVersion()} Kms</span>
598 <span class="d-block">${journalTool.getCategoriesNames(groupId, currentJournalArticle.getArticleId(), locale, ["Concejos"])}</span>
599 </span>
600 </span>
601 </a>
602 </div>
603 </#list>
604 </div>
605 </div>
606 </div>
607 </div>
608 </#if>
609
610</article>