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