Une erreur s'est produite lors du traitement du gabarit.
The following has evaluated to null or missing: ==> AsturiasMascotas.NumeroMaximoRestaurante [in template "37703#37743#1558495" at line 595, column 78] ---- 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 AsturiasMascotas.NumeroMaximoRest... [in template "37703#37743#1558495" at line 595, 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/Restaurant">
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 <div class="article-title" itemprop="name">${title}</div>
45 <div class="article-list-wrapper">
46
47 <ul class="article-list list-unstyled article-list-info">
48
49 <#if validator.isNotNull(InformacionEspecifica.IconoCategoria.getData())>
50 <li class="article-list-item">
51 <span class="fas fa-tag">
52 <span class="hide-accessible">${languageUtil.get(request,"category")}</span>
53 </span>
54 <span class="field-wrapper">
55 <span class="field">${languageUtil.get(request, "category")}:</span>
56 <#assign icono = stringUtil.toLowerCase(stringUtil.replace(InformacionEspecifica.IconoCategoria.getData(), " ", "-")) />
57 <#assign icono = "restaurante-${icono} text-indent-image" />
58 <span class="text ${icono}"><span>${InformacionEspecifica.IconoCategoria.getData()}</span></span>
59 </span>
60 </li>
61 </#if>
62
63 <#if getterUtil.getBoolean(Informacion.AbiertoTodoAno.getData()) || validator.isNotNull(Informacion.FechasCierre.getData())>
64 <li class="article-list-item time hide">
65 <span class="fas fa-clock">
66 <span class="hide-accessible">${languageUtil.get(request,"infoasturias-fechas-de-cierre")}</span>
67 </span>
68 <span class="field-wrapper">
69 <span class="field">${languageUtil.get(request,"infoasturias-fechas-de-cierre")}:</span>
70 <span class="text">
71 <#if getterUtil.getBoolean(Informacion.AbiertoTodoAno.getData())>
72 ${languageUtil.get(request,"infoasturias-abierto-todo-anio")}
73 <#else>
74 <#if validator.isNotNull(Informacion.FechasCierre.getData())>
75 ${Informacion.FechasCierre.getData()}
76 </#if>
77 </#if>
78 </span>
79 </span>
80 </li>
81 </#if>
82
83 <#if Contacto.Plazas.data?has_content>
84 <li class="article-list-item web">
85 <span class="fas fa-user-friends">
86 <span class="hide-accessible">${languageUtil.get(request,"infoasturias-dondercomer-plazas")}</span>
87 </span>
88 <span class="field-wrapper">
89 <span class="field">${languageUtil.get(request,"infoasturias-dondercomer-plazas")}:</span>
90 <span class="text">${Contacto.Plazas.getData()}</span>
91 </span>
92 </li>
93 </#if>
94
95 <li class="article-list-item separator"><!--separator --></li>
96
97 <li class="article-list-item mb-4">
98 <span class="fas fa-map-marker-alt">
99 <span class="hide-accessible">${languageUtil.get(request,"address")}</span>
100 </span>
101 <span class="field-wrapper" itemprop="address">
102 <#if Contacto.Concejo.data?has_content>
103 <span class="important">${Contacto.Concejo.data}</span>
104 <#else>
105 <span class="important">${title}</span>
106 </#if>
107 <#if Contacto.Zona.data?has_content>
108 <span class="text d-block">${Contacto.Zona.data}</span>
109 </#if>
110
111 </span>
112 </li>
113 <#if Contacto.Direccion.data?has_content>
114 <li class="article-list-item">
115 <span class="far fa-address-card">
116 <span class="hide-accessible">${languageUtil.get(request,"address")}</span>
117 </span>
118 <span class="field-wrapper">
119 <span class="field">${languageUtil.get(request, "address")}:</span>
120 <span class="text">${Contacto.Direccion.data}</span>
121 <span class="text"> ■ ${Contacto.CP.data} - ${Contacto.Localidad.data}</span>
122 </span>
123 </li>
124 </#if>
125
126 <#if Contacto.Telefono.data?has_content>
127 <li class="article-list-item">
128 <span class="fas fa-phone-alt">
129 <span class="hide-accessible">${languageUtil.get(request,"phone")}</span>
130 </span>
131 <span class="field-wrapper">
132 <span class="field">${languageUtil.get(request, "phone")}:</span>
133 <span class="text" itemprop="telephone">${Contacto.Telefono.data}</span>
134 </span>
135 </li>
136 </#if>
137
138 <#if Contacto.Email.data?has_content>
139 <li class="article-list-item">
140 <span class="far fa-envelope">
141 <span class="hide-accessible">${languageUtil.get(request,"email")}</span>
142 </span>
143 <span class="field-wrapper">
144 <span class="field">${languageUtil.get(request, "email")}:</span>
145 <#list Contacto.Email.getSiblings() as email>
146 <span class="text">
147 <a class="" href="mailto:${email.data}" title="${languageUtil.format(request,'send-email-to-x', 'email')}" itemprop="email">${email.data}</a>
148 <#if !email?is_last>|</#if>
149 </span>
150 </#list>
151 </span>
152 </li>
153 </#if>
154
155 <#if Contacto.Web.data?has_content>
156 <li class="article-list-item web">
157 <span class="fas fa-link">
158 <span class="hide-accessible">${languageUtil.get(request,"site")}</span>
159 </span>
160 <span class="field-wrapper">
161 <span class="field">${languageUtil.get(request, "site")}:</span>
162 <span class="text">
163 <#assign linkURL = Contacto.Web.data/>
164
165 <#if !stringUtil.startsWith(linkURL, "http")>
166 <#assign linkURL = "https://${Contacto.Web.data}"/>
167 </#if>
168 <a href="${linkURL}" title="${languageUtil.format(request,'go-to-x', 'site')}" itemprop="url">${Contacto.Web.data}</a>
169 </span>
170 </span>
171 </li>
172 </#if>
173
174 <#if Descargas ??>
175 <#if validator.isNotNull(Descargas.Archivo.data)>
176 <#if validator.isNotNull(Descargas.Archivo.data)>
177 <#assign dlFileEntry = dlTool.getDLFileEntryByPath(Descargas.Archivo.data) />
178 <#if validator.isNotNull(dlFileEntry)>
179 <#assign ext = dlFileEntry.getExtension()!/>
180 <li class="article-list-item document document-${ext}">
181 <span class="fas fa-file">
182 <span class="hide-accessible">${languageUtil.get(request,"related-documents")}</span>
183 </span>
184 <span class="field-wrapper">
185 <span class="field">${languageUtil.get(request, "related-documents")}:</span>
186 <span class="text">
187 <#list Descargas.Archivo.getSiblings() as Item>
188 <#assign dlFileEntry = dlTool.getDLFileEntryByPath(Item.data) />
189 <#assign downloadURL = "/documents/${groupId}/${dlFileEntry.getUuid()}" />
190 <#if validator.isNotNull(dlFileEntry)>
191 <#if Item.ArchivoTitulo.data?has_content>
192 <a href="${downloadURL}" title='${languageUtil.get(request, "${Item.ArchivoTitulo.data}")} ${htmlUtil.escape(title)}' class="">${Item.ArchivoTitulo.data}</a>
193 <#if Item_has_next>, </#if>
194 <#else>
195 <a href="${downloadURL}" title='${languageUtil.get(request, "${dlFileEntry.getTitle()}")} ${htmlUtil.escape(title)}' class="">${dlFileEntry.getTitle()}</a>
196 <#if Item_has_next>, </#if>
197 </#if>
198 </#if>
199 </#list>
200 </span>
201 </span>
202 </li>
203 </#if>
204 </#if>
205 </#if>
206 </#if>
207 </ul>
208 </div>
209
210 <#if validator.isNotNull(Contacto.Facebook.data) || validator.isNotNull(Contacto.Twitter.data) || validator.isNotNull(Contacto.Youtube.data) || validator.isNotNull(Contacto.GooglePlus.data) || validator.isNotNull(Contacto.Pinterest.data) || validator.isNotNull(Contacto.Instagram.data)>
211 <div class="article-socials-wrapper mt-4">
212 <div class="socials-wrapper">
213 <div class="socials">
214 <ul class="list-inline items socials">
215 <#if Contacto.Facebook.data?has_content>
216 <#assign linkURL = Contacto.Facebook.data/>
217
218 <#if !stringUtil.startsWith(linkURL, "http")>
219 <#assign linkURL = "https://${Contacto.Facebook.data}"/>
220 </#if>
221 <li class="list-inline-item item facebook">
222 <a href="${linkURL}" title="${languageUtil.format(request,'go-to-x','Facebook')}" onclick="this.target='_blank'">
223 <span class="fab fa-facebook-f">
224 <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Facebook')}</span>
225 </span>
226 </a>
227 </li>
228 </#if>
229 <#if Contacto.Twitter.data?has_content>
230 <#assign linkURL = Contacto.Twitter.data/>
231
232 <#if !stringUtil.startsWith(linkURL, "http")>
233 <#assign linkURL = "https://${Contacto.Twitter.data}"/>
234 </#if>
235 <li class="list-inline-item item twitter">
236 <a href="${linkURL}" title="${languageUtil.format(request,'go-to-x','Twitter')}" onclick="this.target='_blank'">
237 <span class="fab fa-twitter">
238 <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Twitter')}</span>
239 </span>
240 </a>
241 </li>
242 </#if>
243 <#if Contacto.Youtube.data?has_content>
244 <#assign linkURL = Contacto.Youtube.data/>
245
246 <#if !stringUtil.startsWith(linkURL, "http")>
247 <#assign linkURL = "https://${Contacto.Youtube.data}"/>
248 </#if>
249 <li class="list-inline-item item youtube">
250 <a href="${linkURL}" title="${languageUtil.format(request,'go-to-x','Youtube')}" onclick="this.target='_blank'">
251 <span class="fab fa-youtube">
252 <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Youtube')}</span>
253 </span>
254 </a>
255 </li>
256 </#if>
257 <#if Contacto.Pinterest.data?has_content>
258 <#assign linkURL = Contacto.Pinterest.data/>
259
260 <#if !stringUtil.startsWith(linkURL, "http")>
261 <#assign linkURL = "https://${Contacto.Pinterest.data}"/>
262 </#if>
263 <li class="list-inline-item item pinterest">
264 <a href="${linkURL}" title="${languageUtil.format(request,'go-to-x','Pinterest')}" onclick="this.target='_blank'">
265 <span class="fab fa-pinterest-p">
266 <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Pinterest')}</span>
267 </span>
268 </a>
269 </li>
270 </#if>
271 <#if Contacto.Instagram.data?has_content>
272 <#assign linkURL = Contacto.Instagram.data/>
273
274 <#if !stringUtil.startsWith(linkURL, "http")>
275 <#assign linkURL = "https://${Contacto.Instagram.data}"/>
276 </#if>
277 <li class="list-inline-item item instagram">
278 <a href="${linkURL}" title="${languageUtil.format(request,'go-to-x','Instagram')}" onclick="this.target='_blank'">
279 <span class="fab fa-instagram">
280 <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Instagram')}</span>
281 </span>
282 </a>
283 </li>
284 </#if>
285 </ul>
286 </div>
287 </div>
288 </div>
289 </#if>
290 <#if getterUtil.getBoolean(Informacion.MesasAsturias.getData()) ||
291 getterUtil.getBoolean(Informacion.SidreriaAsturias.getData()) ||
292 getterUtil.getBoolean(Informacion.EstrellaMichelin.getData()) ||
293 getterUtil.getBoolean(Informacion.QdeCalidadTuristica.getData()) ||
294 getterUtil.getBoolean(Informacion.MenuCeliacos.getData())||
295 getterUtil.getBoolean(Informacion.AbiertoTodoAno.getData())>
296 <div class="article-info-table">
297 <ul class="article-list article-list-characteristics article-info-border">
298
299 <#if getterUtil.getBoolean(Informacion.MesasAsturias.getData())>
300 <li class="list-inline-item">
301 <img class="" src="${themeDisplay.getPathThemeImages()}/icons/mesas.png" data-toggle="tooltip" data-placement="bottom" alt="${languageUtil.get(request, 'infoasturias-qcalidad')}" title="${languageUtil.get(request, 'infoasturias-mesas')}"/></li>
302 </li>
303 </#if>
304 <#if getterUtil.getBoolean(Informacion.SidreriaAsturias.getData())>
305 <li class="list-inline-item">
306 <img class="" src="${themeDisplay.getPathThemeImages()}/icons/sidrerias.png" data-toggle="tooltip" data-placement="bottom" alt="${languageUtil.get(request, 'infoasturias-sidrerias')}" title="${languageUtil.get(request, 'infoasturias-sidrerias')}"/></li>
307 </li>
308 </#if>
309 <#if getterUtil.getBoolean(Informacion.EstrellaMichelin.getData())>
310 <li class="list-inline-item">
311 <img class="" src="${themeDisplay.getPathThemeImages()}/icons/michelin.png" data-toggle="tooltip" data-placement="bottom" alt="${languageUtil.get(request, 'infoasturias-michelin')}" title="${languageUtil.get(request, 'infoasturias-michelin')}"/></li>
312 </li>
313 </#if>
314 <#if getterUtil.getBoolean(Informacion.QdeCalidadTuristica.getData())>
315 <li class="list-inline-item">
316 <img class="" src="${themeDisplay.getPathThemeImages()}/icons/qturistica.png" data-toggle="tooltip" data-placement="bottom" alt="${languageUtil.get(request, 'infoasturias-qcalidad')}" title="${languageUtil.get(request, 'infoasturias-qcalidad')}"/></li>
317 </li>
318 </#if>
319 <#if getterUtil.getBoolean(Informacion.MenuCeliacos.getData())>
320 <li class="list-inline-item">
321 <img class="" src="${themeDisplay.getPathThemeImages()}/icons/celiacos.png" data-toggle="tooltip" data-placement="bottom" alt="${languageUtil.get(request, 'infoasturias-celiacos')}" title="${languageUtil.get(request, 'infoasturias-celiacos')}"/></li>
322 </li>
323 </#if>
324
325 </ul>
326 </div>
327 </#if>
328
329
330 </div>
331 </div>
332 </div>
333 </div>
334 </div>
335 </header>
336
337 <div class="sheet sheet-lg">
338
339 <#if Informacion.Titulo.data?has_content>
340 <div class="article-great">
341 ${Informacion.Titulo.data}
342 </div>
343 </#if>
344
345 <#assign hasTab1 = Informacion.Texto.data?has_content>
346 <#assign hasTab2 = Geolocalizacion.Coordenadas.data?has_content>
347 <#assign hasTab3 = Especialidades.data?has_content>
348 <#assign hasTab4 = Servicios.data?has_content>
349 <#assign hasTab5 = Recetas.data?has_content>
350 <#assign hasTab6 = AsturiasMascotas?? && AsturiasMascotas.LimitacionPeso?? && AsturiasMascotas.LimitacionPeso.data?has_content>
351 <#assign showFirstTab = true>
352
353 <div class="article-accordion accordion">
354
355 <#if Visualizador.Slide.getData()?has_content>
356 <div class="slick article-slick article-section <#if Visualizador.Slide.getSiblings()?size==1>hide</#if>">
357 <#list Visualizador.Slide.getSiblings() as Slide>
358 <#assign slideThumbnail3 = dlTool.getThumbnailByJSON(Slide.data, "3")! />
359 <#assign slideThumbnail2 = dlTool.getThumbnailByJSON(Slide.data, "2")! />
360 <#assign slidePath = dlTool.getPathByJSON(Slide.data, themeDisplay.getScopeGroupId())! />
361 <#assign slideUrl = Slide.SlideUrl.data />
362 <#assign dataMap = "" />
363
364 <#if slideUrl?has_content>
365
366 <#assign slideTitle = "${languageUtil.get(request, 'video')} ${Slide?index}" />
367 <#if Slide.SlideTitulo.data?has_content>
368 <#assign slideTitle = Slide.SlideTitulo.data />
369 </#if>
370
371 <#-- Youtube -->
372 <#assign slideUrl = stringUtil.replace(slideUrl, 'watch?v=', 'embed/') />
373 <#assign slideThumbnail2 = stringUtil.replace(slideUrl, 'www', 'img') />
374 <#assign slideThumbnail2 = stringUtil.replace(slideThumbnail2, 'embed', 'vi') />
375 <#assign slideThumbnail2 = '${slideThumbnail2}/mqdefault.jpg' />
376
377 <#-- Vimeo -->
378 <#if slideUrl?contains("vimeo")>
379 <#assign slideUrl = stringUtil.replace(slideUrl, 'http://vimeo.com/', 'https://player.vimeo.com/video/') />
380 <#assign slideVimeoId = stringUtil.extractLast(slideUrl, 'https://player.vimeo.com/video/') />
381 <#if slideVimeoId?has_content>
382 <#assign slideVimeoJsonPath = 'http://vimeo.com/api/v2/video/${slideVimeoId}.json' />
383 <#assign slideVimeoJsonContent = getUrlContent.getContent(slideVimeoJsonPath)! />
384 <#if slideVimeoJsonContent?has_content>
385 <#assign slideVimeoJsonArray = jsonFactoryUtil.createJSONArray(slideVimeoJsonContent) />
386 <#assign slideVimeoJsonItem = slideVimeoJsonArray.get(0) />
387 <#assign slideThumbnail2 = slideVimeoJsonItem.thumbnail_medium />
388 </#if>
389 </#if>
390 </#if>
391
392 <div id="slide-${Slide?index}" class="slide">
393 <a class="card card-simple card-video" href="#" onclick="javascript: event.preventDefault(); showDialogIframe('${slideUrl}', '${slideTitle}', 800, 600, 'videoPopup', 'videoPopupIframe');" title="${slideTitle}">
394 <span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${slideThumbnail2}');">
395 <img class="hide-accessible" alt="${slideTitle}" src="${slideThumbnail2}">
396 </a>
397 </div>
398 <#else>
399
400 <#assign slideTitle = "${languageUtil.get(request, 'image')} ${Slide?index}" />
401 <#if Slide.SlideTitulo.data?has_content>
402 <#assign slideTitle = Slide.SlideTitulo.data />
403 </#if>
404
405 <div class="slide">
406 <a class="card card-simple lightbox" href="${slidePath}" title="${slideTitle}">
407 <span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${slideThumbnail2}');">
408 <img class="hide-accessible" alt="${slideTitle}" src="${slideThumbnail2}">
409 </a>
410 </div>
411 </#if>
412 </#list>
413 </div>
414 </#if>
415
416 <#if hasTab1>
417 <div id="tab1" class="article-section accordion-item">
418 <a href="#tabContent1" id="tabHeading" class="h3 accordion-header <#if !showFirstTab>collapsed</#if>" aria-expanded="${getterUtil.getString(showFirstTab)}" data-toggle="liferay-collapse" aria-controls="tabContent1" role="button">
419 ${languageUtil.get(request,'info')}
420 </a>
421 <div id="tabContent1" class="article-section-content article-section-info accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading">
422 <#if Informacion.Texto.data?has_content>
423 ${Informacion.Texto.data}
424 </#if>
425 <#if InfoMascotas ??>
426 <#if InfoMascotas.data?has_content>
427 <div class="h4 mt-5">${languageUtil.get(request,'infoasturias-info-mascotas')}</div>
428 ${InfoMascotas.data}
429 </#if>
430 </#if>
431
432 </div>
433 </div>
434 <#assign showFirstTab = false>
435 </#if>
436
437 <#if hasTab2>
438 <#assign coordenadas=stringUtil.split(Geolocalizacion.Coordenadas.data) />
439 <div id="tab2" class="article-section accordion-item">
440 <a href="#tabContent2" id="tabHeading2" class="h3 accordion-header <#if !showFirstTab>collapsed</#if>" aria-expanded="${getterUtil.getString(showFirstTab)}" data-toggle="liferay-collapse" aria-controls="tabContent2" role="button">
441 ${languageUtil.get(request,'map')}
442 </a>
443 <div id="tabContent2" class="article-section-content accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading2">
444 <div id="article-map-wrapper-${articleId}" class="article-map-wrapper">
445 <div id="article-map-content-${articleId}" style="width: 100%; height: 388px; z-index:1"><!-- MAP --></div>
446 <div class="article-map-form">
447 <div class="name important">${title}</div>
448 <div class="gps"><span class="label">GPS:</span> <span class="value important" itemprop="geo">${Geolocalizacion.Coordenadas.data}</span></div>
449 <form action="https://maps.google.es/maps" method="get" target="_blank">
450 <input type="hidden" name="daddr" value="${coordenadas[0]},${coordenadas[1]}">
451 <label for="saddr"><span class="label">${languageUtil.get(request,'infoasturias-from')}: </span></label>
452 <input class="form-control" type="text" maxlength="40" name="saddrText" id="saddrText" value="" placeholder="${languageUtil.get(request,'infoasturias-insert-from')}">
453 <input class="form-control" type="hidden" name="saddr" id="saddr" value="" placeholder="${languageUtil.get(request,'infoasturias-insert-from')}">
454 <button class="btn btn-text" type="submit">${languageUtil.get(request,'infoasturias-como-llegar')} »</button>
455 </form>
456 </div>
457 </div>
458 <script src="/o/turismo-asturias-theme/js/leaflet/leaflet.js"></script>
459 <script type="text/javascript">
460 AUI().ready('aui-base', function(A){
461 var lat = ${coordenadas[0]},
462 lng = ${coordenadas[1]},
463 zoom = 16;
464 mapContent = new L.map('article-map-content-${articleId}', {center: [lat, lng], zoom: 16});
465
466 //Marker
467 var defaultIconTheme = '/o/turismo-asturias-theme/css/images/icons/mark-box.png';
468 var defaultIcon = L.icon({
469 iconUrl: defaultIconTheme,
470 iconSize: [36, 53],
471 iconAnchor: [18, 53],
472 iconShadow: [0,0],
473 popupAnchor: [0, -30]
474 });
475 var marker = L.marker([lat, lng], {icon: defaultIcon}).addTo(mapContent);
476
477 var contentString = '<div class="row">';
478 contentString += '<div class="col-12">';
479 contentString += '<div class="h4">${htmlUtil.escape(title)}</div>';
480 contentString += '</div>';
481 contentString += '</div>';
482
483 contentString += '<div class="row">';
484 contentString += '<div class="col-12">';
485 <#if validator.isNotNull(articleMainImageThumbnail1)>
486 contentString += '<img class="pull-right mb-2 ml-2" src="${articleMainImageThumbnail1}" alt="$title"/>';
487 </#if>
488 contentString += '<dl class="mb-0">';
489 <#if address?has_content>
490 contentString += '<dt>${languageUtil.get(request,'address')}</dt>';
491 contentString += '<dd>${htmlUtil.escape(address)}</dd>';
492 </#if>
493 <#if Contacto.Telefono.data?has_content>
494 contentString += '<dt>${languageUtil.get(request,'phone')}</dt>';
495 contentString += '<dd>${Contacto.Telefono.data}</dd>';
496 </#if>
497 <#if Contacto.Email.getData()?has_content>
498 contentString += '<dt>${languageUtil.get(request,'email')}</dt>';
499 <#list Contacto.Email.getSiblings() as Item>
500 contentString += '<dd><a href="mailto:${Item.data}" title="${languageUtil.format(request,'go-to-x', 'email')}">${Item.data}</a></dd>';
501 </#list>
502 </#if>
503 <#if Contacto.Web.data?has_content>
504 <#assign linkURL = Contacto.Web.data/>
505 <#if !stringUtil.startsWith(linkURL, "http")>
506 <#assign linkURL = "https://${Contacto.Web.data}"/>
507 </#if>
508 contentString += '<dt>${languageUtil.get(request,'site')}</dt>';
509 contentString += '<dd><a href="${linkURL}" title="${languageUtil.format(request,'go-to-x', 'site')}">${Contacto.Web.data}</a></dd';
510 </#if>
511 contentString += '</dl>';
512 contentString += '</div>';
513 contentString += '</div>';
514 <#if validator.isNotNull(description)>
515 contentString += '<div class="row"><div class="col-12">${htmlUtil.escape(description)}</div></div>';
516 </#if>
517 marker.bindPopup(contentString);
518
519 //Contributor
520 L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
521 attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors.'
522 }).addTo(mapContent);
523
524 }); //AUI.ready
525 </script>
526 </div>
527 </div>
528 <#assign showFirstTab = false>
529 </#if>
530
531 <#if hasTab3>
532 <div id="tab3" class="article-section accordion-item">
533 <a href="#tabContent3" id="tabHeading3" class="h3 accordion-header <#if !showFirstTab>collapsed</#if>" aria-expanded="${getterUtil.getString(showFirstTab)}" data-toggle="liferay-collapse" aria-controls="tabContent3" role="button">${languageUtil.get(request,'infoasturias-especialidades')}</a>
534 <div id="tabContent3" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading3">
535 <#if Especialidades.data?has_content>
536 ${Especialidades.data}
537 </#if>
538 </div>
539 </div>
540 <#assign showFirstTab = false>
541 </#if>
542
543 <#if hasTab4>
544 <div id="tab4" class="article-section accordion-item">
545 <a href="#tabContent4" id="tabHeading4" class="h3 accordion-header <#if !showFirstTab>collapsed</#if>" aria-expanded="${getterUtil.getString(showFirstTab)}" data-toggle="liferay-collapse" aria-controls="tabContent4" role="button">${languageUtil.get(request,'infoasturias-servicios')}</a>
546 <div id="tabContent4" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading4">
547 <#if Servicios.data?has_content>
548 ${Servicios.data}
549 </#if>
550 </div>
551 </div>
552 <#assign showFirstTab = false>
553 </#if>
554
555 <#if hasTab5>
556 <div id="tab5" class="article-section accordion-item">
557 <a href="#tabContent5" id="tabHeading5" class="h3 accordion-header <#if !showFirstTab>collapsed</#if>" aria-expanded="${getterUtil.getString(showFirstTab)}" data-toggle="liferay-collapse" aria-controls="tabContent5" role="button">${languageUtil.get(request,'infoasturias-recetas')}</a>
558 <div id="tabContent5" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading5">
559 <#if Recetas.data?has_content>
560 ${Recetas.data}
561 </#if>
562 </div>
563 </div>
564 <#assign showFirstTab = false>
565 </#if>
566 <#if hasTab6>
567 <div id="tab6" class="article-section accordion-item">
568 <a href="#tabContent6" id="tabHeading6" class="h3 accordion-header <#if !showFirstTab>collapsed</#if>" aria-expanded="${getterUtil.getString(showFirstTab)}" data-toggle="liferay-collapse" aria-controls="tabContent6" role="button">${languageUtil.get(request,'infoasturias-info-mascotas')}</a>
569 <div id="tabContent6" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading6">
570 <#if AsturiasMascotas.LimitacionPeso?? && AsturiasMascotas.LimitacionPeso.data?has_content || AsturiasMascotas.AdmitePPP?? && AsturiasMascotas.AdmitePPP.data?has_content ||
571 AsturiasMascotas.NumeroMaximoReserva?? && AsturiasMascotas.NumeroMaximoReserva.data?has_content || AsturiasMascotas.NumeroMaximoRestaurante?? && AsturiasMascotas.NumeroMaximoRestaurante.data?has_content || AsturiasMascotas.AccesoInterior?? && AsturiasMascotas.AccesoInterior.data?has_content || AsturiasMascotas.AccesoTerraza?? && AsturiasMascotas.AccesoTerraza.data?has_content || AsturiasMascotas.TerrazaCalefactada?? && AsturiasMascotas.TerrazaCalefactada.data?has_content || AsturiasMascotas.DetalleNormas?? && AsturiasMascotas.DetalleNormas.data?has_content>
572 <ul class="list-unstyled">
573 <div class="list-iconos">
574 <#if AsturiasMascotas.LimitacionPeso.data?has_content>
575 <div class="col-xl-2 col-sm-6 col-xs-12 text-center list-inline-item icono">
576 <#assign LimitacionPesoKey = journalTool.getDDMStructureSelectKeyByJournalArticle(journalArticle, "LimitacionPeso", AsturiasMascotas.LimitacionPeso.getData(), locale)/>
577 <#assign LimitacionPesoImage = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Limitación de tamaño")/>
578 <#if AsturiasMascotas.LimitacionPeso.getData() != "">
579 <div><img src="${LimitacionPesoImage[0]}" alt="${languageUtil.get(request,'infoasturias-mascotas-peso')}"/><span class="value">${LimitacionPesoKey}</span></div>
580 <span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-peso')}</span>
581 </#if>
582 </div>
583 </#if>
584 <#if AsturiasMascotas.NumeroMaximoReserva.data?has_content>
585 <div class="col-xl-2 col-sm-6 col-xs-12 text-center list-inline-item icono">
586 <#assign NumeroMaximoKey = journalTool.getDDMStructureSelectKeyByJournalArticle(journalArticle, "NumeroMaximoReserva", AsturiasMascotas.NumeroMaximoReserva.getData(), locale)/>
587 <#assign NumeroMaximoImage = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Número máximo de perros por reserva")/>
588 <#if AsturiasMascotas.NumeroMaximoReserva.getData() != "">
589 <div><img src="${NumeroMaximoImage[0]}" alt="${languageUtil.get(request,'infoasturias-maximo-persona')}"/><span class="value-icono">${NumeroMaximoKey}</span></div>
590 <span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-maximo-persona')}</span>
591
592 </#if>
593 </div>
594 </#if>
595 <#if AsturiasMascotas.NumeroMaximoRestaurante.data?has_content>
596 <div class="col-xl-2 col-sm-6 col-xs-12 text-center list-inline-item icono">
597 <#assign NumeroMaximoresrauranteImage = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Número máximo de perros en restaurante")/>
598 <div><img src="${NumeroMaximoresrauranteImage[0]}" alt="${languageUtil.get(request,'infoasturias-maximo-restaurante')}"/><span class="value-icono">${AsturiasMascotas.NumeroMaximoRestaurante.data}</span></div>
599 <span class="text-value">${languageUtil.get(request,'infoasturias-maximo-restaurante')}</span>
600 </div>
601 </#if>
602 <#if AsturiasMascotas.AccesoInterior.data?has_content>
603 <#assign AccesoInteriorImage = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Accesso al interior")/>
604 <#assign SinAccesoInteriorImage = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Sin acceso interior")/>
605 <div class="col-xl-2 col-sm-6 col-xs-12 text-center list-inline-item icono">
606 <#if AsturiasMascotas.AccesoInterior.getData() == "Si">
607 <div ><img src="${AccesoInteriorImage[0]}" alt="${languageUtil.get(request,'infoasturias-mascotas-interior')}"/></div>
608 <span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-interior')}</span>
609 <#else>
610 <div><img src="${SinAccesoInteriorImage[0]}" alt="${languageUtil.get(request,'infoasturias-mascotas-no-interior')}"/></div>
611 <span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-no-interior')}</span>
612 </#if>
613 </div>
614 </#if>
615 </div>
616 <div class="article-info-table">
617 <div class="mb-4 title-normas article-info-border">${languageUtil.get(request,'infoasturias-normas-mascotas')}</div>
618 <ul class="list-unstyled">
619 <#if AsturiasMascotas.AdmitePPP.data?has_content>
620 <li class="fas d-block track">
621 <#if AsturiasMascotas.AdmitePPP.getData() == "Si">
622 <span class="text-rule">${languageUtil.get(request,'infoasturias-mascotas-ppp')}.</span>
623 <#else>
624 <span class="text-rule">${languageUtil.get(request,'infoasturias-mascotas-no-ppp')}.</span>
625 </#if>
626 </li>
627 </#if>
628 <#if AsturiasMascotas.AccesoTerraza.data?has_content>
629 <li class="fas d-block track">
630 <#if AsturiasMascotas.AccesoTerraza.getData() == "Si">
631 <span class="text-rule">${languageUtil.get(request,'infoasturias-mascotas-terraza')}.</span>
632 <#if AsturiasMascotas.TerrazaCalefactada.getData() == "Si">
633 <span class="text-rule">${languageUtil.get(request,'infoasturias-mascotas-terraza-calefactada')}</span>
634 <#else>
635 <span class="text-rule">${languageUtil.get(request,'infoasturias-mascotas-no-terraza-calefactada')}</span>
636 </#if>
637 <#else>
638 <span class="text-rule">${languageUtil.get(request,'infoasturias-mascotas-no-terraza')}.</span>
639 </#if>
640 </li>
641 </#if>
642 <#if AsturiasMascotas.OtrasMascotas?? && AsturiasMascotas.OtrasMascotas.data?has_content || AsturiasMascotas.OtrosAnimales?? && AsturiasMascotas.OtrosAnimales.data?has_content>
643 <li class="fas d-block track">
644 <#if AsturiasMascotas.OtrasMascotas.getData() == "Si">
645 <span class="text-rule">${languageUtil.get(request,'infoasturias-otras-mascotas')}:</span>
646 <span class="text-rule">${AsturiasMascotas.OtrosAnimales.data}</span>
647 <#else>
648 <span class="text-rule">${languageUtil.get(request,'infoasturias-no-otras-mascotas')}</span>
649 </#if>
650 </li>
651 </#if>
652 <#if AsturiasMascotas.DetalleNormas.data?has_content>
653 <li class="fas d-block track">
654 <span class="text-rule">${AsturiasMascotas.DetalleNormas.data}</span>
655 </li>
656 </#if>
657 </ul>
658 </div>
659 </ul>
660 </#if>
661 </div>
662 </div>
663 <#assign showFirstTab = false>
664 </#if>
665 </div>
666
667 <div class="article-border">
668 <#if Observaciones.Observacion.data?has_content>
669 ${Observaciones.Observacion.data}
670 </#if>
671
672 <#if stringUtil.matches(Observaciones.MasInformacion.data, "//") && Contacto.MasInformacion?? >
673 <a class="" href="${Contacto.MasInformacion.data}" title="${languageUtil.format(request,'go-to-x', 'link')}">${Contacto.MasInformacion.data}
674 <#else>
675 <span class="">${Observaciones.MasInformacion.data}</span>
676 </#if>
677
678 <#if OtrosDatos.DatosFacilitadosPor?has_content>
679 <div class="mt-4">
680 <span class="important mr-1">${languageUtil.get(request,'infoasturias-datos-facilitados-por')}:</span><span class="text-wrapper">${OtrosDatos.DatosFacilitadosPor.data}.</span>
681 </div>
682 </#if>
683
684 <#if CodigoDGT.data?has_content>
685 <div>
686 <span class="text-wrapper mr-1">${languageUtil.get(request,'infoasturias-establecimiento-inscrito-en-registro')} </span><span class="important">${CodigoDGT.data}.</span>
687 </div>
688 </#if>
689 <div class="text-wrapper">${languageUtil.get(request,'infoasturias-precios-orientativos')}.</div>
690 </div>
691 <div class="row mt-5">
692 <div class="col-12 mb-3">
693 <div class="text-center">
694 <#if Contacto.Email.data?has_content>
695 <a href="mailto:${Contacto.Email.data}?Subject=${title}:%20${languageUtil.get(request,'infoasturias-more-info')}" class="btn btn-default text-center text-uppercase">
696 <span class="far fa-envelope mr-2">
697 <span class="hide-accessible">${languageUtil.get(request,"email")}</span>
698 </span>
699 ${languageUtil.get(request,'infoasturias-more-info')}
700 </a>
701 </#if>
702 </div>
703 </div>
704 </div>
705
706 <#-- Related -->
707 <#assign relatedJournalArticles = assetTool.getRelatedJournalArticlesApproved(assetEntry)/>
708 <#if validator.isNotNull(relatedJournalArticles) && relatedJournalArticles?size gt 0>
709 <div class="article-related portlet-background-grey-container">
710 <div class="container">
711 <h3 class="title-section">${languageUtil.get(request,'related-assets')}</h3>
712 <div class="slick article-related-slick">
713 <#list relatedJournalArticles as currentJournalArticle>
714 <#assign viewURL = journalTool.getDisplayPage(currentJournalArticle, themeDisplay, true)/>
715 <div class="slide">
716 <a class="card background card-background-9-14" href="${viewURL}" title="${languageUtil.format(request, 'go-to-x', currentJournalArticle.getTitle(locale))}">
717 <span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${currentJournalArticle.getSmallImageURL()}');">
718 <img class="hide-accessible" src="${currentJournalArticle.getSmallImageURL()}" alt="${currentJournalArticle.getTitle(locale)}">
719 <span class="card-body">
720 <span class="card-title">${currentJournalArticle.getTitle(locale)}</span>
721 </span>
722 </span>
723 </a>
724 </div>
725 </#list>
726 </div>
727 </div>
728 </div>
729 </#if>
730
731 <#-- Nearby -->
732 <#assign classTypeIds = [598853,582814,625593,623117,609431,593783]>
733 <#assign assetsNearJournalArticles = assetNearTool.getNearJournalArticles(themeDisplay.getScopeGroupId(), assetEntry.getEntryId(), 50.0, classTypeIds, 25)! />
734 <#if validator.isNotNull(assetsNearJournalArticles) && assetsNearJournalArticles?size gt 0>
735 <div class="article-nearby portlet-container-margin">
736 <div class="container">
737 <div class="article-nearby-container">
738 <h3 class="title-section">${languageUtil.get(request,'infoasturias-near-here')}</h3>
739 <div class="slick article-nearby-slick">
740 <#list assetsNearJournalArticles as currentJournalArticle>
741 <#assign viewURL = journalTool.getDisplayPage(currentJournalArticle, themeDisplay, true)/>
742 <div class="slide">
743 <a class="card" href="${viewURL}" title="${languageUtil.format(request, 'go-to-x', currentJournalArticle.getTitle(locale))}">
744 <span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${currentJournalArticle.getSmallImageURL()}');">
745 <img class="hide-accessible" src="${currentJournalArticle.getSmallImageURL()}" alt="${currentJournalArticle.getTitle(locale)}">
746 <span class="card-hover">
747 <span class="card-text">${currentJournalArticle.getDescription(locale)}</span>
748 </span>
749 </span>
750 <span class="card-body">
751 <span class="card-title">${currentJournalArticle.getTitle(locale)}</span>
752 <span class="card-subtitle">
753 <span class="d-block">${currentJournalArticle.getVersion()} Kms</span>
754 <span class="d-block">${journalTool.getCategoriesNames(groupId, currentJournalArticle.getArticleId(), locale, ["Concejos"])}</span>
755 </span>
756 </span>
757 </a>
758 </div>
759 </#list>
760 </div>
761 </div>
762 </div>
763 </div>
764 </#if>
765
766</article>