The following has evaluated to null or missing: ==> relatedArticle.getStructureId [in template "842907#842945#35142" at line 102, column 42] ---- 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 relatedArticleStructureId = r... [in template "842907#842945#35142" at line 102, column 5] ----
1<!-- SERVICES -->
2<#assign
3 groupLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.GroupLocalService")
4 assetHelperLocalService = serviceLocator.findService("net.bizkaia.iybiscuc.service.AssetHelperLocalService")
5 journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
6 assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")
7 assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")
8 assetLinkLocalService = serviceLocator.findService("com.liferay.asset.link.service.AssetLinkLocalService")
9 dDMStructureLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMStructureLocalService")
10 fileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")
11 structureLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMStructureLocalService")
12 classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService")
13 assetUtil = serviceLocator.findService("com.liferay.asset.util.AssetHelper")
14
15 jsonFactoryUtil = staticUtil["com.liferay.portal.kernel.json.JSONFactoryUtil"]
16 dlAppLocalServiceUtil = staticUtil["com.liferay.document.library.kernel.service.DLAppLocalServiceUtil"]
17 dlUrlHelperUtil = serviceLocator.findService('com.liferay.document.library.kernel.util.DLUtil')
18 httpComponentsUtil = staticUtil["com.liferay.portal.kernel.util.HttpComponentsUtil"]
19
20 serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()
21
22 urlEncoder = staticUtil["java.net.URLEncoder"]
23 textFormatter = staticUtil["com.liferay.portal.kernel.util.TextFormatter"]
24
25 templateFunctionsHelperLocalService = serviceLocator.findService('net.bizkaia.iybiscuc.service.TemplateFunctionsHelperLocalService')
26/>
27
28<!-- VARIABLES -->
29<#assign
30 articleId = .vars['reserved-article-id'].data
31 articleTitle = .vars['reserved-article-title'].data
32 journalArticle = journalArticleLocalService.getArticle(articleGroupId, articleId)
33 group = groupLocalService.fetchGroup(articleGroupId)
34 groupName = group.getDescriptiveName(locale)
35 articlePK = journalArticle.getResourcePrimKey()
36 journalArticleClassName = "com.liferay.journal.model.JournalArticle"
37 classNameId = classNameLocalService.getClassNameId(journalArticleClassName)
38 vocabularyScheduleRegionId = propsUtil.get("bipo.vocabulary.scheduleRegion")
39/>
40
41<#assign eventoAccionSocial = ""/>
42<#if journalArticle.getGroupId() == 880285>
43 <#assign eventoAccionSocial = "true"/>
44</#if>
45
46<#if request?has_content>
47 <#assign portletNamespace = themeDisplay.getPortletDisplay().getId() + "_" >
48 <#assign currentURL = themeDisplay.getURLPortal()+themeDisplay.getURLCurrent() />
49 <#assign completeCurrentUrl = urlEncoder.encode(currentURL?string?split("?")[0]?string, "UTF-8")>
50 <#assign pathThemeImages = themeDisplay.getPathThemeImages()>
51
52 <#assign imagesPath = pathThemeImages>
53<#else>
54 <#assign portletNamespace = articleId + '_'>
55 <#assign completeCurrentUrl = 'https://www.bizkaia.eus'>
56 <#assign imagesPath = '/o/IYBITBIC/images'>
57</#if>
58
59<#assign encodedTitle = urlEncoder.encode(articleTitle, "UTF-8")>
60
61
62<#assign structure = structureLocalService.getStructure(company.groupId, classNameId, journalArticle.DDMStructureKey) >
63
64<#assign categories = assetCategoryLocalService.getCategories(journalArticleClassName, articlePK) />
65
66<#assign categoryNames = []>
67<#assign categoryIds = []>
68<#list categories as category>
69 <#if stringUtil.equalsIgnoreCase(category.vocabularyId?string,vocabularyScheduleRegionId?string)>
70 <#assign categoryNames = categoryNames + [ "${category.getTitle(locale)}" ] />
71 <#assign categoryIds = categoryIds + [ category.categoryId ] />
72 </#if>
73</#list>
74
75<#assign format = []>
76<#assign format = format + ["dd"] >
77<#assign format = format + ["MM"] >
78<#assign format = format + ["yyyy"] >
79<#assign dateFormat = languageUtil.format(locale, "dateFormat.dd-mm-yyyy", format)>
80<#assign dateTexts = []>
81<#assign dateTimes = []>
82<#list datesFieldSet.datesFieldSetFieldSet.getSiblings() as date>
83 <#assign dateTexts = dateTexts + [getDateText(date.startDate.getData(), date.endDate.getData(), date.allDay.getData(), dateFormat)]>
84 <#assign dateTimes = dateTimes + [date.eventTime]>
85</#list>
86
87<!--RELATED ASSETS-->
88<#assign journalArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", articlePK) />
89<#assign journalArticleAssetEntryId = journalArticleAssetEntry.getEntryId() />
90<#-- <#assign journalArticleRelatedLinks = assetLinkLocalService.getDirectLinksIds(journalArticleAssetEntryId) /> -->
91<#assign journalArticleRelatedLinks = assetLinkLocalService.getDirectLinks(journalArticleAssetEntryId) />
92
93<#assign espaciosStructureId = propsUtil.get("bipo.estructure.espacios")>
94<#assign espaciosStructure = dDMStructureLocalService.getDDMStructure(espaciosStructureId?number)>
95<#assign related_articles = []>
96<#list journalArticleRelatedLinks as related_entry>
97 <#assign relatedAssetEntryId = related_entry.getEntryId2() />
98 <#assign relatedAssetEntry = assetEntryLocalService.getEntry(relatedAssetEntryId) />
99
100 <#assign relatedAssetEntryPrimKey = relatedAssetEntry.getClassPK() />
101 <#assign relatedArticle = journalArticleLocalService.getLatestArticle(relatedAssetEntryPrimKey, 0) />
102 <#assign relatedArticleStructureId = relatedArticle.getStructureId() />
103 <#--
104 <#assign renderer = relatedAssetEntry.getAssetRenderer()>
105 <#assign relatedArticle = renderer.getArticle() >
106 <#assign relatedArticleStructureId = relatedArticle.getStructureId() />
107-->
108 <#if stringUtil.equalsIgnoreCase(relatedArticleStructureId, espaciosStructure.getStructureKey())>
109 <#assign related_articles = related_articles + [relatedArticle]>
110 </#if>
111</#list>
112
113
114
115<script src="${httpComponentsUtil.getProtocol(completeCurrentUrl)}://connect.facebook.net/${locale}/all.js#xfbml=1"></script>
116
117<div class="bipo_gurebizkaia_detalle bg_gray">
118 <div class="container">
119 <div class="row">
120 <div class="col-xxs-12 col-xxs-offset-0 col-xs-10 col-xs-offset-1 col-sm-10 col-sm-offset-1 col-md-offset-1 col-md-10">
121 <h1><span>${articleTitle}</span></h1>
122 </div>
123 </div>
124 </div>
125 <!-- Redes sociales, entradilla, contenido 1 y audio -->
126 <div class="container">
127 <div class="row">
128 <#if !stringUtil.equalsIgnoreCase("", eventImageFieldSet.eventImage.getData())>
129
130 <div class="col-xxs-12 col-xxs-offset-0 col-xs-10 col-xs-offset-1 col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-1 d-block d-md-none">
131 <img src="${eventImageFieldSet.eventImage.getData()}" alt="${htmlUtil.escape(eventImageFieldSet.eventImageFieldSetFieldSet.getChild('alt').getData())}">
132 </div>
133 </#if>
134
135 <div class="info-derecha col-xxs-12 col-xxs-offset-0 col-xs-10 col-xs-offset-1 col-sm-10 col-sm-offset-1 col-md-3 col-md-offset-0 d-block d-md-none">
136 <div class="bipo_detalle_info bg-white">
137 <ul class="row">
138
139 <#if dateTexts?has_content>
140 <#list dateTexts as dateText>
141 <li class="col-xxs-6 col-xs-6 col-sm-6 col-md-12">
142 <p><span class="bipoicon icon-calendario_02"></span><@liferay.language key="gbi-agenda-detalle.when" /></p>
143 <p>${dateText}</p>
144 </li>
145 <#if dateTimes[dateText_index]?has_content && !stringUtil.equalsIgnoreCase("", dateTimes[dateText_index].getData())>
146 <li class="col-xxs-6 col-xs-6 col-sm-6 col-md-12">
147 <p><span class="bipoicon icon-clock"></span><@liferay.language key="hour" /></p>
148 <p>${dateTimes[dateText_index].getData()}</p>
149 </li>
150 </#if>
151 </#list>
152 </#if>
153 <#if related_articles?has_content>
154 <li class="col-xxs-6 col-xs-6 col-sm-6 col-md-12">
155 <p><span class="bipoicon icon-localizador"></span><@liferay.language key="gbi-agenda-detalle.where" /></p>
156 <p>
157 <#list related_articles as related_article>
158 <#assign espacioViewURL = related_article.getUrlTitle() >
159 <#assign espacioTitle = related_article.getTitle(locale)>
160
161 <a href="${espacioViewURL}">${espacioTitle}</a>
162 <#if related_articles?last != related_article>
163 <br />
164 </#if>
165 </#list>
166 </p>
167 </li>
168 </#if>
169 <#if !stringUtil.equalsIgnoreCase("", eventWebFieldSet.eventWeb.getData())>
170 <#assign targetTitle = getTitle(eventWebFieldSet.eventWebFieldSetFieldSet.getChild('target').getData()) />
171
172 <li class="col-xxs-6 col-xs-6 col-sm-6 col-md-12">
173 <p><span class="bipoicon icon-link"></span><@liferay.language key="gbi-agenda-detalle.web" /></p>
174 <p><a href="${eventWebFieldSet.eventWeb.getData()}" target="${getTarget(eventWebFieldSet.eventWebFieldSetFieldSet.getChild('target').getData())}" ${targetTitle}><@liferay.language key="gbi-agenda-detalle.to-visit" /></a></p>
175 </li>
176 </#if>
177 <#if !stringUtil.equalsIgnoreCase("", locationPlace.getData()) && !stringUtil.equalsIgnoreCase("", locationAddress.getData()) && !stringUtil.equalsIgnoreCase("", eventoAccionSocial)>
178 <li class="col-xxs-6 col-xs-6 col-sm-6 col-md-12">
179 <p><span class="bipoicon icon-localizador"></span><@liferay.language key="agenda-all.place" /></p>
180 <p class="top_lugar">${locationPlace.getData()}</p>
181 <p>${locationAddress.getData()}</p>
182
183 </li>
184 </#if>
185 <#if !(themeDisplay.scopeGroupId == groupId) && (9027320 == groupId)>
186 <li>
187
188 <span class="bipoicon icon-icono_presencial">
189 <span class="sr-only"><@liferay.language key="group" /></span>
190 </span>
191 <span><@liferay.language_format key='gbi-agenda.eventFrom' arguments='${groupName}' /></span>
192 </li>
193 </#if>
194
195 <#if mostrarFormularioInscripcion?has_content && getterUtil.getBoolean(mostrarFormularioInscripcion.getData())>
196 <#assign mostrarFormularioInscripcion_FechaLimiteMostrarForm_Data = getterUtil.getString(mostrarFormularioInscripcion.FechaLimiteMostrarForm.getData())>
197 <#if validator.isNotNull(mostrarFormularioInscripcion_FechaLimiteMostrarForm_Data)>
198 <#assign horaLimite = "00:00" />
199 <#if mostrarFormularioInscripcion.HoraLimiteMostrarForm.getData()?? && mostrarFormularioInscripcion.HoraLimiteMostrarForm.getData() != "">
200 <#assign horaLimite = mostrarFormularioInscripcion.HoraLimiteMostrarForm.getData() />
201 </#if>
202 <#assign mostrarFormularioInscripcion_FechaLimiteMostrarForm_DateObj = dateUtil.parseDate("yyyy-MM-dd hh:mm", mostrarFormularioInscripcion_FechaLimiteMostrarForm_Data + " " + horaLimite, locale)>
203 <#if dateUtil.parseDate("yyyy-MM-dd hh:mm", .now?datetime?iso("Europe/Berlin")[0..16]?replace("T", " "), locale)?datetime lte mostrarFormularioInscripcion_FechaLimiteMostrarForm_DateObj?datetime>
204 <li class="col-12">
205 <p class="p-0"><span class="bipoicon icon-plataforma_tecnologica"></span><@liferay.language key="uda.apuntate" /></p>
206 <div id="contNicAgendaMov"></div>
207 </li>
208 </#if>
209 </#if>
210 </#if>
211 </ul>
212
213 <#if BotonReservar?? && !stringUtil.equalsIgnoreCase("", BotonReservar.getSiblings()[0].EnlaceReserva.getData()) >
214 <div class="reservas">
215 <p><@liferay.language key="bipo.sw.reserva" /></p>
216 <#if MostrarCampoNumeroPersonas?? && getterUtil.getBoolean(MostrarCampoNumeroPersonas.getData())>
217 <p>
218 <label for="${portletNamespace}nPersonas"><@liferay.language key="bipo.sw.personas" />:</label>
219 <input type="text" id="${portletNamespace}nPersonas" name="${portletNamespace}nPersonas" value="1" title="<@liferay.language key="bipo.sw.personas" />"/>
220 </p>
221 </#if>
222 <#list BotonReservar.getSiblings() as curBotonReservar>
223 <p><a class="btn btn-rojo" onclick="irReservas('${curBotonReservar.EnlaceReserva.getData()}', ${getterUtil.getBoolean(BotonReservar.AbrirFuera.getData())?c}, event)" href="${curBotonReservar.EnlaceReserva.getData()}" <#if getterUtil.getBoolean(BotonReservar.AbrirFuera.getData())>target="_blank" title="<@liferay.language key="opens-new-window" />"</#if> >${curBotonReservar.TextoBoton.getData()}</a></p>
224 </#list>
225 </div>
226
227 <script type="text/javascript">
228 function irReservas(url, abrirFuera, event){
229 event.preventDefault();
230 var target = "_self";
231 if(abrirFuera){
232 target = "_blank";
233 }
234 <#if MostrarCampoNumeroPersonas?? && getterUtil.getBoolean(MostrarCampoNumeroPersonas.getData())>
235 var nPersonas = $("#${portletNamespace}nPersonas").val();
236 if(nPersonas != "" && !isNaN(parseFloat(nPersonas)) && isFinite(nPersonas)){
237 window.open(url+"/"+nPersonas, target);
238 }else{
239 $("#${portletNamespace}modalErrores").modal("show");
240 }
241 <#else>
242 window.open(url, target);
243 </#if>
244 }
245 </script>
246 </#if>
247 <#if formularioTopaketak?has_content && getterUtil.getBoolean(formularioTopaketak.getData())>
248 <#if (validator.isNotNull(formularioTopaketak.FechaInscripcionDesde.getData()) && validator.isNotNull(formularioTopaketak.FechaInscripcionHasta.getData()))>
249 <!-- Fecha de inicio -->
250
251 <#assign formularioTopaketak_FechaInscripcionDesde_Data = getterUtil.getString(formularioTopaketak.FechaInscripcionDesde.getData())>
252 <#if validator.isNotNull(formularioTopaketak.HoraInscripcionDesde.getData())>
253 <#assign formularioTopaketak_HoraInscripcionDesde_Data = getterUtil.getString(formularioTopaketak.HoraInscripcionDesde.getData())>
254 <#assign formularioTopaketak_FechaInicio = formularioTopaketak_FechaInscripcionDesde_Data + " " +formularioTopaketak_HoraInscripcionDesde_Data>
255 <#else>
256 <#assign formularioTopaketak_FechaInicio = formularioTopaketak_FechaInscripcionDesde_Data + " 00:00" >
257 </#if>
258
259
260
261
262 <!-- Fecha de fin -->
263 <#assign formularioTopaketak_FechaInscripcionHasta_Data = getterUtil.getString(formularioTopaketak.FechaInscripcionHasta.getData())>
264 <#if validator.isNotNull(formularioTopaketak.HoraInscripcionHasta.getData())>
265 <#assign formularioTopaketak_HoraInscripcionHasta_Data = getterUtil.getString(formularioTopaketak.HoraInscripcionHasta.getData())>
266 <#assign formularioTopaketak_FechaFin = formularioTopaketak_FechaInscripcionHasta_Data + " " +formularioTopaketak_HoraInscripcionHasta_Data>
267 <#else>
268 <#assign formularioTopaketak_FechaFin = formularioTopaketak_FechaInscripcionHasta_Data + " 00:00" >
269 </#if>
270
271 <#assign fechaActual = .now?string("yyyy-MM-dd HH:mm")>
272
273 <#if ((fechaActual?date("yyyy-MM-dd HH:mm") >= formularioTopaketak_FechaInicio?date("yyyy-MM-dd HH:mm")) && (fechaActual?date("yyyy-MM-dd HH:mm") <= formularioTopaketak_FechaFin?date("yyyy-MM-dd HH:mm")))>
274 <!--La fecha actual se encuentra entre las fechas especificadas.-->
275 <div class="topaketak">
276 <#assign portletId = themeDisplay.getPortletDisplay().getInstanceId()/>
277 <#assign urlTitle = journalArticle.getUrlTitle(locale)/>
278 <p><a class="btn btn-lg btn-primary" data-senna-off="true" <#if themeDisplay.getLocale() == "eu_ES">
279 href="/eu/inscripcion?evento=${articleId}&p=${portletId}"
280 <#else>
281 href="/es/inscripcion?evento=${articleId}&p=${portletId}"
282 </#if> target="" title="" ><@liferay.language key="topaketak.inscribirse" /></a></p>
283 </div>
284 <#else>
285 <!--La fecha actual no se encuentra entre las fechas especificadas.-->
286 </#if>
287
288 </#if>
289 </#if>
290 </div>
291 </div>
292
293
294 <div class="col-xxs-12 col-xxs-offset-0 col-xs-10 col-xs-offset-1 col-sm-10 col-sm-offset-1 col-md-8 col-md-offset-1">
295 <#if !stringUtil.equalsIgnoreCase("", eventImage.getData())>
296 <img src="${eventImage.getData()}" alt="${htmlUtil.escape(eventImage.getChild('alt').getData())}" class="d-none d-md-block">
297 </#if>
298 <div class="bg_white">
299 <div class="row">
300 <div class="col-xxs-12 col-xxs-offset-0 col-xs-10 col-xs-offset-1 col-sm-10 col-sm-offset-1 col-md-10 col-md-offset-2">
301 <#if !stringUtil.equalsIgnoreCase("0", categoryNames?size?string)>
302 <p class="bipo_detalle_categoria">
303 <#list categoryNames as curCategory >
304 <#if !stringUtil.equalsIgnoreCase("", curCategory)>
305 ${curCategory}
306 </#if>
307 </#list>
308 </p>
309 </#if>
310 </div>
311 </div>
312 <div class="row">
313 <div class="col-md-1 col-md-offset-1 bipo_container_social hidden-xxs ">
314 <@social />
315 </div>
316 <div class="col-xxs-10 col-xxs-offset-1 col-xs-10 col-xs-offset-1 col-sm-10 col-sm-offset-1 col-md-10 col-md-offset-0">
317 <div class="row">
318 <div class="col-md-10 bipo_contenido">
319 ${body.getData()}
320 </div>
321 </div>
322 <!-- Tabs Información / Observaciones y Localización -->
323 <div class="bipo_info_tabs row">
324 <div class="col-md-10">
325 <#if !stringUtil.equalsIgnoreCase("",information.getChild('schedule').getData()) || !stringUtil.equalsIgnoreCase("", information.getChild('document').getSiblings()?first.getData()) || !stringUtil.equalsIgnoreCase("", information.getChild('moreInformation').getData()) || !stringUtil.equalsIgnoreCase("", observations.getData()) || !stringUtil.equalsIgnoreCase("", locationAddress.getData()) || (Ponentes?? && !stringUtil.equalsIgnoreCase("", Ponentes.getData())) >
326 <h2 class="sr-only"><@liferay.language key="details" />: ${articleTitle}</h2>
327 <ul class="bipo_tabs nav nav-tabs" role="tablist">
328 <#assign tabActive = false>
329 <#if !stringUtil.equalsIgnoreCase("",information.getChild('schedule').getData()) || !stringUtil.equalsIgnoreCase("", information.getChild('document').getSiblings()?first.getData()) || !stringUtil.equalsIgnoreCase("", information.getChild('moreInformation').getData())>
330 <#assign tabActive = true >
331 <li class="nav-item" id="${portletNamespace}bipo_enlace_informacion" role="none">
332 <a href="#${portletNamespace}tab_informacion" id="${portletNamespace}bipo_enlace_informacion_tab" aria-controls="${portletNamespace}tab_informacion" class="nav-link active" role="tab" data-toggle="tab" aria-selected="${tabActive?string}"><@liferay.language key="gbi-agenda-detalle.information" /></a>
333 </li>
334 </#if>
335 <#if !stringUtil.equalsIgnoreCase("", observations.getData())>
336 <li class="nav-item" id="${portletNamespace}bipo_enlace_observacion" role="none">
337 <#if tabActive>
338 <#assign classActive = "">
339 <#assign tabSelected = false>
340 <#else>
341 <#assign tabActive = true>
342 <#assign classActive = "active">
343 <#assign tabSelected = true>
344 </#if>
345 <a class="nav-link ${classActive}" href="#${portletNamespace}tab_observaciones" id="${portletNamespace}bipo_enlace_observaciones_tab" aria-controls="${portletNamespace}tab_observaciones" role="tab" data-toggle="tab" aria-selected="${tabSelected?string}"><@liferay.language key="gbi-agenda-detalle.observations" /></a>
346 </li>
347 </#if>
348 <#if formularioTopaketak?has_content && getterUtil.getBoolean(formularioTopaketak.getData())>
349 <#if formularioTopaketak.simultanea?? && formularioTopaketak.signos?? >
350 <li class="nav-item" id="${portletNamespace}bipo_enlace_servicio_complementario" role="none">
351 <#if tabActive>
352 <#assign classActive = "">
353 <#assign tabSelected = false>
354 <#else>
355 <#assign tabActive = true>
356 <#assign classActive = "active">
357 <#assign tabSelected = true>
358 </#if>
359 <a class="nav-link ${classActive}" href="#${portletNamespace}tab_servicios_complementarios" id="${portletNamespace}bipo_enlace_servicios_complementarios_tab" aria-controls="${portletNamespace}tab_servicios_complementarios" role="tab" data-toggle="tab" aria-selected="${tabSelected?string}"><@liferay.language key="topaketak.servicios.complementarios" /></a>
360 </li>
361 </#if>
362 </#if>
363 <#if !stringUtil.equalsIgnoreCase("", locationAddress.getData())>
364 <li class="nav-item" id="${portletNamespace}bipo_enlace_localizacion" role="none">
365 <#if tabActive>
366 <#assign classActive = "">
367 <#assign tabSelected = false>
368 <#else>
369 <#assign tabActive = true>
370 <#assign classActive = "active">
371 <#assign tabSelected = true>
372 </#if>
373 <a class="nav-link nav-link ${classActive}" href="#${portletNamespace}tab_localizacion" id="${portletNamespace}bipo_enlace_localizacion_tab" aria-controls="${portletNamespace}tab_localizacion" role="tab" data-toggle="tab" aria-selected="${tabSelected?string}"><@liferay.language key="gbi-agenda-detalle.location" /></a>
374 </li>
375 </#if>
376 <#if Ponentes?? && !stringUtil.equalsIgnoreCase("", Ponentes.getData())>
377 <li class="nav-item" id="${portletNamespace}bipo_enlace_ponentes" role="none">
378 <#if tabActive>
379 <#assign classActive = "">
380 <#assign tabSelected = false>
381 <#else>
382 <#assign tabActive = true>
383 <#assign classActive = "active">
384 <#assign tabSelected = true>
385 </#if>
386 <a class="nav-link ${classActive}" href="#${portletNamespace}tab_ponentes" id="${portletNamespace}bipo_enlace_ponentes_tab" aria-controls="${portletNamespace}tab_ponentes" role="tab" data-toggle="tab" aria-selected="${tabSelected?string}"><@liferay.language key="bipo.sw.ponentes" /></a>
387 </li>
388 </#if>
389 </ul>
390 </#if>
391 </div>
392 <div class="col-md-12 row">
393 <div class="col-md-10 bipo_contenido">
394 <div class="tab-content">
395 <#assign tabActive = false>
396 <#if !stringUtil.equalsIgnoreCase("",information.getChild('schedule').getData()) || !stringUtil.equalsIgnoreCase("", information.getChild('document').getSiblings()?first.getData()) || !stringUtil.equalsIgnoreCase("",information.getChild('moreInformation').getData())>
397 <#assign tabActive = true>
398 <div class="tab-pane fade show active" role="tabpanel" aria-labelledby="${portletNamespace}bipo_enlace_informacion_tab" id="${portletNamespace}tab_informacion">
399 <h3 class="sr-only"><@liferay.language key="gbi-agenda-detalle.information" /></h3>
400 <#if !stringUtil.equalsIgnoreCase("",information.getChild('schedule').getData())>
401 <div class="bipo_descargas">
402 <h4 class="bipo_titulo"><@liferay.language key="gbi-agenda-detalle.schedule" /></h4>
403 ${information.getChild('schedule').getData()}
404 </div>
405 </#if>
406
407 <#if !stringUtil.equalsIgnoreCase("", information.getChild('document').getSiblings()?first.getData())>
408 <div class="bipo_descargas">
409 <h4 class="bipo_titulo"><@liferay.language key="gbi-agenda-detalle.downloads" /></h4>
410 <ul>
411 <#list information.getChild('document').getSiblings() as curDocument>
412 <#if !stringUtil.equalsIgnoreCase("", curDocument.getData())>
413 <#assign fileEntry = getFileEntry(curDocument.getData()?replace(themeDisplay.getPortalURL(),'')) >
414 <#assign size = textFormatter.formatStorageSize(fileEntry.size, locale) >
415 <li>
416 <span class="bipoicon icon-descargar"></span>
417 <a href="${curDocument.getData()}" target="_blank" title="<@liferay.language key='opens-new-window' />">
418 ${fileEntry.title}
419 <span>(${fileEntry.extension}, ${size})</span>
420 </a>
421 </li>
422 </#if>
423 </#list>
424 </ul>
425 </div>
426 </#if>
427 <#if !stringUtil.equalsIgnoreCase("", information.getChild('moreInformation').getData())>
428 <div class="bipo_sumario">
429 <h4 class="bipo_titulo"><@liferay.language key="gbi-agenda-detalle.more-information" /></h4>
430 ${information.getChild('moreInformation').getData()}
431 </div>
432 </#if>
433 </div>
434 </#if>
435
436 <#if !stringUtil.equalsIgnoreCase("", observations.getData())>
437 <#if tabActive >
438 <div class="tab-pane fade" role="tabpanel" aria-labelledby="${portletNamespace}bipo_enlace_observaciones_tab" id="${portletNamespace}tab_observaciones">
439 <#else>
440 <div class="tab-pane fade show active" role="tabpanel" aria-labelledby="${portletNamespace}bipo_enlace_observaciones_tab" id="${portletNamespace}tab_observaciones">
441 <#assign tabActive = true>
442 </#if>
443 <h3 class="sr-only"><@liferay.language key="gbi-agenda-detalle.observations" /></h3>
444 ${observations.getData()}
445 </div>
446 </#if>
447
448 <#if formularioTopaketak?has_content && getterUtil.getBoolean(formularioTopaketak.getData())>
449 <#if formularioTopaketak.simultanea?? && formularioTopaketak.signos?? >
450 <#if tabActive >
451 <div class="tab-pane fade" role="tabpanel" aria-labelledby="${portletNamespace}bipo_enlace_servicios_complementarios_tab" id="${portletNamespace}tab_servicios_complementarios">
452 <#else>
453 <div class="tab-pane fadein active" role="tabpanel" aria-labelledby="${portletNamespace}bipo_enlace_servicios_complementarios_tab" id="${portletNamespace}tab_servicios_complementarios">
454 <#assign tabActive = true>
455 </#if>
456 <h3 class="sr-only"><@liferay.language key="topaketak.servicios.complementarios" /></h3>
457 <ul class="bipo_unordered_list">
458 <#if getterUtil.getBoolean(formularioTopaketak.simultanea.getData())>
459 <li class="tpk-simultanea"><strong><@liferay.language key="topaketak.traduccion.simultanea" /></strong><#if formularioTopaketak.simultanea.getChild('simultaneaIdioma').getOptions()?has_content><#list formularioTopaketak.simultanea.getChild('simultaneaIdioma').getOptions() as key><#if key != ""><#if formularioTopaketak.simultanea.getChild('simultaneaIdioma').getOptions()?first == key>:</#if>
460 <#if key == 'eu'>
461 <#assign simulLabel = stringUtil.toLowerCase(languageUtil.get(locale, "uda.idioma.euskera")) />
462 <#else>
463 <#assign simulLabel = stringUtil.toLowerCase(languageUtil.get(locale, "language." + key)) />
464 </#if>
465 ${simulLabel}<#if formularioTopaketak.simultanea.getChild('simultaneaIdioma').getOptions()?last != key>, </#if>
466 </#if>
467 </#list>
468
469 </#if>
470 </li>
471 </#if>
472 <#if getterUtil.getBoolean(formularioTopaketak.signos.getData())>
473 <li class="tpk-signos"><strong><@liferay.language key="topaketak.interpretacion.signos" /></strong></li>
474 </#if>
475 </ul>
476 </div>
477 </#if>
478 </#if>
479
480 <#if !stringUtil.equalsIgnoreCase("", locationPlace.getData()) && !stringUtil.equalsIgnoreCase("", locationAddress.getData())>
481 <#if tabActive >
482 <div class="tab-pane fade" role="tabpanel" aria-labelledby="${portletNamespace}bipo_enlace_localizacion_tab" id="${portletNamespace}tab_localizacion">
483 <#else>
484 <div class="tab-pane fade show active" role="tabpanel" aria-labelledby="${portletNamespace}bipo_enlace_localizacion_tab" id="${portletNamespace}tab_localizacion">
485 <#assign tabActive = true>
486 </#if>
487 <h3 class="sr-only"><@liferay.language key="gbi-agenda-detalle.location" /></h3>
488 <p class="sr-only">${locationPlace.getData()}. ${locationAddress.getData()}</p>
489 <div id="${portletNamespace}map" style="height:400px;width:100%"></div>
490 </div>
491 </#if>
492
493 <#if Ponentes?? && !stringUtil.equalsIgnoreCase("", Ponentes.getData())>
494 <#if tabActive >
495 <div class="tab-pane fade" role="tabpanel" aria-labelledby="${portletNamespace}bipo_enlace_ponentes_tab" id="${portletNamespace}tab_ponentes">
496 <#else>
497 <div class="tab-pane fade show active" role="tabpanel" aria-labelledby="${portletNamespace}bipo_enlace_ponentes_tab" id="${portletNamespace}tab_ponentes">
498 <#assign tabActive = true>
499 </#if>
500 <h3 class="sr-only"><@liferay.language key="bipo.sw.ponentes" /></h3>
501 ${Ponentes.getData()}
502 </div>
503 </#if>
504 </div>
505 </div>
506 </div>
507 </div>
508
509 </div>
510 </div>
511 <div class="col-xxs-10 col-xxs-offset-1 hidden-xs hidden-sm hidden-md hidden-lg visible-xxs">
512 <@social />
513 </div>
514 <!-- Fin Contenido 2 y sumario -->
515
516 </div>
517 </div>
518
519 <div class="info-derecha col-xxs-12 col-xxs-offset-0 col-xs-10 col-xs-offset-1 col-sm-10 col-sm-offset-1 col-md-3 col-md-offset-0 d-none d-md-block">
520 <div class="bipo_detalle_info bg-white">
521 <ul class="row">
522
523 <#if dateTexts?has_content>
524 <#list dateTexts as dateText>
525 <li class="col-xxs-6 col-xs-6 col-sm-6 col-md-12">
526 <p><span class="bipoicon icon-calendario_02"></span><@liferay.language key="gbi-agenda-detalle.when" /></p>
527 <p>${dateText}</p>
528 </li>
529 <#if dateTimes[dateText_index]?has_content && !stringUtil.equalsIgnoreCase("", dateTimes[dateText_index].getData())>
530 <li class="col-xxs-6 col-xs-6 col-sm-6 col-md-12">
531 <p><span class="bipoicon icon-clock"></span><@liferay.language key="hour" /></p>
532 <p>${dateTimes[dateText_index].getData()}</p>
533 </li>
534 </#if>
535 </#list>
536 </#if>
537 <#if related_articles?has_content>
538 <li class="col-xxs-6 col-xs-6 col-sm-6 col-md-12">
539 <p><span class="bipoicon icon-localizador"></span><@liferay.language key="gbi-agenda-detalle.where" /></p>
540 <p>
541 <#list related_articles as related_article>
542 <#assign espacioViewURL = related_article.getUrlTitle() >
543 <#assign espacioTitle = related_article.getTitle(locale)>
544
545 <a href="${espacioViewURL}">${espacioTitle}</a>
546 <#if related_articles?last != related_article>
547 <br />
548 </#if>
549 </#list>
550 </p>
551 </li>
552 </#if>
553 <#if !stringUtil.equalsIgnoreCase("", eventWeb.getData())>
554 <#assign targetTitle = getTitle(eventWeb.getChild('target').getData()) />
555
556 <li class="col-xxs-6 col-xs-6 col-sm-6 col-md-12">
557 <p><span class="bipoicon icon-link"></span><@liferay.language key="gbi-agenda-detalle.web" /></p>
558 <p><a href="${eventWeb.getData()}" target="${getTarget(eventWeb.getChild('target').getData())}" ${targetTitle}><@liferay.language key="gbi-agenda-detalle.to-visit" /></a></p>
559 </li>
560 </#if>
561 <#if !stringUtil.equalsIgnoreCase("", locationPlace.getData()) && !stringUtil.equalsIgnoreCase("", locationAddress.getData()) && !stringUtil.equalsIgnoreCase("", eventoAccionSocial)>
562 <li class="col-xxs-6 col-xs-6 col-sm-6 col-md-12">
563 <p><span class="bipoicon icon-localizador"></span><@liferay.language key="agenda-all.place" /></p>
564 <p class="top_lugar">${locationPlace.getData()}</p>
565 <p>${locationAddress.getData()}</p>
566
567 </li>
568 </#if>
569 <#--
570 <#if !(themeDisplay.scopeGroupId == groupId) && !(880315 == groupId)>
571
572 <li>
573 <span class="bipoicon icon-icono_presencial">
574 <span class="sr-only"><@liferay.language key="group" /></span>
575 </span>
576 <span><@liferay.language_format key='gbi-agenda.eventFrom' arguments='${groupName}' /></span>
577 </li>
578
579 </#if>
580-->
581 <#if mostrarFormularioInscripcion?has_content && getterUtil.getBoolean(mostrarFormularioInscripcion.getData())>
582 <#assign mostrarFormularioInscripcion_FechaLimiteMostrarForm_Data = getterUtil.getString(mostrarFormularioInscripcion.FechaLimiteMostrarForm.getData())>
583 <#if validator.isNotNull(mostrarFormularioInscripcion_FechaLimiteMostrarForm_Data)>
584 <#assign horaLimite = "00:00" />
585 <#if mostrarFormularioInscripcion.HoraLimiteMostrarForm.getData()?? && mostrarFormularioInscripcion.HoraLimiteMostrarForm.getData() != "">
586 <#assign horaLimite = mostrarFormularioInscripcion.HoraLimiteMostrarForm.getData() />
587 </#if>
588 <#assign mostrarFormularioInscripcion_FechaLimiteMostrarForm_DateObj = dateUtil.parseDate("yyyy-MM-dd hh:mm", mostrarFormularioInscripcion_FechaLimiteMostrarForm_Data + " " + horaLimite, locale)>
589 <#if dateUtil.parseDate("yyyy-MM-dd hh:mm", .now?datetime?iso("Europe/Berlin")[0..16]?replace("T", " "), locale)?datetime lte mostrarFormularioInscripcion_FechaLimiteMostrarForm_DateObj?datetime>
590 <li class="col-12">
591 <p class="p-0 font-weight-bold"><span class="bipoicon icon-plataforma_tecnologica"></span><@liferay.language key="iybiwnic.apuntate" /></p>
592 <div id="contNicAgendaEsc">
593 <span id="tipoFormInsc" class="hide">${mostrarFormularioInscripcion.TipoFormulario.getData()}</span>
594 <span id="idEvento" class="hide">${articleId}</span>
595 <span id="idGrupoEvento" class="hide">${articleGroupId}</span>
596 <#assign liferay_portlet = PortalJspTagLibs["/META-INF/liferay-portlet-ext.tld"] />
597 <@liferay_portlet["runtime"] instanceId="iybiwnic-inscripcionNicAgenda" portletName="iybiwnic-inscripcionNicAgenda" />
598 </div>
599 </li>
600 </#if>
601 </#if>
602 </#if>
603 </ul>
604
605 <#if BotonReservar?? && !stringUtil.equalsIgnoreCase("", BotonReservar.getSiblings()[0].EnlaceReserva.getData()) >
606 <div class="reservas">
607 <p><@liferay.language key="bipo.sw.reserva" /></p>
608 <#if MostrarCampoNumeroPersonas?? && getterUtil.getBoolean(MostrarCampoNumeroPersonas.getData())>
609 <p>
610 <label for="${portletNamespace}nPersonas"><@liferay.language key="bipo.sw.personas" />:</label>
611 <input type="text" id="${portletNamespace}nPersonas" name="${portletNamespace}nPersonas" value="1" title="<@liferay.language key="bipo.sw.personas" />"/>
612 </p>
613 </#if>
614 <#list BotonReservar.getSiblings() as curBotonReservar>
615 <p><a class="btn btn-rojo" onclick="irReservas('${curBotonReservar.EnlaceReserva.getData()}', ${getterUtil.getBoolean(BotonReservar.AbrirFuera.getData())?c}, event)" href="${curBotonReservar.EnlaceReserva.getData()}" <#if getterUtil.getBoolean(BotonReservar.AbrirFuera.getData())>target="_blank" title="<@liferay.language key="opens-new-window" />"</#if> >${curBotonReservar.TextoBoton.getData()}</a></p>
616 </#list>
617 </div>
618
619 <script type="text/javascript">
620 function irReservas(url, abrirFuera, event){
621 event.preventDefault();
622 var target = "_self";
623 if(abrirFuera){
624 target = "_blank";
625 }
626 <#if MostrarCampoNumeroPersonas?? && getterUtil.getBoolean(MostrarCampoNumeroPersonas.getData())>
627 var nPersonas = $("#${portletNamespace}nPersonas").val();
628 if(nPersonas != "" && !isNaN(parseFloat(nPersonas)) && isFinite(nPersonas)){
629 window.open(url+"/"+nPersonas, target);
630 }else{
631 $("#${portletNamespace}modalErrores").modal("show");
632 }
633 <#else>
634 window.open(url, target);
635 </#if>
636 }
637 </script>
638 </#if>
639 <#if formularioTopaketak?has_content && getterUtil.getBoolean(formularioTopaketak.getData())>
640 <#if (validator.isNotNull(formularioTopaketak.FechaInscripcionDesde.getData()) && validator.isNotNull(formularioTopaketak.FechaInscripcionHasta.getData()))>
641 <!-- Fecha de inicio -->
642
643 <#assign formularioTopaketak_FechaInscripcionDesde_Data = getterUtil.getString(formularioTopaketak.FechaInscripcionDesde.getData())>
644 <#if validator.isNotNull(formularioTopaketak.HoraInscripcionDesde.getData())>
645 <#assign formularioTopaketak_HoraInscripcionDesde_Data = getterUtil.getString(formularioTopaketak.HoraInscripcionDesde.getData())>
646 <#assign formularioTopaketak_FechaInicio = formularioTopaketak_FechaInscripcionDesde_Data + " " +formularioTopaketak_HoraInscripcionDesde_Data>
647 <#else>
648 <#assign formularioTopaketak_FechaInicio = formularioTopaketak_FechaInscripcionDesde_Data + " 00:00" >
649 </#if>
650
651
652
653
654 <!-- Fecha de fin -->
655 <#assign formularioTopaketak_FechaInscripcionHasta_Data = getterUtil.getString(formularioTopaketak.FechaInscripcionHasta.getData())>
656 <#if validator.isNotNull(formularioTopaketak.HoraInscripcionHasta.getData())>
657 <#assign formularioTopaketak_HoraInscripcionHasta_Data = getterUtil.getString(formularioTopaketak.HoraInscripcionHasta.getData())>
658 <#assign formularioTopaketak_FechaFin = formularioTopaketak_FechaInscripcionHasta_Data + " " +formularioTopaketak_HoraInscripcionHasta_Data>
659 <#else>
660 <#assign formularioTopaketak_FechaFin = formularioTopaketak_FechaInscripcionHasta_Data + " 00:00" >
661 </#if>
662
663
664 <#assign fechaActual = .now?string("yyyy-MM-dd HH:mm")>
665
666
667 <#if ((fechaActual?date("yyyy-MM-dd HH:mm") >= formularioTopaketak_FechaInicio?date("yyyy-MM-dd HH:mm")) && (fechaActual?date("yyyy-MM-dd HH:mm") <= formularioTopaketak_FechaFin?date("yyyy-MM-dd HH:mm")))>
668 <!--La fecha actual se encuentra entre las fechas especificadas.-->
669 <div class="topaketak">
670 <#assign portletId = themeDisplay.getPortletDisplay().getInstanceId()/>
671 <#assign urlTitle = journalArticle.getUrlTitle(locale)/>
672 <p><a class="btn btn-lg btn-primary" data-senna-off="true" <#if themeDisplay.getLocale() == "eu_ES">
673 href="/eu/inscripcion?evento=${articleId}&p=${portletId}"
674 <#else>
675 href="/es/inscripcion?evento=${articleId}&p=${portletId}"
676 </#if> target="" title="" ><@liferay.language key="topaketak.inscribirse" /></a></p>
677 </div>
678 <#else>
679 <!--La fecha actual no se encuentra entre las fechas especificadas.-->
680 </#if>
681
682 </#if>
683
684 </#if>
685 <script type="text/javascript">
686 function moverFormNicAgenda(){
687 if($(".inscripcionNicAgenda").length){
688 if(window.innerWidth >= 768){
689 $(".inscripcionNicAgenda").appendTo("#contNicAgendaEsc");
690 }else{
691 $(".inscripcionNicAgenda").appendTo("#contNicAgendaMov");
692 }
693 }
694 }
695
696 $(window).resize(function() {
697 moverFormNicAgenda();
698 });
699
700 moverFormNicAgenda();
701 </script>
702 </div>
703 </div>
704
705 <div class="container">
706 </div>
707 </div>
708 <@showRelated />
709 </div>
710
711 <div class="modal fade modal-hidden" id="${portletNamespace}modalErrores" tabindex="-1" role="dialog" data-backdrop="static" data-keyboard="false">
712 <div class="modal-dialog" role="document">
713 <div class="modal-content">
714 <div class="modal-body" id="errorText">
715 <p><@liferay.language key="bipo.sw.personas.rellenar"/></p>
716 </div>
717 <div class="modal-footer" id="botonesConfirmar">
718 <button type="button" id="botonCerrarModal" class="btn btn-rojo btn-primary" data-dismiss="modal" ><@liferay.language key="close"/></button>
719 </div>
720 </div>
721 </div>
722 </div>
723</div>
724
725<#macro social>
726 <div class="m-redes_sociales">
727 <ul>
728 <li>
729 <div class="taglib-social-bookmark-facebook" >
730 <div class="fb-like" data-href="${completeCurrentUrl}" data-layout="box_count" data-action="like" data-show-faces="false" data-share="false"></div>
731 </div>
732 </li>
733 <li>
734 <a class="facebook" href="https://www.facebook.com/sharer/sharer.php?u=${completeCurrentUrl}" target="_blank" title="<@liferay.language key='opens-new-window' />">
735 <span class="sr-only"><@liferay.language key="share-facebook" /></span><span class="bipoicon icon-facebook"></span>
736 </a>
737 </li>
738 <li>
739 <a class="twitter twitter-share-button" href="https://twitter.com/intent/tweet?url=${completeCurrentUrl}&text=${encodedTitle}" target="_blank" title="<@liferay.language key='opens-new-window' />" data-size="large">
740 <span class="sr-only"><@liferay.language key="share-twitter" /></span><span class="bipoicon icon-twitter"></span>
741 </a>
742 </li>
743 <li>
744 <a class="whatsapp" href="whatsapp://send?text=${completeCurrentUrl}" target="_blank" title="<@liferay.language key='opens-new-window' />">
745 <span class="sr-only"><@liferay.language key="share-whatsapp" /></span><span class="bipoicon icon-whatsapp"></span>
746 </a>
747 </li>
748 </ul>
749 </div>
750</#macro>
751
752<#macro showRelated>
753 <#if !stringUtil.equalsIgnoreCase("0", categoryIds?size?string) >
754 <#assign assetEntryQuery = objectUtil("com.liferay.asset.kernel.service.persistence.AssetEntryQuery") />
755 ${assetEntryQuery.setClassNameIds([classNameId])}
756 ${assetEntryQuery.setAllCategoryIds(categoryIds)}
757
758 <#assign
759 companyId = templateFunctionsHelperLocalService.getCompanyId('Bizkaiaeus')
760 bizkaiaSiteId = templateFunctionsHelperLocalService.getGroupId(companyId, 'guest')
761 currentSiteId = themeDisplay.getLayout().getGroupId()
762 />
763 <#if !(bizkaiaSiteId == currentSiteId) >
764 ${assetEntryQuery.setGroupIds([currentSiteId])}
765 </#if>
766
767 ${assetEntryQuery.setOrderByCol1("ddm__keyword__" + structure.structureId + "__important")}
768 ${assetEntryQuery.setOrderByType1("DESC")}
769 ${assetEntryQuery.setOrderByCol2("ddm__keyword__" + structure.structureId + "__startDate")}
770 ${assetEntryQuery.setOrderByType2("DESC")}
771
772 <#assign httpServletRequest = serviceContext.getRequest()>
773
774
775 <#assign hits = assetUtil.search(httpServletRequest, assetEntryQuery, -1, -1)>
776 <#assign results = assetHelperLocalService.assetUtilGetAssetEntries(hits) >
777
778 <#assign maxRelated = results?size >
779 <#if maxRelated gt 3>
780 <#assign maxRelated = 3 />
781 </#if>
782
783 <#assign numRelated = 0>
784
785 <#if !stringUtil.equalsIgnoreCase("1", maxRelated?string) >
786 <div class="bg_white">
787
788
789 <div class="row">
790 <div class="col-xxs-12 col-xxs-offset-0 col-xs-10 col-xs-offset-1 col-sm-10 col-sm-offset-1 col-md-12 col-md-offset-0">
791 <div class="bipo_borde_inferior_b">
792 <h2> <span><@liferay.language key="gbi-agenda-detalle.plus" /></span></h2>
793 </div>
794 </div>
795
796 </div>
797 <div class="row">
798 <div class="col-xxs-12 col-xxs-offset-0 col-xs-10 col-xs-offset-1 col-sm-10 col-sm-offset-1 col-md-12 col-md-offset-0">
799 <div class="bipo_listagenda">
800 <ul>
801 <#list results as entry>
802 <#assign title = entry.getTitle(locale) />
803 <#assign renderer = entry.getAssetRenderer()>
804 <#assign className = renderer.getClassName() >
805 <#assign journalArticle = renderer.getArticle() >
806
807 <#if stringUtil.equalsIgnoreCase(structure.structureId?string,journalArticle.getDDMStructure().getStructureId()?string)>
808 <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) >
809 <#assign rootElement = document.getRootElement() >
810 <#assign image = "", alt="", place = "", allDates = []>
811
812
813 <#assign place = saxReaderUtil.createXPath("dynamic-element[@name='locationPlace']/dynamic-content").selectSingleNode(rootElement).getStringValue() >
814 <#-- <#assign image = saxReaderUtil.createXPath("dynamic-element[@name='eventImage']/dynamic-content").selectSingleNode(rootElement).getStringValue() > -->
815
816 <#assign fileEntryString = document.valueOf("//dynamic-element[@name='eventImage']/dynamic-content/text()") >
817 <#if !stringUtil.equalsIgnoreCase("", fileEntryString) >
818 <#assign
819 fileEntryJson = jsonFactoryUtil.createJSONObject(fileEntryString)
820 fileEntry = dlAppLocalServiceUtil.getFileEntryByUuidAndGroupId(fileEntryJson.getString("uuid"),fileEntryJson.getString("groupId")?number)
821 image = dlUrlHelperUtil.getPreviewURL(fileEntry, fileEntry.getLatestFileVersion(true), themeDisplay, "")
822 />
823 </#if>
824
825
826 <#assign alt = saxReaderUtil.createXPath("dynamic-element[@name='eventImageFieldSet']/dynamic-element[@name='eventImageFieldSetFieldSet']/dynamic-element[@name='alt']/dynamic-content").selectSingleNode(rootElement).getStringValue() >
827 <#assign allStarDates = saxReaderUtil.createXPath("dynamic-element[@name='datesFieldSet']/dynamic-element[@name='datesFieldSetFieldSet']/dynamic-element[@name='startDate']/dynamic-content").selectNodes(rootElement) >
828 <#assign allEndDates = saxReaderUtil.createXPath("dynamic-element[@name='datesFieldSet']/dynamic-element[@name='datesFieldSetFieldSet']/dynamic-element[@name='endDate']/dynamic-content").selectNodes(rootElement) >
829 <#assign allAllDays = saxReaderUtil.createXPath("dynamic-element[@name='datesFieldSet']/dynamic-element[@name='datesFieldSetFieldSet']/dynamic-element[@name='allDay']/dynamic-content").selectNodes(rootElement) >
830
831
832 <#assign dateTexts = []>
833 <#assign dateTimes = []>
834 <#list allStarDates as startDate>
835 <#assign dateTexts = dateTexts + [getDateText(startDate.getStringValue(), allEndDates[startDate_index].getStringValue(), allAllDays[startDate_index].getStringValue(), "dd/MM/yyyy")]>
836 </#list>
837
838 <#if request?has_content>
839 <#assign viewURL = assetHelperLocalService.getURLViewInContext(journalArticle, themeDisplay) >
840 <#else>
841 <#assign viewURL = 'https://www.bizkaia.eus'>
842 </#if>
843
844 <#assign categories = assetCategoryLocalService.getCategories(className, journalArticle.resourcePrimKey) >
845 <#assign categoryNames = []>
846 <#list categories as category>
847 <#if stringUtil.equalsIgnoreCase(category.vocabularyId?string,vocabularyScheduleRegionId?string)>
848 <#assign categoryNames = categoryNames + [ "${category.getTitle(locale)}" ] />
849 </#if>
850 </#list>
851
852 <#if !stringUtil.equalsIgnoreCase(journalArticle.getArticleId()?string, articleId?string)>
853 <#if stringUtil.equalsIgnoreCase(numRelated?string, maxRelated?string)>
854 <#break>
855 </#if>
856
857 <li class="col-xxs-12 col-xs-6 col-sm-6 col-md-4">
858 <div class="bipo_contentagenda">
859 <div class="bipo_img">
860 <#-- <a href="${viewURL}"><img src="${image}" alt='${htmlUtil.escape(alt)}'></a> -->
861 <a href="${viewURL}">
862 <img src="${image?keep_before('?')}" alt="" />
863 <h3 class="bipo_titagenda">
864 ${title}
865 </h3>
866 </a>
867 </div>
868
869 <#if !stringUtil.equalsIgnoreCase("0", categoryNames?size?string)>
870 <p class="bipo_categoria">
871 <#list categoryNames as category>
872 ${category}
873 </#list>
874 </p>
875 </#if>
876
877 <div class="bipo_hora_lugar">
878 <ul>
879 <#if !stringUtil.equalsIgnoreCase("", place)>
880 <li>
881 <span class="bipoicon icon-localizador">
882 <span class="sr-only"><@liferay.language key="place" /></span>
883 </span>${place}
884 </li>
885 </#if>
886 <#if dateTexts?has_content>
887 <#list dateTexts as dateText>
888 <li>
889 <span class="bipoicon icon-calendario_02">
890 <span class="sr-only"><@liferay.language key="date" /></span>
891 </span>
892 <#if !stringUtil.equalsIgnoreCase("",dateText)>
893 ${dateText}
894 </#if>
895 <#if dateTimes[dateText_index]?has_content>
896 - ${dateTimes[dateText_index].getData()}
897 </#if>
898 </li>
899 </#list>
900 </#if>
901 </ul>
902 </div>
903 </div>
904 </li>
905 <#assign numRelated = numRelated + 1 />
906 </#if>
907 </#if>
908 </#list>
909 </ul>
910 </div>
911 </div>
912
913 </div>
914 </div>
915 </#if>
916 </#if>
917</#macro>
918
919<#function getFileEntry url >
920 <#assign parts = url?split("/")>
921
922 <#assign group_id = getterUtil.getLong(parts[2]) />
923
924 <#assign parts = parts[5]?split("?") />
925 <#assign uuid = parts[0] />
926
927 <#return fileEntryService.getDLFileEntryByUuidAndGroupId(uuid?string, group_id) />
928</#function>
929
930<#function getDateText startDate endDate allDay format>
931
932 <#assign dates = []>
933 <#assign dateText = "">
934
935 <#if validator.isNotNull(startDate)>
936 <#assign startDate_Data = dateUtil.parseDate("yyyy-MM-dd", startDate, locale)>
937 </#if>
938
939 <#if validator.isNotNull(endDate)>
940 <#assign endDate_Data = dateUtil.parseDate("yyyy-MM-dd", endDate, locale)>
941 </#if>
942
943 <#if getterUtil.getBoolean(allDay)>
944 <#assign dateText = dateUtil.getDate(startDate_Data, format, locale) >
945
946 <#elseif (!stringUtil.equalsIgnoreCase("", startDate)) && (stringUtil.equalsIgnoreCase("", endDate)) >
947 <#assign dates = dates + [ '${dateUtil.getDate(startDate_Data, format, locale)}' ] >
948 <#assign dateText = languageUtil.format(locale, "from-date", dates) >
949
950 <#elseif (stringUtil.equalsIgnoreCase("", startDate)) && (validator.isNotNull(endDate)) >
951 <#assign dates = dates + [ '${dateUtil.getDate(endDate_Data, format, locale)}' ] >
952 <#assign dateText = languageUtil.format(locale, "to-date", dates) >
953
954 <#elseif (!stringUtil.equalsIgnoreCase("", startDate)) && (validator.isNotNull(endDate)) >
955 <#assign dates = dates + [ '${dateUtil.getDate(startDate_Data, format, locale)}' ] >
956 <#assign dates = dates + [ '${dateUtil.getDate(endDate_Data, format, locale)}' ] >
957 <#assign dateText = languageUtil.format(locale, "from-to-date", dates) >
958
959 </#if>
960
961 <#return dateText />
962
963</#function>
964
965
966<#if !stringUtil.equalsIgnoreCase("", locationAddress.getData())>
967 <@scriptMap />
968</#if>
969
970<#macro scriptMap >
971 <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBMctVq13ErDz69AxaIHMb93TR4DA4qioU"></script>
972
973 <script>
974 var map;
975 var place = "${locationPlace.getData()?string}";
976 var address = "${locationAddress.getData()}";
977 var latitude;
978 var longitude;
979 var punto;
980 var imagesFolder = "${imagesPath}";
981
982 var geocoder = new google.maps.Geocoder();
983 geocoder.geocode({ 'address': address}, function(results, status) {
984 if (status == google.maps.GeocoderStatus.OK) {
985 latitude = results[0].geometry.location.lat();
986 longitude = results[0].geometry.location.lng();
987 punto = new google.maps.LatLng(latitude, longitude);
988 initialize();
989 }
990 });
991
992 function initialize() {
993 var styleArray = [
994 {featureType: "all", elementType: "geometry", stylers: [{color: "#F7F7F7"}]},
995 {featureType: "road", elementType: "geometry", stylers: [{color: "#FFFFFF"}]},
996 {featureType: "poi.park", elementType: "geometry", stylers: [{color: "#E5E5E5"}]},
997 {featureType: "water", elementType: "geometry", stylers: [{color: "#EDEDED"}]},
998 {featureType: 'administrative', elementType: 'labels', stylers: [{visibility: 'off'}]},
999 {featureType: 'poi', elementType: 'labels', stylers: [{ visibility: 'off' }]},
1000 {featureType: 'transit', elementType: 'labels', stylers: [{ visibility: 'off' }]},
1001 {featureType: 'road.arterial', elementType: 'labels', stylers: [{ visibility: 'off' }]},
1002 ];
1003
1004 var punto = new google.maps.LatLng(latitude, longitude);
1005 var mapOptions = {
1006 zoom: 17,
1007 center: punto,
1008 disableDoubleClickZoom: true,
1009 draggable: false,
1010 zoomControl:false,
1011 mapTypeControl: false,
1012 rotateControl: false,
1013 scaleControl: false,
1014 scrollwheel: false,
1015 streetViewControl: false,
1016 mapTypeId: google.maps.MapTypeId.ROADMAP,
1017 styles: styleArray
1018 };
1019
1020 map = new google.maps.Map(document.getElementById("${portletNamespace}map"), mapOptions);
1021
1022 var latitudeLongitude = {lat: latitude, lng: longitude};
1023 var marker = new google.maps.Marker({
1024 position: latitudeLongitude,
1025 map: map,
1026 icon : imagesFolder + '/bizkaia/icon_location_mapa.png',
1027 title : place
1028 });
1029 marker.setMap(map);
1030 }
1031
1032 $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
1033 initialize();
1034 })
1035 </script>
1036</#macro>
1037
1038<#function getTarget(element)>
1039 <#if getterUtil.getBoolean(element)>
1040 <#assign target = "_blank" />
1041 <#else>
1042 <#assign target = "_self" />
1043 </#if>
1044 <#return target />
1045</#function>
1046
1047<#function getTitle element >
1048 <#if getterUtil.getBoolean(element)>
1049 <#return "title='" + languageUtil.get(locale, "opens-new-window") + "'" >
1050 <#else>
1051 <#return "" >
1052 </#if>
1053</#function>
Cookieak
Cookie propioak eta hirugarrenen cookieak erabiltzen ditugu tekniko- analisi- eta pertsonalizazio- helburuetarako, hala nola erabiltzaileak zer nabigazio-hizkuntza erabili duen jakiteko. Informazio gehiagorako, kontsulta ezazu gure cookien politika (Leiho modala ireki).
Aldatu hona: ES
Cookien politika
Web-orri honek, https://www.bizkaia.eus (aurrerantzean, "Webgunea"), nabigazioaren bidez eta zerbitzuaren hartzailearen IP helbidearen bidez nabigazioaren beraren jarraipena egiteko tresnak erabiltzen ditu; honela, zerbitzuak edo haren funtzionamendu teknikoa hobetzeko eta bermatzeko, beste erabiltzaile batzuengandik bereizteko eta nabigazio-ohiturak aztertzeko.
Cookien politika honen helburua da erabiltzen ditugun cookien funtzionamenduari eta erabilgarritasunei buruzko informazio argi eta zehatza ematea.
Zer dira eta zertarako erabiltzen ditugu cookieak?
Cookie bat webgune jakin batzuetan sartzen zarenean zure ordenagailuan deskargatzen den fitxategi bat da.
Cookiek, besteak beste, erabiltzaile baten edo haren ekipamenduaren nabigazio-ohiturei buruzko informazioa biltzea eta berreskuratzea ahalbidetzen diote webgune bati. Barne hartzen duten informazioaren arabera eta ekipamendua erabiltzen den moduaren arabera, erabiltzailea ezagutzeko erabili daitezke.
Indarrean dagoen legeak aukera ematen du cookieak bere gailuan gordetzeko, webgune honen funtzionamendurako behar-beharrezkoak badira. Hala ere, gainerako cookie motetarako baimena beharko dugu.
Cookie motak, horiek kudeatzen dituen erakundearen arabera
Cookieak bidaltzen dituen ekipo edo domeinua kudeatzen eta jasotako datuak tratatzen dituenaren arabera, honako hauek bereizten ditugu:
- Cookie propioak: Bizkaiko Foru Aldundiak kudeatzen dituenak.
-
Hirugarrenen cookieak: cookien bidez bildutako datuak erabiltzen dituen beste erakunde batek kudeatzen ditu.
Webgune honetan Eusko Jaurlaritzaren cookieak aurki daitezke, bere helburuetarako erabiliak eta Bizkaiko Foru Aldundiaz kanpoko domeinuetan gordetzen direnak.
Cookie motak, xedearen arabera
- Cookie teknikoak: erabiltzaileak webgune, plataforma edo aplikazio batean nabigatzea ahalbidetzen dute, baita horietan dauden aukera edo zerbitzu desberdinak erabiltzea ere; hala nola, trafikoa kontrolatzea eta datuak komunikatzea, saioa identifikatzea, sarrera mugatua duten ataletan sartzea, ekimen batean izena emateko edo parte hartzeko eskaera egitea, hedapenerako bideoak edo soinua daukaten edukia gordetzea edo sare sozialen bidez edukiak partekatzea.
- Analisi-cookieak: erabiltzaile kopurua zenbatzea ahalbidetzen dute, baita nabigazioaren neurketa eta analisi estatistikoa egitea ere. Horren helburua eskura dauden zerbitzuak hobetzea da. Propioak edo hirugarren batenak izan daitezke.
- Pertsonalizazio-cookieak: erabiltzaileak zerbitzura sartzea ahalbidetzen dute erabiltzailearen gailuan aurretik definitutako irizpide batzuen araberako ezaugarri orokor batzuekin; hala nola, hizkuntza, zerbitzura sartzeko erabiltzen den nabigatzaile mota, zerbitzura sartzeko erabiltzen duen eskualdeko konfigurazioa, eta abar.
Cookien iraupena
- Saiorako cookieak: erabiltzailea webgune batera sartzen den bitartean datuak bildu eta gordetzen dituzte.
- Cookie iraunkorrak: datuek gailuan gordeta jarraitzen dute, eta horietara sartu daiteke eta horiek tratatu cookie-en arduradunak definitutako aldi batean. Aldi hori minutu batzuetatik zenbait urtetara bitartekoa izan daiteke.
Zer cookie erabiltzen ditu webgune honek?
Lerro bakoitzean cookie(teknikoak) bati buruzko datuak
Izena | Mota | Helburua | Iraupena |
---|---|---|---|
JSESSIONID | Saioa identifikatzea | Saioa | Bizkaiko Foru Aldundia |
ASPSESSIONID | Saioa identifikatzea | Saioa | Bizkaiko Foru Aldundia |
TS01 | Saioa identifikatzea | Saioa | Bizkaiko Foru Aldundia |
LFR_SESSION_STATE | Saioa identifikatzea | Saioa | Bizkaiko Foru Aldundia |
COOKIE_SUPPORT | Adierazi ea erabiltzaileak aktibatuta daukan cookietarako laguntza | Urtebete | Bizkaiko Foru Aldundia |
pc_tecnicas_bizkaia | Tekniken cookien blokeari buruzko onarpen/errefusatze lehentasunak jasotzea | Urtebete | Bizkaiko Foru Aldundia |
pc_analitica_bizkaia | Analisien cookien blokeari buruzko onarpen/errefusatze lehentasunak jasotzea | Urtebete | Bizkaiko Foru Aldundia |
pc_preferencias_bizkaia | Lehentasunen cookien blokeari buruzko onarpen/errefusatze lehentasunak jasotzea | Urtebete | Bizkaiko Foru Aldundia |
pc_terceros_bizkaia | Hirugarrenen cookien blokeari buruzko onarpen/errefusatze lehentasunak jasotzea | Urtebete | Bizkaiko Foru Aldundia |
Kultursistema_session | Erabiltzailearen saioa mantendu | Ordu 1 | Kultursistema |
CPLB | Karga orekatzeko gure zerbitzariek erabilitako informazioa jasotzen du | Saioa | Bizkaiko Foru Aldundia |
XSRF-TOKEN | CSRF (Cross Site Request Forgery) erasoak saihesteko | Ordu 1 | Kultursistema |
_GRECAPTCHA | Babestu webgunea spametik eta indar handiko erasoetatik | 6 hilabete |
Lerro bakoitzean analisirako cookie bati buruzko datuak
Izena | Mota | Helburua | Iraupena |
---|---|---|---|
dtCookie | Bisita bat arakatzen du hainbat eskaeraren bidez | Saioa | Bizkaiko Foru Aldundia |
dtLatC | Zerbitzariaren sortasuna neurtzen du errendimenduaren monitorizaziorako | Saioa | Bizkaiko Foru Aldundia |
dtPC | Beharrezkoa balizen transmisiorako parametro egokiak identifikatzeko; korrelaziorako saioaren IDa barne hartzen du | Saioa | Bizkaiko Foru Aldundia |
dtSa | Erdi mailako biltegia orrialdeak hartzen dituzten ekintzetarako | Saioa | Bizkaiko Foru Aldundia |
rxVisitor | Bisitariaren ID saioak korrelazioan jartzeko | Etengabe | Bizkaiko Foru Aldundia |
rxvt | Saioaren itxarote-denbora | Saioa | Bizkaiko Foru Aldundia |
iyrc-user-id | Erabiltzaileak bereiztea | Ordu 1 | Bizkaiko Foru Aldundia |
_ga, _ga_XXXXXXXXXXX | Erabiltzailea bereiztea | 2 urte | Google Analytics |
_gat, _gat_XXXXXXXXXXX | Eskaeren ehunekoa mugatzea | Minutu 1 | Google Analytics |
_gid | Erabiltzaileak bereiztea | Egun 1 | Google Analytics |
MUID | Erabiltzailea bereiztea | Urtebete | Microsoft Clarity |
_clck | Lehentasunak esleitzea erabiltzaile berdinari | Urtebete | Microsoft Clarity |
_clsk | Konektatu saio batean ikusitako hainbat orri | Urtebete | Microsoft Clarity |
CLID | Identifikatu erabiltzaile baten lehenengo bisita | Urtebete | Microsoft Clarity |
ANONCHK | Erabiltzailea bereiztea | Egun 1 | Microsoft Clarity |
MR | Adierazi noiz freskatu MUID | 6 hilabete | Microsoft Clarity |
SM | Sinkronizatu MUID Microsoft inguruan | Urtebete | Microsoft Clarity |
Lerro bakoitzean cookie(Pertsonalizazio) bati buruzko datuak
Izena | Mota | Helburua | Iraupena |
---|---|---|---|
Idioma | Erabiltzailearen hizkuntzarik gustukoena aukeratzea | Urtebete | Bizkaiko Foru Aldundia |
cookie-tramites-favs | Gorde gogoko izapideak Aurretiazko Hitzorduan | Urtebete | Bizkaiko Foru Aldundia |
Lerro bakoitzean cookie(Hirugarrenen) bati buruzko datuak
Izena | Mota | Helburua | Iraupena |
---|---|---|---|
CLID | Identifikatu erabiltzaile baten lehenengo bisita | Urtebete | Microsoft Clarity |
APISID | Gorde erabiltzailearen lehentasunak eta informazioa orriak bistaratzean, Google mapak bertan daudela. | 2 urte | |
HSID | Iruzurra prebenitzea | 2 urte | |
MUID | Bereizi erabiltzailea | Urtebete | Microsoft Clarity |
NID | Gogoratu bere lehentasunak eta beste edozein informazio | 6 hilabete | |
SAPISID | Erakutsi iragarki pertsonalizatuak Googleko webguneetan | 2 urte | |
SID | Eskaini iragarkiak edo retargeting entregatzea, eskaini iruzurra prebenitzea. | 2 urte | |
SIDCC | Eskaini web-trafiko fidagarriaren identifikazioa. | Urtebete | |
SM | Microsoften domeinuen arteko MUIDa sinkronizatzeko erabiltzen da | Saioa | Microsoft Clarity |
SSID | Eskaini iragarkiak edo retargeting entregatzea, eskaini iruzurra prebenitzea. | 2 urte | |
__Secure-1PAPISID | Sortu webgunearen bisitariaren interesen profil bat, Googleren publizitate garrantzitsua eta pertsonalizatua erakusteko. | 2 urte | |
__Secure-1PSID | Sortu webgunearen bisitariaren interesen profil bat, Googleren publizitate garrantzitsua eta pertsonalizatua erakusteko. | 2 urte | |
__Secure-1PSIDCC | Sortu webgunearen bisitarien interesen profil bat, retargeting bidez erakusteko iragazki garrantzitsu eta pertsonalizatuak. | Urtebete | |
__Secure-1PSIDTS | Sortu webgunearen bisitarien interesen profil bat, retargeting bidez erakusteko iragazki garrantzitsu eta pertsonalizatuak. | Urtebete | |
__Secure-3PSID | Sortu webgunearen bisitariaren interesen profil bat, Googleren publizitate garrantzitsua eta pertsonalizatua erakusteko. | 2 urte | |
__Secure-3PSIDCC | Sortu webgunearen bisitariaren interesen profil bat, Googleren publizitate garrantzitsua eta pertsonalizatua erakusteko. | Urtebete | |
__Secure-3PSIDTS | Sortu webgunearen bisitarien interesen profil bat, retargeting bidez erakusteko iragazki garrantzitsu eta pertsonalizatuak. | Urtebete | |
__Secure-ENID | Webguneko zerbitzuak eta aukerak erabiltzeko beharrezko cookiea | Urtebete | |
ar_debug | Araztu iragarkiak. | Urtebete | |
MR | Adierazi noiz freskatu MUID | 6 hilabete | Microsoft Clarity |
XSRF-TOKEN | CSRF (Cross Site Request Forgery) erasoak saihesteko | 1 ordu | Kultursistema |
_fbp | Gorde eta arakatu webguneetan bisitak | Urtebete | |
kultursistema_session | Mantendu erabiltzailearen saioa | 1 ordu | Kultursistema |
AEC | Detektatu spam, iruzurra eta gehiegikeria | 6 hilabete | |
SOCS | Gorde erabiltzailearen cookie-aukerak | 13 hilabete | |
Locale | Ez dago eskuragarri | Gobierno Vasco | |
_hegoa_coop_session | Sortu erabiltzaileentzat saio-identifikatzaile bat | Saioa | Gobierno Vasco |
Nola desaktibatu edo ezabatu daitezke cookieak?
Erabiltzaileak, Webgunera lehen aldiz sartzen denean, cookieak konfiguratu eta onartu edo baztertu ahal izango ditu webgunean bertan. Ondoren, erabiltzaileak edozein unetan aldatu edo kendu ahal izango du baimena cookien politika honen bidez edo konfigurazioaren bidez.
Hala ere, edozein unetan baliatu ahal izango duzu horiek libreki desaktibatzeko eskubidea, bai eta webgune honetako cookieak ezabatzekoa ere. Ekintza horiek desberdin egiten dira, erabiltzen ari zaren nabigatzailearen arabera. Hemen utziko dizugu nabigatzaile ezagunenetarako gida azkar bat.
- Desaktibatu cookieak Chromen
- Desaktibatu cookieak Exploreren
- Desaktibatu cookieak FireFoxen
- Desaktibatu cookieak Safarin
- Desaktibatu cookieak Edgen
Cookie-ak desaktibatu edo ezabatzen badira baliteke webguneko zenbait funtzionaltasun ondo ez ibiltzea.
Aldaketak Cookien Politikan
Webguneak cookien politika hau aldatzeko eskubidea gordetzen du, betiere, indarrean dagoen legediak baimentzen duen moduan. Horregatik, gure webgunera sartzen zaren bakoitzean politika hori berrikusteko gomendatzen dizugu, dagozkion eguneraketa- eta informazio-ondorioetarako.
Cookieak konfiguratzea
Jarraian, erakutsiko dizugu gure webguneak zer kategoriatarako erabiltzen dituen cookieak. Haiek onartuta edo ukatuta zure aukeraketa pertsonaliza dezakezu, horretarako dauden botoien bidez. Informazio gehiagorako, kontsulta ezazu gure cookien politika (Leiho modala ireki).
-
Cookie teknikoak Beti aktibo
Beharrezkoak dira gure webgunean nabigatzeko eta oinarrizko zereginetarako, webguneak behar bezala funtziona dezan.