Ethnografisches Museum in Grado

Fehler bei der Verarbeitung der Vorlage.
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@29e60f32"; 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						<#if validator.isNotNull(Slide.getData()) || validator.isNotNull(Slide.SlideUrl.getData())> 
312							<#assign slideThumbnail3 = dlTool.getThumbnailByJSON(Slide.data, "3")! /> 
313							<#assign slideThumbnail2 = dlTool.getThumbnailByJSON(Slide.data, "2")! /> 
314							<#assign slidePath = dlTool.getPathByJSON(Slide.data, themeDisplay.getScopeGroupId())! /> 
315							<#assign slideUrl = Slide.SlideUrl.data /> 
316							<#assign dataMap = "" /> 
317 
318							<#if slideUrl?has_content> 
319 
320								<#assign slideTitle = "${languageUtil.get(request, 'video')} ${Slide?index}" /> 
321								<#if Slide.SlideTitulo.data?has_content> 
322									<#assign slideTitle = Slide.SlideTitulo.data />   
323								</#if> 
324 
325								<#-- Youtube --> 
326								<#assign slideUrl = stringUtil.replace(slideUrl, 'watch?v=', 'embed/') /> 
327								<#assign slideThumbnail2 = stringUtil.replace(slideUrl, 'www', 'img') /> 
328								<#assign slideThumbnail2 = stringUtil.replace(slideThumbnail2, 'embed', 'vi') /> 
329								<#assign slideThumbnail2 = '${slideThumbnail2}/mqdefault.jpg' /> 
330 
331								<#-- Vimeo --> 
332								<#if slideUrl?contains("vimeo")> 
333									<#assign slideUrl = stringUtil.replace(slideUrl, 'http://vimeo.com/', 'https://player.vimeo.com/video/') /> 
334									<#assign slideVimeoId = stringUtil.extractLast(slideUrl, 'https://player.vimeo.com/video/') /> 
335									<#if slideVimeoId?has_content> 
336										<#assign slideVimeoJsonPath = 'http://vimeo.com/api/v2/video/${slideVimeoId}.json' /> 
337										<#assign slideVimeoJsonContent = getUrlContent.getContent(slideVimeoJsonPath)! /> 
338										<#if slideVimeoJsonContent?has_content> 
339											<#assign slideVimeoJsonArray = jsonFactoryUtil.createJSONArray(slideVimeoJsonContent) /> 
340											<#assign slideVimeoJsonItem = slideVimeoJsonArray.get(0) /> 
341											<#assign slideThumbnail2 = slideVimeoJsonItem.thumbnail_medium /> 
342										</#if> 
343									</#if> 
344								</#if> 
345 
346								<div id="slide-${Slide?index}" class="slide"> 
347									<a class="card card-simple card-video" href="#" onclick="javascript: event.preventDefault(); showDialogIframe('${slideUrl}', '${slideTitle}', 800, 600, 'videoPopup', 'videoPopupIframe');" title="${slideTitle}"> 
348										<span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${slideThumbnail2}');"> 
349										<img class="hide-accessible" alt="${slideTitle}" src="${slideThumbnail2}"> 
350									</a> 
351								</div> 
352							<#else> 
353 
354								<#assign slideTitle = "${languageUtil.get(request, 'image')} ${Slide?index}" /> 
355								<#if Slide.SlideTitulo.data?has_content> 
356									<#assign slideTitle = Slide.SlideTitulo.data />   
357								</#if> 
358 
359								<div class="slide"> 
360									<a class="card card-simple lightbox" href="${slidePath}" title="${slideTitle}"> 
361										<span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${slideThumbnail2}');"> 
362										<img class="hide-accessible" alt="${slideTitle}" src="${slideThumbnail2}"> 
363									</a> 
364								</div> 
365							</#if> 
366						</#if> 
367					</#list> 
368				</div> 
369			</#if> 
370		 
371			<#if hasTab1> 
372				<div id="tab1" class="article-section accordion-item"> 
373					<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"> 
374							${languageUtil.get(request,'info')} 
375					</a> 
376					<div id="tabContent1" class="article-section-content article-section-info accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading" itemprop="description"> 
377						<#if Informacion.Texto.data?has_content> 
378							${Informacion.Texto.data} 
379						</#if> 
380						<#if Informacion.FechaDeConstruccion.data?has_content> 
381							<span class="field">${languageUtil.get(request, "infoasturias-fecha-de-construccion")}:</span> 
382							<span class="text">${htmlUtil.extractText(Informacion.FechaDeConstruccion.data)}</span> 
383						</#if> 
384					</div> 
385				</div> 
386				<#assign showFirstTab = false> 
387			</#if> 
388			 
389			<#if hasTab2> 
390				<#assign coordenadas=stringUtil.split(Geolocalizacion.Coordenadas.data) /> 
391				<div id="tab2" class="article-section accordion-item"> 
392					<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"> 
393					${languageUtil.get(request,'map')} 
394					</a> 
395					<div id="tabContent2" class="article-section-content accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading2"> 
396						<div id="article-map-wrapper-${articleId}" class="article-map-wrapper">  
397							<div id="article-map-content-${articleId}" style="width: 100%; height: 388px; z-index:1"><!-- MAP --></div> 
398							<div class="article-map-form">  
399								<div class="name important">${title}</div> 
400								<div class="gps"><span class="label">GPS:</span> <span class="value important" itemprop="geo">${Geolocalizacion.Coordenadas.data}</span></div> 
401								<form action="https://maps.google.es/maps" method="get" target="_blank"> 
402									<input type="hidden" name="daddr" value="${coordenadas[0]},${coordenadas[1]}"> 
403									<label for="saddr"><span class="label">${languageUtil.get(request,'infoasturias-from')}: </span></label> 
404									<input class="form-control" type="text" maxlength="40" name="saddrText" id="saddrText" value="" placeholder="${languageUtil.get(request,'infoasturias-insert-from')}"> 
405									<input class="form-control" type="hidden" name="saddr" id="saddr" value="" placeholder="${languageUtil.get(request,'infoasturias-insert-from')}"> 
406									<button class="btn btn-text" type="submit">${languageUtil.get(request,'infoasturias-como-llegar')} &raquo;</button> 
407								</form> 
408							</div> 
409						</div> 
410						<script src="/o/turismo-asturias-theme/js/leaflet/leaflet.js"></script> 
411						<script type="text/javascript"> 
412							AUI().ready('aui-base', function(A){ 
413								var lat = ${coordenadas[0]}, 
414									lng = ${coordenadas[1]}, 
415									zoom = 16; 
416								mapContent = new L.map('article-map-content-${articleId}', {center: [lat, lng], zoom: 16}); 
417 
418								//Marker 
419								var defaultIconTheme = '/o/turismo-asturias-theme/css/images/icons/mark-box.png'; 
420								var defaultIcon = L.icon({ 
421									iconUrl: defaultIconTheme, 
422									iconSize:     [36, 53], 
423									iconAnchor:   [18, 53], 
424									iconShadow:   [0,0], 
425									popupAnchor:  [0, -30] 
426								}); 
427								var marker = L.marker([lat, lng], {icon: defaultIcon}).addTo(mapContent); 
428								 
429								var contentString = '<div class="row">'; 
430								contentString += '<div class="col-12">'; 
431								contentString += '<div class="h4">${htmlUtil.escape(title)}</div>'; 
432								contentString += '</div>'; 
433								contentString += '</div>'; 
434								 
435								contentString += '<div class="row">'; 
436								contentString += '<div class="col-12">'; 
437								<#if validator.isNotNull(articleMainImageThumbnail1)> 
438									contentString += '<img class="pull-right mb-2 ml-2" src="${articleMainImageThumbnail1}" alt="$title"/>'; 
439								</#if> 
440								contentString += '<dl class="mb-0">'; 
441								<#if address?has_content> 
442									contentString += '<dt>${languageUtil.get(request,'address')}</dt>'; 
443									contentString += '<dd>${htmlUtil.escape(address)}</dd>'; 
444								</#if> 
445								<#if Contacto.Telefono.data?has_content> 
446									contentString += '<dt>${languageUtil.get(request,'phone')}</dt>'; 
447									contentString += '<dd>${Contacto.Telefono.data}</dd>'; 
448								</#if> 
449								<#if Contacto.Email.getData()?has_content> 
450									contentString += '<dt>${languageUtil.get(request,'email')}</dt>'; 
451									<#list Contacto.Email.getSiblings() as Item> 
452										contentString += '<dd><a href="mailto:${Item.data}" title="${languageUtil.format(request,'go-to-x', 'email')}">${Item.data}</a></dd>'; 
453									</#list> 
454								</#if> 
455								<#if Contacto.Web.data?has_content> 
456									<#assign linkURL = Contacto.Web.data/> 
457														 
458									<#if !stringUtil.startsWith(linkURL, "http")> 
459										<#assign linkURL = "https://${Contacto.Web.data}"/> 
460									</#if> 
461									contentString += '<dt>${languageUtil.get(request,'site')}</dt>'; 
462									contentString += '<dd><a href="${linkURL}" title="${languageUtil.format(request,'go-to-x', 'site')}">${Contacto.Web.data}</a></dd'; 
463								</#if> 
464								contentString += '</dl>'; 
465								contentString += '</div>'; 
466								contentString += '</div>'; 
467								<#if validator.isNotNull(description)> 
468									contentString += '<div class="row"><div class="col-12">${htmlUtil.escape(description)}</div></div>'; 
469								</#if> 
470								marker.bindPopup(contentString); 
471 
472								//Contributor 
473								L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { 
474									attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors.' 
475								}).addTo(mapContent); 
476								 
477							}); //AUI.ready 
478						</script> 
479					</div> 
480				</div> 
481				<#assign showFirstTab = false> 
482			</#if> 
483			 
484			<#if hasTab3> 
485				<div id="tab3" class="article-section accordion-item"> 
486					<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> 
487					<div id="tabContent3" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading3"> 
488						<#if Contacto.Temporadas.data?has_content> 
489							${Contacto.Temporadas.data} 
490						</#if> 
491					</div> 
492				</div> 
493				<#assign showFirstTab = false> 
494			</#if>	 
495 
496			<#if hasTab4> 
497				<div id="tab4" class="article-section accordion-item"> 
498					<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> 
499					<div id="tabContent4" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading4"> 
500						<#if Contacto.FechasDeCierre.data?has_content> 
501							${Contacto.FechasDeCierre.data} 
502						</#if> 
503					</div> 
504				</div> 
505				<#assign showFirstTab = false> 
506			</#if> 
507			 
508			<#if hasTab5> 
509				<div id="tab5" class="article-section accordion-item"> 
510					<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> 
511					<div id="tabContent5" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading5"> 
512						<#if Informacion.Horario.data?has_content> 
513							<div class="mb-1 font-weight-semi-bold text-success"><span class="far fa-clock mr-2 text-success"></span>${languageUtil.get(request,'infoasturias-horario')}:</div> 
514							<div class="mb-4">${Informacion.Horario.data}</div> 
515						</#if> 
516						<#if Informacion.Tarifas.data?has_content> 
517							<div class="mb-1 font-weight-semi-bold text-success"><span class="fas fa-coins mr-2 text-success"></span>${languageUtil.get(request,'infoasturias-tarifas')}:</div>						 
518							<div>${Informacion.Tarifas.data}</div> 
519						</#if> 
520					</div> 
521				</div> 
522				<#assign showFirstTab = false> 
523			</#if> 
524			<#if hasTab6> 
525				<div id="tab6" class="article-section accordion-item"> 
526					<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> 
527					<div id="tabContent6" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading6"> 
528						<#if AsturiasMascotas.LimitacionPeso?? && AsturiasMascotas.LimitacionPeso.data?has_content || AsturiasMascotas.AdmitePPP?? && AsturiasMascotas.AdmitePPP.data?has_content || 
529							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> 
530							<ul class="list-unstyled"> 
531								<div class="list-iconos">							 
532									<#if AsturiasMascotas.LimitacionPeso.data?has_content> 
533										<div class="col-xl-2 col-sm-6 col-xs-12 text-center list-inline-item icono">	 
534											<#assign LimitacionPesoKey = journalTool.getDDMStructureSelectKeyByJournalArticle(journalArticle, "LimitacionPeso", AsturiasMascotas.LimitacionPeso.getData(), locale)/> 
535											<#assign LimitacionPesoImage = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Limitación de tamaño")/> 
536											<#if AsturiasMascotas.LimitacionPeso.getData() != ""> 
537												<div><img src="${LimitacionPesoImage[0]}" alt="${languageUtil.get(request,'infoasturias-mascotas-peso')}"/><span class="value">${LimitacionPesoKey}</span></div> 
538												<span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-peso')}</span>							 
539											</#if>									 
540										</div> 
541									</#if> 
542									<#if AsturiasMascotas.NumeroMaximoPersona.data?has_content> 
543										<div class="col-xl-2 col-sm-6 col-xs-12 text-center list-inline-item icono"> 
544											<#assign NumeroMaximoKey = journalTool.getDDMStructureSelectKeyByJournalArticle(journalArticle, "NumeroMaximoPersona", AsturiasMascotas.NumeroMaximoPersona.getData(), locale)/> 
545											<#assign NumeroMaximoImage = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Número máximo de perros por persona")/> 
546											<#if AsturiasMascotas.NumeroMaximoPersona.getData() != ""> 
547												<div><img src="${NumeroMaximoImage[0]}" alt="${languageUtil.get(request,'infoasturias-maximo-persona')}"/><span class="value-icono">${NumeroMaximoKey}</span></div> 
548												<span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-maximo-persona')}</span>	 
549																					 
550											</#if>									 
551										</div> 
552									</#if>	 
553									<#if AsturiasMascotas.NumeroMaximoInterior.data?has_content> 
554										<div class="col-xl-2 col-sm-6 col-xs-12 text-center list-inline-item icono"> 
555											<#assign NumeroMaximoInteriorImage = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Cupo máximo de perros en el interior")/> 
556											<div><img src="${NumeroMaximoInteriorImage[0]}" alt="${languageUtil.get(request,'infoasturias-maximo-interior')}"/><span class="value-icono">${AsturiasMascotas.NumeroMaximoInterior.data}</span></div> 
557											<span class="text-value">${languageUtil.get(request,'infoasturias-maximo-interior')}</span>																	 
558										</div> 
559									</#if> 
560									<#if AsturiasMascotas.AccesoInterior.data?has_content> 
561										<#assign AccesoInteriorImage = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Accesso al interior")/>	 
562										<#assign SinAccesoInteriorImage = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Sin acceso interior")/> 
563										<div class="col-xl-2 col-sm-6 col-xs-12 text-center list-inline-item icono"> 
564											<#if AsturiasMascotas.AccesoInterior.getData() == "Si"> 
565												<div ><img src="${AccesoInteriorImage[0]}" alt="${languageUtil.get(request,'infoasturias-mascotas-interior')}"/></div> 
566												<span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-interior')}</span>											 
567											<#else> 
568												<div><img src="${SinAccesoInteriorImage[0]}" alt="${languageUtil.get(request,'infoasturias-mascotas-no-interior')}"/></div> 
569												<span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-no-interior')}</span>														 
570											</#if>	 
571										</div> 
572									</#if>										 
573								</div>									 
574								<div class="article-info-table">	 
575									<div class="mb-4 title-normas article-info-border">${languageUtil.get(request,'infoasturias-normas-mascotas')}</div>	 
576									<ul class="list-unstyled"> 
577										<#if AsturiasMascotas.AdmitePPP.data?has_content> 
578											<li class="fas d-block track">									 
579												<#if AsturiasMascotas.AdmitePPP.getData() == "Si"> 
580													<span class="text-rule">${languageUtil.get(request,'infoasturias-mascotas-ppp')}.</span>	 
581												<#else> 
582													<span class="text-rule">${languageUtil.get(request,'infoasturias-mascotas-no-ppp')}.</span> 
583												</#if>										 
584											</li> 
585										</#if> 
586										<#if AsturiasMascotas.AccesoTerraza.data?has_content> 
587											<li class="fas d-block track">									 
588												<#if AsturiasMascotas.AccesoTerraza.getData() == "Si"> 
589													<span class="text-rule">${languageUtil.get(request,'infoasturias-mascotas-terraza')}.</span>														 
590												<#else> 
591													<span class="text-rule">${languageUtil.get(request,'infoasturias-mascotas-no-terraza')}.</span> 
592												</#if>										 
593											</li> 
594										</#if>																																						 
595										<#if AsturiasMascotas.DetalleNormas.data?has_content>						 
596											<div class="rules mt-2"> 
597												<#assign iconSPAN = AsturiasMascotas.DetalleNormas.data?replace('<p>','<p><span class="fas"></span>')/> 
598												${iconSPAN} 
599											</div> 
600										</#if> 
601									</ul> 
602								</div>	 
603							</ul> 
604						</#if> 
605					</div> 
606				</div> 
607				<#assign showFirstTab = false> 
608			</#if> 
609		</div> 
610		 
611		<#if  validator.isNotNull(Informacion.Observaciones.data) ||  validator.isNotNull(Contacto.MasInformacion.data) > 
612			<div class="article-border"> 
613				<#if Informacion.Observaciones?has_content> 
614					${Informacion.Observaciones.data} 
615				</#if> 
616				<#if Contacto.MasInformacion?has_content> 
617					<#list  Contacto.MasInformacion.getSiblings() as Item> 
618						<#if stringUtil.matches(Item.data, "//") > 
619							<div><a class="" href="${Item.data}" title="${languageUtil.format(request,'go-to-x', 'link')}">${Item.data}</a></div> 
620						<#else> 
621							<div><span class="">${Item.data}</span></div> 
622						</#if> 
623					</#list> 
624				</#if> 
625			</div> 
626		</#if> 
627	</div> 
628	 
629	<#-- Related --> 
630	<#assign relatedJournalArticles = assetTool.getRelatedJournalArticlesApproved(assetEntry)/> 
631	<#if validator.isNotNull(relatedJournalArticles) && relatedJournalArticles?size gt 0> 
632		<div class="article-related portlet-background-grey-container"> 
633			<div class="container"> 
634				<h3 class="title-section">${languageUtil.get(request,'related-assets')}</h3> 
635				<div class="slick article-related-slick"> 
636					<#list relatedJournalArticles as currentJournalArticle> 
637						<#assign viewURL = journalTool.getDisplayPage(currentJournalArticle, themeDisplay, true)/> 
638							<div class="slide"> 
639								<a class="card background card-background-9-14"  href="${viewURL}" title="${languageUtil.format(request, 'go-to-x', currentJournalArticle.getTitle(locale))}"> 
640									<span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${currentJournalArticle.getSmallImageURL()}');"> 
641										<img class="hide-accessible" src="${currentJournalArticle.getSmallImageURL()}" alt="${currentJournalArticle.getTitle(locale)}"> 
642										<span class="card-body"> 
643											<span class="card-title">${currentJournalArticle.getTitle(locale)}</span> 
644										</span> 
645									</span> 
646								</a> 
647							</div> 
648					</#list> 
649				</div> 
650			</div> 
651		</div> 
652	</#if> 
653	 
654	<#-- Nearby --> 
655	<#assign classTypeIds = [598853,582814,625593,623117,609431,593783]> 
656	<#assign assetsNearJournalArticles = assetNearTool.getNearJournalArticles(themeDisplay.getScopeGroupId(), assetEntry.getEntryId(), 50.0, classTypeIds, 25)! /> 
657	<#if validator.isNotNull(assetsNearJournalArticles) && assetsNearJournalArticles?size gt 0> 
658		<div class="article-nearby portlet-container-margin"> 
659			<div class="container"> 
660				<div class="article-nearby-container"> 
661					<h3 class="title-section">${languageUtil.get(request,'infoasturias-near-here')}</h3> 
662					<div class="slick article-nearby-slick"> 
663						<#list assetsNearJournalArticles as currentJournalArticle> 
664							<#assign viewURL = journalTool.getDisplayPage(currentJournalArticle, themeDisplay, true)/> 
665							<div class="slide"> 
666								<a class="card" href="${viewURL}" title="${languageUtil.format(request, 'go-to-x', currentJournalArticle.getTitle(locale))}"> 
667									<span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${currentJournalArticle.getSmallImageURL()}');"> 
668										<img class="hide-accessible" src="${currentJournalArticle.getSmallImageURL()}" alt="${currentJournalArticle.getTitle(locale)}"> 
669										<span class="card-hover"> 
670											<span class="card-text">${currentJournalArticle.getDescription(locale)}</span> 
671										</span> 
672									</span> 
673									<span class="card-body"> 
674										<span class="card-title">${currentJournalArticle.getTitle(locale)}</span> 
675										<span class="card-subtitle"> 
676											<span class="d-block">${currentJournalArticle.getVersion()} Kms</span> 
677											<span class="d-block">${journalTool.getCategoriesNames(groupId, currentJournalArticle.getArticleId(), locale, ["Concejos"])}</span> 
678										</span> 
679									</span> 
680								</a> 
681							</div> 
682						</#list> 
683					</div> 
684				</div> 
685			</div> 
686		</div> 
687	</#if> 
688	 
689</article>