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 &gt; 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 &gt; 1> 
140                <#assign place_city = communeCategories[0] /> 
141                <#assign place_cities_complement = "(+ " + (communeCategories?size - 1) + ' autre' /> 
142                <#if (communeCategories?size - 1) &gt; 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>