Errorea gertatu da txantiloia prozesatzerakoan.
The following has evaluated to null or missing:
==> httpUtil.decodeURL  [in template "842907#842945#18852805" at line 92, column 26]

----
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: #assign redirectUrl = httpUtil.decode...  [in template "842907#842945#18852805" at line 92, column 5]
----
1<#assign pruebas = false/> 
2 
3<#--Vocabulario UDA- Fotos --- Publicado en Euskera y cultura --> 
4<#--CADA CAMPAÑA SE EILIMARN Publicado DE UDA- Fotos y se vuelve a crear, se pone el nuevo ID (por rendimiento)	--> 
5<#--<#assign categoriIdPublicado =15652154/>--><#--DESA--> 
6<#assign categoriIdPublicado =16336367/> <#--PROD--> 
7 
8 
9<#if pruebas><p>AL ENTRAR:${.now?string}</p>	</#if> 
10 
11<#assign googleMapsApiKey="AIzaSyBMctVq13ErDz69AxaIHMb93TR4DA4qioU"> 
12<script src="https://maps.googleapis.com/maps/api/js?key=${htmlUtil.escape(googleMapsApiKey)}&callback=inicializarMapa" defer></script> 
13<#-- Servicios --> 
14<#assign journalArticleLocalService=serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
15<#assign journalFolderLocalService=serviceLocator.findService("com.liferay.journal.service.JournalFolderLocalService")> 
16<#assign assetVocabularyLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService")> 
17<#assign assetCategoryLocalService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")> 
18 
19 
20<#assign tbkcTurnLocalService=serviceLocator.findService("net.bizkaia.iyudsudc.service.TbkcTurnLocalService") /> 
21<#assign utilFunctionsHelperLocalService=serviceLocator.findService("net.bizkaia.iyudsudc.service.UtilFunctionsHelperLocalService") /> 
22 
23<#--NO DESPLEGADO EN DESA--> 
24<#-- 
25<#assign tbkcTurnLocalService = serviceLocator.findService("net.bizkaia.iyudstuc.service.TbkcTurnLocalService") /> 
26<#assign utilFunctionsHelperLocalService = serviceLocator.findService("net.bizkaia.iyudstuc.service.UtilFunctionsHelperLocalService") /> 
27--> 
28 
29 
30<#assign dlAppLocalServiceUtil = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService") > 
31 
32<#assign textFormatter=staticUtil["com.liferay.portal.kernel.util.TextFormatter"] /> 
33<#-- Variables --> 
34<#assign turnosEntries=[] /> 
35<#assign zero=getterUtil.getInteger("0") /> 
36<#assign structureConfigurationName="UDA-Configuracion" /> 
37<#assign structureKey="" /> 
38<#assign anio="" /> 
39<#assign tipo="U" /> 
40<#assign procedure_function=getterUtil.getInteger("1") /> 
41<#assign tuIdiomaE="1"> 
42<#assign tuIdiomaB="2"> 
43<#assign tuIdioma=""> 
44<#assign localeEU="eu"> 
45<#assign localeES="es"> 
46<#assign maxImages=getterUtil.getInteger("2")> 
47<#assign maxVideos=getterUtil.getInteger("1")> 
48<#assign redirectUrl=""> 
49<#assign equalsIndex=zero> 
50<#assign renderURL=themeDisplay.getURLCurrent()> 
51<#assign redirectPatter="redirectUrl="> 
52<#assign googleMapsApiKey=""> 
53<#assign stylesMaps=""> 
54 
55 
56<#--literales--> 
57<#assign strBilingue = "Bilingüe"/> 
58<#assign strVentanaNueva ="Abre una nueva ventana"/> 
59<#assign strSobreDestino ="Sobre el destino"/> 
60<#assign strInscribete ="Inscríbete"/> 
61<#assign strVerFotos ="Ver fotos"/> 
62<#assign strTurno ="Turno de xxxx"/> 
63<#assign strDeslizar = "Desliza para mostrar más"/> 
64<#assign strSiguientesCols = "Mostrar siguientes columnas"/> 
65<#assign strAnterioresCols = "Mostrar anteriores columnas"/> 
66<#assign strTablaDesplazamiento = "Han cambiado las columnas mostrada"/> 
67<#assign strSinTurnos="Información sobre turnos no disponible."/> 
68<#assign strSinTurnosTitulo="Sin información"/> 
69<#assign strNacidosEn="Nacidos en"/> 
70<#assign strAnyoNacimiento = "Año de nacimiento"/> 
71<#if locale=="eu_ES">	 
72<#assign strBilingue = "Elebiduna"/> 
73	<#assign strVentanaNueva ="Leiho berria ireki"/> 
74    <#assign strSobreDestino ="Helmugari buruz"/> 
75    <#assign strInscribete ="Izena eman"/> 
76    <#assign strVerFotos ="Ikusi argazkiak"/> 
77	<#assign strTurno ="xxxx(e)ko txandak"/> 
78    <#assign strDeslizar = "Lerratu gehiago erakusteko"/> 
79	<#assign strSiguientesCols = "Erakutsi hurrengo zutabeak"/> 
80	<#assign strAnterioresCols = "Erakutsi aurreko zutabeak"/> 
81	<#assign strTablaDesplazamiento = "xxxxx"/> 
82	<#assign strSinTurnos="Txandei buruzko informazioa ez dago eskuragarri."/> 
83	<#assign strSinTurnosTitulo="Informaziorik gabe"/> 
84	<#assign strNacidosEn="Urte hauetan jaiotakoak"/> 
85	<#assign strAnyoNacimiento = "Jaiotza urtea"/> 
86</#if> 
87 
88<#if (renderURL?index_of(redirectPatter) !=-1)> 
89    <#assign paramLength=getterUtil.getInteger(renderURL?length)> 
90    <#assign equalsIndex=getterUtil.getInteger(renderURL?index_of(redirectPatter))> 
91    <#assign equalsIndex=equalsIndex + (redirectPatter?length)> 
92    <#assign redirectUrl=httpUtil.decodeURL((renderURL?substring(equalsIndex,paramLength)))> 
93</#if> 
94 
95<#assign id_udaleku=codigo.getData()?split("-") /> 
96<#--Precarga--> 
97<#assign imgActividadInstalacion = utilFunctionsHelperLocalService.getConfigurationValue(themeDisplay.getSiteGroupId(), "imagenActividadInstalacion", themeDisplay) /> 
98<#if imgActividadInstalacion??> 
99	<#assign currentArticleImg =getFileEntryJson(imgActividadInstalacion) /> 
100	<img class="d-none" src="${currentArticleImg}" alt=""/> 
101</#if>  
102 
103 
104<#assign instalacionesSiteId = utilFunctionsHelperLocalService.getConfigurationValue(themeDisplay.getSiteGroupId()?number, "instalacionesSiteId", themeDisplay)> 
105<#--DIARIO DE ESTANCIAS--> 
106<#assign mostrarDiarioEstancias = urlDiarioEstancias.getChild('diarioEstanciasDisponible').getData() /> 
107<#--PARA DESPUBLICAR CAMPAÑA Y Y NO EDITAR CADA CONTENIDO DE INSTALACION--> 
108<#assign mostrarDiarioEstancias = false /> 
109 
110<section> 
111	<div class="container"> 
112		<#assign numImagenes=hayImagenes()/> 
113		<#if numImagenes gt 0 || descripcion.getData()?? && !validator.equalsSorted([descripcion.getData()] ,[""] )> 
114			<div class="row my-5"> 
115				<div class="col-12 col-sm-6"> 
116					<#--VER SI HAY VIDEOS--> 
117					<#--VALOR EN EL PRIMER ELEMENTO --> 
118					<#assign hayVideos=false> 
119					<#if bloqueVideos.getSiblings()?has_content> 
120						<#if bloqueVideos.getSiblings()[0].getChild('video')?has_content && bloqueVideos.getSiblings()[0].getChild('video').getData()?has_content> 
121							<#assign hayVideos=true> 
122						</#if> 
123					</#if> 
124					<#if hayVideos=true> 
125						<div class="hidden" id="header_video"> 
126							<video class="lg-video-object lg-html5" controls="" preload="none" title="BizkaiUp"> 
127							<source src="${bloqueVideos.getSiblings()[0].getChild('video').getData()}" type="video/mp4"> <@liferay.language key="html5-not-supported" /></video> 
128						</div> 
129						<div class="position-relative" id="header_lightGalleryHeader"> 
130							<div class="bipo-video-pointer" data-html="#header_video" data-sub-html="${bloqueVideos.getSiblings()[0].getChild('textoTranscripcion').getData()}" tabindex="0"> 
131								<a class="bipo_video" href="#" role="button"><span aria-hidden="true" class="bipoicon icon-playvideo"></span> <span class="sr-only">Reproducir vídeo</span> 
132									<div class="bipo_overlay"></div> 
133									<@getImagenDestino /> 
134								</a> 
135							</div> 
136						</div> 
137					<#else> 
138						<@getImagenDestino /> 
139					</#if> 
140				</div> 
141				<#if descripcion.getData()?? && !validator.equalsSorted([descripcion.getData()] ,[""] )> 
142					<div class="col-12 col-sm-6"> 
143						<h2 class="mt-sm-0">${strSobreDestino}</h2> 
144						<div>${descripcion.getData()}</div> 
145 
146						<div class="uda-detalle-btnera"> 
147							<#--enlace inscripción--> 
148							<#assign urlInscripcion = utilFunctionsHelperLocalService.getConfigurationValue(themeDisplay.getSiteGroupId(), "URLInscripcionInstalacion", themeDisplay) /> 
149							<#if urlInscripcion?? && !validator.equalsSorted([urlInscripcion] ,[""] )> 
150								<a class="btn btn-sm btn-primary" href="${urlInscripcion}" rel="noopener noreferrer" target="_blank" title="${strVentanaNueva}">${strInscribete}<span aria-hidden="true" class="bipoicon icon-enlaceexterno ml-2 mt-1-neg"></span></a> 
151							</#if> 
152							<#--Galeria fotos --> 
153							<#if numImagenes gt 0> 
154								<#if numImagenes gt 1> 
155									<button id="uda-detalle-btn-galeria" class="btn btn-sm btn-secondary">${strVerFotos}</button> 
156									<ul id="lightGalleryPhotos" class="bipo-udaleku_galeria d-none"> 
157										<#list bloqueImagenes.getSiblings() as curBloque> 
158											<#assign image=curBloque.getChild('imagen').getData()> 
159											<#assign fileEntry=getFileEntry(image)> 
160											<#assign extension=fileEntry.extension> 
161											<#assign size=textFormatter.formatStorageSize(fileEntry.size, locale)?upper_case> 
162											 
163											<li class="col-xs-6 col-sm-6 col-md-6 <#if !curBloque?is_first>hide</#if> bipo-udaleku_galeria_element"> 
164												<div class="bipo_thumb"> 
165													<a id="${nombreInstalacion.getData()}-foto${curBloque?index}" role="button" aria-haspopup="true" aria-expanded="false" class="bipo_item_galeria" href="${htmlUtil.escape(curBloque.getChild('imagen').getData())}" data-sub-html="<p class='text-center'>${htmlUtil.escape(curBloque.getChild('imagen').getAttribute('alt'))} - ${htmlUtil.escape(extension)} ${htmlUtil.escape(size)}</p>" data-alt="${htmlUtil.escape(curBloque.getChild('imagen').getAttribute('alt'))}"> 
166														<div class="bipo_ampliar_imagen"> 
167															<span class="bipoicon icon-flecha_ampliar"></span> 
168														</div> 
169														<div class="bipo_overlay"></div> 
170														<img class="img-responsive" src="${htmlUtil.escape(curBloque.getChild('imagen').getData())?replace(' ','%20')}" alt="${htmlUtil.escape(curBloque.getChild('imagen').getAttribute('alt'))}" /> 
171													</a> 
172												</div> 
173											</li> 
174										</#list> 
175									</ul> 
176								<#else> 
177									<button id="uda-detalle-btn-galeria" class="btn btn-sm btn-secondary">${strVerFotos}</button> 
178									<div id="lightGalleryPhotos" class="bipo-udaleku_galeria d-none"> 
179										<#list bloqueImagenes.getSiblings() as curBloque> 
180											<#assign image=curBloque.getChild('imagen').getData()> 
181											<#assign fileEntry=getFileEntry(image)> 
182											<#assign extension=fileEntry.extension> 
183											<#assign size=textFormatter.formatStorageSize(fileEntry.size, locale)?upper_case> 
184											 
185											<div class="col-xs-6 col-sm-6 col-md-6 <#if !curBloque?is_first>hide</#if> bipo-udaleku_galeria_element"> 
186												<div class="bipo_thumb"> 
187													<a id="${nombreInstalacion.getData()}-foto${curBloque?index}" role="button" aria-haspopup="true" aria-expanded="false" class="bipo_item_galeria" href="${htmlUtil.escape(curBloque.getChild('imagen').getData())}" data-sub-html="<p class='text-center'>${htmlUtil.escape(curBloque.getChild('imagen').getAttribute('alt'))} - ${htmlUtil.escape(extension)} ${htmlUtil.escape(size)}</p>" data-alt="${htmlUtil.escape(curBloque.getChild('imagen').getAttribute('alt'))}"> 
188														<div class="bipo_ampliar_imagen"> 
189															<span class="bipoicon icon-flecha_ampliar"></span> 
190														</div> 
191														<div class="bipo_overlay"></div> 
192														<img class="img-responsive" src="${htmlUtil.escape(curBloque.getChild('imagen').getData())?replace(' ','%20')}" alt="${htmlUtil.escape(curBloque.getChild('imagen').getAttribute('alt'))}" /> 
193													</a> 
194												</div> 
195											</div> 
196											<#break> 
197										</#list> 
198									</div> 
199								</#if> 
200							</#if> 
201						</div> 
202					</div> 
203				</#if> 
204			</div> 
205		</#if>                                                                          
206		<#if actividades.getData()?? && !validator.equalsSorted([actividades.getData()] ,[""] )> 
207			<div class="row mt-3"> 
208				<div class="col-12"> 
209					<div class="d-flex mt-3 align-items-center flex-column flex-md-row"> 
210						<div class="d-inline-flex d-md-none w-100"> 
211							<#assign imgActividadInstalacion = utilFunctionsHelperLocalService.getConfigurationValue(themeDisplay.getSiteGroupId(), "imagenActividadInstalacion", themeDisplay) /> 
212				 
213							<#if imgActividadInstalacion??> 
214								<#assign currentArticleImg =getFileEntryJson(imgActividadInstalacion) /> 
215								<img class="w-100" src="${currentArticleImg}" alt=""/> 
216							</#if>   
217						</div> 
218						<div class="bg_primary_light px-4 py-5 d-flex flex-column justify-content-center position-relative"> 
219							<h2 class="h2-line-primary mt-0"><@liferay.language key="uda.instalaciones.detalle.actividades" /></h2> 
220							<div><p>${htmlUtil.stripHtml(actividades.getData())}</p></div> 
221						</div> 
222						<div class="ml-6-neg d-none d-md-inline-flex"> 
223							<#assign imgActividadInstalacion = utilFunctionsHelperLocalService.getConfigurationValue(themeDisplay.getSiteGroupId(), "imagenActividadInstalacion", themeDisplay) /> 
224			 
225							<#if imgActividadInstalacion??> 
226								<#assign currentArticleImg =getFileEntryJson(imgActividadInstalacion) /> 
227								<img src="${currentArticleImg}" alt=""/> 
228							</#if>   
229						</div> 
230					</div> 
231				</div> 
232			</div> 
233		</#if> 
234	  
235		<#if latitud.getData()?? && !validator.equalsSorted([latitud.getData()] ,[""] ) && longitud.getData()?? && !validator.equalsSorted([longitud.getData()] ,[""] )> 
236			<div class="row"> 
237				<div class="col-12"> 
238					<h2><@liferay.language key="uda.instalaciones.detalle.localizacion" /></h2> 
239				</div> 
240 
241				<div class="col-12"> 
242					<div id="mapaUdaleku"></div> 
243						<#--img alt="${nombreInstalacion.getData()}" aria-details="info" class="w-100" src="https://maps.googleapis.com/maps/api/staticmap?center=${htmlUtil.escape(latitud.getData())},${htmlUtil.escape(longitud.getData())}&markers=color:red%7C${htmlUtil.escape(latitud.getData())},${htmlUtil.escape(longitud.getData())}&zoom=15&scale=2&size=1186x200&key=${htmlUtil.escape(googleMapsApiKey)}" /--> 
244						<div id="info" class="d-flex gap-2 mt-4"> 
245							<span class="bipoicon icon-plataforma_geobizkaia uib_size_1"></span> 
246							<address>${htmlUtil.escape(direccion.getData())}</address> 
247						</div> 
248				</div> 
249			</div> 
250		</#if> 
251 
252<#if pruebas><p>ANTES OBTENER TURNOS:${.now?string}</p>	</#if> 
253 
254		<#-- Obtenemos los turnos --> 
255		<#if tbkcTurnLocalService??> 
256			<#-- Estructura de configuracion --> 
257			<#assign structureKey=utilFunctionsHelperLocalService.getStructureKey(structureConfigurationName, themeDisplay.getCompanyGroupId()) /> 
258			<#if structureKey?? && !validator.equalsSorted([structureKey?string] ,[""] )> 
259				<#-- Campania activa --> 
260				<#assign anio=utilFunctionsHelperLocalService.getCampaniaActiva(structureKey, themeDisplay.getSiteGroupId(), locale)> 
261				<#--<#assign anio="2023">--> 
262				<#-- Se obtienen los datos --> 
263					<#if anio?? && !validator.equalsSorted([anio?string] ,[""] )> 
264						<#assign turnosEntries=tbkcTurnLocalService.getTurnosUdalekus(procedure_function, anio, id_udaleku[0] , id_udaleku[1] , "" , "" , themeDisplay) /> 
265					</#if> 
266			</#if> 
267		</#if> 
268		 
269<#if pruebas><p>DESPUES OBTENER TURNOS:${.now?string}</p>	</#if> 
270<#if pruebas><p>ANTES PINTAR TURNOS:${.now?string}</p>	</#if> 
271		<#if (turnosEntries?size> zero)> 
272			<div class="row" id="udaTablaScroll"> 
273				<div class="col-12"> 
274					<h2><@liferay.language key="uda.instalaciones.detalle.turnos" /></h2> 
275				</div> 
276				<div class="col-xxs-8 col-xs-8 col-sm-9 col-md-10 d-none align-items-center columnas-slider"> 
277					<p class="paragraph-small-bold  d-lg-none ">${strDeslizar}</p> 
278				</div> 
279 
280				<div class="col-xxs-4 col-xs-4 col-sm-3 col-md-2 d-none justify-content-end align-items-center columnas-slider"> 
281					<div class="bipo_flechas_home"> 
282						<p> 
283							<button class="left-arrow" type="button" disabled="disabled"> 
284								<span aria-hidden="true" class="bipoicon icon-flecha_enlace_izquierda"></span>  
285								<span class="sr-only">${strSiguientesCols}</span> 
286							</button> 
287							<button class="right-arrow ml-1" type="button" > 
288								<span aria-hidden="true" class="bipoicon icon-flecha_enlace_derecha"></span> 
289								<span class="sr-only">${strAnterioresCols}</span> 
290							</button> 
291						</p> 
292					</div> 
293				</div> 
294				<div class="col-12"> 
295					<div class="carousel-wrapper scrollbar-overflow p-0"> 
296						<div class="carousel carousel-scroll overflow"> 
297							<table class="table table-cabecera-primary w-100"> 
298							<caption class="sr-only">${strTurno?replace("xxxx", nombreInstalacion.getData())}</caption> 
299								<thead> 
300									<tr> 
301										<th class="carousel-unit" scope="col"> 
302											<span class="text-nowrap">${strAnyoNacimiento}</span><!--</th--> 
303										</th> 
304										 
305										<th class="carousel-unit uda-tabla-col-fecha" scope="col"> 
306											<span class="text-nowrap"><@liferay.language key="uda.instalaciones.detalle.table.fecha" /></span><!--</th--> 
307										</th> 
308										 
309										<th class="carousel-unit" scope="col"> 
310											<span class="text-nowrap"><@liferay.language key="uda.instalaciones.detalle.table.modelo" /></span><!--</th--> 
311										</th> 
312										<#if getterUtil.getBoolean(mostrarDiarioEstancias)>	 
313											<th class="carousel-unit" scope="col">  
314												<span class="text-nowrap"><@liferay.language key="uda.instalaciones.detalle.table.diario-estancias"/></span> 
315											</th> 
316										</#if>	 
317									</tr> 
318								</thead> 
319								<tbody> 
320									 
321									<#assign imageArticles = getImagesByTurnoBi() /> 
322									 
323									<#--Recorremos cada turno--> 
324									<#list turnosEntries as curEntry> 
325									 
326										<tr> 
327											<#--Fecha de nacimiento--> 
328											<td> 
329										    
330												<#assign anioInicio=curEntry.getTuFmay()> 
331												<#assign anioFin=curEntry.getTuFmen()> 
332												<#if validator.isNotNull(curEntry.getTuFmen()) && validator.isNotNull(curEntry.getTuFmay())> 
333													<#assign strNacidos=""/> 
334													 
335													<#assign strNacidos = anioInicio /> 
336													<#if !validator.equalsSorted([anioFin?string],[""]) > 
337														<#assign strNacidos = strNacidos + " - " + anioFin   /> 
338													</#if> 
339													${htmlUtil.escape(strNacidos)}	 
340												</#if> 
341											</td> 
342											<#--Fecha--> 
343											<td> 
344												<#if validator.isNotNull(curEntry.getTuFini()) && validator.isNotNull(curEntry.getTuFfin())> 
345												${curEntry.getTuFini()?string['d']}-${curEntry.getTuFfin()?string['d']} ${formatMes(curEntry.getTuFini()?string['MM']?number,locale)} 
346												</#if> 
347											</td> 
348											<#--idioma--> 
349											<#if validator.equalsSorted([curEntry.getTuIdioma()] ,[tuIdiomaE] )> 
350												<#assign tuIdioma=languageUtil.get(locale, "uda.idioma.euskera" )> 
351												<td>${htmlUtil.escape(tuIdioma)}</td> 
352											<#elseif validator.equalsSorted([curEntry.getTuIdioma()] ,[tuIdiomaB] )> 
353												<#assign tuIdioma = strBilingue> 
354												<td><span class="bipo-udaleku_blueFont text-primary font-weight-bold">${tuIdioma}</span></td> 
355											</#if> 
356											 
357											<#if getterUtil.getBoolean(mostrarDiarioEstancias)>	 
358												<#--DIARIO DE ESTANCIAS--> 
359												<td class="texto_centrado"> 
360 
361													<#-- Valido para los registros de Bizkaia y Navarra --> 
362													<#if validator.equalsSorted([curEntry.getTuProv()?string],["48"]) || (validator.equalsSorted([curEntry.getTuProv()?string],["31"]) && curEntry.getTuDescr()?starts_with("LEGASA"))> 
363														<#--Se obtiene el contenido imagenes--> 
364														<#assign nombreTurno=curEntry.getTuDescr()?replace("/","-") /> 
365	 
366<#if pruebas><p>nombreTurno:${nombreTurno}	</p></#if>												 
367<#--***************** NO SE FILRTRA POR TURNO POR ESO SE OBTIENE ANTES DE LIST--> 
368<#--<#assign imageArticles = getImagesByTurnoBi() />--> 
369														<#assign imageArticlesTurno=[] /> 
370														<#if (imageArticles?size > zero) > 
371															<#-- Obtenemos las imagenes del turno --> 
372															<#list imageArticles as curEntryImage> 
373																<#if validator.equalsSorted([curEntryImage.getFolder().getName()], [nombreTurno]) > 
374																	<#assign imageArticlesTurno= imageArticlesTurno + [curEntryImage] /> 
375																</#if> 
376															</#list> 
377														</#if> 
378<#if pruebas><p>tam:${imageArticlesTurno?size}</p></#if> 
379														<#if (imageArticlesTurno?size > zero) > 
380															<div class="bipo_fotos"> 
381																<ul class="bipo-udaleku_galeria"> 
382																	<#list imageArticlesTurno as curImageEstancia> 
383 
384																		<#assign documentCurEntryImage = saxReaderUtil.read(curImageEstancia.getContentByLocale(locale)) > 
385																		<#assign rootElementCurEntryImage = documentCurEntryImage.getRootElement() > 
386																		<#-- 
387																		<#assign currentArticlefoto = saxReaderUtil.createXPath("dynamic-element[@name='foto']/dynamic-content").selectSingleNode(rootElementCurEntryImage) /> 
388																		--> 
389																		<#assign image = documentCurEntryImage.valueOf("//dynamic-element[@name='foto']/dynamic-content/text()") /> 
390																		<#assign imgJson = jsonFactoryUtil.createJSONObject(image)> 
391																		<#assign dlImg = dlAppLocalServiceUtil.getFileEntryByUuidAndGroupId(imgJson.getString("uuid"), imgJson.getString("groupId")?number) /> 
392																		<#assign imageFile='/documents/${imgJson.getString("groupId")}/${dlImg.getFolderId()}/${dlImg.getFileName()}' />  
393																		<#assign imageAlt="" /> 
394																		<#if !validator.equalsSorted([imgJson.alt],[""])> 
395																			<#assign imageAlt="<p class='text-center'>"+htmlUtil.escape(imgJson.alt)+"</p>" />  
396																		</#if> 
397																		<#if (curImageEstancia?index == zero)> 
398 
399																			<li class="sinMargen"> 
400																				<div class="bipo_thumb"> 
401																					<a class="bipo_item_galeria" data-alt="${imageAlt}" data-thumb="${imageFile}" href="${imageFile}"> 
402 
403																						<span class="bipoicon icon-camara bipo-udaleku_redicon bipo-udaleku_size3 text-primary "> 
404																							<span class="sr-only"><@liferay.language key="uda.instalaciones.detalle.galeria-fotografica-de"/>  
405																								<#if validator.equalsSorted([locale.getLanguage()],[localeEU])> 
406																									${htmlUtil.escape(curEntry.getTuDescrEu())} 
407																								<#else> 
408																									${htmlUtil.escape(curEntry.getTuDescr())} 
409																								</#if> 
410																							</span> 
411																						</span> 
412																						<img alt="${imageAlt}" class="img-responsive bipo-udaleku_hidden" data-src="${htmlUtil.escape(imageFile)}" src="${htmlUtil.escape(imageFile)?replace(' ','%20')}" /> 
413																					</a> 
414																				</div> 
415																			</li> 
416 
417																		<#else> 
418 
419																			<li class="bipo-udaleku_hidden"> 
420																			 
421																				<div class="bipo_thumb"> 
422																					<a class="bipo_item_galeria" data-alt="${imageAlt}" data-thumb="${imageFile}" href="${imageFile}"> 
423																						<span class="bipoicon icon-camara bipo-udaleku_redicon bipo-udaleku_size3 text-primary "> 
424																							<span class="sr-only"><@liferay.language key="uda.instalaciones.detalle.galeria-fotografica-de"/>  
425																								<#if validator.equalsSorted([locale.getLanguage()],[localeEU])> 
426																									${htmlUtil.escape(curEntry.getTuDescrEu())} 
427																								<#else> 
428																									${htmlUtil.escape(curEntry.getTuDescr())} 
429																								</#if> 
430																							</span> 
431																						</span> 
432																						<img alt="${imageAlt}" class="img-responsive" data-src="$(imageFile)" src="${imageFile?replace(' ','%20')}" /> 
433																					</a> 
434																				</div> 
435																			</li> 
436 
437																		</#if> 
438																</#list> 
439																</ul> 
440															</div>                                                         
441														<#else> 
442															<#assign txt_galeriaFotosProx="Próximamente galería fotográfica	"/> 
443															<#if validator.equalsSorted([locale.getLanguage()],[localeEU]) > 
444																<#assign txt_galeriaFotosProx="Laster argazki galeria"/> 
445															</#if> 
446															 
447															<span aria-hidden="true" class="text-primary paragraph-large bipoicon icon-ui_info-solid mt-1-neg"></span> 
448															${txt_galeriaFotosProx} 
449														</#if> 
450													 
451													<#else> 
452														<#--Se obtiene el contenido de links de cada udaleku--> 
453														<#assign carpeta=curEntry.getTuDescr() /> 
454														<#assign carpeta=carpeta?replace("/","-") /> 
455														<#assign carpeta=carpeta?replace(" ","") /> 
456														<#assign linkArticles = getImagesByTurnoOtros(carpeta) /> 
457 
458														<#if (linkArticles?size > zero) > 
459															<#attempt> 
460																<div class="bipo_fotos"> 
461																	<#--<ul class="bipo-udaleku_galeria">--> 
462																	<div class="bipo-udaleku_galeria"> 
463																		<#list linkArticles as curlinkEstancia> 
464 
465																			<#assign documentCurEntrylink = saxReaderUtil.read(curlinkEstancia.getContentByLocale(locale)) > 
466																			<#assign rootElementCurEntrylink = documentCurEntrylink.getRootElement() > 
467																			 
468																				<#assign currentArticleURL = saxReaderUtil.createXPath("dynamic-element[@name='URL']/dynamic-content").selectSingleNode(rootElementCurEntrylink) /> 
469 
470																				<div class="sinMargen"> 
471																				<#--<li class="sinMargen">--> 
472																					<div class="bipo_thumb"> 
473																						<a title ='<@liferay.language key="opens-new-window"/>' target="_blank" href="${htmlUtil.escape(currentArticleURL.getData())}"> 
474																							<span class="bipoicon icon-camara bipo-udaleku_redicon bipo-udaleku_size3 text-primary "> 
475																								<span class="sr-only"><@liferay.language key="uda.instalaciones.detalle.galeria-fotografica-de"/>  
476																									<#if validator.equalsSorted([locale.getLanguage()],[localeEU])> 
477																										${htmlUtil.escape(curEntry.getTuDescrEu())} 
478																									<#else> 
479																										${htmlUtil.escape(curEntry.getTuDescr())} 
480																									</#if> 
481																								</span> 
482																							</span> 
483																						</a> 
484																					</div> 
485																				<#--</li>--> 
486																				</div> 
487																			 
488																		</#list> 
489																	</div><#--</ul>--> 
490																</div>  
491															<#recover> 
492																	<#assign txt_galeriaFotosProx="Próximamente galería fotográfica	"/> 
493																	<#if validator.equalsSorted([locale.getLanguage()],[localeEU]) > 
494																		<#assign txt_galeriaFotosProx="Laster argazki galeria"/> 
495																	</#if> 
496																	 
497																	<span aria-hidden="true" class="text-primary paragraph-large bipoicon icon-ui_info-solid mt-1-neg"></span> 
498																	${txt_galeriaFotosProx} 
499															</#attempt>															 
500														<#else> 
501															<#assign txt_galeriaFotosProx="Próximamente galería fotográfica	"/> 
502															<#if validator.equalsSorted([locale.getLanguage()],[localeEU]) > 
503																<#assign txt_galeriaFotosProx="Laster argazki galeria"/> 
504															</#if> 
505															 
506															<span aria-hidden="true" class="text-primary paragraph-large bipoicon icon-ui_info-solid mt-1-neg"></span> 
507															${txt_galeriaFotosProx} 
508														</#if> 
509													</#if> 
510												</td> 
511												<#--FIN DE DIARIO DE ESTANCIAS--> 
512											</#if> 
513										</tr> 
514									</#list> 
515								</tbody> 
516							</table> 
517						</div> 
518					</div> 
519				</div> 
520			</div> 
521		<#else> 
522			<#--AVISO NO DATOS--> 
523			<div class="row" id="udaTablaScroll"> 
524				<div class="col-12"> 
525					 <h2><@liferay.language key="uda.instalaciones.detalle.turnos" /></h2> 
526					<div class="alert alert-info bg_primary_extra_light shadow_light " role="alert"> 
527						<span aria-hidden="true" class="bipoicon icon-ui_info-solid"></span> 
528						<h3 class="alert-heading">${strSinTurnosTitulo}</h3> 
529						<p>${strSinTurnos}</p> 
530					</div> 
531				</div>	 
532			</div> 
533		</#if> 
534<#if pruebas><p>DESPUES PINTAR TURNOS:${.now?string}</p></#if> 
535	</div> 
536</section>                                                                                              
537 
538	<#-- FUNCIONES --> 
539	<#function getFileEntryJson url > 
540		<#assign urljson = url?eval> 
541		<#assign group_id =urljson.groupId /> 
542		<#assign uuid = urljson.uuid /> 
543		<#assign fichero = urljson.title /> 
544 
545		<#assign fileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") > 
546		<#assign DLFichero= fileEntryService.getDLFileEntryByUuidAndGroupId(uuid?string, group_id?eval) />  
547		<#return "/documents/"+group_id+"/"+DLFichero.getFolderId()+"/"+fichero />  
548 
549	</#function> 
550 
551	<#--Función para obtener el array de contenido(journalArticles) imagenes de estancias--> 
552	<#function getImagesByTurnoBi2> 
553		<#assign categoriId=zero /> 
554		<#assign finalArticles=[] /> 
555		 
556		<#assign vocabularyName="UDA-Fotos" /> 
557		<#assign categories=assetVocabularyLocalService.getGroupVocabulary(instalacionesSiteId?number, vocabularyName).getCategories() /> 
558		<#list categories as category> 
559			<#if validator.equalsSorted(["Publicado"] , [category.getName()] )> 
560				<#assign categoriId=category.getCategoryId() /> 
561			</#if> 
562		</#list> 
563		 
564		<#--Assets de la categoria publicado--> 
565		<#assign assetsByCategory=getArticlesByCategoryId(categoriId) /> 
566		<#list assetsByCategory as curEntry> 
567			<#assign assetEntryId=curEntry.getEntryId()> 
568			<#assign assetEntry=assetEntryLocalService.getEntry(assetEntryId)> 
569			<#assign article=journalArticleLocalService.getLatestArticle(assetEntry.getClassPK())> 
570			<#assign finalArticles=finalArticles + [article]> 
571		</#list> 
572		<#return finalArticles> 
573	</#function> 
574 
575 
576	<#--Función para obtener el array de contenido(journalArticles) imagenes de estancias--> 
577	<#function getImagesByTurnoBi > 
578 
579		<#assign finalArticles=[] /> 
580		<#--Assets de la categoria publicado--> 
581		<#assign assetsByCategory = getArticlesByCategoryId(categoriIdPublicado) /> 
582		<#list assetsByCategory as curEntry> 
583			<#assign assetEntryId = curEntry.getEntryId() > 
584			<#assign assetEntry = assetEntryLocalService.getEntry(assetEntryId) > 
585			<#assign article = journalArticleLocalService.getLatestArticle(assetEntry.getClassPK()) > 
586			<#assign finalArticles= finalArticles + [article]> 
587		</#list> 
588 
589		<#return finalArticles > 
590	</#function> 
591 
592	<#--Función para obtener el array de contenido(journalArticles) imagenes de estancias de udalekus no bizkaia--> 
593	<#function getImagesByTurnoOtros folderName> 
594		<#assign finalArticle = [] /> 
595 
596		<#-- Obtenemos el identificador de la carpeta del turno --> 
597		<#assign folderId = getFolderId(instalacionesSiteId?number,folderName)> 
598 
599		<#-- Obtenemos el contenido --> 
600		<#if (folderId > zero) > 
601			<#assign articles = journalArticleLocalService.getArticles(instalacionesSiteId?number, folderId?number, 0,-1, -1) /> 
602		    
603			<#list articles as article > 
604				<#-- Obtenemos la ultima version del journal. Solo hay uno --> 
605				<#assign articleLatestVersion = journalArticleLocalService.getLatestArticle(article.getGroupId(), article.getArticleId(), 0) /> 
606				 
607				<#if validator.isNotNull(articleLatestVersion) > 
608					<#assign finalArticle = [articleLatestVersion]> 
609				</#if> 
610 
611			</#list> 
612		</#if>       
613 
614		<#return finalArticle > 
615	</#function> 
616 
617 
618 
619	<#--Función para obtener assets por categoria--> 
620	<#function getArticlesByCategoryId categoriId> 
621		<#assign assetEntryLocalService=objectUtil('com.liferay.asset.kernel.service.AssetEntryLocalServiceUtil')> 
622		<#assign assetEntryQuery=objectUtil("com.liferay.asset.kernel.service.persistence.AssetEntryQuery")> 
623		${assetEntryQuery.setAllCategoryIds([categoriId])} 
624		<#assign assets=assetEntryLocalService.getEntries(assetEntryQuery)> 
625		<#return assets> 
626	</#function> 
627 
628	<#-- Funcion para obtener el id de la carpeta--> 
629	<#function getFolderId groupId folderName> 
630		<#assign curFolderId=zero> 
631		<#assign groupFolders=journalFolderLocalService.getFolders(groupId) /> 
632		<#list groupFolders as groupFolder> 
633			<#if validator.equalsSorted([folderName?trim] , [groupFolder.getName()?trim] )> 
634				<#assign curFolderId=groupFolder.getFolderId() /> 
635			</#if> 
636		</#list> 
637		<#return curFolderId> 
638	</#function> 
639 
640	<#-- Devuelve una fecha en el formato de mes correspondiente --> 
641	<#function formatMes pMes pLocale> 
642		<#assign mes=""> 
643		<#if validator.equalsSorted([pLocale.getLanguage()] ,["eu"] )> 
644			<#assign meses=["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"] /> 
645		<#else> 
646			<#assign meses=["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"] /> 
647		</#if> 
648		<#assign mes=meses[pMes?number-1]> 
649		<#return mes> 
650	</#function> 
651 
652	<#--Función para formatear una fecha según el idioma--> 
653	<#function formatFecha pFecha pFormato pLocale> 
654		<#assign idioma=locale.getLanguage()> 
655		<#assign fecha=""> 
656		 
657		<#-- Formato con barras --> 
658		<#if pFormato=1> 
659			<#if idioma=localeES> 
660				<#assign vFormato="dd/MM/yyyy"> 
661			<#elseif idioma=localeEU> 
662				<#assign vFormato="yyyy/MM/dd"> 
663			<#else> 
664				<#assign vFormato="dd/MM/yyyy"> 
665			</#if> 
666		</#if> 
667		<#assign dateObj=dateUtil.parseDate("yyyy-MM-dd", pFecha, pLocale)> 
668		<#assign fecha=dateUtil.getDate(dateObj, vFormato,pLocale)> 
669		<#return fecha> 
670	</#function> 
671	  
672	<#-- funcion para la informacion de ficheros --> 
673	<#function getFileEntry url> 
674		<#assign parts=url?split("/")> 
675		<#--<#assign group_id=getterUtil.getLong(parts[2] )>--> 
676		<#assign group_id=getterUtil.getLong(parts[4] )> 
677		<#--<#assign parts=parts[5]?split("?")>--> 
678		<#assign parts=parts[7]?split("?")> 
679		<#assign uuid=parts[0]> 
680		<#assign fileEntryService=serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")> 
681		<#return fileEntryService.getDLFileEntryByUuidAndGroupId(uuid?string, group_id) /> 
682	</#function> 
683 
684	<#function getTitle element> 
685		<#if getterUtil.getBoolean(element)> 
686			<#return "title='" + languageUtil.get(locale, "opens-new-window" ) + "'"> 
687		</#if> 
688		<#return ""> 
689	</#function> 
690 
691	<#function hayImagenes> 
692	<#--VALOR EN EL PRIMER ELEMENTO --> 
693		<#assign numImagenes=0/> 
694		<#if bloqueImagenes.getSiblings()?has_content> 
695			<#list bloqueImagenes.getSiblings() as cur_Imagen> 
696				<#if (cur_Imagen.getChild('imagen').getData())?? && cur_Imagen.getChild('imagen').getData() !=""> 
697					<#assign numImagenes=numImagenes + 1 > 
698				</#if> 
699			</#list> 
700		</#if> 
701		<#return numImagenes> 
702	</#function> 
703 
704	<#macro getImagenDestino> 
705		<#list bloqueImagenes.getSiblings() as curBloque> 
706			<#assign image=curBloque.getChild('imagen').getData()> 
707			<#assign alt=curBloque.getChild('imagen').getAttribute('alt')> 
708			<#if !validator.equalsSorted([image] ,[""] )> 
709				<img class="w-100" src="${image}" alt="${alt}" /> 
710				<#break> 
711			</#if> 
712		</#list> 
713	</#macro> 
714 
715<script> 
716	function inicializarMapa() { 
717		<#if latitud.getData()?? && !validator.equalsSorted([latitud.getData()] ,[""] ) && longitud.getData()?? && !validator.equalsSorted([longitud.getData()] ,[""] )> 
718			var latitud =${htmlUtil.escape(latitud.getData())}; 
719			var longitud =${htmlUtil.escape(longitud.getData())}; 
720		<#else> 
721			var latitud =""; 
722			var longitud =""; 
723		</#if> 
724		 
725		 
726		if (latitud != "" && longitud != ""){ 
727			var mapa = new google.maps.Map(document.getElementById('mapaUdaleku'), { 
728				center: { lat: latitud, lng: longitud }, 
729				zoom: 17 
730			}); 
731			var marcador = new google.maps.Marker({ 
732				position: { lat: latitud, lng: longitud }, 
733				map: mapa, 
734				title: 'Ubicación' 
735			}); 
736
737		 
738
739	function udaScrollTabla(carouselSelector) { 
740		function scrollEv(leftArrow, rightArrow, carousel) { 
741			if (carousel.scrollLeft() <= 0) { 
742				leftArrow.prop("disabled", true); 
743				rightArrow.focus(); 
744			} else { 
745				leftArrow.prop("disabled", false); 
746
747			if (carousel.scrollLeft() >= carousel[0].scrollWidth - carousel.outerWidth() - 1) { 
748				rightArrow.prop("disabled", true); 
749				leftArrow.focus(); 
750			} else { 
751				rightArrow.prop("disabled", false); 
752
753
754 
755		function clicleftArrow(carousel, rectList) { 
756			let shiftScroll; 
757			for (let i = 0; i < rectList.length; i++) { 
758				if (carousel.scrollLeft() > rectList[rectList.length - 1]) { 
759					shiftScroll = rectList[rectList.length - 1]; 
760				} else if (carousel.scrollLeft() > rectList[i] && carousel.scrollLeft() <= rectList[i + 1]) { 
761					shiftScroll = rectList[i]; 
762
763
764			carousel.animate({ 
765				scrollLeft: shiftScroll 
766			}, "slow"); 
767
768 
769		function clickRight(carousel, rectList) { 
770			let shiftScroll; 
771			for (let i = 0; i < rectList.length; i++) {	 
772				if (carousel.scrollLeft() >= rectList[i] - 1 && carousel.scrollLeft() < rectList[i + 1]) { 
773					shiftScroll = rectList[i + 1];	 
774
775
776			carousel.animate({ 
777				scrollLeft: shiftScroll 
778			}, "slow"); 
779
780		function listRectCarousel(carousel) { 
781			let rectList = []; 
782			let firstRect = carousel.find(".carousel-unit").first().offset().left; 
783			carousel.find(".carousel-unit").each(function() { 
784				let rect = $(this).offset().left - firstRect; 
785				rectList.push(rect); 
786			}); 
787 
788			return rectList; 
789
790 
791 
792		let leftArrow = carouselSelector.find(".left-arrow"); 
793		let rightArrow = carouselSelector.find(".right-arrow"); 
794		let carousels = carouselSelector.find(".carousel-scroll"); 
795		let carouselMensaje = carouselSelector.find(".message_containerUdaTabla"); 
796		let rectList = listRectCarousel(carousels); 
797		leftArrow.on("click", () => { 
798			clicleftArrow(carousels, rectList); 
799			launchMessage('<span>${strTablaDesplazamiento}</span>', carouselMensaje); 
800		}); 
801 
802		rightArrow.on("click", () => { 
803			clickRight(carousels, rectList); 
804			launchMessage('<span>${strTablaDesplazamiento}</span>', carouselMensaje); 
805		}); 
806 
807		carousels.on("scroll", () => { 
808			scrollEv(leftArrow, rightArrow, carousels); 
809		}); 
810 
811		$(window).on("resize", () => { 
812			rectList = listRectCarousel(carousels); 
813			scrollEv(leftArrow, rightArrow, carousels); 
814		}); 
815 
816		$(document).ready(function() { 
817			var contador = 0; 
818			$(document).keydown(function(objEvent) { 
819				objeto = objEvent.target; 
820				var clase = objeto.className; 
821				if (clase == "carousel_item") { 
822					if (objEvent.keyCode == 9) { 
823						if (objEvent.shiftKey) { 
824							var ancho = $(".carousel_item").width(); 
825							if (ancho != null) { 
826								contador--; 
827								carouselSelector.scrollLeft((ancho - 40) * contador); 
828
829						} else { 
830							var ancho = $(".carousel_item").width(); 
831							if (ancho != null) { 
832								contador++; 
833								carouselSelector.scrollLeft((ancho + 40) * contador); 
834
835
836
837
838			}); 
839		}); 
840 
841		function launchMessage(message, containerId) { 
842			$(containerId).html(message); 
843			setTimeout(function() { 
844				$(containerId).find('span').remove(); 
845			}, 250); 
846		} // end launchMessage 
847
848	$(document).ready(function () { 
849		<#if (turnosEntries?size> zero)> 
850			var maxScrollLeft = $('#udaTablaScroll .carousel-scroll').get(0).scrollWidth - $('#udaTablaScroll .carousel-scroll').get(0).clientWidth; 
851			if(maxScrollLeft > 0){ 
852				$('#udaTablaScroll .columnas-slider').removeClass('d-none'); 
853				$('#udaTablaScroll .columnas-slider').addClass('d-flex'); 
854
855			udaScrollTabla($("#udaTablaScroll")); 
856		</#if> 
857		 
858		/*GALERIA FOTOS INSTALACION*/ 
859		$('#uda-detalle-btn-galeria').on('click', function(){ 
860			$('.bipo-udaleku_galeria>.bipo-udaleku_galeria_element:first-of-type a.bipo_item_galeria').trigger('click'); 
861			$('#lightGalleryPhotos').removeClass('d-none'); 
862			 
863			 
864		}) 
865		 
866		var $galerialightGalleryPhotos = $('#lightGalleryPhotos').lightGallery({ 
867			selector: '.bipo_item_galeria', 
868			download: false, 
869			keyPress: true, 
870			enableDrag: false, 
871		}); 
872		 
873		$galerialightGalleryPhotos.on('onAfterOpen.lg', function(event) { 
874			$('.lg-prev .sr-only').text('<@liferay.language key="uda.lightGallery.anterior"/>'); 
875			$('button.lg-next span.sr-only').text('<@liferay.language key="uda.lightGallery.siguiente"/>'); 
876			$('button.lg-close span.sr-only').text('<@liferay.language key="uda.lightGallery.cerrar"/>'); 
877			$('button.lg-download span.sr-only').text('<@liferay.language key="uda.lightGallery.descargar"/>'); 
878			$('button.lg-video-play span.sr-only').text('<@liferay.language key="uda.lightGallery.reproducir"/>'); 
879			$('button.lg-fullscreen span.sr-only').text('<@liferay.language key="uda.lightGallery.pantalla-completa"/>'); 
880			$('button.lg-toogle-thumb span.sr-only').text('<@liferay.language key="uda.lightGallery.miniatura"/>'); 
881			$('.bipo_item_galeria').attr("aria-expanded", true); 
882		}); 
883		 
884		$galerialightGalleryPhotos.on('onBeforeClose.lg', function(event) { 
885			$('.bipo_item_galeria').attr("aria-expanded", false); 
886			$('#lightGalleryPhotos').addClass('d-none'); 
887		}); 
888		 
889		/*VIDEO*/ 
890		var $galeriaVideo = $(document).ready(function(){ 
891			$('#header_lightGalleryHeader').lightGallery({ 
892				thumbnail: false, 
893				counter:false, 
894				download: false 
895			}); 
896		}); 
897		 
898	   $galeriaVideo.on('onAfterAppendSubHtml.lg', function(event){             
899			$('.lg-close span.sr-only').text('<@liferay.language key="uda.lightGallery.cerrar"/>'); 
900			$('.lg-toogle-transcription').html('<@liferay.language key="lightgallery.transcription" />'); 
901			$('.lg-video-play span.sr-only').text('<@liferay.language key="uda.lightGallery.reproducir"/>'); 
902			$('.lg-fullscreen span.sr-only').text('<@liferay.language key="uda.lightGallery.pantalla-completa"/>'); 
903		});  
904		 
905		 
906		 
907		/*DIARIO ESTANCIAS*/ 
908		var $galeria = $('.bipo-udaleku_galeria').lightGallery({ 
909			selector: '.bipo_item_galeria', 
910			download: false, 
911			keyPress: true, 
912			enableDrag: false, 
913		}); 
914	    
915	    
916	   $galeria.on('onAfterOpen.lg', function(event) { 
917			$('.lg-prev .sr-only').text('<@liferay.language key="uda.lightGallery.anterior"/>'); 
918			$('button.lg-next span.sr-only').text('<@liferay.language key="uda.lightGallery.siguiente"/>'); 
919			$('button.lg-close span.sr-only').text('<@liferay.language key="uda.lightGallery.cerrar"/>'); 
920			$('button.lg-download span.sr-only').text('<@liferay.language key="uda.lightGallery.descargar"/>'); 
921			$('button.lg-video-play span.sr-only').text('<@liferay.language key="uda.lightGallery.reproducir"/>'); 
922			$('button.lg-fullscreen span.sr-only').text('<@liferay.language key="uda.lightGallery.pantalla-completa"/>'); 
923			$('button.lg-toogle-thumb span.sr-only').text('<@liferay.language key="uda.lightGallery.miniatura"/>'); 
924			$('.bipo_item_galeria').attr("aria-expanded", true); 
925		}); 
926	 
927		$galeria.on('onBeforeClose.lg', function(event) { 
928			$('.bipo_item_galeria').attr("aria-expanded", false); 
929		}); 
930		 
931		 
932		 
933		$(".ejemplo_read_more").each(function() { 
934			if (typeof $(this).readmore === 'function') { 
935				$(this).readmore({ 
936					collapsedHeight: 250, 
937					heightMargin: 60, 
938					embedCSS: false, 
939					moreLink: '<button class="bipo_toggle_contenido"><span class="bipoicon iconflecha_acordeon_desplegar"></span><span class="bipo_texto_boton"><@liferay.language key="dpt-parrafos-titulados.show-more" /></span></button>', 
940					lessLink: '<button class="bipo_toggle_contenido"><span class="bipoicon iconflecha_acordeon_plegar"></span><span class="bipo_texto_boton"><@liferay.language key="dpt-parrafos-titulados.show-less" /></span></button>', 
941					afterToggle: function() { 
942						$('.ejemplo_read_more').trigger('resize'); 
943
944				}); 
945
946		}); 
947		// Establecer el tamaño del contenedor 
948		 $('#mapaUdaleku').css({ 
949			'height': '380px' 
950		}); 
951		 
952		inicializarMapa() 
953	}); 
954		 
955	<#if (turnosEntries?size> zero)> 
956		$( window ).on( "resize", function() { 
957			var maxScrollLeft = $('#udaTablaScroll .carousel-scroll').get(0).scrollWidth - $('#udaTablaScroll .carousel-scroll').get(0).clientWidth; 
958		   if(maxScrollLeft > 0){ 
959				$('#udaTablaScroll .columnas-slider').removeClass('d-none'); 
960				$('#udaTablaScroll .columnas-slider').addClass('d-flex'); 
961			}else{ 
962				$('#udaTablaScroll .columnas-slider').removeClass('d-flex'); 
963				$('#udaTablaScroll .columnas-slider').addClass('d-none'); 
964
965		} ); 
966	</#if> 
967</script> 
968 
969 
970<#if pruebas><p>AL FINALIZAR:${.now?string}</p>	</#if> 

Kontaktua