Se ha producido un error al procesar la plantilla.
Multiple compatible overloaded variations were found with the same priority.
The FTL type of the argument values were: Null.
The Java type of the argument values were: Null.
The matching overload was searched among these members:
com.liferay.portal.kernel.util.Validator_IW.isNotNull(String),
com.liferay.portal.kernel.util.Validator_IW.isNotNull(Long),
com.liferay.portal.kernel.util.Validator_IW.isNotNull(Object)
----
FTL stack trace ("~" means nesting-related):
- Failed at: #if validator.isNotNull(calendarBooki... [in template "37703#37743#40319" at line 294, column 41]
----
1<#assign assetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")>
2<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService")>
3<#assign journalArticleLocalServiceUtil= serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
4<#assign localizationUtil= serviceLocator.findService("com.liferay.portal.kernel.util.LocalizationUtil")>
5<#assign namespace = renderResponse.getNamespace()/>
6<#assign changePortletTitle = portletTool.getPreference(request, "changePortletTitle")>
7
8<#if entries?has_content>
9 <#list entries as calendarBooking>
10
11 <#assign inicio = calendarBookingTool.format(calendarBooking.getStartTime(), "EEEE, dd MMMM yyyy" ,locale, timezone)/>
12 <#assign fin = calendarBookingTool.format(calendarBooking.getEndTime(), "EEEE, dd MMMM yyyy" ,locale, timezone)/>
13 <#assign expDate = calendarBookingTool.format(calendarBooking.getEndTime(), "yyyy-MM-dd'T'HH:mm:ssXXX" ,locale, timezone)/>
14 <#assign calendarData = ADTUtil.getCalendarData(calendarBooking)>
15 <#assign title = calendarBooking.getTitle(locale)>
16
17 <#if validator.isNotNull(expDate)>
18 <@liferay_util["html-top"] outputKey="robots_unavailable_after_${calendarBooking.getCalendarBookingId()}">
19 <meta name="robots" content="index, follow, unavailable_after: ${expDate}">
20 </@>
21 </#if>
22
23 <div id="${namespace}calendar-booking-detail-view" itemscope itemtype="http://schema.org/Event">
24
25 <#if validator.isNotNull(changePortletTitle)>
26 <#if changePortletTitle=="false">
27 <div class="title-wrapper">
28 <div class="title h3" itemprop="name">${title}</div>
29 </div>
30 </#if>
31 <#else>
32 <div class="title-wrapper">
33 <div class="title h3" itemprop="name">${title}</div>
34 </div>
35 </#if>
36
37 <#if validator.isNotNull(calendarData)>
38 <#assign calendarDataProperties = typeSettingsTool.getUnicodeProperties(calendarData.getTypeSettings())!>
39 <#if validator.isNotNull(calendarDataProperties)>
40 <div class="d-block d-sm-none mb-4">
41 <#assign ticketsURL = calendarDataProperties.getProperty("ticketsURL")!>
42
43 <#if validator.isNotNull(ticketsURL)>
44 <#assign ticketsLabelXML = calendarDataProperties.getProperty("ticketsLabelXML")!>
45 <#assign ticketsPrice = calendarDataProperties.getProperty("ticketsPrice")!>
46
47 <#assign ticketsLabel = localizationTool.getLocalization(ticketsLabelXML, themeDisplay.getLanguageId(), true, "")!>
48 <#if validator.isNull(ticketsLabel)>
49 <#assign ticketsLabel = languageUtil.get(locale, "tickets")!>
50 </#if>
51 <a class="btn-block btn btn-secondary" href="${ticketsURL}" data-senna-off="true" onclick='this.target="_blank"'>
52 <span class="fas fa-ticket-alt"></span> ${ticketsLabel}
53 </a>
54
55 </#if>
56 </div>
57 </#if>
58 </#if>
59
60 <div class="row gx-30 flex-row-reverse">
61
62 <div class="col-lg-4 side-bar">
63
64 <#assign imagePath = ADTUtil.getImagePath(calendarData.getImageUuid(), 3, calendarBooking.getGroupId() ,themeDisplay) >
65 <#assign imagePath1 = ADTUtil.getImagePath(calendarData.getImageUuid(), 1, calendarBooking.getGroupId() ,themeDisplay) >
66 <#if validator.isNotNull(calendarData) && validator.isNotNull(imagePath)>
67 <a href="${imagePath}" class="d-block image-wrapper image-wrapper-style mb-4 aspect-ratio-bg-cover aspect-ratio-4-to-3 lightbox" style="background-image: url(${imagePath}); background-size: cover;" itemprop="url">
68 <img class="sr-only" src="${imagePath1}" alt="${languageUtil.get(locale, 'image')} ${title}" itemprop="image"/>
69 </a>
70 </#if>
71
72 <#if validator.isNotNull(calendarData)>
73 <#assign calendarDataProperties = typeSettingsTool.getUnicodeProperties(calendarData.getTypeSettings())!>
74 <#if validator.isNotNull(calendarDataProperties)>
75 <div class="d-none d-sm-block">
76 <#assign ticketsURL = calendarDataProperties.getProperty("ticketsURL")!>
77
78 <#if validator.isNotNull(ticketsURL)>
79 <#assign ticketsLabelXML = calendarDataProperties.getProperty("ticketsLabelXML")!>
80 <#assign ticketsPrice = calendarDataProperties.getProperty("ticketsPrice")!>
81
82 <#assign ticketsLabel = localizationTool.getLocalization(ticketsLabelXML, themeDisplay.getLanguageId(), true, "")!>
83 <#if validator.isNull(ticketsLabel)>
84 <#assign ticketsLabel = languageUtil.get(locale, "tickets")!>
85 </#if>
86 <a class="btn-block btn btn-secondary" href="${ticketsURL}" data-senna-off="true" onclick='this.target="_blank"'>
87 <span class="fas fa-ticket-alt"></span> ${ticketsLabel}
88 </a>
89
90 </#if>
91 </div>
92 </#if>
93 </#if>
94
95 <div class="card card-dates mt-3">
96 <div class="card-header"><span class="fas fa-calendar" style="margin-right: 5px;"></span>${languageUtil.get(request, "date")}</div>
97 <div class="card-body">
98
99 <div class="start">
100 <span class="start-date d-block" itemprop="startDate">
101 <span class="icon-calendar color"><span class="hide-accessible">Calendario</span></span>
102 ${inicio}
103 </span>
104
105 </div>
106 <div class="end">
107 <#if inicio != fin>
108 <span class="end-date d-block" itemprop="endDate">
109 <span class="icon-calendar color"><span class="hide-accessible">Calendario</span></span>
110 ${fin}
111 </span>
112 </#if>
113 </div>
114
115 <#if calendarBooking.isRecurring()>
116 <#assign recurringCalendarBookings = ADTUtil.getRecurringCalendarBookings(calendarBooking)! >
117 <#if recurringCalendarBookings?has_content>
118 <span class="separator"><!-- separator--></span>
119
120 <span class="mt-2 d-block">${languageUtil.get(request, "infoasturias-upcoming-dates")}: </span>
121 <ul class="list-styled">
122 <#list recurringCalendarBookings as recurringCalendarBooking>
123 <#assign recurringDateFormat = ADTUtil.formatDate(recurringCalendarBooking.getStartTime(), "EEEE, dd MMMM YYYY" ,themeDisplay)>
124 <#if recurringDateFormat!=inicio>
125 <li>${recurringDateFormat}</li>
126 </#if>
127 </#list>
128 </ul>
129 </#if>
130 </#if>
131
132 </div>
133 </div>
134
135 <div class="card card-schedule">
136 <div class="card-header"><span class="fas fa-clock"></span> ${languageUtil.get(request, "infoasturias-horario")}</div>
137 <div class="card-body">
138 <#if validator.isNotNull(calendarData.getSchedule(locale))>
139 ${calendarData.getSchedule(locale)}
140 <#else>
141
142 <#if calendarBooking.getAllDay()>
143 <span class="start-time d-block">
144 <span class="icon-time color"><span class="hide-accessible">Tiempo</span></span>
145 ${languageUtil.format(locale, 'all-day',calendarBooking.getAllDay())}
146 </span>
147 <#else>
148 <#if ADTUtil.isSameDay(calendarBooking.getStartTime(), calendarBooking.getEndTime())>
149 <span class="start-time">
150 <span class="icon-time color"><span class="hide-accessible">Tiempo</span></span>
151 <#assign hour = ADTUtil.formatDate(calendarBooking.getStartTime(), "HH:mm" ,locale, timezone)>
152 <#assign hourend = ADTUtil.formatDate(calendarBooking.getEndTime(), "HH:mm" ,locale, timezone)>
153 ${hour} <#if inicio == fin> - ${hourend}</#if>
154 </span>
155
156 <span class="end-time">
157 <#assign hour = ADTUtil.formatDate(calendarBooking.getEndTime(), "HH:mm" ,locale, timezone)>
158 <#if inicio != fin>
159 -
160 ${hour}
161 </#if>
162 </span>
163 <#else>
164 <span class="start-time d-block">
165 <span class="icon-time color"><span class="hide-accessible">Tiempo</span></span>
166 <#assign hour = calendarBookingTool.format(calendarBooking.getStartTime(), "HH:mm" ,locale, timezone)/>
167 <#assign hourend = calendarBookingTool.format(calendarBooking.getEndTime(), "HH:mm" ,locale, timezone)/>
168 ${hour} <#if inicio == fin> - ${hourend}</#if>
169 </span>
170
171 <#if inicio != fin>
172 <span class="end-time d-block">
173 <span class="icon-time color"><span class="hide-accessible">Tiempo</span></span>
174 <#assign hour = calendarBookingTool.format(calendarBooking.getEndTime(), "HH:mm" ,locale, timezone)/>
175 ${hour}
176 </span>
177 </#if>
178 </#if>
179 </#if>
180 </#if>
181 </div>
182 </div>
183
184 <#assign locationdata = validator.isNotNull(calendarData.getAddress()) || validator.isNotNull(calendarData.getAddressName()) || validator.isNotNull(calendarData.getAddressDescription())>
185 <#if (calendarData.getLatitude()?has_content && calendarData.getLongitude()?has_content) || locationdata>
186 <div class="card card card-location">
187 <div class="card-header">
188 <span class="fas fa-globe-europe" style="margin-right: 5px;"></span> Localización
189 </div>
190
191 <#if (calendarData.getLatitude()?has_content && calendarData.getLongitude()?has_content) && (calendarData.getLatitude()!="0" && calendarData.getLongitude()!="0")>
192 <link crossorigin="" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css" integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ==" rel="stylesheet" />
193 <script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js" integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew==" crossorigin=""></script>
194 <div id="map-${calendarBooking.getCalendarBookingId()}" style="height: 250px; "> </div>
195 <script type="text/javascript">
196 AUI().ready('aui-base', function(A){
197 var lat = ${calendarData.getLatitude()};
198 var lng = ${calendarData.getLongitude()};
199 var map = new L.Map("map-${calendarBooking.getCalendarBookingId()}", {
200 center: [lat,lng],
201 zoom: 15,
202 layers: new L.TileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png")
203 });
204 var marker = L.marker([lat,lng]).addTo(map);
205 <#if validator.isNotNull(calendarData.getAddress())>
206 marker.bindPopup("<b>${calendarData.getAddress()}</b>").openPopup();
207 </#if>
208 });
209 </script>
210 </#if>
211 <div class="card-body">
212 <#if validator.isNotNull(calendarData.getAddress())>
213 <p class="card-text address-default">
214 <span class="fas fa-map-marker-alt" style="margin-right: 5px;"></span>${calendarData.getAddress()}
215 </p>
216 </#if>
217 <#if validator.isNotNull(calendarData.getAddressName())>
218 <p class="card-subtitle address-name" itemprop="address">
219 ${calendarData.getAddressName()}
220 </p>
221 </#if>
222 <#if validator.isNotNull(calendarData.getAddressDescription())>
223 <div class="card-text address-description">
224 ${calendarData.getAddressDescription()}
225 </div>
226 </#if>
227 </div>
228 </div>
229 <#else>
230 <#assign assetEntry = assetEntryLocalService.fetchEntry(calendarBooking.getModelClassName(),calendarBooking.getCalendarBookingId())>
231 <#assign assetEntryLinks = assetLinkLocalService.getLinks(getterUtil.getLong(assetEntry.getClassNameId()), getterUtil.getLong(assetEntry.getClassPK())) !>
232
233 <#list assetEntryLinks as assetEntryLink>
234 <#if assetEntry.getEntryId() == assetEntryLink.getEntryId1()>
235 <#else>
236 <#assign assetEntryRel = assetEntryLocalService.fetchEntry(assetEntryLink.getEntryId1())>
237 <#assign assetRenderer = assetEntryRel.getAssetRenderer() >
238 <#assign journal = journalArticleLocalServiceUtil.getLatestArticle(getterUtil.getLong(assetEntryRel.getClassPK()))>
239
240 <#assign Coordenadas = assetTool.getFieldValue(assetRenderer, "Coordenadas") />
241 <#assign Direccion = assetTool.getFieldValue(assetRenderer, "Direccion") />
242 <#assign Observaciones = assetTool.getFieldValue(assetRenderer, "Observaciones") />
243
244 <#if Coordenadas?has_content>
245 <#assign geolocationJSONObject = jsonFactoryUtil.createJSONObject(Coordenadas)>
246 <#assign latitude = geolocationJSONObject.getDouble("latitude")>
247 <#assign longitude = geolocationJSONObject.getDouble("longitude")>
248
249 <div class="card ">
250 <div class="card-header">
251 <span class="fas fa-globe-europe" style="margin-right: 5px;"></span> Localización
252 </div>
253 <link crossorigin="" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css" integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ==" rel="stylesheet" />
254 <script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js" integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew==" crossorigin=""></script>
255 <div id="map-${calendarBooking.getCalendarBookingId()}" style="height: 250px; "> </div>
256 <script type="text/javascript">
257 AUI().ready('aui-base', function(A){
258 var lat = ${latitude};
259 var lng = ${longitude};
260
261 var map = new L.Map("map-${calendarBooking.getCalendarBookingId()}", {
262 center: [lat,lng],
263 zoom: 15,
264 layers: new L.TileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png")
265 });
266 var marker = L.marker([lat,lng]).addTo(map);
267 <#if validator.isNotNull(journal.getTitle(locale))>
268 marker.bindPopup("<b>${journal.getTitle(locale)}</b>").openPopup();
269 </#if>
270 });
271 </script>
272 <div class="card-body">
273 <#if validator.isNotNull(journal.getTitle(locale))>
274 <p class="card-subtitle">
275 <span class="fas fa-map-marker-alt" style="margin-right: 5px;"></span>${journal.getTitle(locale)}
276 </p>
277 </#if>
278 <#if validator.isNotNull(Direccion)>
279 <p class="card-subtitle">
280 <span class="fas fa-map-marker-alt" style="margin-right: 5px;"></span>${Direccion}
281 </p>
282 </#if>
283 </div>
284 </div>
285 </#if>
286 </#if>
287 </#list>
288 </#if>
289 </div>
290 <div class="col-lg-8">
291 <#if validator.isNotNull(calendarData.getSummary(locale))>
292 <div class="text-summary mb-3">${calendarData.getSummary(locale)}</div>
293 </#if>
294 <#if validator.isNotNull(calendarBooking.getDescription(locale))>
295 <div class="text" itemprop="description">
296 ${calendarBooking.getDescription(locale)}
297 </div>
298 </#if>
299
300 <#if validator.isNotNull(calendarData)>
301 <#assign imgs = ADTUtil.getGalleryTool(calendarData, themeDisplay)>
302 <#assign docs = ADTUtil.getDocumentsTool(calendarData, themeDisplay)>
303 </#if>
304
305 <div class="article-accordion accordion">
306
307 <#if imgs?has_content>
308 <div class="card-accordion-item">
309 <div class="card-header">
310 <a id="tabGalleryHeading" href="#tabGalleryContent" class="h3 accordion-header collapsed" aria-expanded="false" data-toggle="liferay-collapse" aria-controls="tabGalleryContent" role="button">${languageUtil.get(locale, 'image-gallery')}</a>
311 </div>
312 <div id="tabGalleryContent" class="card-body accordion-collapse collapse" aria-labelledby="tabGalleryHeading">
313 ${imgs}
314 </div>
315 </div>
316 </#if>
317
318 <#if docs?has_content>
319 <div class="article-section accordion-item">
320 <a id="tabDocumentsHeading" href="#tabDocumentsContent" class="h3 accordion-header collapsed" aria-expanded="false" data-toggle="liferay-collapse" aria-controls="tabDocumentsContent" role="button">${languageUtil.get(locale, 'documents')}</a>
321 <div id="tabDocumentsContent" class="article-section-content article-section-info accordion-collapse collapse" aria-labelledby="tabDocumentsHeading"> ${docs} </div>
322 </div>
323 </#if>
324 </div>
325 </div>
326 </div>
327 </div>
328 </#list>
329</#if>