Le Musée ethnographique de Grado

Une erreur s'est produite lors du traitement du gabarit.
Java method "as.asac.template.tools.DLToolImpl.getDLFileEntryByPath(String)" threw an exception when invoked on as.asac.template.tools.DLToolImpl object "as.asac.template.tools.DLToolImpl@3e086f3e"; see cause exception in the Java stack trace.

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