Barria
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
-
Harremanetarako telefonoa:946 083 360
Neguko ordutegia:
astelehenetik ostiralera, 08:30etik 19:00etara.
Uztaileko eta abuztuko ordutegia:
astelehenetik ostiralera, 08:30etik 14:30etara.