Breadcrumb
Détail Entité
An error occurred while processing the template.
Java method "jdk.proxy57.$Proxy364.getCurrentAndFuturePublishedEventsFromPlace(String)" threw an exception when invoked on jdk.proxy57.$Proxy364 object "eu.strasbourg.service.agenda.service.impl.EventLocalServiceImpl@50dc25a4"; see cause exception in the Java stack trace.
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign placeEvents = EventLocalServi... [in template "20116#20160#4906352" at line 404, column 17]
----
1<!-- Détail lieu -->
2<#setting locale = locale />
3
4<#if !themeDisplay.scopeGroup.publicLayoutSet.virtualHostname?has_content || themeDisplay.scopeGroup.isStagingGroup()>
5 <#assign homeURL = "/web${layout.group.friendlyURL}/" />
6<#else>
7 <#assign homeURL = "/" />
8</#if>
9
10<#assign fileEntryHelper = serviceLocator.findService("eu.strasbourg.utils.api.FileEntryHelperService") />
11<#assign EventLocalService = serviceLocator.findService("eu.strasbourg.service.agenda.service.EventLocalService")/>
12
13<@liferay_util["body-top"]>
14 <script>
15 window.title = "${entry.getAlias(locale)}";
16 window.x = ${entry.getMercatorX()};
17 window.y = ${entry.getMercatorY()};
18 </script>
19</@>
20<link rel="stylesheet" href="/o/0-global-theme/libs/leaflet/leaflet.css" />
21
22
23<@liferay_util["html-bottom"]>
24
25 <script src="/o/0-global-theme/libs/leaflet/leaflet.js"></script>
26 <script src="/o/strasbourg-int-theme/js/map.js"></script>
27</@>
28
29<div class="seu-page-lieu">
30 <main class="seu-container">
31 <a href="#" class="add-favorites"
32 data-type="1"
33 data-title="${entry.getAlias(locale)}"
34 data-url="${themeDisplay.getPortalURL()}${homeURL}lieu/-/entity/sig/${entry.getSIGid()}/${entry.getNormalizedAlias(locale)}"
35 data-id="${entry.placeId}">
36 <span><@liferay_ui.message key="eu.add-to-favorite" /></span>
37 </a>
38 <h1>${entry.getAlias(locale)}</h1>
39
40 <div class="seu-flexbox">
41
42 <div class="seu-container-left">
43
44 <!-- Cartographie -->
45 <div id="aroundme" class="widget" style="margin-bottom: 45px">
46 <div id="aroundme__center" style="height: auto;">
47 <div id="mapid" style="height: 320px" >
48 <div class="aroundme__ui__group" style="z-index: 401">
49 <button class="aroundme__ui aroundme__ui--zoomin"></button>
50 <button class="aroundme__ui aroundme__ui--zoomout"></button>
51 </div>
52 </div>
53 </div>
54 </div>
55
56 <!-- Horaires -->
57 <#if entry.periods?has_content || entry.hasURLSchedule>
58 <div class="seu-wi--collapsing <#if !renderRequest.getAttribute("fromContactForm")?has_content>seu-first-opened</#if>">
59 <button class="seu-toggle-collapse">
60 <h2 class="schedule"><span><@liferay_ui.message key="eu.times" /></span></h2>
61 </button>
62 <div class="seu-collapsing-box">
63 <#if !entry.hasURLSchedule>
64 <div class="seu-wi seu-wi-schedules">
65 <div class="tab-list">
66 </div>
67 <div class="tab-content">
68 <!-- Jours suivants -->
69 <h3 class="hidden"><@liferay_ui.message key="eu.place.next-days" /></h3>
70 <div class="tab-title">${entry.getAlias(locale)}</div>
71 <ul class="schedule-list">
72 <#assign daySchedulesMap = entry.getFollowingWeekSchedules(.now, locale) />
73 <#assign hasException = false />
74 <#list daySchedulesMap?keys as day>
75 <!-- Correctif car suite à une modif on n'envoie plus une liste vide mais null, donc erreur freemarker -->
76 <#if daySchedulesMap[day]?size != 1 || (daySchedulesMap[day]?size == 1 && daySchedulesMap[day][0]?? && daySchedulesMap[day][0]?has_content)>
77 <li>
78 <span>${day}</span>
79 <span>
80 <#list daySchedulesMap[day] as schedule>
81 <div>
82 <#if schedule.isException() || schedule.isPublicHoliday()>
83 <#assign hasException = true />
84 <#assign hasAnyException = true />
85 <#else>
86 <#assign hasException = false />
87 </#if>
88 <#if schedule.isClosed()>
89 <#if hasException><span class="exception"></#if>
90 <@liferay_ui.message key="eu.closed" />
91 <#if hasException></span></#if>
92 <#elseif schedule.isAlwaysOpen()>
93 <#if hasException><span class="exception"></#if>
94 <@liferay_ui.message key="always-open" />
95 <#if hasException></span></#if>
96 <#else>
97 <#list schedule.openingTimes as openingTime>
98 <div>
99 <#if hasException><span class="exception"></#if>
100 ${openingTime.first} - ${openingTime.second}
101 <#if hasException></span></#if>
102 </div>
103 <#if schedule.comments[openingTime?index]?has_content>
104 <div style="margin-top: -10px;<#if hasException>color: #F44336;</#if>">(${schedule.comments[openingTime?index]})</div>
105 </#if>
106 </#list>
107 </#if>
108 </div>
109 <#if schedule.isException() || schedule.isPublicHoliday()>
110 </span>
111 </#if>
112 </#list>
113 </span>
114 </li>
115 </#if>
116 </#list>
117 </ul>
118 <!-- Jours suivants pour les sous-lieux -->
119 <#list entry.publishedSubPlaces as subPlace>
120 <div class="tab-title">${subPlace.getName(locale)}</div>
121 <ul class="schedule-list">
122 <#assign daySchedulesMap = subPlace.getFollowingWeekSchedules(.now, locale) />
123 <#list daySchedulesMap?keys as day>
124 <!-- Correctif car suite à une modif on n'envoie plus une liste vide mais null, donc erreur freemarker -->
125 <#if daySchedulesMap[day]?size != 1 || (daySchedulesMap[day]?size == 1 && daySchedulesMap[day][0]?? && daySchedulesMap[day][0]?has_content)>
126 <li>
127 <span>${day}</span>
128 <span>
129 <#list daySchedulesMap[day] as schedule>
130 <div>
131 <#if schedule.isException() || schedule.isPublicHoliday()>
132 <#assign hasException = true />
133 <#assign hasAnyException = true />
134 <#else>
135 <#assign hasException = false />
136 </#if>
137 <#if schedule.isClosed()>
138 <#if hasException><span class="exception"></#if>
139 <@liferay_ui.message key="eu.closed" />
140 <#if hasException></span></#if>
141 <#elseif schedule.isAlwaysOpen()>
142 <#if hasException><span class="exception"></#if>
143 <@liferay_ui.message key="always-open" />
144 <#if hasException></span></#if>
145 <#else>
146 <#list schedule.openingTimes as openingTime>
147 <div>
148 <#if hasException><span class="exception"></#if>
149 ${openingTime.first} - ${openingTime.second}
150 <#if hasException></span></#if>
151 </div>
152 <#if schedule.comments[openingTime?index]?has_content>
153 <div style="margin-top: -10px;<#if hasException>color: #F44336;</#if>">(${schedule.comments[openingTime?index]})</div>
154 </#if>
155 </#list>
156 </#if>
157 </div>
158 </#list>
159 </span>
160 </li>
161 </#if>
162 </#list>
163 </ul>
164 </#list>
165 <#if hasAnyException?has_content && hasAnyException>
166 <!-- Message pour exceptions -->
167 <span style="color: #F44336; font-weight: bold; font-size: 1.6rem;"><@liferay_ui.message key="eu.place.look-at-exceptionnal-schedule" /></span>
168 </#if>
169 </div>
170 <!-- Période par défaut -->
171 <#if entry.defaultPeriod?has_content>
172 <div class="tab-content">
173 <h3 class="hidden">${entry.defaultPeriod.getName(locale)}</h3>
174 <div class="tab-title">${entry.getAlias(locale)}</div>
175 <ul class="schedule-list">
176 <#assign weekSchedules = entry.defaultPeriod.getWeekSchedule() />
177 <#assign day = 0 />
178 <#list weekSchedules as schedule>
179 <li>
180 <span><@liferay_ui.message key="jour-semaine${day}" /></span>
181 <span>
182 <#if schedule.isClosed()>
183 <@liferay_ui.message key="eu.closed" />
184 <#elseif schedule.isAlwaysOpen()>
185 <@liferay_ui.message key="always-open" />
186 <#else>
187 <#list schedule.openingTimes as openingTime>
188 <div>
189 ${openingTime.first} - ${openingTime.second}
190 </div>
191 <#if schedule.comments[openingTime?index]?has_content>
192 <div style="margin-top: -10px">(${schedule.comments[openingTime?index]})</div>
193 </#if>
194 </#list>
195 </#if>
196 </span>
197 </li>
198 <#assign day = day + 1 />
199 </#list>
200 </ul>
201 <!-- Période par défaut pour les sous-lieux -->
202 <#list entry.publishedSubPlaces as subPlace>
203 <div class="tab-title">${subPlace.getName(locale)}</div>
204 <ul class="schedule-list">
205 <#assign weekSchedules = subPlace.defaultPeriod.getWeekSchedule(subPlace.subPlaceId) />
206 <#assign day = 0 />
207 <#list weekSchedules as schedule>
208 <li>
209 <span><@liferay_ui.message key="jour-semaine${day}" /></span>
210 <span>
211 <#if schedule.isClosed()>
212 <@liferay_ui.message key="eu.closed" />
213 <#elseif schedule.isAlwaysOpen()>
214 <@liferay_ui.message key="always-open" />
215 <#else>
216 <#list schedule.openingTimes as openingTime>
217 <div>
218 ${openingTime.first} - ${openingTime.second}
219 </div>
220 <#if schedule.comments[openingTime?index]?has_content>
221 <div style="margin-top: -10px">(${schedule.comments[openingTime?index]})</div>
222 </#if>
223 </#list>
224 </#if>
225 </span>
226 </li>
227 <#assign day = day + 1 />
228 </#list>
229 </ul>
230 </#list>
231 </div>
232 </#if>
233 <!-- Autres périodes -->
234 <#list entry.nonDefaultPeriods as period>
235 <div class="tab-content">
236 <h3 class="hidden">${period.getName(locale)} <div>${period.getDisplay(locale)}</div></h3>
237 <div class="tab-title">${entry.getAlias(locale)}</div>
238 <ul class="schedule-list">
239 <#assign weekSchedules = period.getWeekSchedule() />
240 <#assign day = 0 />
241 <#list weekSchedules as schedule>
242 <li>
243 <span><@liferay_ui.message key="jour-semaine${day}" /></span>
244 <span>
245 <div>
246 <#if schedule.isClosed()>
247 <@liferay_ui.message key="eu.closed" />
248 <#elseif schedule.isAlwaysOpen()>
249 <@liferay_ui.message key="always-open" />
250 <#else>
251 <#list schedule.openingTimes as openingTime>
252 <div>
253 ${openingTime.first} - ${openingTime.second}
254 </div>
255 <#if schedule.comments[openingTime?index]?has_content>
256 <div style="margin-top: -10px">(${schedule.comments[openingTime?index]})</div>
257 </#if>
258 </#list>
259 </#if>
260 </div>
261 </span>
262 </li>
263 <#assign day = day + 1 />
264 </#list>
265 </ul>
266 <!-- Autres Périodes pour les sous-lieux -->
267 <#list entry.publishedSubPlaces as subPlace>
268 <div class="tab-title">${subPlace.getName(locale)}</div>
269 <ul class="schedule-list">
270 <#assign weekSchedules = period.getWeekSchedule(subPlace.subPlaceId) />
271 <#assign day = 0 />
272 <#list weekSchedules as schedule>
273 <li>
274 <span><@liferay_ui.message key="jour-semaine${day}" /></span>
275 <span>
276 <div>
277 <#if schedule.isClosed()>
278 <@liferay_ui.message key="eu.closed" />
279 <#elseif schedule.isAlwaysOpen()>
280 <@liferay_ui.message key="always-open" />
281 <#else>
282 <#list schedule.openingTimes as openingTime>
283 <div>
284 ${openingTime.first} - ${openingTime.second}
285 </div>
286 <#if schedule.comments[openingTime?index]?has_content>
287 <div style="margin-top: -10px">(${schedule.comments[openingTime?index]})</div>
288 </#if>
289 </#list>
290 </#if>
291 </div>
292 </span>
293 </li>
294 <#assign day = day + 1 />
295 </#list>
296 </ul>
297 </#list>
298 </div>
299 </#list>
300 </div>
301 </#if>
302 <div class="rte">
303 <#if entry.hasURLSchedule>
304 <p style="margin-bottom: 20px;">
305 <a href="${entry.getScheduleLinkURL(locale)}" target="_blank" title="${entry.getScheduleLinkName(locale)} (<@liferay_ui.message key="eu.new-window" />)">
306 <span class="seu-btn-text">${entry.getScheduleLinkName(locale)}</span>
307 </a>
308 </p>
309 </#if>
310 <#if entry.hasScheduleTable()>
311 <p>
312 <#assign assetVocabularyHelper = serviceLocator.findService("eu.strasbourg.utils.api.AssetVocabularyHelperService") />
313 <#list entry.types as type>
314 <#if (assetVocabularyHelper.getCategoryProperty(type.categoryId, 'schedule') == 'true')>
315 <#assign category = type />
316 </#if>
317 </#list>
318 <a href="${homeURL}horaires-lieux/-/schedules/category/${category.categoryId}" class="seu-btn-square--filled--second">
319 <span class="seu-btn-text"><@liferay_ui.message key="eu.see-all-schedule-of" /> ${category.getTitle(locale)?lower_case}</span>
320 </a>
321 </p>
322 </#if>
323 <#if !entry.hasURLSchedule>
324 <!-- Liste des exceptions -->
325 <#assign exceptions = entry.getPlaceScheduleExceptionFreeMarker(.now, true, locale) />
326 <#if exceptions?has_content || (hasAnyException?has_content && hasAnyException)>
327 <#assign totalExceptionsCount = 0 />
328 <h3><@liferay_ui.message key="eu.exceptional-closings-openings" /></h3>
329 <ul class="seu-dates-list">
330 <#list exceptions as exception>
331 <#assign totalExceptionsCount++ />
332 <li>
333 <strong>${exception.getPeriodDisplay(locale)}</strong> :
334 <#if exception.isClosed()>
335 <@liferay_ui.message key="eu.closed" />
336 <#else>
337 <#list exception.openingTimes as openingTime>
338 ${openingTime.first} - ${openingTime.second}<#sep>, </#sep>
339 </#list>
340 </#if>
341 - ${exception.description}
342 </li>
343 </#list>
344 <#list entry.publishedSubPlaces as subPlace>
345 <#assign exceptions = subPlace.getSubPlaceScheduleExceptionFreeMarker(.now, true, locale) />
346 <#if exceptions?has_content>
347 <#list exceptions as exception>
348 <#assign totalExceptionsCount++ />
349 <li>
350 <strong>${subPlace.getName(locale)} - ${exception.getPeriodDisplay(locale)}</strong> :
351 <#if exception.isClosed()>
352 <@liferay_ui.message key="eu.closed" />
353 <#else>
354 <#list exception.openingTimes as openingTime>
355 ${openingTime.first} - ${openingTime.second}<#sep>, </#sep>
356 </#list>
357 </#if>
358 - ${exception.description}
359 </li>
360 </#list>
361 </#if>
362 </#list>
363 </ul>
364
365 <#if (totalExceptionsCount > 5)>
366 <div class="seu-line-left">
367 <button class="seu-see-more seu-btn-square seu-bordered seu-core">
368 <span class="seu-flexbox">
369 <span class="seu-btn-text seu-more"><@liferay_ui.message key="eu.see-more" /></span>
370 <span class="seu-btn-text seu-less"><@liferay_ui.message key="eu.see-less" /></span>
371 <span class="seu-btn-arrow"></span>
372 </span>
373 </button>
374 </div>
375 </#if>
376 </#if>
377 </#if>
378
379 <#if entry.getExceptionalSchedule(locale)?has_content>
380 <h3><@liferay_ui.message key="eu.exceptional-schedule" /></h3>
381 ${entry.getExceptionalSchedule(locale)}
382 </#if>
383 </div>
384 </div>
385 </div>
386 </#if>
387
388
389 <!-- Présentation -->
390 <#if entry.getPresentation(locale)?has_content>
391 <div class="seu-wi--collapsing <#if !entry.periods?has_content && !renderRequest.getAttribute("fromContactForm")?has_content>seu-first-opened</#if>">
392 <button class="seu-toggle-collapse">
393 <h2 class="description"><span><@liferay_ui.message key="eu.presentation" /></span></h2>
394 </button>
395 <div class="seu-collapsing-box">
396 <div class="rte">
397 ${entry.getPresentation(locale)}
398 </div>
399 </div>
400 </div>
401 </#if>
402
403 <!-- Agenda -->
404 <#assign placeEvents = EventLocalService.getCurrentAndFuturePublishedEventsFromPlace(entry.getSIGid()) />
405 <#if entry.displayEvents && placeEvents?has_content>
406 <div class="seu-wi--collapsing">
407 <button class="seu-toggle-collapse">
408 <h2 class="description"><span style="text-transform: uppercase;"><@liferay_ui.message key="agenda" /></span></h2>
409 </button>
410 <div class="seu-collapsing-box">
411 <div class="seu-agenda-slider-container">
412 <div class="seu-slider">
413 <#assign i=0 />
414 <#list placeEvents?sort_by("startDateFirstCurrentAndFuturePeriod") as event>
415 <#if i == 5>
416 <#break>
417 </#if>
418 <div class="seu-agenda-slider-item seu-has-ville">
419 <a href="${homeURL}evenement/-/entity/id/${event.eventId}/${event.getNormalizedTitle(locale)}" class="seu-link" title="${event.getTitle(locale)}">
420 <div class="seu-date">
421 <div class="seu-date-sup">
422 <#assign dates=event.getDateRange() />
423 <#if dates[0]?string("yyyy-MM-dd") == dates[1]?string("yyyy-MM-dd")>
424 <span class="seu-date-prefix"><@liferay_ui.message key="eu.event.the" /></span>
425 <#else>
426 <span class="seu-date-prefix"><@liferay_ui.message key="eu.event.from-the" /></span>
427 </#if>
428 <span class="seu-date-start"></span>
429 <span class="seu-date-suffix"></span>
430 </div>
431 <div class="seu-date-end">${dates[0]?string['dd.MM']}</div>
432 </div>
433 <div class="seu-title dotme" data-dot="3" style="word-wrap: break-word;">${event.getTitle(locale)}</div>
434 <div class="seu-ville">
435 ${event.getPlaceAlias(locale)}
436 <#if event.getPlaceAddress(locale)?has_content>
437 - ${event.getPlaceAddress(locale)}
438 </#if>
439 - ${event.placeZipCode} ${event.getPlaceCity(locale)}
440 </div>
441 <div class="seu-lead dotme is-truncated" data-dot="3" style="word-wrap: break-word;">${event.getDescription(locale)?replace("<[^>]*>", "", "r")}</div>
442 </a>
443 </div>
444 <#assign i++>
445 </#list>
446 </div>
447 <div class="owl-nav">
448 <button class="seu-owl-prev">
449 <span class="seu-picto"></span>
450 </button>
451 <button class="seu-owl-next">
452 <span class="seu-picto"></span>
453 </button>
454 </div>
455 <div class="seu-btn-line">
456 <a href="${homeURL}agenda?idSIGPlace=${entry.getSIGid()}" class="seu-btn-square seu-filled seu-second" title="<@liferay_ui.message key="eu.all-events" />">
457 <span class="seu-flexbox">
458 <span class="seu-btn-text"><@liferay_ui.message key="eu.all-events" /></span>
459 <span class="seu-btn-arrow"></span>
460 </span>
461 </a>
462 </div>
463 </div>
464 </div>
465 </div>
466 </#if>
467
468 <!-- Activités -->
469 <#assign activityLocalService = serviceLocator.findService("eu.strasbourg.service.activity.service.ActivityLocalService") />
470 <#assign placeActivityAgenda = activityLocalService.getPlaceAgenda(entry.getSIGid(), locale) />
471 <#if placeActivityAgenda.periods?has_content>
472 <div class="seu-wi--collapsing">
473 <button class="seu-toggle-collapse">
474 <h2 class="more"><span><@liferay_ui.message key="eu.activity.activities" /></span></h2>
475 </button>
476 <div class="seu-collapsing-box">
477 <div class="seu-wi seu-wi-schedules">
478 <div class="tab-list">
479 <div class="tab-menu-rwd">
480 <#list placeActivityAgenda.periods as period>
481 <button class="tab-toggle <#if period?is_first>current</#if>" data-tab-target="${period?index}">
482 ${period.periodName}
483 </button>
484 </#list>
485 </div>
486 <#list placeActivityAgenda.periods as period>
487 <button class="tab-toggle <#if period?is_first>current</#if>" data-tab-target="${period?index}">
488 ${period.periodName}
489 </button>
490 </#list>
491 </div>
492 <#list placeActivityAgenda.periods as period>
493 <div class="tab-content <#if period?is_first>tabbed</#if>" data-tab-index="${period?index}">
494 <h3 class="hidden">${period.periodName}</h3>
495 <#list period.courses as course>
496 <div style="margin-bottom: 20px">
497 <div class="tab-title">${course.courseName}</div>
498 <div class="rte" style="margin-top: -5px; margin-bottom: 10px;">
499 <a href="${homeURL}cours/-/entity/id/${course.courseId}"><@liferay_ui.message key="eu.see-detail" /></a>
500 </div>
501 <ul class="schedule-list" style="margin-bottom: 10px;">
502 <#list 0..6 as day>
503 <#assign schedules = course.getSchedulesForDay(day) />
504 <#if schedules?has_content>
505 <li>
506 <span><@liferay_ui.message key="${course.getDayName(day)}" /></span>
507 <span>
508 <#list schedules as schedule>
509 ${schedule.startTime} - ${schedule.endTime}<#sep><br></#sep>
510 </#list>
511 </span>
512 </li>
513 </#if>
514 </#list>
515 </ul>
516 </div>
517 </#list>
518 </div>
519 </#list>
520 </div>
521 </div>
522 </div>
523 </#if>
524
525 <!-- Informations complémentaires -->
526 <#if entry.getAdditionalInformation(locale)?has_content>
527 <div class="seu-wi--collapsing">
528 <button class="seu-toggle-collapse">
529 <h2 class="more"><span><@liferay_ui.message key="eu.place.additional-information" /></span></h2>
530 </button>
531 <div class="seu-collapsing-box">
532 <div class="rte">
533 ${entry.getAdditionalInformation(locale)}
534 </div>
535 </div>
536 </div>
537 </#if>
538
539 <!-- Médias -->
540 <#if entry.documentsIds?has_content || entry.videos?has_content>
541 <div class="seu-wi--collapsing">
542 <button class="seu-toggle-collapse">
543 <h2 class="media"><span><@liferay_ui.message key="eu.place.medias" /></span></h2>
544 </button>
545 <div class="seu-collapsing-box">
546 <#list entry.documentsIds?split(",") as fileId>
547 <#if fileId?has_content>
548 <#assign url = fileEntryHelper.getFileEntryURL(fileId?number) />
549
550 <#if url="">
551 <#continue>
552 </#if>
553
554 <#assign title = fileEntryHelper.getFileTitle(fileId?number, locale) />
555 <#assign size = fileEntryHelper.getReadableFileEntrySize(fileId?number, locale) />
556 <#assign extension = fileEntryHelper.getFileExtension(fileId?number) />
557 <div class="seu-wi seu-media seu-wi-download">
558 <div class="seu-media-container">
559 <div class="seu-media-left"><div class="seu-media-picto"></div></div>
560 <div class="seu-media-right">
561 <div class="seu-media-text">
562 <div class="seu-media-title">${title}</div>
563 <p>${extension?upper_case} - ${size}</p>
564 </div>
565 <a href="${url}" target="_blank" class="seu-media-download seu-btn-square seu-filled seu-second" title="${title} (<@liferay_ui.message key="eu.new-window" />)">
566 <div class="seu-btn-text-editable">
567 <span class="seu-flexbox">
568 <span class="seu-btn-text"><@liferay_ui.message key="download" /></span>
569 <span class="seu-btn-arrow"> </span>
570 </span>
571 </div>
572 </a>
573 </div>
574 </div>
575 </div>
576 </#if>
577 </#list>
578 <#list entry.videos as video>
579 <div class="seu-wi seu-media seu-wi-embed">
580 <div class="seu-media-container">
581 <div class="seu-media-left">
582 <div class="seu-media-picto"></div>
583 </div>
584 <div class="seu-media-right">
585 <div class="seu-media-text">
586 <div class="seu-media-title">${video.getTitle(locale)}</div>
587 <p class="seu-media-description">${video.getDescription(locale)}</p>
588 </div>
589 </div>
590 <div class="seu-media-bottom">
591 <div class="seu-media-ratio">
592 ${video.getPlayer(locale)}
593 </div>
594 </div>
595 </div>
596 </div>
597 </#list>
598 </div>
599 </div>
600 </#if>
601
602 <!-- Accès -->
603 <#if entry.getAccess(locale)?has_content>
604 <div class="seu-wi--collapsing">
605 <button class="seu-toggle-collapse">
606 <h2 class="geoloc"><span><@liferay_ui.message key="access" /></span></h2>
607 </button>
608 <div class="seu-collapsing-box">
609 <div class="rte">
610 ${entry.getAccess(locale)}
611 </div>
612 </div>
613 </div>
614 </#if>
615
616 <!-- Accès pour handicapés -->
617 <#if entry.hasAnyAccessForDisabled() || entry.getAccessForDisabled(locale)?has_content>
618 <div class="seu-wi--collapsing">
619 <button class="seu-toggle-collapse">
620 <h2 class="handicap"><span><@liferay_ui.message key="eu.access-for-disabled" /></span></h2>
621 </button>
622 <div class="seu-collapsing-box">
623 <#if entry.hasAnyAccessForDisabled()>
624 <div class="seu-svg-list">
625 <#if entry.accessForWheelchair>
626 <div class="seu-picto seu-picto-wheelchair" title="<@liferay_ui.message key='eu.access-for-wheelchair' />"></div>
627 </#if>
628
629 <#if entry.accessForDeaf>
630 <div class="seu-picto seu-picto-deaf" title="<@liferay_ui.message key='eu.access-for-deaf' />"></div>
631 </#if>
632
633 <#if entry.accessForBlind>
634 <div class="seu-picto seu-picto-blind" title="<@liferay_ui.message key='eu.access-for-blind' />"></div>
635 </#if>
636
637 <#if entry.accessForDeficient>
638 <div class="seu-picto seu-picto-mental" title="<@liferay_ui.message key='eu.access-for-deficient' />"></div>
639 </#if>
640
641 <#if entry.accessForElder>
642 <div class="seu-picto seu-picto-pmr" title="<@liferay_ui.message key='eu.access-for-elder' />"></div>
643 </#if>
644 </div>
645 </#if>
646 <#if entry.getAccessForDisabled(locale)?has_content>
647 <div class="rte">
648 ${entry.getAccessForDisabled(locale)}
649 </div>
650 </#if>
651 </div>
652 </div>
653 </#if>
654
655 <!-- Accès -->
656 <#if entry.getServiceAndActivities(locale)?has_content>
657 <div class="seu-wi--collapsing">
658 <button class="seu-toggle-collapse">
659 <h2 class="services"><span><@liferay_ui.message key="eu.services-and-activities" /></span></h2>
660 </button>
661 <div class="seu-collapsing-box">
662 <div class="rte">
663 ${entry.getServiceAndActivities(locale)}
664 </div>
665 </div>
666 </div>
667 </#if>
668
669 <!-- Caractéristiques -->
670 <#if entry.getCharacteristics(locale)?has_content>
671 <div class="seu-wi--collapsing">
672 <button class="seu-toggle-collapse">
673 <h2 class="caracteristiques"><span><@liferay_ui.message key="eu.features" /></span></h2>
674 </button>
675 <div class="seu-collapsing-box">
676 <div class="rte">
677 ${entry.getCharacteristics(locale)}
678 </div>
679 </div>
680 </div>
681 </#if>
682
683 <!-- Contact -->
684 <#if entry.mail?has_content>
685 <div class="seu-wi--collapsing <#if renderRequest.getAttribute("fromContactForm")?has_content && renderRequest.getAttribute("fromContactForm")>seu-first-opened</#if>">
686 <button class="seu-toggle-collapse">
687 <h2 class="contact"><span><@liferay_ui.message key="eu.contact" /></span></h2>
688 </button>
689 <div class="seu-collapsing-box white-box">
690 <div class="rte">
691 <@liferay_portlet.actionURL var="contactURL" name="contact">
692 <@liferay_portlet.param name="classPK" value="${entry.getPlaceId()}" />
693 <@liferay_portlet.param name="to" value="${entry.mail}" />
694 <@liferay_portlet.param name="title" value="${entry.getAlias(locale)}" />
695 <@liferay_portlet.param name="type" value="Place" />
696 </@liferay_portlet.actionURL>
697
698 <form id="contactForm" action="${contactURL}#contactForm" name="contactForm" method="post" class="seu-wi seu-wi-contact-form col-md-8">
699 <@liferay_ui.error key="all-fields-required" message="eu.all-fields-required" targetNode="#contactForm" />
700 <@liferay_ui.error key="invalid-mail" message="eu.invalid-mail" targetNode="#contactForm" />
701 <@liferay_ui.error key="friendlycaptcha-error" message="eu.friendlycaptcha-error" targetNode="#contactForm" />
702
703 <#if renderRequest.getAttribute("mailSent")?has_content && renderRequest.getAttribute("mailSent")>
704 <p class="mail-success">
705 <@liferay_ui.message key="eu.mail-success" />
706 </p>
707 </#if>
708
709 <div class="inline-group">
710 <div class="widget widget-required">
711 <div class="title">
712 <label for="_eu_strasbourg_portlet_entity_detail_EntityDetailPortlet_lastName"><@liferay_ui.message key="contact.lastname" /></label>
713 </div>
714 <div class="content">
715 <input name="_eu_strasbourg_portlet_entity_detail_EntityDetailPortlet_lastName" aria-required="true" id="_eu_strasbourg_portlet_entity_detail_EntityDetailPortlet_lastName" type="text" placeholder="<@liferay_ui.message key="contact.your-lastname" />" value="${renderRequest.getAttribute("lastName")!""}">
716 </div>
717 </div>
718 <div class="widget widget-required">
719 <div class="title">
720 <label for="prenom"><@liferay_ui.message key="contact.firstname" /></label>
721 </div>
722 <div class="content">
723 <input name="_eu_strasbourg_portlet_entity_detail_EntityDetailPortlet_firstName" aria-required="true" id="_eu_strasbourg_portlet_entity_detail_EntityDetailPortlet_firstName" type="text" placeholder="<@liferay_ui.message key="contact.your-firstname" />" value="${renderRequest.getAttribute("firstName")!""}">
724 </div>
725 </div>
726 </div>
727 <div class="widget widget-required">
728 <div class="title">
729 <label for="_eu_strasbourg_portlet_entity_detail_EntityDetailPortlet_email"><@liferay_ui.message key="contact.mail" /></label>
730 </div>
731 <div class="content">
732 <input name="_eu_strasbourg_portlet_entity_detail_EntityDetailPortlet_email" aria-required="true" id="_eu_strasbourg_portlet_entity_detail_EntityDetailPortlet_email" type="text" placeholder="<@liferay_ui.message key="contact.your-mail" />" value="${renderRequest.getAttribute("email")!""}">
733 </div>
734 </div>
735 <div class="widget widget-required">
736 <div class="title">
737 <label for="_eu_strasbourg_portlet_entity_detail_EntityDetailPortlet_message"><@liferay_ui.message key="contact.request" /></label>
738 </div>
739 <div class="content">
740 <textarea name="_eu_strasbourg_portlet_entity_detail_EntityDetailPortlet_message" id="_eu_strasbourg_portlet_entity_detail_EntityDetailPortlet_message" placeholder="<@liferay_ui.message key="contact.your-message" />" rows="5">${renderRequest.getAttribute("message")!""}</textarea>
741 </div>
742 </div>
743 <div>
744 <label for="_eu_strasbourg_portlet_entity_detail_EntityDetailPortlet_notificationEmail">
745
746 <input type="checkbox" class="notification-email"
747 name="_eu_strasbourg_portlet_entity_detail_EntityDetailPortlet_notificationEmail" id="_eu_strasbourg_portlet_entity_detail_EntityDetailPortlet_notificationEmail" checked> <@liferay_ui.message key="eu.do-you-want-a-notification" />
748 </label>
749 </div>
750 <div style="margin: 20px 0;" class="frc-captcha"
751 data-lang="${locale.getLanguage()}"
752 data-puzzle-endpoint="${propsUtil.get('eu.strasbourg.friendlycaptcha.puzzle.url')}"
753 data-sitekey="${propsUtil.get('eu.strasbourg.friendlycaptcha.public')}"></div>
754 <div style="padding-top: 20px; padding-bottom: 20px;">
755 <@liferay_ui.message key="contact.default-privacy" />
756 </div>
757 <div class="buttons submit">
758 <div class="SubmitWidget widget submit-button" style="min-width: 150px;">
759 <div class="content"><button name="submit" value="<@liferay_ui.message key="send" />"><@liferay_ui.message key="send" /></button></div>
760 </div>
761 </div>
762 </form>
763 </div>
764 </div>
765 </div>
766 </#if>
767 </div>
768
769
770 <div class="seu-container-right">
771 <#if entry.imagesURLs?has_content>
772 <div class="seu-wi-slideNpop">
773 <div class="slide">
774 <ul class="slider">
775 <#list entry.imageIds?split(",") as imageId>
776 <#assign imageURL = fileEntryHelper.getFileEntryURL(imageId?number) />
777 <#assign title = fileEntryHelper.getFileTitle(imageId?number, locale) />
778 <#assign legend = fileEntryHelper.getImageLegend(imageId?number, locale) />
779 <#assign copyright = fileEntryHelper.getImageCopyright(imageId?number, locale) />
780 <li style="background-image: url(${imageURL});" data-title="${title}" data-description="${legend} <#if copyright?has_content>© ${copyright}</#if>">
781 <img src="${imageURL}" alt="${title}">
782 </li>
783 </#list>
784 </ul>
785 <div class="owl-nav">
786 <button class="seu-owl-prev disabled">
787 <span class="seu-picto"></span>
788 </button>
789 <button class="seu-owl-next">
790 <span class="seu-picto"></span>
791 </button>
792 </div>
793 </div>
794 <div class="pop">
795 <div class="pop-box">
796 <div class="pop-head">
797 <div class="pop-title dotme">Test de titre</div>
798 <button class="pop-close"></button>
799 </div>
800 <div class="owl-nav">
801 <button class="seu-owl-prev disabled">
802 <span class="seu-picto"></span>
803 </button>
804 <button class="seu-owl-next">
805 <span class="seu-picto"></span>
806 </button>
807 </div>
808 <div class="fill"></div>
809 <div class="pop-foot">
810 <div class="pop-description dotme">Test description</div>
811 <div class="pop-pager">
812 <div class="pop-current"></div>
813 <div class="pop-total"></div>
814 </div>
815 </div>
816 </div>
817 <div class="pop-area">
818
819 </div>
820 </div>
821 </div>
822 </#if>
823 <div class="seu-location-infos">
824 <#if entry.isEnabled()>
825 <#assign occupationState = entry.getRealTime() />
826 <div class="seu-crowded-flexbox">
827 <div class="flex-left">
828 <#assign isSwimmingPool = entry.isSwimmingPool() />
829 <#assign isIceRink = entry.isIceRink() />
830 <#assign isMairie = entry.isMairie() />
831 <#assign isParking = entry.isParking() />
832 <#assign isVelhopStation = entry.isVelhopStation() />
833 <#if isSwimmingPool || isIceRink >
834 <h3><@liferay_ui.message key="live-frequentation" /></h3>
835 <#elseif isMairie>
836 <h3><@liferay_ui.message key="estimated-time" /></h3>
837 <#elseif isParking>
838 <h3><@liferay_ui.message key="live-occupation" /></h3>
839 <#elseif isVelhopStation>
840 <h3><@liferay_ui.message key="live-disponibility" /></h3>
841 </#if>
842 </div>
843 <div class="flex-right">
844 <!-- green orange red black -->
845 <div class="crowded-amount ${occupationState.cssClass}" <#if isMairie> style="font-size: 1.5rem"</#if>>
846 <#if isSwimmingPool || isIceRink || isMairie>
847 ${occupationState.occupationLabel}
848 <#elseif isParking || isVelhopStation>
849 ${occupationState.available}
850 </#if>
851 </div>
852 </div>
853 </div>
854 <div class="crowded-caption">
855 <#if isSwimmingPool || isIceRink || isMairie>
856 <@liferay_ui.message key="${occupationState.label}" />
857 <#elseif isParking>
858 <@liferay_ui.message key="eu.place.available-spots" /> ${occupationState.available}
859 <#elseif isVelhopStation>
860 <@liferay_ui.message key="eu.place.available-velhop" /> ${occupationState.available}
861 </#if>
862 </div>
863 <!-- ajout post covid : affichage capacité totale -->
864 <#if isSwimmingPool >
865 <div class="crowded-caption">
866 <@liferay_ui.message key="eu.place.total-capacity" /> ${occupationState.capacity}
867 </div>
868 </#if>
869 <div class="crowded-fyi">
870 <#if isSwimmingPool>
871 <@liferay_ui.message key="live-occupation-explanation" />
872 <#elseif isMairie>
873 <@liferay_ui.message key="estimated-time-explanation" />
874 <#elseif isParking>
875 <@liferay_ui.message key="eu.place.total-capacity" /> ${occupationState.capacity}
876 <#elseif isIceRink>
877 <@liferay_ui.message key="live-ice-rink-occupation-explanation" />
878 </#if>
879 </div>
880 </#if>
881
882 <h3><@liferay_ui.message key="eu.place.address-details" /></h3>
883 <div class="rte">
884 <p>
885 <#if entry.addressStreet?has_content>
886 ${entry.addressStreet} <br>
887 </#if>
888 <#if entry.addressComplement?has_content>
889 ${entry.addressComplement} <br>
890 </#if>
891 <#if entry.addressDistribution?has_content>
892 ${entry.addressDistribution} <br>
893 </#if>
894 ${entry.addressZipCode} ${entry.getCity(locale)}
895 </p>
896 <#if entry.phone?has_content>
897 <p>
898 <@liferay_ui.message key="phone" /> : ${entry.phone}
899 </p>
900 </#if>
901 <#if entry.getSiteLabel(locale)?has_content && entry.getSiteURL(locale)?has_content>
902 <p>
903 <a href="${entry.getSiteURL(locale)}" class="seu-external" title="${entry.getSiteLabel(locale)} (<@liferay_ui.message key="eu.new-window" />)" target="_blank">${entry.getSiteLabel(locale)}</a>
904 </p>
905 </#if>
906 <#if entry.getFacebookLabel(locale)?has_content && entry.getFacebookURL(locale)?has_content>
907 <p>
908 <a href="${entry.getFacebookURL(locale)}" class="seu-external" title="${entry.getFacebookLabel(locale)} (<@liferay_ui.message key="eu.new-window" />)" target="_blank">${entry.getFacebookLabel(locale)}</a>
909 </p>
910 </#if>
911 <#if entry.getInstagramLabel(locale)?has_content && entry.getInstagramURL(locale)?has_content>
912 <p>
913 <a href="${entry.getInstagramURL(locale)}" class="seu-external" title="${entry.getInstagramLabel(locale)} (<@liferay_ui.message key="eu.new-window" />)" target="_blank">${entry.getInstagramLabel(locale)}</a>
914 </p>
915 </#if>
916 </div>
917 </div>
918 </div>
919 </div>
920 </main>
921</div>
922
923<script type="module" src="/o/0-global-theme/libs/friendlycaptcha/widget.module.min.js" async defer ></script>
924<script nomodule src="/o/0-global-theme/libs/friendlycaptcha/widget.min.js" async defer></script>
925
926<style>
927 .lfr-alert-container {
928 position: static;
929 padding: 40px;
930 margin-bottom: 25px;
931 background: #EF5350;
932 }
933
934 .lfr-alert-container .lfr-alert-wrapper {
935 margin-bottom: 0;
936 padding: 0;
937 height: auto !important;
938 }
939
940 .lfr-alert-container .lfr-alert-wrapper + .lfr-alert-wrapper {
941 margin-top: 15px;
942 }
943
944 .lfr-alert-container .alert-danger {
945 background: none;
946 border: none;
947 margin: 0;
948 padding: 0;
949 color: white;
950 line-height: 25px
951 }
952
953 .lfr-alert-container .alert-danger button,
954 .lfr-alert-container .alert-danger .lead {
955 display: none;
956 }
957
958 .mail-success {
959 background: #4CAF50;
960 color: white;
961 padding: 40px;
962 }
963
964 @media only screen and (max-width: 767px){
965 #aroundme .aroundme__ui__group {
966 height: calc(100% - 20px);
967 }
968 }
969</style>
970<#if entry.imageURL?has_content>
971 <script>
972 if ($('.region-banner').length == 0) {
973 var bannerHtml = '<div class="region-banner"></div>';
974 $('.region-post-header').addClass('has-banner').prepend(bannerHtml);
975 }
976 </script>
977 <style>
978 .region-banner {
979 background-image: url(${entry.imageURL}) !important;
980 }
981 </style>
982</#if>