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