Détail Entité

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

Territoire

Recherche d'asset dynamique