Vés enrere Etapa 4: Can Boi - Muleta
S'ha produït un error mentre es processava la plantilla.
The following has evaluated to null or missing: ==> articleRefugio [in template "20101#20128#38295" at line 351, column 76] ---- 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: @liferay_journal["journal-article"] d... [in template "20101#20128#38295" at line 348, column 65] ----
1<#include "${templatesPathTurismo}/113928" />
2<#include "${templatesPathTurismo}/84562" />
3<#include "${templatesPathTurismo}/162098" />
4<#include "${templatesPathTurismo}/1518983" />
5<#assign
6 theme_display = themeDisplay
7 images_folder = theme_display.getPathThemeImages()
8 />
9<#setting locale = themeDisplay.getLocale()/>
10<#setting number_format = "#.#" />
11<#assign dlAppService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService") />
12<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
13<#attempt>
14<#assign article = journalArticleLocalService.getArticle(getterUtil.getLong(scopeGroupId), .vars['reserved-article-id'].data)>
15<#recover>
16<#assign article = journalArticleLocalService.getArticle(groupIdTurismo?number, .vars['reserved-article-id'].data)>
17</#attempt>
18<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService") />
19<#assign asset = assetEntryLocalService.getEntry('com.liferay.journal.model.JournalArticle', article.resourcePrimKey) >
20
21<#-- Services assetVocabulary y assetCategory -->
22<#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") />
23<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
24
25<#-- Vocabulario Nivel de Dificultad -->
26<#attempt>
27<#assign vocabularyNivelDificultad = assetVocabularyLocalService.fetchGroupVocabulary(themeDisplay.getScopeGroupId(), "Nivell de dificultat") />
28<#recover>
29<#assign vocabularyNivelDificultad = assetVocabularyLocalService.fetchGroupVocabulary(groupIdTurismo?number, "Nivell de dificultat") />
30</#attempt>
31<#assign categoriasNivelDificultad = assetCategoryLocalService.getVocabularyRootCategories(vocabularyNivelDificultad.getVocabularyId(), -1, -1, null) />
32
33<#assign dificultad = "" />
34<#if categoriasNivelDificultad?has_content>
35 <#list categoriasNivelDificultad as currentRootCategory>
36 <#if assetCategoryLocalService.hasAssetEntryAssetCategory(asset.getEntryId(),currentRootCategory.getCategoryId()) >
37 <#assign dificultad = currentRootCategory.getTitle(themeDisplay.getLocale()) />
38 </#if>
39 </#list>
40</#if>
41
42<#-- Vocabulario Tipo de Recorrido -->
43<#attempt>
44<#assign vocabularyTipoRecorrido = assetVocabularyLocalService.fetchGroupVocabulary(themeDisplay.getScopeGroupId(), "Tipus de recorregut") />
45<#recover>
46<#assign vocabularyTipoRecorrido = assetVocabularyLocalService.fetchGroupVocabulary(groupIdTurismo?number, "Tipus de recorregut") />
47</#attempt>
48<#assign categoriasTipoRecorrido = assetCategoryLocalService.getVocabularyRootCategories(vocabularyTipoRecorrido.getVocabularyId(), -1, -1, null) />
49
50<#assign recorrido = "" />
51<#if categoriasTipoRecorrido?has_content>
52 <#list categoriasTipoRecorrido as currentRootCategory>
53 <#if assetCategoryLocalService.hasAssetEntryAssetCategory(asset.getEntryId(),currentRootCategory.getCategoryId()) >
54 <#assign recorrido = currentRootCategory.getTitle(themeDisplay.getLocale()) />
55 </#if>
56 </#list>
57</#if>
58
59<#-- Incluimos favoritos -->
60<@addFavorito planificador="true" favoritos="true" instanceId="detalleRuta"/>
61
62<!-- Section Title -->
63<section class="sectionTitle">
64 <div class="container">
65 <div class="row">
66 <div class="col-12">
67 <div class="divArea">
68 <@printParentRuta/>
69 </div>
70 </div>
71 <div class="col-12">
72 <div class="divArea">
73 <@printColorCircle articleId=.vars['reserved-article-id'].data rutaId=Id.getData()/>
74 <h2 class="pArea">${Nombre.getData()}</h2>
75 </div>
76 </div>
77 </div>
78 </div>
79</section>
80<!-- FIN Title -->
81<!-- Section Recurso -->
82<section class="sectionRecurso">
83 <div class="container">
84 <div class="row">
85 <div class="col-12 col-lg-9 marginCol">
86 <!-- Section Tabs -->
87 <div class="sectionTab">
88 <div class="row">
89 <div class="col-12">
90 <div class="divTab">
91 <ul class="nav nav-tabs list-inline" id="myTab" role="tablist">
92 <li class="nav-item list-inline-item active">
93 <a href="#descripcionSend" class="nav-link aTab active" data-toggle="tab" title="pestaña para descripción" id="descripcionSend-tab" role="tab" aria-controls="descripcionSend" aria-selected="true">
94 ${languageUtil.get(themeDisplay.getLocale(), 'sm.template.descripcion')}
95 </a>
96 </li>
97 <#if PuntosDeInteres.getSiblings()?size gt 0 && (PuntosDeInteres.getSiblings()[0]).getData()?has_content && PuntosDeInteres.getSiblings()[0].getData()!="{}">
98 <li class="nav-item list-inline-item">
99 <a href="#intpointSend" class="nav-link aTab" data-toggle="tab" title="pestaña para puntos de interés" id="intpointSend-tab" aria-controls="intpointSend" aria-selected="false">
100 ${languageUtil.get(themeDisplay.getLocale(), 'sm.template.puntos.interes')}
101 </a>
102 </li>
103 </#if>
104 <#if Refugios.getSiblings()?size gt 0 && (Refugios.getSiblings()[0]).getData()?has_content && Refugios.getSiblings()[0].getData()!="{}">
105 <li class="nav-item list-inline-item">
106 <a href="#refugiosSend" class="nav-link aTab" data-toggle="tab" title="pestaña para refugios" id="refugiosSend-tab" aria-controls="refugiosSend" aria-selected="false">
107 ${languageUtil.get(themeDisplay.getLocale(), 'sm.template.refugios')}
108 </a>
109 </li>
110 </#if>
111 <#if Imagenes.getSiblings()?size gt 0 && (Imagenes.getSiblings()[0]).getData()?has_content>
112 <li class="nav-item list-inline-item">
113 <a href="#imagenesSend" class="nav-link aTab" data-toggle="tab" title="pestaña para imágenes" id="imagenesSend-tab" aria-controls="imagenesSend" aria-selected="false">
114 ${languageUtil.get(themeDisplay.getLocale(), 'sm.template.imagenes')}
115 </a>
116 </li>
117 </#if>
118 </ul>
119 </div>
120 </div>
121 </div>
122 </div>
123 <!-- FIN Tabs -->
124 <!-- Section Tab-Panel -->
125 <div class="tab-content" id="myTabContent">
126 <!-- Section DescripciónSend -->
127 <div class="tab-pane fade show active sectionSlider" id="descripcionSend" role="tabpanel" aria-labelledby="descripcionSend-tab">
128 <#if dificultad!="" || Distancia.getData()!="" || Desnivel.getData()!="" || DesnivelNegativo.getData()!="" || DuracionAproximada.getData()!="" || recorrido!="" >
129 <div class="row">
130 <div class="col-12 marginCol">
131 <div class="divTypeSend">
132 <#if dificultad!="">
133 <div class="tipsSend">
134 <span class="titleTypeSent">${languageUtil.get(themeDisplay.getLocale(), 'sm.buscador.rutas.dificultad')} </span>
135 <span class="textTypeSent">${dificultad}</span>
136 </div>
137 </#if>
138 <#if Distancia.getData()!="" && Distancia.getData()!="0" && Distancia.getData()!="0.0" && Distancia.getData()!="0,0">
139 <div class="tipsSend">
140 <span class="titleTypeSent">${languageUtil.get(themeDisplay.getLocale(), 'sm.buscador.rutas.distancia')} </span>
141 <span class="textTypeSent"> ${Distancia.getData()} km</span>
142 </div>
143 </#if>
144 <#if Desnivel.getData()!="" && Desnivel.getData()!="0" && Desnivel.getData()!="0.0" && Desnivel.getData()!="0,0">
145 <div class="tipsSend">
146 <span class="titleTypeSent">${languageUtil.get(themeDisplay.getLocale(), 'sm.buscador.rutas.desnivel')} </span>
147 <span class="textTypeSent"> ${Desnivel.getData()} m</span>
148 </div>
149 </#if>
150 <#if DesnivelNegativo?? && DesnivelNegativo.getData()!="" && DesnivelNegativo.getData()!="0" && DesnivelNegativo.getData()!="0.0" && DesnivelNegativo.getData()!="0,0">
151 <div class="tipsSend">
152 <span class="titleTypeSent">${languageUtil.get(themeDisplay.getLocale(), 'sm.buscador.rutas.desnivel.negativo')} </span>
153 <span class="textTypeSent"> ${DesnivelNegativo.getData()} m</span>
154 </div>
155 </#if>
156 <#if DuracionAproximada.getData()!="">
157 <div class="tipsSend">
158 <span class="titleTypeSent">${languageUtil.get(themeDisplay.getLocale(), 'sm.buscador.rutas.tiempo.estimado')} </span>
159 <span class="textTypeSent"> ${DuracionAproximada.getData()}</span>
160 </div>
161 </#if>
162 <#if recorrido!="">
163 <div class="tipsSend">
164 <span class="titleTypeSent">${languageUtil.get(themeDisplay.getLocale(), 'sm.buscador.rutas.tipo.ruta')} </span>
165 <span class="textTypeSent">${recorrido}</span>
166 </div>
167 </#if>
168 </div>
169 </div>
170 </div>
171 </#if>
172 <div class="row">
173 <div class="col-12">
174 <#if PerfilTopografico.getSiblings()?has_content>
175 <#if PerfilTopografico.getSiblings()?size gt 0 && (PerfilTopografico.getSiblings()[0]).getData()?has_content>
176 <#assign imagenGrande=PerfilTopografico.getSiblings()[0].getData()/>
177 <#if PerfilTopografico.getSiblings()[0].getAttribute("alt")?has_content>
178 <#assign imagenGrandeAlt=PerfilTopografico.getSiblings()[0].getAttribute("alt")/>
179 <#else>
180 <#assign imagenGrandeAlt=""/>
181 </#if>
182 <#if PerfilTopografico.getAttribute("fileEntryId")??>
183 <#assign fileEntryId = PerfilTopografico.getAttribute("fileEntryId")/>
184 <#attempt>
185 <@adaptive_media_image["img"] class="figure-img img-fluid" fileVersion=dlAppService.getFileEntry(fileEntryId?number).getFileVersion() alt="${imagenGrandeAlt}" title="${imagenGrandeAlt}" />
186 <#recover>
187 </#attempt>
188 </#if>
189 </#if>
190 </#if>
191
192 </div>
193 </div>
194 <!-- Servicios -->
195 <div class="row">
196 <div class="col-12">
197 <div class="divServSend">
198 <@printServicesRutes articleId=.vars['reserved-article-id'].data/>
199 </div>
200 </div>
201 </div>
202 <!-- FIN Servicios -->
203 <div class="divDescripcionRuta">
204 <div class="row">
205 <div class="col-12">
206 ${Descripcion.getData()}
207 </div>
208 </div>
209 <div class="row">
210 <#if Etapas1.getSiblings()?has_content>
211 <#list Etapas1.getSiblings() as cur_Etapa>
212 <#assign
213 jsonEtapa = jsonFactoryUtil.createJSONObject(cur_Etapa.getData())
214 />
215 <#if jsonEtapa.uuid?? && themeDisplay.getScopeGroupId()??>
216 <#attempt>
217 <#assign articleEtapa = journalArticleLocalService.getJournalArticleByUuidAndGroupId(jsonEtapa.uuid, themeDisplay.getScopeGroupId()) />
218 <#recover>
219 <#assign articleEtapa = journalArticleLocalService.getJournalArticleByUuidAndGroupId(jsonEtapa.uuid, groupIdTurismo?number) />
220 </#attempt>
221
222 <div class="col-12 col-md-6 col-lg-4">
223 <div class="card cardRefug js_goStage">
224 <#assign listUrl = themeDisplay.getURLCurrent()?split("/") />
225 <#list listUrl as x >
226 <#if !x_has_next>
227 <#list x?split("?") as y>
228 <#assign etapa = y />
229 <#break>
230 </#list>
231 </#if>
232 </#list>
233 <a href="${themeDisplay.getURLHome()}/-/${articleEtapa.urlTitle}?classNameId=20701&classPK=${articleEtapa.getResourcePrimKey()}&parentId=${.vars['reserved-article-id'].data}" class="aCard">
234 <@liferay_journal["journal-article"]
235 ddmTemplateKey="234580"
236 articleId=articleEtapa.getArticleId()
237 groupId=articleEtapa.getGroupId() />
238 </a>
239 </div>
240 </div>
241 </#if>
242 </#list>
243 </#if>
244 </div>
245 </div>
246 </div>
247 <!-- Section intpointSend -->
248 <div class="tab-pane fade sectionSlider" id="intpointSend" role="tabpanel" aria-labelledby="intpointSend-tab">
249 <section class="sectionCards">
250 <div class="container">
251 <div class="row">
252 <#if PuntosDeInteres.getSiblings()?has_content>
253 <div class="col-12">
254 <div class="divSwiper experiencias" id="experiencias">
255 <div class="divSwiper-wrapper row">
256 <#list PuntosDeInteres.getSiblings() as cur_POI>
257 <#assign
258 jsonPOI = jsonFactoryUtil.createJSONObject(cur_POI.getData())
259 />
260 <#if jsonPOI.uuid?? && themeDisplay.getScopeGroupId()??>
261 <#attempt>
262 <#assign articlePOI = journalArticleLocalService.getJournalArticleByUuidAndGroupId(jsonPOI.uuid, themeDisplay.getScopeGroupId()) />
263 <#recover>
264 <#assign articlePOI = journalArticleLocalService.getJournalArticleByUuidAndGroupId(jsonPOI.uuid, groupIdTurismo?number) />
265 </#attempt>
266 <div class="li_ss col-md-6">
267 <div class="card">
268 <a href="/-/${articlePOI.urlTitle}?classNameId=20701&classPK=${articlePOI.getResourcePrimKey()}" class="aCard">
269 <#-- Obtenemos la primera imagen -->
270 <#if cur_POI.ImagenPOI?has_content>
271 <#if cur_POI.ImagenPOI.getSiblings()?size gt 0 && (cur_POI.ImagenPOI.getSiblings()[0]).getData()?has_content>
272 <div class="card-img marcCardResult">
273 <#assign map = { "propietario": '' } />
274 <#assign fileEntryId = cur_POI.ImagenPOI.getSiblings()[0].getAttribute("fileEntryId")/>
275 <#assign image = cur_POI.ImagenPOI.data?eval />
276 <#if cur_POI.ImagenPOI.getSiblings()[0].getAttribute("alt")?has_content>
277 <#assign imagenAlt = cur_POI.ImagenPOI.getSiblings()[0].getAttribute("alt")/>
278 <#else>
279 <#assign imagenAlt = ""/>
280 </#if>
281 <#if image??>
282 <#assign mapFields=getFieldsDocument(map,image) />
283 <#list mapFields?keys as key>
284 <#if key=="propietario">
285 <#assign propietario = mapFields[key] />
286 <#assign imagenAlt="${imagenAlt}"+" © "+"${propietario}" />
287 </#if>
288 </#list>
289 </#if>
290 <#attempt>
291 <@adaptive_media_image["img"] class="card-img-top" fileVersion=dlAppService.getFileEntry(fileEntryId?number).getFileVersion() alt="${imagenAlt}" title="${imagenAlt}" />
292 <#recover>
293 </#attempt>
294 </div>
295 </#if>
296 </#if>
297 <#if imagenAlt??>
298 <div class="card-body">
299 <p class="card-title">${imagenAlt}</p>
300 </div>
301 </#if>
302 </a>
303 </div>
304 </div>
305 </#if>
306 </#list>
307 </div>
308 </div>
309 </div>
310 </#if>
311 </div>
312 <div class="swiper-button-next"></div>
313 <div class="swiper-button-prev"></div>
314 </div>
315 </section>
316 </div>
317 <!-- FIN intpointSend -->
318 <!-- Section RefugiosSend -->
319 <div class="tab-pane fade sectionSlider" id="refugiosSend" role="tabpanel" aria-labelledby="refugiosSend-tab">
320 <!-- Section Cards - Instalaciones deportivas -->
321 <p class="mT20">${languageUtil.get(themeDisplay.getLocale(), 'sm.template.seleccionar.refugios')}</p>
322 <section class="sectionCards">
323 <div class="row">
324 <#if Refugios.getSiblings()?has_content>
325 <div class="col-12">
326 <div class="divSwiper instaDeport" id="instaDeport">
327 <div class="divSwiper-wrapper row">
328 <#list Refugios.getSiblings() as cur_Refugio>
329 <#assign
330 jsonRefugio = jsonFactoryUtil.createJSONObject(cur_Refugio.getData())
331 />
332 <#if jsonRefugio.classPK?? && themeDisplay.getScopeGroupId()??>
333 <#attempt>
334 <#assign articleRefugio = journalArticleLocalService.getLatestArticle(jsonRefugio.classPK?number) />
335 <#recover>
336 </#attempt>
337 <#assign listUrl = themeDisplay.getURLCurrent()?split("/") />
338 <#list listUrl as x >
339 <#if !x_has_next>
340 <#list x?split("?") as y>
341 <#assign refugio = y />
342 <#break>
343 </#list>
344 </#if>
345 </#list>
346 <div class="li_ss col-md-12 marginCol">
347 <div class="card noBord">
348 <@liferay_journal["journal-article"]
349 ddmTemplateKey="235003"
350 articleId=articleRefugio.getArticleId()
351 groupId=articleRefugio.getGroupId() />
352 </div>
353 </div>
354 </#if>
355 </#list>
356 </div>
357 <div class="swiper-button-next"></div>
358 <div class="swiper-button-prev"></div>
359 </div>
360 </div>
361 </#if>
362 </div>
363 <div class="row">
364 <div class="col-12">
365 <div class="divBtnModal">
366 <#if themeDisplay.isSignedIn()>
367 <a onclick="reservaMultiple()" type="button" class="btn btn-Consell" style="color: #ffffff;">${languageUtil.get(themeDisplay.getLocale(), 'sm.template.reservar.seleccionados')}</a>
368 <#else>
369 <button type="button" class="btn btn-Consell" style="color: #ffffff;" data-toggle="modal" data-target="#modalRegistro">${languageUtil.get(themeDisplay.getLocale(), 'sm.template.reservar.seleccionados')}</button>
370 </#if>
371 </div>
372 </div>
373 </div>
374 </section>
375 <#if color??>
376 <#else>
377 <#assign color=""/>
378 </#if>
379 <script>
380 function reservaMultiple() {
381 var articles = [];
382 for(var i = 0; i<$("input[name='checkRefugio']").length; i++){
383 if($($("input[name='checkRefugio']")[i]).prop("checked"))
384 articles.push($($("input[name='checkRefugio']")[i]).val());
385 }
386 if(articles.length==0){
387 alert("${languageUtil.get(themeDisplay.getLocale(), 'sm.template.ningun.refugio.seleccionado')}");
388 return;
389 }
390
391 var baseURL = themeDisplay.getLayoutURL().substring(0, themeDisplay.getLayoutURL().lastIndexOf('/')) + '/reservamultiple';
392 baseURL = baseURL.replace('/web/', '/group/');
393
394 var portletURL = Liferay.PortletURL.createURL(baseURL);
395 portletURL.setDoAsGroupId('true');
396 portletURL.setLifecycle(Liferay.PortletURL.RENDER_PHASE);
397 portletURL.setPortletId("com_smart_turismo_reservas_SmTurismoReservasRefugiosMultiplePortlet");
398 portletURL.setParameter('p_auth', Liferay.authToken);
399 portletURL.setParameter('backURL', window.location.href);
400 portletURL.setParameter('articles', articles);
401 portletURL.setParameter('color', "${color}");
402 portletURL.setParameter('rutaId', "${Id.getData()}");
403 portletURL.setParameter('name', "${Nombre.getData()}");
404
405 $.ajax({
406 url: portletURL.toString(),
407 type: "post",
408 data: {},
409 success: function(response) {
410 window.location.href=portletURL.toString();
411 }
412 });
413 }
414 </script>
415 <!-- FIN Cards refugios -->
416 </div>
417 <!-- FIN RefugiosSend -->
418 <!-- Section ImágenesSend -->
419 <div class="tab-pane fade sectionSlider" id="imagenesSend" role="tabpanel" aria-labelledby="imagenesSend-tab">
420 <div class="row">
421 <#if Imagenes.getSiblings()?has_content>
422 <div class="col-12">
423 <div class="divSwiper experiencias" id="experiencias">
424 <div class="divSwiper-wrapper row">
425 <#list Imagenes.getSiblings() as cur_Imagen>
426 <div class="li_ss col-md-6">
427 <div class="card">
428 <#-- Obtenemos la primera imagen -->
429 <#if cur_Imagen?has_content>
430 <#if cur_Imagen.getAttribute("fileEntryId")??>
431 <div class="card-img marcCardResult">
432 <#assign map = { "propietario": '' } />
433 <#assign fileEntryId = cur_Imagen.getAttribute("fileEntryId")/>
434 <#assign image = cur_Imagen.data?eval />
435 <#if cur_Imagen.getAttribute("alt")?has_content>
436 <#assign imagenAlt = cur_Imagen.getAttribute("alt")/>
437 <#else>
438 <#assign imagenAlt = ""/>
439 </#if>
440 <#if image??>
441 <#assign mapFields=getFieldsDocument(map,image) />
442 <#list mapFields?keys as key>
443 <#if key=="propietario">
444 <#assign propietario = mapFields[key] />
445 <#assign imagenAlt="${imagenAlt}"+" © "+"${propietario}" />
446 </#if>
447 </#list>
448 </#if>
449 <#attempt>
450 <@adaptive_media_image["img"] class="card-img-top" fileVersion=dlAppService.getFileEntry(fileEntryId?number).getFileVersion() alt="${imagenAlt}" title="${imagenAlt}" />
451 <#recover>
452 </#attempt>
453 </div>
454 <div class="card-body">
455 <p class="card-title">${imagenAlt}</p>
456 </div>
457 </#if>
458 </#if>
459 </div>
460 </div>
461 </#list>
462 </div>
463 <div class="swiper-button-next" tabindex="0" role="button" aria-label="${languageUtil.get(themeDisplay.getLocale(), 'sm.swiper.slider.next')}" aria-disabled="false"></div>
464 <div class="swiper-button-prev" tabindex="0" role="button" aria-label="${languageUtil.get(themeDisplay.getLocale(), 'sm.swiper.slider.prev')}" aria-disabled="false"></div>
465 </div>
466 </div>
467 </#if>
468 </div>
469 </div>
470 <!-- FIN ImágenesSend -->
471 </div>
472 <!-- FIN Tab-Panel -->
473 </div>
474 <div class="col-12 col-lg-3 marginCol mT30">
475 <div class="row">
476 <div class="col-12 col-md-6 col-lg-12">
477 <#if ImagenArticulo.getSiblings()[0].getData()!="" || (TrackDeRutaKM?? && TrackDeRutaKM.getSiblings()[0].getData()!="") || (TrackDeRutaGPX?? && TrackDeRutaGPX.getSiblings()[0].getData()!="") || (TrackDeRutaGeoJSON?? && TrackDeRutaGeoJSON.getSiblings()[0].getData()!="") || (Folleto?? && Folleto.getSiblings()[0].getData()!="")>
478 <div class="divInfoGrey">
479 <div class="row">
480 <#if TrackDeRutaKM?? && TrackDeRutaKM.getSiblings()[0].getData()!="">
481 <div class="col-12 col-sm-6 col-md-12">
482 <div class="divM10Grey viewMapPoint" id="viewMap">
483 </div>
484 </div>
485 <div class="col-12 col-sm-6 col-md-12">
486 <p>
487 <img class="icoInfoBlue" src="${images_folder}/sm/iconos/opciones/ojo.svg" alt="Ver localización">
488 <a href="javascript:void(0)" data-toggle="modal" data-target="#modalLocalizacion" ><strong>${languageUtil.get(themeDisplay.getLocale(), 'sm.template.ver.localizacion')}</strong></a>
489 </p>
490 </div>
491 <#elseif ImagenArticulo.getSiblings()[0].getData()!="">
492 <div class="col-12 col-sm-6 col-md-12">
493 <div class="divM10Grey">
494 <#assign map = { "propietario": '' } />
495 <#assign fileEntryId = ImagenArticulo.getSiblings()[0].getAttribute("fileEntryId")/>
496 <#assign image = ImagenArticulo.data?eval />
497 <#if ImagenArticulo.getSiblings()[0].getAttribute("alt")?has_content>
498 <#assign imagenAlt = ImagenArticulo.getSiblings()[0].getAttribute("alt")/>
499 <#else>
500 <#assign imagenAlt = ""/>
501 </#if>
502 <#if image??>
503 <#assign mapFields=getFieldsDocument(map,image) />
504 <#list mapFields?keys as key>
505 <#if key=="propietario">
506 <#assign propietario = mapFields[key] />
507 <#assign imagenAlt="${imagenAlt}"+" © "+"${propietario}" />
508 </#if>
509 </#list>
510 </#if>
511 <#attempt>
512 <@adaptive_media_image["img"] class="imgInfoBlue" fileVersion=dlAppService.getFileEntry(fileEntryId?number).getFileVersion() alt="${imagenAlt}" title="${imagenAlt}" />
513 <#recover>
514 </#attempt>
515 </div>
516 </div>
517 </#if>
518 <#if TrackDeRutaKM?? || TrackDeRutaKM.getSiblings()[0].getData()!="" || TrackDeRutaGPX?? || TrackDeRutaGPX.getSiblings()[0].getData()!="" || TrackDeRutaGeoJSON?? || TrackDeRutaGeoJSON.getSiblings()[0].getData()!="" || Folleto?? || Folleto.getSiblings()[0].getData()!="">
519 <div class="col-12 col-sm-6 col-md-12">
520 <div class="divM10Grey">
521 <#if TrackDeRutaKM?? && TrackDeRutaKM.getSiblings()[0].getData()!="">
522 <a href="${TrackDeRutaKM.getData()}">
523 <p class=" mB15">
524 <img class="icoInfoBlue" src="${images_folder}/sm/iconos/opciones/descargar.svg" alt="imagen icono descarga" title="Imagen icono descarga"/>
525 ${languageUtil.get(themeDisplay.getLocale(), 'sm.template.descargar.km')}
526 </p>
527 </a>
528 </#if>
529 <#if TrackDeRutaGPX?? && TrackDeRutaGPX.getSiblings()[0].getData()!="">
530 <a href="${TrackDeRutaGPX.getData()}">
531 <p class=" mB15">
532 <img class="icoInfoBlue" src="${images_folder}/sm/iconos/opciones/descargar.svg" alt="imagen icono descarga" title="Imagen icono descarga"/>
533 ${languageUtil.get(themeDisplay.getLocale(), 'sm.template.descargar.gpx')}
534 </p>
535 </a>
536 </#if>
537 <#if TrackDeRutaGeoJSON?? && TrackDeRutaGeoJSON.getSiblings()[0].getData()!="">
538 <a href="${TrackDeRutaGeoJSON.getData()}">
539 <p class=" mB15">
540 <img class="icoInfoBlue" src="${images_folder}/sm/iconos/opciones/descargar.svg" alt="imagen icono descarga" title="Imagen icono descarga"/>
541 ${languageUtil.get(themeDisplay.getLocale(), 'sm.template.descargar.geojson')}
542 </p>
543 </a>
544 </#if>
545 <#if Folleto?? && Folleto.getSiblings()?has_content && Folleto.getSiblings()[0].getData()!="">
546 <#list Folleto.getSiblings() as cur_Folleto>
547 <a href="${cur_Folleto.getData()}" target="_blank">
548 <p>
549 <img class="icoInfoBlue" src="${images_folder}/sm/agenda/docPdf.svg" alt="imagen documento pdf" title="Imagen de agenda">
550 ${cur_Folleto.TextoFolleto.getData()}
551 </p>
552 </a>
553 </#list>
554 </#if>
555 </div>
556 </div>
557 </#if>
558 </div>
559 </div>
560 </#if>
561 </div>
562 <@climaMunicipio articleId=.vars['reserved-article-id'].data/>
563 <#if OtraInformacion?? && OtraInformacion.getData()!="">
564 <div class="col-12 col-md-6 col-lg-12 marginCol">
565 <div class="divInfoGrey overH">
566 ${OtraInformacion.getData()}
567 </div>
568 </div>
569 </#if>
570 <#if (OtraInformacionContacto?? && OtraInformacionContacto.getData()!="") || (Direccion?? && Direccion.getData()!="") || (Telefono?? && Telefono.getData()!="") || (CorreoElectronico?? && CorreoElectronico.getData()!="") || (WebOficial?? && WebOficial.getData()!="") || (RedesSociales?? && RedesSociales.getSiblings()[0].getData()!="") || (FormularioDeContacto?? && FormularioDeContacto.getData()!="")>
571 <div class="col-12 col-md-6 col-lg-12 marginCol">
572 <div class="divInfoGrey overH">
573 <p class="headline-medium mB15"><strong>${languageUtil.get(themeDisplay.getLocale(), 'sm.template.contacto')}</strong></p>
574 <#if OtraInformacionContacto?? && OtraInformacionContacto.getData()!="">
575 <p class="headline-small mB15"><strong>${OtraInformacionContacto.getData()}</strong></p>
576 </#if>
577 <#if Direccion?? && Direccion.getData()!="">
578 <p class="headline-small"><strong>${languageUtil.get(themeDisplay.getLocale(), 'sm.template.direccion')}</strong></p>
579 <p class="mB15 fontLight mB15">${Direccion.getData()}</p>
580 </#if>
581 <#if Telefono?? && Telefono.getData()!="">
582 <p class="headline-small"><strong>${languageUtil.get(themeDisplay.getLocale(), 'sm.template.telefono')}</strong></p>
583 <a href="tel:${Telefono.getData()}" class="mB15 fontLight mB15">${Telefono.getData()}</a>
584 </#if>
585 <#if CorreoElectronico?? && CorreoElectronico.getData()!="">
586 <p class="headline-small"><strong>${languageUtil.get(themeDisplay.getLocale(), 'sm.template.correo.electronico')}</strong></p>
587 <a href="mailto:${CorreoElectronico.getData()}" class="mB15 fontLight mB15" style="display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;">${CorreoElectronico.getData()}</a>
588 </#if>
589 <#if WebOficial?? && WebOficial.getData()!="">
590 <p class="headline-small"><strong>${languageUtil.get(themeDisplay.getLocale(), 'sm.template.web.oficial')}</strong></p>
591 <p class="mB15 fontLight mB15"><a href="${WebOficial.getData()}" class="aLink">${WebOficial.getData()}</a></p>
592 </#if>
593 <#if RedesSociales?? && RedesSociales.getSiblings()?has_content && RedesSociales.getSiblings()[0].getData()!="">
594 <@redesSociales ImagenLogos=RedesSociales />
595 </#if>
596 <#if FormularioDeContacto?? && FormularioDeContacto.getData()!="">
597 <div class="divBtnModal">
598 <a href="${FormularioDeContacto.getData()}" type="button" class="btn btn-Consell w100">${languageUtil.get(themeDisplay.getLocale(), 'sm.template.formulario.contacto')}</a>
599 </div>
600 </#if>
601 </div>
602 </div>
603 </#if>
604 </div>
605 </div>
606 </div>
607 <#-- Incluimos estadisticas ruta -->
608 <@addEstadisticasRuta time="3 months" instanceId="ruta"/>
609
610 <#-- Incluimos opiniones -->
611 <@addOpiniones instanceId="ruta"/>
612 </div>
613 <input type="hidden" id="articleId" value="${.vars['reserved-article-id'].data}" />
614</section>
615<!-- FIN Recurso -->
616
617<#if InicioRuta?? && (InicioRuta.getData() != "")>
618 <#assign geolocationJSONObject = jsonFactoryUtil.createJSONObject(InicioRuta.getData())>
619 <#assign latitude = geolocationJSONObject.getDouble("latitude")>
620 <#assign longitude = geolocationJSONObject.getDouble("longitude")>
621 <input type="hidden" id="geo" value='${geolocationJSONObject}' />
622</#if>
623<#attempt>
624 <#assign lugaresCercanos = journalArticleLocalService.fetchArticle(themeDisplay.getScopeGroupId(), "354597")/>
625<#recover>
626 <#assign lugaresCercanos = "" />
627</#attempt>
628<#if lugaresCercanos !="">
629 ${journalArticleLocalService.getArticleContent(lugaresCercanos, lugaresCercanos.getDDMTemplateKey(), "VIEW", themeDisplay.getLocale(), themeDisplay)}
630</#if>
631
632<#-- Section Artículo promocional -->
633<#if ArticuloPromocional?? && ArticuloPromocional.getData()!="">
634 <#assign jsonPromocional = jsonFactoryUtil.createJSONObject(ArticuloPromocional.getData()) />
635 <#if jsonPromocional.classPK?? && themeDisplay.getScopeGroupId()??>
636 <#assign articlePromocional = journalArticleLocalService.getLatestArticle(jsonPromocional.classPK?number?long ) />
637 <#if !articlePromocional.isExpired()>
638 <@liferay_journal["journal-article"]
639 ddmTemplateKey="66631"
640 articleId=articlePromocional.getArticleId()
641 groupId=articlePromocional.getGroupId() />
642 </#if>
643 </#if>
644</#if>
645<#-- FIN Te puede interesar -->
646
647<#-- Section Te puede interesar -->
648<#if TePuedeInteresar?? && TePuedeInteresar.getData()!="">
649 <#assign jsonInteresar = jsonFactoryUtil.createJSONObject(TePuedeInteresar.getData()) />
650 <#if jsonInteresar.classPK?? && themeDisplay.getScopeGroupId()??>
651 <#assign articleInteresar = journalArticleLocalService.getLatestArticle(jsonInteresar.classPK?number?long ) />
652 <#if !articleInteresar.isExpired()>
653 <@liferay_journal["journal-article"]
654 ddmTemplateKey="121197"
655 articleId=articleInteresar.getArticleId()
656 groupId=articleInteresar.getGroupId() />
657 </#if>
658 </#if>
659</#if>
660<#-- FIN Te puede interesar -->
661
662<#-- CREACIÓN DE MODALES -->
663<@crearModal link="" idModal="modalExterna" texto="${languageUtil.get(themeDisplay.getLocale(), 'sm.popup.web.externa')}"/>
664<@crearModal link="" idModal="modalRRSS" texto="${languageUtil.get(themeDisplay.getLocale(), 'sm.popup.web.externa')}"/>
665
666<#-- JS para mostrar modal -->
667<@showModal/>
668
669<div class="modal modalConsell modalLocalizacion " id="modalLocalizacion" tabindex="-1" role="dialog" aria-hidden="true" style="display: none; overflow-y: scroll;">
670 <div class="modal-dialog" role="document">
671 <div class="modal-content">
672 <div class="modal-header justify-content-end">
673 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
674 <span aria-hidden="true">×</span>
675 </button>
676 </div>
677 <div id="resourceMapPointPopUp" class="modal-body viewMapPoint">
678 </div>
679 <div class="modal-footer">
680 </div>
681 </div>
682 </div>
683</div>
684
685<#if InicioRuta?? && InicioRuta.getData()!="">
686<script>
687Liferay.Loader.require('sm-common-js-map@1.0.23/index', function(map) {
688 map.initialize();
689 var kmls = ["${themeDisplay.getURLPortal()}${TrackDeRutaKM.getData()}"];
690 var geolocation = JSON.parse($("#geo").val());
691 var pointsInicio = {
692 points: []
693 };
694 var element = {};
695 element.nombre = "${Nombre.getData()}";
696 element.color = "${color}";
697 element.id = "${Id.getData()}";
698 var contenido = ""
699 + ((${Distancia.getData()}!="" && parseInt(${Distancia.getData()})!=0) ? ('<p class="card-text"><strong>' + Liferay.Language.get("sm.buscador.rutas.distancia") + ' </strong>' + ${Distancia.getData()} + ' km' + '</p>') : '')
700 + ((${Desnivel.getData()}!="" && parseInt(${Desnivel.getData()})!=0) ? ('<p class="card-text"><strong>' + Liferay.Language.get("sm.buscador.rutas.desnivel") + ' </strong>' + ${Desnivel.getData()} + ' m' + '</p>') : '')
701 + (("${dificultad}"!="") ? ('<p class="card-text"><strong>' + Liferay.Language.get("sm.buscador.rutas.dificultad") + ' </strong>${dificultad}</p>') : '');
702 pointsInicio.points.push({
703 "latitude" : geolocation.latitude,
704 "longitude" : geolocation.longitude,
705 "url" : "",
706 "desc" : contenido,
707 "element" : element
708 });
709 map.createMapAndKML("viewMap",["${longitude}".replace(",","."),"${latitude}".replace(",",".")],10,kmls,pointsInicio,"https://geoserver.conselldemallorca.net/gis/rest/services/alertas_trafico/FeatureServer/0",undefined);
710 map.createMapAndKML("resourceMapPointPopUp",["${longitude}".replace(",","."),"${latitude}".replace(",",".")],10,kmls,pointsInicio,"https://geoserver.conselldemallorca.net/gis/rest/services/alertas_trafico/FeatureServer/0",undefined);
711 }, function(error) {
712 console.error(error);
713 });
714
715</script>
716</#if>