Détail Entité

Fehler bei der Verarbeitung der Vorlage.
Java method "jdk.proxy56.$Proxy365.getCurrentAndFuturePublishedEventsFromPlace(String)" threw an exception when invoked on jdk.proxy56.$Proxy365 object "eu.strasbourg.service.agenda.service.impl.EventLocalServiceImpl@b6dba5b"; see cause exception in the Java stack trace.

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