Se ha producido un error al procesar la plantilla.
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>