Errorea gertatu da txantiloia prozesatzerakoan.
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>