Une erreur s'est produite en traitant le calibre.
Expression place_city is undefined on line 236, column 55 in 10154#10192#12260123.
1<#assign journalArticleLocalService = serviceLocator.findService("com.liferay.portlet.journal.service.JournalArticleLocalService") />
2<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.portlet.asset.service.AssetCategoryLocalService") />
3<#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.portlet.asset.service.AssetVocabularyLocalService") />
4<#assign orderByComparatorFactoryUtil = staticUtil["com.liferay.portal.kernel.util.OrderByComparatorFactoryUtil"] />
5<#assign communeVocabId = 0/>
6<#assign themeVocabId = 0/>
7<#assign themeCategories = []/>
8<#assign communeCategories = []/>
9
10<#assign vocab = assetVocabularyLocalService.getGroupVocabulary(themeDisplay.scopeGroupId,'Communes')/>
11<#assign communeVocabId = vocab.vocabularyId />
12
13<#assign vocab = assetVocabularyLocalService.getGroupVocabulary(themeDisplay.scopeGroupId,'Type agenda DD')/>
14<#assign themeVocabId = vocab.vocabularyId />
15
16<#assign nbCommunesCategories = assetCategoryLocalService.getVocabularyRootCategoriesCount(communeVocabId)/>
17<#assign orderByComparator = orderByComparatorFactoryUtil.create('AssetCategory',["name", true]) />
18<#assign allCommunesCategories = assetCategoryLocalService.getVocabularyRootCategories(communeVocabId,0,nbCommunesCategories,orderByComparator)/>
19
20<#assign nbThemesCategories = assetCategoryLocalService.getVocabularyRootCategoriesCount(themeVocabId)/>
21<#assign allThemesCategories = assetCategoryLocalService.getVocabularyRootCategories(themeVocabId,0,nbThemesCategories,orderByComparator)/>
22
23
24<#-- HEADER -->
25
26<header class="interior-headerContainer agenda-dd-headerContainer" style='background-image:url("/documents/10839/12307965/CDA_Agenda-DevD_Banniere-web.png/70b6a749-27fb-40ce-9ba0-bf90a80cf7a9?t=1545841006956")'>
27</header>
28
29<p class="news-list-subtitle news-list-subtitle-submitEvent">
30 <a class="inner-link" href="/agenda" >Accéder à l'agenda principal</a>
31</p>
32
33<#if entries?has_content && entries?size > 0>
34
35 <#-- EVENTS FILTER -->
36
37 <aside class="agenda-filter annuaire-siae-filter agenda-secondary-filter">
38
39 <p class="agenda-filter-title">Trier l'agenda</p>
40
41 <div class="agenda-filter-block-container">
42
43 <div class="agenda-filter-block-over">
44
45 <div class="agenda-filter-block">
46 <label for="agenda-filter-dateStart">A partir du :</label>
47 <input type="date" class="datepicker" id="agenda-filter-dateStart" name="agenda-filter-dateStart" autocomplete="off" />
48 <div class="select-arrow"></div>
49 </div>
50
51 <div class="agenda-filter-block">
52 <label for="agenda-filter-dateEnd">Jusqu'au :</label>
53 <input type="date" class="datepicker" id="agenda-filter-dateEnd" name="agenda-filter-dateEnd" autocomplete="off" />
54 <div class="select-arrow"></div>
55 </div>
56
57 </div>
58
59 <div class="agenda-filter-block-over">
60
61 <div class="agenda-filter-block">
62 <label for="agenda-filter-place">Lieu :</label>
63 <select id="agenda-filter-place" name="agenda-filter-place">
64 <option value="">Toute l'agglo</option>
65 <#list allCommunesCategories as commune>
66 <option title="${commune.descriptionCurrentValue}">${commune.name}</option>
67 </#list>
68 </select>
69 <div class="select-arrow"></div>
70 </div>
71
72 <div class="agenda-filter-block">
73 <label for="agenda-filter-theme">Type :</label>
74 <select id="agenda-filter-theme" name="agenda-filter-theme">
75 <option value="">Tous les types</option>
76 <#list allThemesCategories as theme>
77 <option title="${theme.descriptionCurrentValue}">${theme.name}</option>
78 </#list>
79 </select>
80 <div class="select-arrow"></div>
81 </div>
82
83 </div>
84
85 </div>
86
87 <button type="button" id="agenda-filter-reset">Réinitialiser</button>
88
89 </aside>
90
91 <#-- EVENTS LIST -->
92
93 <div class="news-list news-list-agenda news-list-agenda-secondary news-list-emplois">
94
95 <#list entries as curEntry>
96
97 <#assign assetRenderer = curEntry.getAssetRenderer() />
98
99 <#assign docXml = saxReaderUtil.read(curEntry.getAssetRenderer().getArticle().getContent()) />
100 <#assign rootElement = docXml.getRootElement() />
101
102 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='date-start']/dynamic-content") />
103 <#assign dateStart = xPathSelector.selectSingleNode(rootElement).getStringValue() />
104 <#assign date_start = dateUtil.newDate(getterUtil.getLong(dateStart)) />
105
106 <#assign date_start_norm = date_start?string['yyyyMMdd'] />
107
108 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='date-end']/dynamic-content") />
109 <#assign dateEnd = xPathSelector.selectSingleNode(rootElement).getStringValue() />
110 <#assign date_end = dateUtil.newDate(getterUtil.getLong(dateEnd)) />
111
112 <#assign date_end_norm = date_end?string['yyyyMMdd'] />
113
114 <#assign categories = assetCategoryLocalService.getCategories(curEntry.getClassName(), curEntry.getClassPK()) />
115
116 <#assign place_cities = '' />
117 <#assign place_cities_comma = '' />
118 <#assign place_cities_complement = '' />
119 <#assign communeCategories = [] />
120 <#assign themeCategories = [] />
121
122 <#list categories as cat>
123 <#if cat.vocabularyId == communeVocabId >
124 <#assign communeCategories = communeCategories + [cat] />
125 <#assign place_cities = cat.name + " " + place_cities />
126 <#if place_cities_comma == "">
127 <#assign place_cities_comma = cat.name />
128 <#else>
129 <#assign place_cities_comma = cat.name + ", " + place_cities_comma />
130 </#if>
131 <#elseif cat.vocabularyId == themeVocabId >
132 <#assign themeCategories = themeCategories + [cat] />
133 </#if>
134 </#list>
135
136 <#if communeCategories?size == 1>
137 <#assign place_city = communeCategories[0] />
138 <#assign place_cities = communeCategories[0].name />
139 <#elseif communeCategories?size > 1>
140 <#assign place_city = communeCategories[0] />
141 <#assign place_cities_complement = "(+ " + (communeCategories?size - 1) + ' autre' />
142 <#if (communeCategories?size - 1) > 1>
143 <#assign place_cities_complement = place_cities_complement + 's' />
144 </#if>
145 <#assign place_cities_complement = place_cities_complement + ')' />
146 </#if>
147
148 <#assign category = "Divers" />
149 <#list themeCategories as cat>
150 <#if cat.titleCurrentValue != "actualites">
151 <#assign category = cat.titleCurrentValue />
152 <#break>
153 </#if>
154 </#list>
155
156 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='Accroche']/dynamic-content") />
157 <#if xPathSelector.selectSingleNode(rootElement)??>
158 <#assign accroche = xPathSelector.selectSingleNode(rootElement).getStringValue() />
159 <#else>
160 <#assign accroche = '' />
161 </#if>
162
163 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='main_content']/dynamic-content") />
164 <#assign description = xPathSelector.selectSingleNode(rootElement).getStringValue() />
165
166 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='place_name']/dynamic-content") />
167 <#assign place_name = xPathSelector.selectSingleNode(rootElement).getStringValue() />
168
169 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='place_address']/dynamic-content") />
170 <#assign place_address = xPathSelector.selectSingleNode(rootElement).getStringValue() />
171
172 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='orga_name']/dynamic-content") />
173 <#assign organiser = xPathSelector.selectSingleNode(rootElement).getStringValue() />
174
175 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='contact_tel']/dynamic-content") />
176 <#assign contact_tel = xPathSelector.selectSingleNode(rootElement).getStringValue() />
177
178 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='contact_mail']/dynamic-content") />
179 <#assign contact_mail = xPathSelector.selectSingleNode(rootElement).getStringValue() />
180
181 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='internet_site']/dynamic-content") />
182 <#assign internet_site = xPathSelector.selectSingleNode(rootElement).getStringValue() />
183
184 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='prog']/dynamic-content") />
185 <#if xPathSelector.selectSingleNode(rootElement)??>
186 <#assign prog = xPathSelector.selectSingleNode(rootElement).getStringValue() />
187 <#else>
188 <#assign prog = '' />
189 </#if>
190
191 <#assign img = '' />
192 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='img_agenda_dd']/dynamic-content") />
193 <#if xPathSelector.selectSingleNode(rootElement)??>
194 <#assign img = xPathSelector.selectSingleNode(rootElement).getStringValue() />
195 </#if>
196 <#if img == ''>
197 <#switch category>
198 <#case 'Animation junior'>
199 <#assign img = 'https://www.agglo-larochelle.fr/documents/10839/12307965/CDA_Agenda-DevD_Picto-ANIM-JUNIOR.png/353efaec-01a9-4202-9264-7159f90b2b4b?t=1545841007626' />
200 <#break>
201 <#case 'Conférence'>
202 <#assign img = 'https://www.agglo-larochelle.fr/documents/10839/12307965/CDA_Agenda-DevD_Picto-CONF.png/10f2f553-90a9-4dca-808c-997aa3a3968f?t=1545841007560' />
203 <#break>
204 <#case 'Exposition'>
205 <#assign img = 'https://www.agglo-larochelle.fr/documents/10839/12307965/CDA_Agenda-DevD_Picto-EXPO.png/07455223-0242-422f-bb90-f67a7b01dbe1?t=1545841008085' />
206 <#break>
207 <#case 'Manifestation'>
208 <#assign img = 'https://www.agglo-larochelle.fr/documents/10839/12307965/CDA_Agenda-DevD_Picto-MANIF.png/9d7f950e-b529-4828-9d78-2d83aee183d8?t=1545841008360' />
209 <#break>
210 <#case 'Projection'>
211 <#assign img = 'https://www.agglo-larochelle.fr/documents/10839/12307965/CDA_Agenda-DevD_Picto-PROJ.png/f71566fa-17f0-41a2-841a-29ae4f993414?t=1545841008787' />
212 <#break>
213 <#case 'Sortie nature'>
214 <#assign img = 'https://www.agglo-larochelle.fr/documents/10839/12307965/CDA_Agenda-DevD_Picto-SORTIE-NATURE.png/0118c3bf-c1ce-455d-8045-d7bb894fb389?t=1545841009056' />
215 <#break>
216 <#case 'Spectacle'>
217 <#assign img = 'https://www.agglo-larochelle.fr/documents/10839/12307965/CDA_Agenda-DevD_Picto-SPECTACLE.png/fbbd2bed-4b4e-4481-9963-b11833ddd778?t=1545841009333' />
218 <#break>
219 <#case 'Visite et atelier'>
220 <#assign img = 'https://www.agglo-larochelle.fr/documents/10839/12307965/CDA_Agenda-DevD_Picto-VISITE-ATELIER.png/6c2c645f-6d19-40a0-a2ea-3e2b1692e65f?t=1545841009603' />
221 <#break>
222 <#case 'Zone de gratuité'>
223 <#assign img = 'https://www.agglo-larochelle.fr/documents/10839/12307965/CDA_Agenda-DevD_Picto-GRATUITE.png/3238fa40-8743-42c1-8301-de611c2f70f9?t=1545841008173' />
224 <#break>
225 <#default>
226 <#assign img = '' />
227 </#switch>
228 </#if>
229
230 <#assign articleTitle = journalArticleLocalService.getLatestArticle(curEntry.getClassPK()).getUrlTitle() />
231
232 <article class="news-list-news-container news-list-displayed-event" id="news-list-news-container-${curEntry_index}" data-selected="true" data-start="${date_start_norm}" data-end="${date_end_norm}" data-place="${place_cities}" data-theme="${category}" <@getEditIcon /> itemscope itemtype="http://schema.org/Event">
233
234 <meta itemprop="eventStatus" content="EventScheduled" />
235 <meta itemprop="url" content="${themeDisplay.getPortalURL()}/agenda?article=${articleTitle}" />
236 <meta itemprop="performer" content="${place_city.name} ${place_cities_complement}" />
237 <meta itemprop="image" content="${themeDisplay.getPortalURL()}${themeDisplay.getTheme().getContextPath()}/images/social-card.png" />
238
239 <a id="news-list-agenda-link-${curEntry_index}" class="inner-link news-list-agenda-link" data-urltitle="${articleTitle}" tabindex="0">
240
241 <h2 class="news-list-news-title" itemprop="name">${curEntry.getTitle(locale)}</h2>
242
243 <div class="news-list-news-content">
244
245 <div class="news-list-agenda-content-wrapper">
246
247 <div class="news-list-agenda-prog-wrapper">
248
249 <div class="news-list-agenda-date-wrapper">
250 <#if date_start?string['yyyyMMMdd'] == date_end?string['yyyyMMMdd'] >
251 <p class="news-list-agenda-date" itemprop="startDate" content="${date_start?string["yyyy-MM-dd'T'HH:mm:ssZ"]}">
252 <span class="sr-only">Le</span>
253 <span class="news-list-agenda-day">${date_start?string['dd']}</span><br />
254 <span class="news-list-agenda-month">${date_start?string['MMM']} ${date_start?string['yyyy']}</span>
255 </p>
256 <#else>
257 <p class="news-list-agenda-date" itemprop="startDate" content="${date_start?string["yyyy-MM-dd'T'HH:mm:ssZ"]}">
258 <span class="sr-only">Du</span>
259 <span class="news-list-agenda-day">${date_start?string['dd']}</span><br />
260 <span class="news-list-agenda-month">${date_start?string['MMM']} ${date_start?string['yyyy']}</span>
261 </p>
262 <p class="news-list-agenda-date" itemprop="endDate" content="${date_end?string["yyyy-MM-dd'T'HH:mm:ssZ"]}">
263 <span class="sr-only">au</span>
264 <span class="news-list-agenda-day">${date_end?string['dd']}</span><br />
265 <span class="news-list-agenda-month">${date_end?string['MMM']} ${date_end?string['yyyy']}</span>
266 </p>
267 </#if>
268 </div>
269
270 <p class="news-list-news-date">
271 <span class="news-list-news-theme">${category}</span>
272 </p>
273
274 <#if place_city??>
275 <p class="news-list-news-date" itemprop="location" itemscope="" itemtype="http://schema.org/Place">${place_city.name} ${place_cities_complement}
276 <meta itemprop="name" content="${htmlUtil.escapeAttribute(place_name)}"/>
277 <meta itemprop="address" content="${place_address} ${place_city.descriptionCurrentValue} "/>
278 <meta itemprop="sameAs" content="${internet_site}"/>
279 </p>
280 </#if>
281
282 </div>
283
284 <#if img != ''>
285 <div class="news-list-agenda-img-wrapper">
286 <img class="news-list-news-img" src="${img}" loading="lazy" alt="${curEntry.getTitle(locale)}" />
287 </div>
288 </#if>
289
290 </div>
291
292 <p class="news-list-news-description" itemprop="description">${accroche}</p>
293
294 </div>
295
296 </a>
297
298 <div class="hidden-details" hidden>
299 <div class="embedded-portlet siae-detail-portlet agenda-detail-portlet news-list-agenda news-list-agenda-secondary">
300 <section class="offre-detail-container">
301 <header class="offre-detail-header">
302 <h2 class="offre-detail-title">${curEntry.getTitle(locale)}</h2>
303 </header>
304 <article class="offre-detail-main">
305 <div class="offre-detail-desc">
306 <div class="news-list-agenda-prog-wrapper">
307 <div class="news-list-agenda-date-wrapper">
308 <#if date_start?string['yyyyMMMdd'] == date_end?string['yyyyMMMdd'] >
309 <p class="news-list-agenda-date" itemprop="startDate" content="${date_start?string["yyyy-MM-dd'T'HH:mm:ssZ"]}">
310 <span class="news-list-agenda-day">${date_start?string['dd']}</span><br />
311 <span class="news-list-agenda-month">${date_start?string['MMM']} ${date_start?string['yyyy']}</span>
312 </p>
313 <#else>
314 <p class="news-list-agenda-date" itemprop="startDate" content="${date_start?string["yyyy-MM-dd'T'HH:mm:ssZ"]}">
315 <span class="news-list-agenda-day">${date_start?string['dd']}</span><br />
316 <span class="news-list-agenda-month">${date_start?string['MMM']} ${date_start?string['yyyy']}</span>
317 </p>
318 <p class="news-list-agenda-date" itemprop="endDate" content="${date_end?string["yyyy-MM-dd'T'HH:mm:ssZ"]}">
319 <span class="news-list-agenda-day">${date_end?string['dd']}</span><br />
320 <span class="news-list-agenda-month">${date_end?string['MMM']} ${date_end?string['yyyy']}</span>
321 </p>
322 </#if>
323 </div>
324 <p class="news-list-news-date">
325 <span class="news-list-news-theme">${category}</span>
326 </p>
327 <#if place_cities??>
328 <p class="news-list-news-date" itemprop="location" itemscope="" itemtype="http://schema.org/Place">${place_cities_comma}
329 <meta itemprop="name" content="${htmlUtil.escapeAttribute(place_name)}"/>
330 <meta itemprop="address" content="${place_address} ${place_city.descriptionCurrentValue} "/>
331 <meta itemprop="sameAs" content="${internet_site}"/>
332 </p>
333 </#if>
334 </div>
335 </div>
336 <aside class="offre-detail-desc-aside">
337 <p class="news-list-agenda-aside-title">Lieu de l'évènement</p>
338 <p class="news-list-agenda-aside-content">
339 <#if place_name != "">
340 ${place_name}<br />
341 </#if>
342 ${place_address}<br />
343 ${place_city.descriptionCurrentValue}
344 </p>
345 <#if organiser != "">
346 <p class="news-list-agenda-aside-title">Organisateurs</p>
347 <p class="news-list-agenda-aside-content">${organiser}</p>
348 </#if>
349 <div>
350 <p class="news-list-agenda-aside-title">En savoir plus</p>
351 <#if prog != "">
352 <p class="news-list-agenda-aside-link"><a class="inner-link" href="${prog}" target="_blank"><span class="sr-only">Télécharger</span></a></p>
353 </#if>
354 <p class="news-list-agenda-aside-content">
355 <#if contact_tel != "">
356 ${contact_tel}<br />
357 </#if>
358 <#if contact_mail != "">
359 ${contact_mail}<br />
360 </#if>
361 <#if internet_site != "">
362 <#assign wh = websiteHost(internet_site) />
363 <a class="news-list-agenda-aside-url" href="${internet_site}" target="_blank" rel='noopener noreferrer'>${wh}</a>
364 </#if>
365 </p>
366 </div>
367 </aside>
368 </article>
369 <#if img != '' || description != ''>
370 <aside class="offre-detail-more">
371 <#if description != ''>
372 <p class="offre-detail-more-text">${description}</p>
373 </#if>
374
375 <#if img != ''>
376 <div class="news-list-agenda-img-wrapper">
377 <img class="news-list-news-img" src="${img}" alt="${curEntry.getTitle(locale)}" />
378 </div>
379 </#if>
380 </aside>
381 </#if>
382 </section>
383 </div>
384 </div>
385
386 </article>
387
388 </#list>
389
390 <button id="load-more-events" class="load-more-events-hidden" type="button">Afficher plus d'évènements</button>
391
392 </div>
393
394 <div id="agenda-empty" class="agenda-empty hidden">
395 <p class="agenda-empty-text">Aucun évènement ne correspond à vos critères de recherche.</p>
396 </div>
397
398
399</#if>
400
401<#function websiteHost url >
402 <#assign hostStart = url?index_of("//") />
403 <#if hostStart == -1>
404 <#assign hostStart = -2 />
405 </#if>
406 <#assign hostEnd = url?index_of("/",10) />
407 <#if hostEnd == -1>
408 <#assign hostEnd = url?length />
409 </#if>
410 <#return url[hostStart+2..hostEnd-1] />
411</#function>
412
413<#macro getEditIcon>
414 <#if assetRenderer.hasEditPermission(themeDisplay.getPermissionChecker())>
415 <#local redirectURL = renderResponse.createRenderURL() />
416
417 ${redirectURL.setParameter("struts_action", "/asset_publisher/add_asset_redirect")}
418 ${redirectURL.setWindowState("pop_up")}
419
420 <#local editPortletURL = assetRenderer.getURLEdit(renderRequest, renderResponse, windowStateFactory.getWindowState("pop_up"), redirectURL)!"" />
421
422 <#if validator.isNotNull(editPortletURL)>
423 data-edit-url="${editPortletURL.toString()}"
424 </#if>
425 </#if>
426</#macro>