Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> dates  [in template "842907#842945#35142" at line 63, column 8]

----
Tip: If the failing expression is known to be 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: #list dates.getSiblings() as date  [in template "842907#842945#35142" at line 63, column 1]
----
1<!-- SERVICES --> 
2<#assign assetHelperLocalService = serviceLocator.findService("net.bizkaia.bipo.core.utils.service.AssetHelperLocalService")> 
3<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
4<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") > 
5<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")> 
6<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService") /> 
7<#assign dDMStructureLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMStructureLocalService") /> 
8<#assign fileEntryService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService") > 
9<#assign structureLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMStructureLocalService")> 
10<#assign classNameLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.ClassNameLocalService")> 
11<#assign assetUtil = staticUtil["com.liferay.portlet.asset.util.AssetUtil"]> 
12 
13 
14<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()> 
15     
16<#assign urlEncoder = staticUtil["java.net.URLEncoder"]> 
17<#assign textFormatter = staticUtil["com.liferay.portal.kernel.util.TextFormatter"]> 
18 
19<!-- VARIABLES --> 
20<#assign articleId = .vars['reserved-article-id'].data > 
21<#assign articleTitle = .vars['reserved-article-title'].data > 
22<#assign journalArticle = journalArticleLocalService.getArticle(articleGroupId, articleId) > 
23<#assign articlePK = journalArticle.getResourcePrimKey() > 
24<#assign journalArticleClassName = "com.liferay.journal.model.JournalArticle"> 
25<#assign classNameId = classNameLocalService.getClassNameId(journalArticleClassName)> 
26<#assign vocabularyScheduleRegionId = propsUtil.get("bipo.vocabulary.scheduleRegion")> 
27 
28<#if request?has_content> 
29    <#assign portletNamespace = request["theme-display"]["portlet-display"]["id"] + "_" > 
30   <#assign completeCurrentUrl = urlEncoder.encode((request["attributes"]["CURRENT_COMPLETE_URL"])?string?split("?")[0]?string, "UTF-8")> 
31 <#assign pathThemeImages = themeDisplay.getPathThemeImages()> 
32     
33    <#assign imagesPath = request['theme-display']['path-theme-images']> 
34<#else> 
35    <#assign portletNamespace = articleId + '_'> 
36    <#assign completeCurrentUrl = 'http://web.bizkaia.eus'> 
37    <#assign imagesPath = '/bipo-bizkaia-eus-theme/images'> 
38</#if> 
39 
40<#assign encodedTitle = urlEncoder.encode(articleTitle, "UTF-8")> 
41 
42 
43<#assign structure = structureLocalService.getStructure(company.groupId, classNameId, journalArticle.structureId) > 
44 
45<#assign categories = assetCategoryLocalService.getCategories(journalArticleClassName, articlePK) /> 
46 
47<#assign categoryNames = []> 
48<#assign categoryIds = []> 
49<#list categories as category> 
50    <#if validator.equals(category.vocabularyId?string,vocabularyScheduleRegionId?string)> 
51    <#assign categoryNames = categoryNames + [ "${category.getTitle(locale)}" ] /> 
52    <#assign categoryIds = categoryIds + [ category.categoryId ] /> 
53  </#if> 
54</#list> 
55 
56<#assign format = []> 
57<#assign format = format + ["dd"] > 
58<#assign format = format + ["MM"] > 
59<#assign format = format + ["yyyy"] > 
60<#assign dateFormat = languageUtil.format(locale, "dateFormat.dd-mm-yyyy", format)> 
61<#assign dateTexts = []> 
62<#assign dateTimes = []> 
63<#list dates.getSiblings() as date> 
64    <#assign dateTexts = dateTexts + [getDateText(date.startDate.getData(), date.endDate.getData(), date.allDay.getData(), dateFormat)]> 
65    <#assign dateTimes = dateTimes + [date.eventTime]> 
66</#list> 
67 
68<!--RELATED ASSETS--> 
69<#assign journalArticleAssetEntry = assetEntryLocalService.getEntry("com.liferay.journal.model.JournalArticle", articlePK) /> 
70<#assign journalArticleAssetEntryId = journalArticleAssetEntry.getEntryId() /> 
71<#assign journalArticleRelatedLinks = assetLinkLocalService.getDirectLinks(journalArticleAssetEntryId) /> 
72 
73<#assign espaciosStructureId = propsUtil.get("bipo.estructure.espacios")> 
74<#assign espaciosStructure = dDMStructureLocalService.getDDMStructure(espaciosStructureId?number)> 
75<#assign related_articles = []> 
76<#list journalArticleRelatedLinks as related_entry> 
77    <#assign relatedAssetEntryId = related_entry.getEntryId2() /> 
78    <#assign relatedAssetEntry = assetEntryLocalService.getEntry(relatedAssetEntryId) /> 
79    <#assign renderer = relatedAssetEntry.getAssetRenderer()> 
80    <#assign relatedArticle = renderer.getArticle() > 
81    <#assign relatedArticleStructureId = relatedArticle.getStructureId() /> 
82     
83    <#if validator.equals(relatedArticleStructureId, espaciosStructure.getStructureKey())> 
84        <#assign related_articles = related_articles + [relatedArticle]> 
85    </#if> 
86</#list> 
87 
88 
89 
90<script src="${httpUtil.getProtocol(completeCurrentUrl)}://connect.facebook.net/${locale}/all.js#xfbml=1"></script> 
91 
92<div class="bipo_gurebizkaia_detalle bg_gray"> 
93  <div class="container"> 
94        <div class="row"> 
95            <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"> 
96                <h1><span>${articleTitle}</span></h1> 
97            </div> 
98        </div> 
99    </div> 
100    <!-- Redes sociales, entradilla, contenido 1 y audio -->           
101    <div class="container"> 
102        <div class="row"> 
103            <#if !validator.equals("", eventImage.getData())> 
104            <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"> 
105              <img src="${eventImage.getData()}" alt="${htmlUtil.escape(eventImage.getChild('alt').getData())}"> 
106            </div> 
107            </#if> 
108         
109            <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"> 
110                <div class="bipo_detalle_info"> 
111                    <ul class="row"> 
112                         
113                        <#if dateTexts?has_content> 
114                          <#list dateTexts as dateText> 
115                            <li class="col-xxs-6 col-xs-6 col-sm-6 col-md-12"> 
116                                <p><span class="bipoicon icon-calendario_02"></span><@liferay.language key="gbi-agenda-detalle.when" /></p> 
117                                <p>${dateText}</p> 
118                            </li> 
119                            <#if dateTimes[dateText_index]?has_content && !validator.equals("", dateTimes[dateText_index].getData())> 
120                              <li class="col-xxs-6 col-xs-6 col-sm-6 col-md-12"> 
121                                <p><span class="bipoicon icon-clock"></span><@liferay.language key="hour" /></p> 
122                                <p>${dateTimes[dateText_index].getData()}</p> 
123                              </li> 
124                            </#if> 
125                          </#list> 
126                        </#if> 
127                        <#if related_articles?has_content> 
128                            <li class="col-xxs-6 col-xs-6 col-sm-6 col-md-12"> 
129                                <p><span class="bipoicon icon-localizador"></span><@liferay.language key="gbi-agenda-detalle.where" /></p> 
130                                <p> 
131                                    <#list related_articles as related_article> 
132                                        <#assign espacioViewURL = related_article.getUrlTitle() > 
133                                        <#assign espacioTitle = related_article.getTitle(locale)> 
134                                         
135                                        <a href="${espacioViewURL}">${espacioTitle}</a> 
136                                        <#if related_articles?last != related_article> 
137                                            <br /> 
138                                        </#if> 
139                                    </#list> 
140                                </p> 
141                            </li> 
142                        </#if> 
143                        <#if !validator.equals("", eventWeb.getData())> 
144                            <#assign targetTitle = getTitle(eventWeb.getChild('target').getData()) /> 
145                             
146              <li class="col-xxs-6 col-xs-6 col-sm-6 col-md-12"> 
147                <p><span class="bipoicon icon-link"></span><@liferay.language key="gbi-agenda-detalle.web" /></p> 
148                <p><a href="${eventWeb.getData()}" target="${getTarget(eventWeb.getChild('target').getData())}" ${targetTitle}><@liferay.language key="gbi-agenda-detalle.to-visit" /></a></p> 
149              </li> 
150                        </#if> 
151                    </ul> 
152                </div> 
153            </div> 
154             
155             
156            <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"> 
157                <div class="bg_white"> 
158                    <div class="row"> 
159                        <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"> 
160                             <#if !validator.equals("0", categoryNames?size?string)> 
161                    <p class="bipo_detalle_categoria"> 
162                  <#list categoryNames as curCategory > 
163                    <#if !validator.equals("", curCategory)> 
164                      ${curCategory} 
165                    </#if> 
166                  </#list> 
167                    </p> 
168                </#if> 
169                        </div> 
170                    </div> 
171                    <div class="row"> 
172                        <div class="hidden-xxs col-md-1 col-md-offset-1 bipo_container_social"> 
173                            <@social /> 
174                        </div> 
175                        <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"> 
176                            <div class="row"> 
177                                <div class="col-md-10 bipo_contenido"> 
178                                    ${body.getData()}       
179                                </div> 
180                            </div> 
181              <!-- Tabs Información / Observaciones y Localización --> 
182              <div class="bipo_info_tabs row"> 
183                <div class="col-md-12"> 
184                  <ul class="bipo_tabs" role="tablist"> 
185                    <#assign tabActive = false> 
186                    <#if !validator.equals("",information.getChild('schedule').getData()) || !validator.equals("", information.getChild('document').getSiblings()?first.getData()) || !validator.equals("", information.getChild('moreInformation').getData())>                            <#assign tabActive = true > 
187                      <li class="active" id="${portletNamespace}bipo_enlace_informacion"> 
188                        <a href="#${portletNamespace}tab_informacion" aria-controls="${portletNamespace}tab_informacion" class="" role="tab" data-toggle="tab" aria-expanded="false"><@liferay.language key="gbi-agenda-detalle.information" /></a> 
189                      </li> 
190                    </#if> 
191                    <#if !validator.equals("", observations.getData())> 
192                      <#if tabActive> 
193                        <li class="" id="${portletNamespace}bipo_enlace_observacion"> 
194                      <#else> 
195                        <li class="active" id="${portletNamespace}bipo_enlace_observacion"> 
196                          <#assign tabActive = true> 
197                      </#if> 
198                          <a href="#${portletNamespace}tab_observaciones" aria-controls="${portletNamespace}tab_observaciones" role="tab" data-toggle="tab" aria-expanded="true"><@liferay.language key="gbi-agenda-detalle.observations" /></a> 
199                        </li> 
200                    </#if> 
201                    <#if !validator.equals("", locationAddress.getData())> 
202                      <#if tabActive> 
203                        <li class="" id="${portletNamespace}bipo_enlace_localizacion"> 
204                      <#else> 
205                        <li class="active" id="${portletNamespace}bipo_enlace_localizacion"> 
206                      </#if> 
207                          <a href="#${portletNamespace}tab_localizacion" aria-controls="${portletNamespace}tab_localizacion" role="tab" data-toggle="tab" aria-expanded="true"><@liferay.language key="gbi-agenda-detalle.location" /></a> 
208                        </li> 
209                    </#if> 
210                  </ul> 
211                </div> 
212                <div class="row"> 
213                  <div class="col-md-10 bipo_contenido"> 
214                    <div class="tab-content"> 
215                      <#assign tabActive = false> 
216                      <#if !validator.equals("",information.getChild('schedule').getData()) || !validator.equals("", information.getChild('document').getSiblings()?first.getData()) || !validator.equals("",information.getChild('moreInformation').getData())>                           <#assign tabActive = true> 
217                        <div class="tab-pane fade in active" role="tabpanel" id="${portletNamespace}tab_informacion"> 
218                          <#if !validator.equals("",information.getChild('schedule').getData())> 
219                            <div class="bipo_descargas"> 
220                              <h2 class="bipo_titulo"><@liferay.language key="gbi-agenda-detalle.schedule" /></h2> 
221                              ${information.getChild('schedule').getData()} 
222                            </div> 
223                          </#if> 
224                             
225                          <#if !validator.equals("", information.getChild('document').getSiblings()?first.getData())>  
226                            <div class="bipo_descargas"> 
227                              <h2 class="bipo_titulo"><@liferay.language key="gbi-agenda-detalle.downloads" /></h2> 
228                              <ul> 
229                                <#list information.getChild('document').getSiblings() as curDocument> 
230                                  <#if !validator.equals("", curDocument.getData())> 
231                                    <#assign fileEntry = getFileEntry(curDocument.getData()) > 
232                                    <#assign size = textFormatter.formatStorageSize(fileEntry.size, locale) > 
233                                    <li> 
234                                      <span class="bipoicon icon-descargar"></span> 
235                                      <a href="${curDocument.getData()}" target="_blank" title="<@liferay.language key='opens-new-window' />"> 
236                                        ${fileEntry.title} 
237                                        <span>(${fileEntry.extension}, ${size})</span> 
238                                      </a> 
239                                    </li> 
240                                  </#if> 
241                                </#list> 
242                              </ul> 
243                            </div> 
244                          </#if> 
245                          <#if !validator.equals("", information.getChild('moreInformation').getData())> 
246                            <div class="bipo_sumario"> 
247                              <h2 class="bipo_titulo"><@liferay.language key="gbi-agenda-detalle.more-information" /></h2> 
248                              ${information.getChild('moreInformation').getData()} 
249                            </div> 
250                          </#if> 
251                        </div> 
252                      </#if> 
253                           
254                      <#if !validator.equals("", observations.getData())> 
255                        <#if tabActive > 
256                          <div class="tab-pane fade" role="tabpanel" id="${portletNamespace}tab_observaciones"> 
257                        <#else> 
258                          <div class="tab-pane fadein active" role="tabpanel" id="${portletNamespace}tab_observaciones"> 
259                            <#assign tabActive = true> 
260                        </#if> 
261                            ${observations.getData()} 
262                          </div> 
263                      </#if> 
264                           
265                      <#if !validator.equals("", locationPlace.getData()) && !validator.equals("", locationAddress.getData())> 
266                        <#if tabActive > 
267                          <div class="tab-pane fade" role="tabpanel" id="${portletNamespace}tab_localizacion"> 
268                        <#else> 
269                          <div class="tab-pane fade in active" role="tabpanel" id="${portletNamespace}tab_localizacion"> 
270                            <#assign tabActive = true> 
271                        </#if> 
272                            <div id="${portletNamespace}map" style="height:400px;width:100%"></div> 
273                          </div> 
274                      </#if> 
275                    </div> 
276                  </div> 
277                </div> 
278              </div> 
279 
280            </div> 
281          </div> 
282          <div class="visible-xxs col-xxs-10 col-xxs-offset-1 hidden-xs hidden-sm hidden-md hidden-lg"> 
283            <@social /> 
284          </div> 
285          <!-- Fin Contenido 2 y sumario --> 
286             
287        </div> 
288    </div> 
289     
290  <div class="container"> 
291      </div> 
292    </div> 
293    <@showRelated /> 
294  </div> 
295</div> 
296 
297<#macro social> 
298  <div class="m-redes_sociales"> 
299    <ul> 
300        <li> 
301            <div class="taglib-social-bookmark-facebook" > 
302                    <div class="fb-like" data-href="${completeCurrentUrl}" data-layout="box_count" data-action="like" data-show-faces="false" data-share="false"></div> 
303                </div> 
304        </li> 
305      <li> 
306        <a class="facebook" href="http://www.facebook.com/sharer/sharer.php?u=${completeCurrentUrl}" target="_blank" title="<@liferay.language key='opens-new-window' />"> 
307          <span class="sr-only"><@liferay.language key="share-facebook" /></span><span class="bipoicon icon-facebook"></span> 
308        </a> 
309      </li> 
310      <li> 
311        <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"> 
312          <span class="sr-only"><@liferay.language key="share-twitter" /></span><span class="bipoicon icon-twitter"></span> 
313        </a> 
314      </li> 
315      <li> 
316        <a class="googleplus" href="https://plus.google.com/share?url=${completeCurrentUrl}" target="_blank" title="<@liferay.language key='opens-new-window' />" onclick="javascript:window.open(this.href, '', 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600');return false;"> 
317            <span class="sr-only"><@liferay.language key="share-google-plus" /></span><span class="bipoicon icon-google-plus"></span> 
318        </a> 
319      </li> 
320      <li> 
321        <a class="whatsapp" href="whatsapp://send?text=${completeCurrentUrl}" target="_blank" title="<@liferay.language key='opens-new-window' />"> 
322          <span class="sr-only"><@liferay.language key="share-whatsapp" /></span><span class="bipoicon icon-whatsapp"></span> 
323        </a> 
324      </li> 
325    </ul> 
326  </div> 
327</#macro> 
328 
329<#macro showRelated> 
330    <#if !validator.equals("0", categoryIds?size?string) > 
331        <#assign assetEntryQuery = assetHelperLocalService.createAssetEntryQuery() /> 
332        ${assetEntryQuery.setClassTypeIds([getterUtil.getLong(structure.structureId)])} 
333        ${assetEntryQuery.setAllCategoryIds(categoryIds)} 
334         
335        ${assetEntryQuery.setOrderByCol1("ddm__keyword__" + structure.structureId + "__important")} 
336        ${assetEntryQuery.setOrderByType1("DESC")} 
337        ${assetEntryQuery.setOrderByCol2("ddm__keyword__" + structure.structureId + "__startDate")} 
338        ${assetEntryQuery.setOrderByType2("DESC")} 
339         
340        <#assign httpServletRequest = serviceContext.getRequest()> 
341         
342         
343        <#assign hits = assetUtil.search(httpServletRequest, assetEntryQuery, -1, -1)> 
344        <#assign results = assetHelperLocalService.assetUtilGetAssetEntries(hits) > 
345         
346        <#assign maxRelated = results?size > 
347        <#if maxRelated gt 3> 
348            <#assign maxRelated = 3 /> 
349        </#if> 
350         
351        <#assign numRelated = 0> 
352         
353        <#if !validator.equals("1", maxRelated?string) > 
354            <div class="bg_white"> 
355               
356         
357                  <div class="row"> 
358                      <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"> 
359                          <div class="bipo_borde_inferior_b"> 
360                              <h2> <span><@liferay.language key="gbi-agenda-detalle.plus" /></span></h2> 
361                          </div> 
362                      </div> 
363         
364                  </div> 
365                  <div class="row"> 
366                       <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"> 
367                          <div class="bipo_listagenda"> 
368                              <ul> 
369                                  <#list results as entry> 
370                                      <#assign title = entry.getTitle(locale)  /> 
371                                      <#assign renderer = entry.getAssetRenderer()> 
372                                      <#assign className = renderer.getClassName() > 
373         
374                                      <#if validator.equals(className?string, journalArticleClassName) > 
375                                          <#assign journalArticle = renderer.getArticle() > 
376                                          <#assign document = saxReaderUtil.read(journalArticle.getContentByLocale(locale)) > 
377                                          <#assign rootElement = document.getRootElement() > 
378                                            <#assign image = "", alt="", place = "", allDates = []> 
379                                             
380                                           
381                                            <#assign place = saxReaderUtil.createXPath("dynamic-element[@name='locationPlace']/dynamic-content").selectSingleNode(rootElement).getStringValue()  > 
382                                            <#assign image = saxReaderUtil.createXPath("dynamic-element[@name='eventImage']/dynamic-content").selectSingleNode(rootElement).getStringValue()  > 
383                                            <#assign alt = saxReaderUtil.createXPath("dynamic-element[@name='eventImage']/dynamic-element[@name='alt']/dynamic-content").selectSingleNode(rootElement).getStringValue()  > 
384                                            <#assign allStarDates = saxReaderUtil.createXPath("dynamic-element[@name='dates']/dynamic-element[@name='startDate']/dynamic-content").selectNodes(rootElement)  > 
385				                        	<#assign allEndDates = saxReaderUtil.createXPath("dynamic-element[@name='dates']/dynamic-element[@name='endDate']/dynamic-content").selectNodes(rootElement)  > 
386					                        <#assign allAllDays = saxReaderUtil.createXPath("dynamic-element[@name='dates']/dynamic-element[@name='allDay']/dynamic-content").selectNodes(rootElement)  > 
387 
388                                             
389                                            <#assign dateTexts = []> 
390                                            <#assign dateTimes = []> 
391                                            <#list allStarDates as startDate> 
392                                              <#assign dateTexts = dateTexts + [getDateText(startDate.getStringValue(), allEndDates[startDate_index].getStringValue(), allAllDays[startDate_index].getStringValue(), "dd/MM/yyyy")]> 
393                                            </#list> 
394                                             
395                                            <#if request?has_content> 
396                                              <#assign viewURL = assetHelperLocalService.getURLViewInContext(journalArticle, themeDisplay) > 
397                                            <#else> 
398                                                <#assign viewURL = 'http://web.bizkaia.eus'> 
399                                            </#if> 
400                                             
401                                          <#assign categories = assetCategoryLocalService.getCategories(className, journalArticle.resourcePrimKey) > 
402                                          <#assign categoryNames = []> 
403                                    <#list categories as category> 
404                                      <#if validator.equals(category.vocabularyId?string,vocabularyScheduleRegionId?string)> 
405                                        <#assign categoryNames = categoryNames + [ "${category.getTitle(locale)}" ] /> 
406                                      </#if> 
407                                    </#list> 
408                                      </#if> 
409         
410                                      <#if !validator.equals(journalArticle.getArticleId()?string, articleId?string)> 
411                                          <#if validator.equals(numRelated?string, maxRelated?string)> 
412                                              <#break> 
413                                          </#if> 
414                                           
415                                          <li class="col-xxs-12 col-xs-6 col-sm-6 col-md-4"> 
416                                              <div class="bipo_contentagenda"> 
417                                                  <div class="bipo_img"> 
418                                                     <!-- <a href="${viewURL}"><img src="${image}" alt='${htmlUtil.escape(alt)}'></a> --> 
419                                                      <a href="${viewURL}"><img src="${image}" alt='${htmlUtil.escape(title)}'></a> 
420                                                  </div> 
421         
422                                                    <#if !validator.equals("0", categoryNames?size?string)> 
423                                                  <p class="bipo_categoria"> 
424                                                      <#list categoryNames as category> 
425                                                          ${category}  
426                                                      </#list> 
427                                                  </p> 
428                                                  </#if> 
429         
430                                                  <h3 class="bipo_titagenda"> 
431                                                      <a href="${viewURL}">${title}</a>  
432                                                  </h3> 
433         
434                                                  <div class="bipo_hora_lugar"> 
435                                                    <ul> 
436                                                          <#if !validator.equals("", place)> 
437                                                            <li> 
438                                                                <span class="bipoicon icon-localizador"> 
439                                                                    <span class="sr-only"><@liferay.language key="place" /></span> 
440                                                                </span>${place} 
441                                                            </li> 
442                                                          </#if> 
443                                                          <#if dateTexts?has_content> 
444                                                            <#list dateTexts as dateText> 
445                                                              <li> 
446                                                                <span class="bipoicon icon-calendario_02"> 
447                                                                  <span class="sr-only"><@liferay.language key="date" /></span> 
448                                                                </span>  
449                                                                <#if !validator.equals("",dateText)> 
450                                                                  ${dateText} 
451                                                                </#if> 
452                                                                <#if dateTimes[dateText_index]?has_content> 
453                                                                  - ${dateTimes[dateText_index].getData()} 
454                                                                </#if> 
455                                                              </li> 
456                                                            </#list> 
457                                                          </#if> 
458                                                    </ul> 
459                              </div> 
460                                              </div> 
461                                          </li> 
462                                          <#assign numRelated = numRelated + 1 /> 
463                                      </#if> 
464                                  </#list> 
465                              </ul> 
466                          </div> 
467                      </div> 
468                   
469            </div> 
470          </div> 
471        </#if> 
472    </#if> 
473</#macro> 
474 
475<#function getFileEntry url > 
476  <#assign parts = url?split("/")> 
477   
478  <#assign group_id = getterUtil.getLong(parts[2]) /> 
479   
480  <#assign parts = parts[5]?split("?") /> 
481  <#assign uuid = parts[0] /> 
482   
483  <#return fileEntryService.getDLFileEntryByUuidAndGroupId(uuid?string, group_id) /> 
484</#function> 
485 
486<#function getDateText startDate endDate allDay format> 
487     
488    <#assign dates = []> 
489    <#assign dateText = ""> 
490    
491    <#if validator.isNotNull(startDate)> 
492    	<#assign startDate_Data = dateUtil.parseDate("yyyy-MM-dd", startDate, locale)> 
493    </#if> 
494    <#if validator.isNotNull(endDate)> 
495    	<#assign endDate_Data = dateUtil.parseDate("yyyy-MM-dd", endDate, locale)> 
496    </#if> 
497 
498    <#if getterUtil.getBoolean(allDay)> 
499         
500        <#assign dateText = dateUtil.getDate(startDate_Data, format, locale) > 
501    <#elseif (!validator.equals("", startDate)) && (validator.equals("", endDate)) > 
502         
503         
504        <#assign dates = dates + [ '${dateUtil.getDate(startDate_Data, format, locale)}' ] > 
505                   
506      <#assign dateText = languageUtil.format(locale, "from-date", dates) > 
507    <#elseif (validator.equals("", startDate)) && (!validator.equals("", endDate)) > 
508         
509        <#assign dates = dates + [ '${dateUtil.getDate(endDate_Data, format, locale)}' ] > 
510                   
511      <#assign dateText = languageUtil.format(locale, "to-date", dates) > 
512       
513    <#elseif (!validator.equals("", startDate)) && (!validator.equals("", endDate)) > 
514        
515        <#assign dates = dates + [ '${dateUtil.getDate(startDate_Data, format, locale)}' ] > 
516        <#assign dates = dates + [ '${dateUtil.getDate(endDate_Data, format, locale)}' ] > 
517         
518        <#assign dateText = languageUtil.format(locale, "from-to-date", dates) > 
519    </#if> 
520    <#return dateText /> 
521</#function> 
522 
523 
524<#if !validator.equals("", locationAddress.getData())> 
525    <@scriptMap /> 
526</#if> 
527 
528<#macro scriptMap > 
529  <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBMctVq13ErDz69AxaIHMb93TR4DA4qioU"></script> 
530   
531  <script> 
532    var map; 
533    var place = "${locationPlace.getData()?string}"; 
534    var address = "${locationAddress.getData()}"; 
535    var latitude; 
536    var longitude; 
537    var punto; 
538    var imagesFolder = "${imagesPath}"; 
539   
540      var geocoder = new google.maps.Geocoder(); 
541      geocoder.geocode({ 'address': address}, function(results, status) { 
542          if (status == google.maps.GeocoderStatus.OK) { 
543              latitude = results[0].geometry.location.lat(); 
544              longitude = results[0].geometry.location.lng(); 
545              punto = new google.maps.LatLng(latitude, longitude); 
546              initialize(); 
547
548      }); 
549   
550      function initialize() { 
551          var styleArray = [ 
552            {featureType: "all",            elementType: "geometry",     stylers: [{color: "#F7F7F7"}]}, 
553            {featureType: "road",           elementType: "geometry",     stylers: [{color: "#FFFFFF"}]}, 
554            {featureType: "poi.park",       elementType: "geometry",     stylers: [{color: "#E5E5E5"}]}, 
555            {featureType: "water",          elementType: "geometry",     stylers: [{color: "#EDEDED"}]}, 
556            {featureType: 'administrative', elementType: 'labels',       stylers: [{visibility: 'off'}]}, 
557            {featureType: 'poi',            elementType: 'labels',       stylers: [{ visibility: 'off' }]}, 
558                {featureType: 'transit',        elementType: 'labels',       stylers: [{ visibility: 'off' }]}, 
559                {featureType: 'road.arterial',  elementType: 'labels',       stylers: [{ visibility: 'off' }]}, 
560        ]; 
561           
562          var punto = new google.maps.LatLng(latitude, longitude); 
563        var mapOptions = { 
564          zoom: 17, 
565          center: punto, 
566          disableDoubleClickZoom: true, 
567          draggable: false, 
568          zoomControl:false, 
569          mapTypeControl: false, 
570          rotateControl: false, 
571          scaleControl: false, 
572          scrollwheel: false, 
573          streetViewControl: false, 
574          mapTypeId: google.maps.MapTypeId.ROADMAP, 
575          styles: styleArray 
576        }; 
577         
578          map = new google.maps.Map(document.getElementById("${portletNamespace}map"), mapOptions); 
579   
580          var latitudeLongitude = {lat: latitude, lng: longitude}; 
581          var marker = new google.maps.Marker({ 
582              position: latitudeLongitude, 
583              map: map, 
584              icon : imagesFolder + '/bizkaia/icon_location_mapa.png', 
585              title : place 
586          }); 
587          marker.setMap(map); 
588
589      
590        $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { 
591            initialize(); 
592        }) 
593  </script> 
594</#macro> 
595 
596<#function getTarget(element)> 
597    <#if getterUtil.getBoolean(element)> 
598        <#assign target = "_blank" /> 
599    <#else> 
600        <#assign target = "_self" /> 
601    </#if> 
602    <#return target /> 
603</#function> 
604 
605<#function getTitle element > 
606  <#if getterUtil.getBoolean(element)> 
607    <#return "title='" + languageUtil.get(locale, "opens-new-window") + "'" > 
608  <#else> 
609    <#return "" > 
610  </#if> 
611</#function>