Détail Entité
Une erreur s'est produite lors du traitement du modèle.
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#1153195" at line 619, column 5]
----
1<!-- Detail lieu -->
2<#setting locale=locale />
3
4<@liferay_util["html-bottom"]>
5 <script src="/o/0-global-theme/libs/leaflet/leaflet.js"></script>
6 <link rel="stylesheet" href="/o/0-global-theme/libs/leaflet/leaflet.css" />
7</@>
8
9<#assign fileEntryHelper=serviceLocator.findService("eu.strasbourg.utils.api.FileEntryHelperService") />
10<#assign
11EventLocalService=serviceLocator.findService("eu.strasbourg.service.agenda.service.EventLocalService") />
12
13<div class="st-barre-single-sit">
14 <div class="st-barre-inner st-wrapper">
15 <div class="st-container-left">
16 <#if entry.imageId?has_content && entry.imageId?number != 0>
17 <div class="st-image st-little-image">
18 <@strasbourg.addImage fileEntryId=entry.imageId maxWidth=80 />
19 </div>
20 </#if>
21 <div class="st-content">
22 <p class="st-title">${entry.getAlias(locale)}</p>
23 <address><#if entry.addressStreet?has_content>
24 ${entry.addressStreet} <br>
25 </#if>
26 <#if entry.addressComplement?has_content>
27 ${entry.addressComplement} <br>
28 </#if>
29 <#if entry.addressDistribution?has_content>
30 ${entry.addressDistribution} <br>
31 </#if>
32 ${entry.addressZipCode} ${entry.getCity(locale)}
33 </address>
34 <#if entry.periods?has_content>
35 <#if entry.isOpenNow()>
36 <p class="st-ouverture st--open"> <@liferay_ui.message key="eu.currently-open" /></p>
37 <#else>
38 <p class="st-ouverture st--closed"> <@liferay_ui.message key="eu.currently-closed" /></p>
39 </#if>
40 </#if>
41 </div>
42 </div>
43 <div class="st-container-right">
44 <ul class="st-liens-rapides">
45 <#if entry.periods?has_content || entry.hasURLSchedule>
46 <li>
47 <a href="#horaire" class="st-btn-icon st-btn-icon--white" rel="noopener"
48 title="Horaires">
49 <span class="st-icon-clock" aria-hidden="true"></span>
50 <span class="st-sr-only">Horaires</span>
51 </a>
52 </li>
53 </#if>
54 <#if entry.phone?has_content>
55 <li>
56 <a href="tel:${entry.phone?replace(" ","")?replace("(0)","")}" class="st-btn-icon st-btn-icon--white"
57 rel="noopener"
58 title="<@liferay_ui.message key="phone" /> : ${entry.phone}">
59 <span class="st-icon-phone" aria-hidden="true"></span>
60 <span class="st-sr-only"><@liferay_ui.message key="phone" /> : ${entry.phone}</span>
61 </a>
62 </li>
63 </#if>
64 <#if entry.mail?has_content>
65 <li>
66 <button class="st-btn-icon st-btn-icon--white" data-overlay-open="st-overlay-contact"
67 aria-label="Formulaire de contact" aria-haspopup="dialog">
68 <span class="st-icon-email" aria-hidden="true"></span>
69 </button>
70 </li>
71 </#if>
72 <#if entry.getSiteLabel(locale)?has_content && entry.getSiteURL(locale)?has_content>
73 <li>
74 <a href="${entry.getSiteURL(locale)}" class="st-btn-icon st-btn-icon--white" target="_blank"
75 rel="noopener"
76 title="${entry.getSiteLabel(locale)}">
77 <span class="st-icon-web" aria-hidden="true"></span>
78 <span class="st-sr-only">${entry.getSiteLabel(locale)}</span>
79 </a>
80 </li>
81 </#if>
82 <#if entry.getBookingURL(locale)?has_content>
83 <li>
84 <a href="${entry.getBookingURL(locale)}" class="st-btn-icon st-btn-icon--white" target="_blank"
85 rel="noopener"
86 title="<@liferay_ui.message key="eu.ticket-office" />">
87 <span class="st-icon-ticket" aria-hidden="true"></span>
88 <span class="st-sr-only"><@liferay_ui.message key="eu.ticket-office" /></span>
89 </a>
90 </li>
91 </#if>
92 <#if entry.getFacebookLabel(locale)?has_content && entry.getFacebookURL(locale)?has_content>
93 <li>
94 <a href="${entry.getFacebookURL(locale)}" class="st-btn-icon st-btn-icon--white" target="_blank"
95 rel="noopener"
96 title="${entry.getFacebookLabel(locale)}">
97 <span class="st-icon-facebook" aria-hidden="true"></span>
98 <span class="st-sr-only">${entry.getFacebookLabel(locale)}</span>
99 </a>
100 </li>
101 </#if>
102 <#if entry.getInstagramLabel(locale)?has_content && entry.getInstagramURL(locale)?has_content>
103 <li>
104 <a href="${entry.getInstagramURL(locale)}" class="st-btn-icon st-btn-icon--white"
105 target="_blank" rel="noopener"
106 title="${entry.getInstagramLabel(locale)}">
107 <span class="st-icon-instagram" aria-hidden="true"></span>
108 <span class="st-sr-only">${entry.getInstagramLabel(locale)}</span>
109 </a>
110 </li>
111 </#if>
112
113
114 </ul>
115
116 <@strasbourg.isFavouriteSticky entryId=entry.getPlaceId() entryType=1 title=entry.getAlias(locale) url="${themeDisplay.getPortalURL()}/lieu/-/entity/id/${entry.placeId}/${entry.getNormalizedAlias(locale)}" />
117 <@strasbourg.socialShare />
118
119 </div>
120 </div>
121</div>
122
123
124<div class="st-page-fiche-lieu">
125 <header class="st-header-fiche-lieu">
126 <div class="st-wrapper st-wrapper-small">
127 <h1 class="st-h1">${entry.getAlias(locale)}</h1>
128 <@liferay.breadcrumbs />
129 </div>
130
131 <div class="st-visual-container st-wrapper">
132
133 <#if entry.isEnabled()>
134 <#assign occupationState = entry.getRealTime() />
135 <#assign isSwimmingPool = entry.isSwimmingPool() />
136 <#assign isIceRink = entry.isIceRink() />
137 <#assign isMairie = entry.isMairie() />
138 <#assign isParking = entry.isParking() />
139 <#assign isVelhopStation = entry.isVelhopStation() />
140 <div class="st-top-bar">
141 <h2 class="st-h2 st-top-bar__title">
142 <#if isSwimmingPool || isIceRink || isMairie>
143 <@liferay_ui.message key="${occupationState.label}-short" />
144 <#else>
145 <#if entry.periods?has_content>
146 <#if entry.isOpenNow()>
147 <p class="st-ouverture st--open"> <@liferay_ui.message key="eu.currently-open" /></p>
148 <#else>
149 <p class="st-ouverture st--closed"> <@liferay_ui.message key="eu.currently-closed" /></p>
150 </#if>
151 </#if>
152 </#if>
153 </h2>
154 <#if entry.isOpenNow() && occupationState != "NOT_AVAILABLE" && occupationState != "CLOSED" && occupationState != "DISABLED" && occupationState.occupation??>
155 <div class="st-top-bar__content">
156 <p class="st-frequentation">
157 <#if isSwimmingPool || isIceRink>
158 ${occupationState.occupation?number?round?string.number} <@liferay_ui.message key="eu.place.occupation" />
159 <#elseif isMairie>
160 ${occupationState.occupationLabel}
161 <#elseif isParking>
162 ${occupationState.available?number?round?string.number} <@liferay_ui.message key="eu.place.spots-available" />
163 <#elseif isVelhopStation>
164 ${occupationState.available?number?round?string.number} <@liferay_ui.message key="eu.place.velhop-available" />
165 </#if>
166 </p>
167 <p class="st-surtitre-cat">
168 <#if isSwimmingPool >
169 <@liferay_ui.message key="eu.place.total-capacity-long" /> ${occupationState.capacity?number?round?string.number} <@liferay_ui.message key="eu.place.person-capacity" />
170 <#elseif isParking>
171 <@liferay_ui.message key="eu.place.total-capacity-long" /> ${occupationState.capacity?number?round?string.number} <@liferay_ui.message key="eu.place.place-capacity" />
172 </#if>
173 </p>
174 <p class="st-small-text">
175 <#if isSwimmingPool>
176 <@liferay_ui.message key="live-occupation-explanation" />
177 <#elseif isMairie>
178 <@liferay_ui.message key="estimated-time-explanation" />
179 <#elseif isIceRink>
180 <@liferay_ui.message key="live-ice-rink-occupation-explanation" />
181 </#if>
182 </p>
183 </div>
184 </#if>
185 </div>
186 </#if>
187
188 <div class="st-cover-container">
189 <#if entry.imageId?has_content && entry.imageId?number != 0>
190 <div class="st-image">
191 <@strasbourg.addImage fileEntryId=entry.imageId maxWidth=560 showCopyright=true />
192 </div>
193 </#if>
194 <div class="st-wrapper-maps">
195 <a href="#skip-map-cover" class="st-btn st--btn-xs st-skip-map st-sr-only st-sr-only-focusable">Passer
196 la carte interactive</a>
197 <div class="st-maps" role="region" aria-label="Carte interactive"
198 data-lat="${ entry.getMercatorY() }" data-lng="${ entry.getMercatorX() }" data-zoom="17"
199 data-callback="initMap" data-marker="true" data-markericon="default">
200 </div>
201 <div id="skip-map-cover"></div>
202 </div>
203
204 </div>
205 </div>
206 </header>
207</div>
208
209<div class="st-content">
210
211 <!-- Horaires -->
212 <#if entry.periods?has_content || entry.hasURLSchedule>
213 <div class="st-bloc st-bloc-sit-onglets st-wrapper st-wrapper-small st--has-margin" id="horaire">
214 <h2 class="st-h2 st-bloc-sit-title">
215 <@liferay_ui.message key="eu.times" />
216 </h2>
217 <#if entry.hasURLSchedule>
218 <div class="st-bottom-part st-text-styles">
219 <a href="${entry.getScheduleLinkURL(locale)}" target="_blank"
220 title="${entry.getScheduleLinkName(locale)}" class="st-btn st--btn-secondary st--btn-full-width">
221 ${entry.getScheduleLinkName(locale)}
222 </a>
223 </div>
224 </#if>
225 <#if !entry.hasURLSchedule>
226 <div class="st-container">
227 <div class="st-slider-tablist st-js-slider-tablist splide" role="tablist">
228 <div class="splide__track">
229 <ul class="splide__list">
230 <li class="splide__slide">
231 <button class="st-slider-tablist__button" id="tab-button-1" type="button" role="tab"
232 aria-selected="true" aria-controls="tabpanel-1">
233 <span class="st-title"><@liferay_ui.message key="eu.place.next-days" /></span>
234 </button>
235 </li>
236 <#if entry.defaultPeriod?has_content>
237 <li class="splide__slide">
238 <button class="st-slider-tablist__button"
239 id="tab-button-${entry.defaultPeriod.getPeriodId()}" type="button" role="tab"
240 aria-selected="true"
241 aria-controls="tabpanel-${entry.defaultPeriod.getPeriodId()}">
242 <span class="st-title">${entry.defaultPeriod.getName(locale)}</span>
243 </button>
244 </li>
245 </#if>
246
247 <!-- Autres periodes -->
248 <#list entry.nonDefaultPeriods as period>
249 <li class="splide__slide">
250 <button class="st-slider-tablist__button" id="tab-button-${period.getPeriodId()}"
251 type="button" role="tab" aria-selected="true"
252 aria-controls="tabpanel-${period.getPeriodId()}">
253 <span class="st-title">${period.getName(locale)}</span>
254 <span class="st-surtitre-cat">${period.getDisplay(locale)}</span>
255 </button>
256 </li>
257
258 </#list>
259
260 </ul>
261 </div>
262 <div class="splide__arrows st-nav-arrows">
263 <button
264 class="splide__arrow splide__arrow--prev st-btn-arrow st--prev"></button>
265 <button
266 class="splide__arrow splide__arrow--next st-btn-arrow st--next"></button>
267 </div>
268 </div>
269 <div class="st-tabpanels">
270
271 <div class="st-tabpanel" id="tabpanel-1" role="tabpanel" tabindex="0" aria-labelledby="tab-button-1">
272 <#if entry.publishedSubPlaces?has_content>
273 <h3 class="st-subplaces">${entry.getAlias(locale)}</h3>
274 </#if>
275
276 <#assign daySchedulesMap=entry.getFollowingWeekSchedules(.now,
277 locale) />
278 <#if daySchedulesMap?has_content>
279 <ul class="st-list-rows st-basic-grid st-col-2@t-small">
280
281 <#assign hasException=false />
282 <#list daySchedulesMap?keys as day>
283 <!-- Correctif car suite a une modif on n'envoie plus une liste vide mais null, donc erreur freemarker -->
284 <#if daySchedulesMap[day]?size !=1 ||
285 (daySchedulesMap[day]?size==1 &&
286 daySchedulesMap[day][0]?? &&
287 daySchedulesMap[day][0]?has_content)>
288
289 <li class="st-item-row">
290 <p class="st-title">${day}</p>
291 <div class="st-info st-u-color-secondary">
292 <#list daySchedulesMap[day] as schedule>
293 <#if schedule.isException() ||
294 schedule.isPublicHoliday()>
295 <#assign hasException=true />
296 <#assign hasAnyException=true />
297 <#else>
298 <#assign hasException=false />
299 </#if>
300 <#if schedule.isClosed()>
301 <p class="st-ouverture st--closed st-u-color-pink">
302 <@liferay_ui.message
303 key="eu.closed" />
304 </p>
305 <#elseif schedule.isAlwaysOpen()>
306 <p class="st-ouverture">
307 <@liferay_ui.message
308 key="always-open" />
309 </p>
310 <#else>
311 <#list schedule.openingTimes as
312 openingTime>
313 <p>
314 ${openingTime.first} -
315 ${openingTime.second}
316 <#if hasException>
317 <span
318 class="st-symbol">*</span>
319 </#if>
320 </p>
321 <#if
322 schedule.comments[openingTime?index]?has_content>
323 <p class="st-note">
324 ${schedule.comments[openingTime?index]}
325 </p>
326 </#if>
327
328 </#list>
329 </#if>
330 </#list>
331
332 </div>
333 </li>
334
335 </#if>
336 </#list>
337 </ul>
338 </#if>
339 <!-- Jours suivants pour les sous-lieux -->
340 <#list entry.publishedSubPlaces as subPlace>
341 <h3 class="st-subplaces mt-4">${subPlace.getName(locale)}</h3>
342 <#assign
343 daySchedulesMap=subPlace.getFollowingWeekSchedules(.now,
344 locale) />
345 <#if daySchedulesMap?has_content>
346 <ul class="st-list-rows st-basic-grid st-col-2@t-small">
347
348 <#list daySchedulesMap?keys as day>
349 <!-- Correctif car suite a une modif on n'envoie plus une liste vide mais null, donc erreur freemarker -->
350 <#if daySchedulesMap[day]?size !=1 ||
351 (daySchedulesMap[day]?size==1 &&
352 daySchedulesMap[day][0]?? &&
353 daySchedulesMap[day][0]?has_content)>
354 <li class="st-item-row">
355 <p class="st-title">${day}</p>
356 <div class="st-info st-u-color-secondary">
357 <#list daySchedulesMap[day] as schedule>
358 <#if schedule.isException() ||
359 schedule.isPublicHoliday()>
360 <#assign hasException=true />
361 <#assign hasAnyException=true />
362 <#else>
363 <#assign hasException=false />
364 </#if>
365 <#if schedule.isClosed()>
366 <p class="st-ouverture st--closed st-u-color-pink">
367 <@liferay_ui.message
368 key="eu.closed" />
369 </p>
370 <#elseif schedule.isAlwaysOpen()>
371 <p class="st-ouverture">
372 <@liferay_ui.message
373 key="always-open" />
374 </p>
375 <#else>
376 <#list schedule.openingTimes
377 as openingTime>
378 <p>
379 ${openingTime.first}
380 -
381 ${openingTime.second}
382 <#if hasException>
383 <span
384 class="st-symbol">*</span>
385 </#if>
386 </p>
387 <#if
388 schedule.comments[openingTime?index]?has_content>
389 <p class="st-note">
390 ${schedule.comments[openingTime?index]}
391 </p>
392 </#if>
393
394 </#list>
395 </#if>
396
397 </#list>
398 </div>
399 </li>
400 </#if>
401 </#list>
402 </ul>
403 </#if>
404 </#list>
405 <#if hasAnyException?has_content && hasAnyException>
406 <!-- Message pour exceptions -->
407 <p class="st-note">
408 <@liferay_ui.message
409 key="eu.place.look-at-exceptionnal-schedule" />
410 </p>
411 </#if>
412
413 </div>
414
415 <!-- Periode par defaut -->
416 <#if entry.defaultPeriod?has_content>
417 <div class="st-tabpanel st-is-hidden" id="tabpanel-${entry.defaultPeriod.getPeriodId()}" role="tabpanel" tabindex="0"
418 aria-labelledby="tab-button-${entry.defaultPeriod.getPeriodId()}">
419 <#if entry.publishedSubPlaces?has_content>
420 <h3 class="st-subplaces">${entry.getAlias(locale)}</h3>
421 </#if>
422 <#assign
423 weekSchedules=entry.defaultPeriod.getWeekSchedule() />
424 <#assign day=0 />
425 <#if weekSchedules?has_content>
426 <ul class="st-list-rows st-basic-grid st-col-2@t-small">
427
428 <#list weekSchedules as schedule>
429 <@showTime day schedule hasException />
430 <#assign day=day + 1 />
431 </#list>
432 </ul>
433 </#if>
434 <!-- Periode par defaut pour les sous-lieux -->
435 <#list entry.publishedSubPlaces as subPlace>
436 <h3 class="st-subplaces">${subPlace.getName(locale)}</h3>
437 <ul class="st-list-rows st-basic-grid st-col-2@t-small">
438 <#assign
439 weekSchedules=subPlace.defaultPeriod.getWeekSchedule(subPlace.subPlaceId) />
440 <#assign day=0 />
441 <#list weekSchedules as schedule>
442 <@showTime day schedule hasException />
443 <#assign day=day + 1 />
444 </#list>
445 </ul>
446 </#list>
447 <#if hasAnyException?has_content && hasAnyException>
448 <!-- Message pour exceptions -->
449 <p class="st-note">
450 <@liferay_ui.message
451 key="eu.place.look-at-exceptionnal-schedule" />
452 </p>
453 </#if>
454
455 </div>
456 </#if>
457
458 <!-- Autres periodes -->
459 <#list entry.nonDefaultPeriods as period>
460 <div class="st-tabpanel st-is-hidden" id="tabpanel-${period.getPeriodId()}" role="tabpanel" tabindex="0"
461 aria-labelledby="tab-button-${period.getPeriodId()}">
462 <#if entry.publishedSubPlaces?has_content>
463 <h3 class="st-subplaces">${entry.getAlias(locale)}</h3>
464 </#if>
465
466 <ul class="st-list-rows st-basic-grid st-col-2@t-small">
467 <#assign weekSchedules=period.getWeekSchedule() />
468 <#assign day=0 />
469 <#list weekSchedules as schedule>
470 <@showTime day schedule hasException />
471 <#assign day=day + 1 />
472 </#list>
473 </ul>
474 <!-- Periode par defaut pour les sous-lieux -->
475 <#list entry.publishedSubPlaces as subPlace>
476 <h3 class="st-subplaces">${subPlace.getName(locale)}</h3>
477 <ul class="st-list-rows st-basic-grid st-col-2@t-small">
478 <#assign
479 weekSchedules=period.getWeekSchedule(subPlace.subPlaceId) />
480 <#assign day=0 />
481 <#list weekSchedules as schedule>
482 <@showTime day schedule hasException />
483 <#assign day=day + 1 />
484 </#list>
485 </ul>
486 </#list>
487 <#if hasAnyException?has_content && hasAnyException>
488 <!-- Message pour exceptions -->
489 <p class="st-note">
490 <@liferay_ui.message
491 key="eu.place.look-at-exceptionnal-schedule" />
492 </p>
493 </#if>
494 </div>
495
496
497 </#list>
498 </ul>
499 </div>
500 <div class="st-bottom-part st-text-styles">
501 <#if entry.hasScheduleTable()>
502 <#assign
503 assetVocabularyHelper=serviceLocator.findService("eu.strasbourg.utils.api.AssetVocabularyHelperService") />
504 <#assign
505 placeLocalService=serviceLocator.findService("eu.strasbourg.service.place.service.PlaceLocalService") />
506 <#list entry.types as type>
507 <#if (assetVocabularyHelper.getCategoryProperty(type.categoryId, 'schedule' )=='true' )>
508 <#assign category=type />
509 </#if>
510 </#list>
511 <div>
512 <a href="${strasbourg.homeURL()}horaires-lieux/-/schedules/category/${category.categoryId}"
513 class="st-btn st--btn-secondary st--btn-full-width">
514 <@liferay_ui.message key="eu.see-all-schedule-of" />
515 ${category.getTitle(locale)?lower_case}
516 </a>
517 </div>
518 </#if>
519
520
521 <#if !entry.hasURLSchedule>
522 <!-- Liste des exceptions -->
523 <#assign exceptions = entry.getCompletePlaceScheduleExceptionFreeMarker(.now, true, locale) />
524 <#if exceptions?has_content || (hasAnyException?has_content && hasAnyException)>
525
526 <h3 class="st-title-medium">
527 <@liferay_ui.message key="eu.exceptional-closings-openings" />
528 </h3>
529 <ul>
530 <#list exceptions as exception>
531 <#assign exceptionPlaceName = exception.getPlaceName() />
532 <li>
533 <strong><#if exceptionPlaceName != entry.getName()>${exceptionPlaceName} - </#if>${exception.getPeriodDisplay(locale)}</strong> :
534 <#if exception.isClosed()>
535 <@liferay_ui.message key="eu.closed" />
536 <#else>
537 <#list exception.openingTimes as openingTime>
538 ${openingTime.first} - ${openingTime.second}
539 <#sep>, </#sep>
540 </#list>
541 </#if>
542 - ${exception.description}
543 </li>
544 </#list>
545 </ul>
546 </#if>
547 </#if>
548
549 <#if entry.getExceptionalSchedule(locale)?has_content>
550 <h3 class="st-title-medium"><@liferay_ui.message key="eu.exceptional-schedule" /></h3>
551 ${entry.getExceptionalSchedule(locale)}
552
553 </#if>
554 </div>
555 </div>
556 </#if>
557
558 </div>
559 </#if>
560 <#if entry.isSearchable()>
561 <#assign
562 assetVocabularyHelper=serviceLocator.findService("eu.strasbourg.utils.api.AssetVocabularyHelperService") />
563 <#assign
564 placeLocalService=serviceLocator.findService("eu.strasbourg.service.place.service.PlaceLocalService") />
565 <#list entry.types as type>
566 <#if (assetVocabularyHelper.getCategoryProperty(type.categoryId, 'searchable' )=='true' )>
567 <#assign category=type />
568 </#if>
569 </#list>
570 <#assign imageEntryId = assetVocabularyHelper.getCategoryImage(category.categoryId,'picto-vert') ! "" />
571 <!-- Listing Lieu meme type -->
572 <div class="st-bloc st-bloc-sit-focus st--with-icon st-wrapper st-wrapper-small st--has-margin">
573 <div class="st-container">
574
575 <div class="st-col-left">
576 <#if imageEntryId?has_content>
577 <div class="st-icon-picto" style="width: 145px;">
578 <@strasbourg.addImage fileEntryId=imageEntryId.getFileEntryId() maxWidth=91 />
579 </div>
580
581 </#if>
582
583 <div class="st-content">
584 <h2 class="st-h2">Vous preferez aller ailleurs ?</h2>
585 <p class="st-surtitre-cat">Il y
586 a ${placeLocalService.getPlaceCountByAssetCategory(category, themeDisplay.getCompanyGroupId())}
587 autres
588 ${category.getTitle(locale)?lower_case} dans l'eurometropole</p>
589 </div>
590 </div>
591
592 <div class="st-col-right">
593 <a href="${strasbourg.homeURL()}rechercher-lieu-public?p_p_id=eu_strasbourg_portlet_search_asset_v2_SearchAssetPortlet&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&_eu_strasbourg_portlet_search_asset_v2_SearchAssetPortlet_vocabulariesCount=2&_eu_strasbourg_portlet_search_asset_v2_SearchAssetPortlet_keywords=&_eu_strasbourg_portlet_search_asset_v2_SearchAssetPortlet_vocabulary_0=${category.categoryId}&_eu_strasbourg_portlet_search_asset_v2_SearchAssetPortlet_vocabulary_1="
594 class="st-btn st--btn-secondary">
595 <@liferay_ui.message key="eu.see-all-other-places" />
596 </a>
597 </div>
598 </div>
599 </div>
600 </#if>
601
602
603 <!-- Presentation -->
604 <#if entry.getPresentation(locale)?has_content>
605 <div class="st-bloc st-bloc-sit-presentation st-wrapper st-wrapper-small st--has-margin">
606 <h2 class="st-h2 st-bloc-sit-title">
607 <@liferay_ui.message key="eu.presentation" />
608 </h2>
609 <div class="st-component-container st-text-styles">
610 <div class="st-limit-height ">
611 <p>${entry.getPresentation(locale)}</p>
612 </div>
613 <@strasbourg.showMore />
614 </div>
615 </div>
616 </#if>
617
618 <!-- Agenda -->
619 <#assign
620 placeEvents=EventLocalService.getCurrentAndFuturePublishedEventsFromPlace(entry.getSIGid()) />
621 <#if entry.displayEvents && placeEvents?has_content>
622 <div class="st-bloc st-bloc-sit-agenda st-wrapper st-wrapper-small st--has-margin">
623 <h2 class="st-h2 st-bloc-sit-title">
624 <@liferay_ui.message key="agenda" />
625 </h2>
626 <ul class="st-cards-wrapper st--has-cards-horizontal st-basic-grid st-col-2@t-small">
627 <#assign i=0 />
628 <#list placeEvents?sort_by("startDateFirstCurrentAndFuturePeriod") as event>
629 <#if i==5>
630 <#break>
631 </#if>
632 <li>
633 <div class="st-card-container">
634 <a href="${strasbourg.homeURL()}evenement/-/entity/id/${event.eventId}/${event.getNormalizedTitle(locale)}"
635 class="st-card st-card-agenda st--card-horizontal st--with-gradient"
636 title="${event.getTitle(locale)}">
637 <div class="st-caption">
638 <h3 class="st-title-card">${event.getTitle(locale)}</h3>
639 <p class="st-surtitre-cat">${event.getTypeLabel(locale)}</p>
640 <p class="st-date">
641 ${event.getEventScheduleDisplayShort(locale)}
642 </p>
643 <p class="st-location">
644 ${event.getPlaceAlias(locale)}
645 <#if event.getPlaceAddress(locale)?has_content>
646 - ${event.getPlaceAddress(locale)}
647 </#if>
648 - ${event.placeZipCode} ${event.getPlaceCity(locale)}
649 </p>
650 </div>
651 <div class="st-image st-little-image">
652
653 <#if event.getImageId() !=0>
654 <@strasbourg.addImage fileEntryId=event.getImageId() maxWidth=100 isFigure=true />
655 <#else>
656 <figure class="st-figure st-fit-cover" role="group" aria-label=" © ${event.getExternalImageCopyright()}">
657 <picture>
658 <img src="${event.getImageURL()}" alt="" />
659 </picture>
660 <figcaption>
661 <#if event.getExternalImageCopyright()?has_content && event.getExternalImageCopyright() != "n/a">
662 <button type="button" class="st-credits st-js-credits" aria-expanded="false" aria-label="© (copyright de l'image)">©</button>
663 <span class="st-credits-content">© ${event.getExternalImageCopyright()}</span>
664 </#if>
665 </figcaption>
666 </figure>
667 </#if>
668
669 </div>
670 </a>
671 <@strasbourg.isFavourite entryId=event.eventId entryType=2 />
672
673 </div>
674 </li>
675 <#assign i++>
676 </#list>
677 </ul>
678 <a href="${strasbourg.homeURL()}agenda?toDate=${.now?date?string["dd/MM"]}/${.now?date?string["yyyy"]?number + 1}&idSIGPlace=${entry.getSIGid()}"
679 class="st-btn st--btn-secondary"> <@liferay_ui.message key="sae.all-events" /></a>
680 </div>
681 </#if>
682 <!-- Fin Agenda -->
683 <!-- Activite -->
684 <#assign
685 activityLocalService=serviceLocator.findService("eu.strasbourg.service.activity.service.ActivityLocalService") />
686 <#assign placeActivityAgenda=activityLocalService.getPlaceAgenda(entry.getSIGid(), locale) />
687 <#if placeActivityAgenda.periods?has_content>
688 <div class="st-bloc st-bloc-sit-onglets st-wrapper st-wrapper-small st--has-margin">
689 <h2 class="st-h2 st-bloc-sit-title">
690 <@liferay_ui.message key="eu.activity.activities" />
691 </h2>
692 <div class="st-container">
693 <div class="st-slider-tablist st-js-slider-tablist splide" role="tablist">
694 <div class="splide__track">
695 <ul class="splide__list">
696 <#list placeActivityAgenda.periods as period>
697 <li class="splide__slide">
698 <button class="st-slider-tablist__button" id="tab-button-${period.periodId}" type="button" role="tab" aria-selected="true" aria-controls="tabpanel-${period.periodId}">
699 <span class="st-title">${period.periodName}</span>
700 </button>
701 </li>
702 </#list>
703 </ul>
704 </div>
705 <div class="splide__arrows st-nav-arrows">
706 <button
707 class="splide__arrow splide__arrow--prev st-btn-arrow st--prev"></button>
708 <button
709 class="splide__arrow splide__arrow--next st-btn-arrow st--next"></button>
710 </div>
711 </div>
712 <div class="st-tabpanels">
713 <#list placeActivityAgenda.periods as period>
714 <div class="st-tabpanel st-is-hidden" id="tabpanel-${period.periodId}" role="tabpanel" tabindex="0" aria-labelledby="tab-button-${period.periodId}">
715 <#list period.courses as course>
716 <div class="st-detail-lien">
717 <h3 class="st-title-medium">${course.courseName} </h3>
718 <a href="${strasbourg.homeURL()}cours/-/entity/id/${course.courseId}"
719 class="st-btn st--btn-secondary-ghost st--btn-xs st--btn-small-padding">
720 <@liferay_ui.message key="eu.see-detail" />
721 </a>
722 </div>
723 <#assign hasSchedules=false />
724<#-- Check if for each day there is a schedule. Dont show ul if no day is found-->
725 <#list 0..6 as day>
726 <#assign schedulesBool=course.getSchedulesForDay(day) />
727 <#if schedulesBool?has_content>
728 <#assign hasSchedules=true />
729 </#if>
730 </#list>
731
732 <#if hasSchedules>
733 <ul class="st-list-rows st-basic-grid st-col-2@t-small">
734 <#list 0..6 as day>
735 <#assign schedules=course.getSchedulesForDay(day) />
736 <#if schedules?has_content>
737 <li class="st-item-row">
738 <p class="st-title">
739 <@liferay_ui.message
740 key="${course.getDayName(day)}" />
741 </p>
742 <div class="st-info st-u-color-secondary">
743
744 <#list schedules as schedule>
745 <p>${schedule.startTime} -
746 ${schedule.endTime} </p><#sep>
747 </#sep>
748 </#list>
749
750 </div>
751 </li>
752 </#if>
753 </#list>
754 </ul>
755 </#if>
756 </#list>
757
758 </div>
759 </#list>
760 </div>
761 </div>
762 </div>
763 </#if>
764
765 <!-- Documents Utiles/Medias -->
766 <#if entry.documentURLs?has_content || entry.videos?has_content>
767 <div class="st-bloc st-bloc-liens st-wrapper st-wrapper-small st--has-margin">
768 <h2 class="st-h2 st-bloc-sit-title"><@liferay_ui.message key="eu.useful-documents" /></h2>
769 <div class="st-component-container">
770 <ul class="st-liste st-limit-height">
771
772 <#list entry.documentsIds?split(",") as fileId>
773 <#if fileId?has_content>
774 <#assign url = fileEntryHelper.getFileEntryURL(fileId?number) />
775
776 <#if url="">
777 <#continue>
778 </#if>
779
780 <#assign title = fileEntryHelper.getFileTitle(fileId?number, locale) />
781 <#assign size = fileEntryHelper.getReadableFileEntrySize(fileId?number, locale) />
782 <#assign extension = fileEntryHelper.getFileExtension(fileId?number) />
783 <li class="st-lien-container">
784 <a href="${url}" class="st-lien" download>
785 <p class="st-title-lien">${title}</p>
786 <div class="st-lien-content">
787 <p class="st-type">(${extension?upper_case} - ${size})</p>
788 <p class="st-text"><@liferay_ui.message key="eu.download" /></p>
789
790 </div>
791 </a>
792 </li>
793 </#if>
794 </#list>
795 </ul>
796 <@strasbourg.showMore />
797 </div>
798 </div>
799 </#if>
800
801 <div class="st-bloc st-bloc-sit-colonnes st-bloc-sit-services-handicap st-wrapper st-wrapper-small st-basic-grid st-col-2@t-small st--has-margin">
802 <!-- Informations complementaires -->
803 <#if entry.getAdditionalInformation(locale)?has_content>
804 <div class="st-col">
805 <div class="st-component-container st-text-styles">
806 <h2 class="st-h2 st-bloc-sit-title">
807 <@liferay_ui.message key="eu.place.additional-information" />
808 </h2>
809 <div class="st-limit-height ">
810 ${entry.getAdditionalInformation(locale)}
811 </div>
812 <@strasbourg.showMore />
813 </div>
814 </div>
815 </#if>
816
817
818 <!-- Acces -->
819 <#if entry.getAccess(locale)?has_content>
820 <div class="st-col">
821 <div class="st-component-container st-text-styles">
822 <h2 class="st-h2 st-bloc-sit-title">
823 <@liferay_ui.message key="access" />
824 </h2>
825 <div class="st-limit-height">
826 ${entry.getAccess(locale)}
827 </div>
828 <@strasbourg.showMore />
829 </div>
830 </div>
831 </#if>
832
833 </div>
834 <!-- Acces pour handicapes -->
835 <#if entry.hasAnyAccessForDisabled() || entry.getAccessForDisabled(locale)?has_content>
836 <div class="st-bloc st-bloc-sit-services-handicap st-wrapper st-wrapper-small st--has-margin">
837 <h2 class="st-h2 st-bloc-sit-title">
838 <@liferay_ui.message key="eu.access-for-disabled" />
839 </h2>
840 <ul class="st-meta-wrapper">
841 <#if entry.accessForWheelchair>
842 <li>
843 <span class="st-icon-handicap" aria-hidden="true"></span>
844 <@liferay_ui.message key='eu.access-for-wheelchair' />
845 </li>
846 </#if>
847 <#if entry.accessForDeaf>
848 <li>
849 <span class="st-icon-handi-auditif" aria-hidden="true"></span>
850 <@liferay_ui.message key='eu.access-for-deaf' />
851 </li>
852 </#if>
853 <#if entry.accessForBlind>
854 <li>
855 <span class="st-icon-handicap-vision" aria-hidden="true"></span>
856 <@liferay_ui.message key='eu.access-for-blind' />
857 </li>
858 </#if>
859
860 <#if entry.accessForDeficient>
861 <li>
862 <span class="st-icon-handi-mental" aria-hidden="true"></span>
863 <@liferay_ui.message key='eu.access-for-deficient' />
864 </li>
865 </#if>
866
867 <#if entry.accessForElder>
868 <li>
869 <span class="st-icon-personnes-agees" aria-hidden="true"></span>
870 <@liferay_ui.message key='eu.access-for-elder' />
871 </li>
872 </#if>
873 </ul>
874 <div class="st-component-container st-text-styles">
875 <#if entry.getAccessForDisabled(locale)?has_content>
876 <div class="st-limit-height ">
877 ${entry.getAccessForDisabled(locale)}
878 </div>
879 </#if>
880 <@strasbourg.showMore />
881 </div>
882 </div>
883 </#if>
884
885 <div class="st-bloc st-bloc-sit-colonnes st-bloc-sit-services-handicap st-wrapper st-wrapper-small st-basic-grid st-col-2@t-small st--has-margin">
886 <!-- Services -->
887 <#if entry.getServiceAndActivities(locale)?has_content>
888 <div class="st-services">
889 <div class="st-component-container st-text-styles">
890 <h2 class="st-h2 st-bloc-sit-title">
891 <@liferay_ui.message key="eu.services-and-activities" />
892 </h2>
893 <div class="st-limit-height">
894 ${entry.getServiceAndActivities(locale)}
895 </div>
896 <@strasbourg.showMore />
897 </div>
898 </div>
899 </#if>
900 <!-- Caracteristiques -->
901 <#if entry.getCharacteristics(locale)?has_content>
902 <div class="st-caracteristiques">
903 <div class="st-component-container st-text-styles">
904 <h2 class="st-h2 st-bloc-sit-title">
905 <@liferay_ui.message key="eu.features" />
906 </h2>
907 <div class="st-limit-height ">
908 ${entry.getCharacteristics(locale)}
909 </div>
910 <@strasbourg.showMore />
911 </div>
912 </div>
913 </#if>
914
915
916 </div>
917 <#if entry.mail?has_content || entry.phone?has_content>
918 <!-- Contact -->
919 <div class="st-bloc st-bloc-sit-focus st-wrapper st--has-margin">
920 <div class="st-container">
921 <div class="st-col-left">
922 <h2 class="st-h2"><@liferay_ui.message key="contact" /></h2>
923 <p class="st-surtitre-cat">${entry.getAlias(locale)}</p>
924 </div>
925 <div class="st-col-right">
926 <#if entry.phone?has_content>
927 <a href="tel:${entry.phone?replace(" ","")?replace("(0)","")}" class="st-btn st--btn-secondary">${entry.phone}</a>
928 </#if>
929
930 <#if entry.mail?has_content>
931 <a href="#st-overlay-contact" class="st-btn st--btn-secondary"><@liferay_ui.message key="eu.contact-mail" /></a>
932 </#if>
933 </div>
934 </div>
935 </div>
936 </#if>
937
938
939</div>
940
941<#if entry.mail?has_content>
942 <@liferay_portlet.actionURL var="contactURL" name="contact">
943 <@liferay_portlet.param name="classPK" value="${entry.getPlaceId()}" />
944 <@liferay_portlet.param name="entityId" value="${entry.getPlaceId()}" />
945 <@liferay_portlet.param name="title" value="${entry.getAlias(locale)}" />
946 <@liferay_portlet.param name="type" value="Place" />
947 </@liferay_portlet.actionURL>
948 <#assign overlayContactTitle=entry.getAlias(locale) />
949
950 <@strasbourg.overlayContact entry=entry entryType="Place" overlayContactTitle=overlayContactTitle />
951</#if>
952
953
954
955<#macro showTime day schedule hasException>
956 <li class="st-item-row">
957 <p class="st-title">
958 <@liferay_ui.message key="jour-semaine${day}" />
959 </p>
960 <div class="st-info st-u-color-secondary">
961 <#if schedule.isClosed()>
962 <p class="st-ouverture st--closed st-u-color-pink">
963 <@liferay_ui.message key="eu.closed" />
964 </p>
965 <#elseif schedule.isAlwaysOpen()>
966 <p class="st-ouverture">
967 <@liferay_ui.message key="always-open" />
968 </p>
969 <#else>
970 <#list schedule.openingTimes as openingTime>
971 <p>
972 ${openingTime.first}
973 -
974 ${openingTime.second}
975 <#if hasException>
976 <span class="st-symbol">*</span>
977 </#if>
978 </p>
979 <#if schedule.comments[openingTime?index]?has_content>
980 <p class="st-note">
981 ${schedule.comments[openingTime?index]}
982 </p>
983 </#if>
984
985 </#list>
986 </#if>
987 </div>
988 </li>
989</#macro>
Territoire
Mon quartier, ma commune
Sélectionnez votre commune pour participer à la vie de votre quartier, connaitre les événements qui y sont organisés et ses actualités. Sélectionner une commune ou un quartier entraine une redirection.
Menu Affichage
Politique publique
Recherche d'asset dynamique
Vous avez atteint le nombre maximal de résultats consultables. Veuillez relancer votre recherche en affinant les mots clés