Actualités - CH-Fontenay
Une erreur s'est produite lors du traitement du modèle.
Java method "jdk.proxy3.$Proxy69.getAssetEntry(long)" threw an exception when invoked on jdk.proxy3.$Proxy69 object "com.liferay.asset.internal.service.AssetEntryLocalServiceWrapper@6820d338"; see cause exception in the Java stack trace.
----
FTL stack trace ("~" means nesting-related):
- Failed at: #assign assetEntry = AssetEntryLocalS... [in template "20101#20127#ACTUALITE_PAGINATION" at line 76, column 17]
----
1<#--
2Add elements from the sidebar to define your template. Type "${" to use the
3autocomplete feature.
4-->
5
6<#--------------- Decodage des URL ---------------->
7<#assign replacements = {
8 "%e9": "é",
9 "%e8": "è",
10 "%e0": "à",
11 "%e7": "ç",
12 "%f9": "ù",
13 "%ee": "î",
14
15 "%E9": "é",
16 "%E8": "è",
17 "%E0": "à",
18 "%E7": "ç",
19 "%F9": "ù",
20 "%EE": "î"
21 }
22>
23<#function decodeUrl str>
24 <#assign url = str>
25 <#list replacements?keys as k>
26 <#assign url = url?replace(k, replacements[k])>
27 </#list>
28 <#return url>
29</#function>
30<#------------------------------------------------------>
31
32<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")>
33<#assign AssetEntryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")>
34<#assign DDMStructureLocalService = serviceLocator.findService("com.liferay.dynamic.data.mapping.service.DDMStructureLocalService")>
35<#assign classNameLocalServiceUtil = staticUtil["com.liferay.portal.kernel.service.ClassNameLocalServiceUtil"]>
36<#assign assetEntryQuery = objectUtil("com.liferay.asset.kernel.service.persistence.AssetEntryQuery")>
37
38<#assign structureClassName = classNameLocalServiceUtil.getClassName("com.liferay.journal.model.JournalArticle")>
39<#assign structureClassNameId= structureClassName.getClassNameId()?number>
40<#assign structure = DDMStructureLocalService.getStructure(themeDisplay.getCompanyGroupId(), structureClassNameId, "ACTUALITE")![] >
41
42<#-- Récupération de l'URL complete -->
43<#assign currentURL = request.getAttribute('CURRENT_URL') >
44<#assign currentURL = decodeUrl(currentURL) >
45
46<#-- setting date_format = "MM/yyy" -->
47<#-- recuperation des parametres dans l'URL : periode et page -->
48<#assign periodeSelect = request.getParameter("periodeSelect")!0>
49<#assign periodeSelect = periodeSelect?string>
50<#-- Nb d'articles par page -->
51<#assign pageSize = 9>
52<#if (ItemParPage.getData())??>
53 <#assign pageSize = ItemParPage.getData()?number>
54</#if>
55
56<#-- Récupération de la page courante -->
57<#assign page = request.getParameter("page")!1>
58<#assign pageNumber = convert(page) >
59
60<#if currentURL?has_content && currentURL?index_of("/-/journal/") gt 0 >
61 <#--
62 # SELECTION D'UNE SEULE ACTUALITE
63 -->
64 <#-- Récupération du friendly de l'actualité -->
65 <#assign friendlyURL = currentURL?keep_after("/-/journal/")?keep_before_last("?") >
66 <#attempt>
67 <#assign currentArticle = JournalArticleLocalService.fetchArticleByUrlTitle(groupId, friendlyURL) >
68 <#recover>
69 </#attempt>
70<#elseif currentURL?has_content && currentURL?index_of("/-/asset_publisher/") gt 0 >
71 <#--
72 # SELECTION D'UNE SEULE ACTUALITE (format Agrégateur de contenu)
73 -->
74 <#if currentURL?index_of("/content/id/") gt 0 >
75 <#assign assetId = currentURL?keep_after("/content/id/")?keep_before_last("?")?number >
76 <#assign assetEntry = AssetEntryLocalService.getAssetEntry( assetId ) >
77 <#attempt>
78 <#assign currentArticle = JournalArticleLocalService.getLatestArticle( assetEntry.getClassPK() ) >
79 <#recover>
80 </#attempt>
81 <#else>
82 <#assign friendlyURL = currentURL?keep_after("/content/")?keep_before_last("?") >
83 <#attempt>
84 <#assign currentArticle = JournalArticleLocalService.fetchArticleByUrlTitle(groupId, friendlyURL) >
85 <#recover>
86 </#attempt>
87 </#if>
88</#if>
89
90<#assign start = 0
91 end = NbMaxItem.getData()?number >
92
93<#assign void = assetEntryQuery.setGroupIds([groupId])>
94<#assign void = assetEntryQuery.setClassNameIds([structureClassNameId])>
95<#assign void = assetEntryQuery.setClassTypeIds([structure.structureId])>
96<#assign void = assetEntryQuery.setStart(0)>
97<#assign void = assetEntryQuery.setEnd(NbMaxItem.getData()?number)>
98<#assign void = assetEntryQuery.setOrderByCol1(TriPrincipal.ParamPrincipal.getData())>
99<#assign void = assetEntryQuery.setOrderByCol2(TriSecondaire.ParamSecondaire.getData())>
100<#assign void = assetEntryQuery.setOrderByType1(TriPrincipal.OrdrePrincipal.getData())>
101<#assign void = assetEntryQuery.setOrderByType2(TriSecondaire.OrdreSecondaire.getData())>
102
103<#assign assetEntries = AssetEntryLocalService.getEntries(assetEntryQuery) >
104
105<#-- recuperation des périodes des actualités et dédoublonnage de la liste -->
106<#assign periodes = {} >
107<#assign assetEntriesFiltres = [] >
108<#list assetEntries as assetEntry>
109
110 <#-- Récupération de la date pour la sélection -->
111 <#assign
112 dateTri = filtre(assetEntry, TriPrincipal.ParamPrincipal.getData(), TriSecondaire.ParamSecondaire.getData())
113 dateId = dateTri?string["MM/yyy"]
114 dateValue = dateUtil.getDate(dateTri, "MMMM yyyy", locale)
115 periodes = periodes + {dateId : dateValue}
116 />
117
118 <#-- Recherche de l'article sélectionné dans la liste -->
119 <#if currentArticle?? >
120 <#if currentArticle.getResourcePrimKey() == assetEntry.classPK >
121 <#assign currentIndex = assetEntry?index >
122 </#if>
123 </#if>
124 <#-- Filtre par date -->
125 <#if periodeSelect != "0">
126 <#if dateId == periodeSelect>
127 <#assign assetEntriesFiltres = assetEntriesFiltres + [ assetEntry ]>
128 </#if>
129 </#if>
130</#list>
131
132<#-- Pas de Filtre par date : On affiche toute la liste -->
133<#if !(periodeSelect != "0")>
134 <#assign assetEntriesFiltres = assetEntries >
135</#if>
136
137<#--
138# CONSTRUCTION DE LA PAGINATION POUR LA LISTE D'ACTUALITE
139-->
140<#if !(currentArticle??)>
141 <#-- Date sélectionnée : Reset de la pagination -->
142 <#if periodeSelect != "0">
143 <#assign pageNumber = 1>
144 </#if>
145 <#-- Calcul de la pagination -->
146 <#assign start = (pageNumber?number - 1) * pageSize
147 end = ([(start + pageSize), assetEntriesFiltres?size]?min) - 1
148 pagesAvailable = ((assetEntriesFiltres?size - 1) / pageSize)?floor + 1>
149
150 <#-- Construction de la pagination -->
151 <#assign paginationData = { "pageNumber": pageNumber, "pageSize": pageSize, "pagesAvailable": pagesAvailable } >
152</#if>
153
154<div class="actualites-interieur">
155 <#-- Barre de Titre + Ajout de l'icone "Add" si permission -->
156 <h2 class="d-flex justify-content-between align-items-center titre">
157 <#if (Titre.getData())??><span>${Titre.getData()}</span></#if>
158
159 <#-- Astuce : si on peut modifier l'article courant, alors on peut modifier les actualités -->
160 <#if permissionChecker.hasPermission(groupId, "com.liferay.journal.model.JournalArticle", .vars["reserved-article-resource-prim-key"].data, "UPDATE") &&
161 (assetEntriesFiltres?has_content) && (currentArticle?? == false)>
162
163 <#-- Construction de l'url d'ajout -->
164 <#assign renderer = assetEntriesFiltres[0].getAssetRenderer()
165 localActualite = renderer.getArticle() >
166 <#assign addURL = "/group/chd-vendee/~/control_panel/manage?p_p_id=com_liferay_journal_web_portlet_JournalPortlet&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view" >
167 <#assign addURL = addURL + "&_com_liferay_journal_web_portlet_JournalPortlet_mvcRenderCommandName=%2Fjournal%2Fedit_article">
168 <#assign addURL = addURL + "&_com_liferay_journal_web_portlet_JournalPortlet_groupId=" + groupId + "&_com_liferay_journal_web_portlet_JournalPortlet_ddmStructureId=" + structure.structureId >
169 <#assign addURL = addURL + "&_com_liferay_journal_web_portlet_JournalPortlet_folderId=" + localActualite.folderId >
170 <#assign addURL = addURL + "&_com_liferay_journal_web_portlet_JournalPortlet_redirect=" + currentURL >
171
172 <div class="mr-5 add-icon">
173 <a class="text-4 align-top" href="${addURL}" aria-label="Ajouter une actualité" title="Ajouter une actualité">
174 <@liferay_ui["icon"]
175 icon="plus"
176 markupView="lexicon"
177 />
178 </a>
179 </div>
180 </#if>
181 </h2>
182
183 <div class="actualites-interieur-form-periode">
184 <h6><label for="adt-periode-select">Période :</label></h6>
185 <fieldset>
186 <select id="adt-periode-select" name="periodeSelect" onChange="checkPeriode()" class="form-control">
187 <option value="0">Tous les mois</option>
188 <#list periodes?keys as periode>
189 <#if periode == periodeSelect><#assign selected="selected"><#else><#assign selected=""></#if>
190 <option value="${periode}" ${selected}>${periodes[periode]?capitalize}</option>
191 </#list>
192 </select>
193 </fieldset>
194 </div>
195
196 <#if currentArticle?? >
197 <div class="align-items-center d-flex mb-2 justify-content-between">
198 <p class="component-title h4">
199
200 <#assign redirectURL = currentURL?keep_before("/-/journal/") >
201 <#assign redirectURL = redirectURL?keep_before("/-/asset_publisher/") >
202 <#assign retourURL = redirectURL >
203 <#assign parameters = "?">
204 <#if currentIndex?? && (currentIndex gte pageSize)>
205 <#assign parameters = parameters + "page=" + ((currentIndex / pageSize) + 1)?floor>
206 </#if>
207 <#if periodeSelect != "0">
208 <#assign parameters = parameters + "&periodeSelect=" + periodeSelect>
209 </#if>
210 <#if parameters?length gt 2>
211 <#assign retourURL = retourURL + parameters >
212 </#if>
213 <a class="header-back-to lfr-portal-tooltip" href="${retourURL}" aria-label="Retour" title="Retour">
214 <@liferay_ui["icon"]
215 icon="angle-left"
216 markupView="lexicon"
217 />
218 </a>
219 </p>
220 <#if permissionChecker.hasPermission(currentArticle.getGroupId(), "com.liferay.journal.model.JournalArticle", currentArticle.getResourcePrimKey(), "UPDATE")>
221 <p class="">
222 <#-- Construction de l'url d'édition -->
223 <#assign editURL = "/group/chd-vendee/~/control_panel/manage?p_p_id=com_liferay_journal_web_portlet_JournalPortlet&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view" >
224 <#assign editURL = editURL + "&_com_liferay_journal_web_portlet_JournalPortlet_mvcRenderCommandName=%2Fjournal%2Fedit_article&_com_liferay_journal_web_portlet_JournalPortlet_articleId=" + currentArticle.articleId>
225 <#assign editURL = editURL + "&_com_liferay_journal_web_portlet_JournalPortlet_groupId=" + groupId + "&_com_liferay_journal_web_portlet_JournalPortlet_version=" + currentArticle.version >
226 <#assign editURL = editURL + "&_com_liferay_journal_web_portlet_JournalPortlet_redirect=" + redirectURL + "/-/journal/" + currentArticle.urlTitle>
227
228 <a class="edit-icon" href="${editURL}" aria-label="Modifier l'actualité" title="Modifier l'actualité">
229 <@liferay_ui["icon"]
230 icon="pencil"
231 markupView="lexicon"
232 />
233 </a>
234 </p>
235 </#if>
236 </div>
237
238 <#-- Le nom de l'onglet prend le nom de l'article ???? -->
239
240 <#-- Affichage du détail de l'actualité -->
241 <@liferay_journal["journal-article"]
242 articleId=currentArticle.getArticleId()
243 groupId=currentArticle.getGroupId()
244 ddmTemplateKey="ACTUALITE"
245 />
246
247 <#-- Affichage des réseaux sociaux -->
248 <#if (ChoixRS.getData())??>
249 <#assign cssURL = "/o/social-bookmarks-taglib/css/main.css?languageId=${locale}&minifierType=css&themeId=${themeDisplay.themeId}&t=${.now?long}">
250 <#assign sharedURL = request.getAttribute('CURRENT_COMPLETE_URL')>
251 <#assign sharedURL = sharedURL?keep_before("/-/journal/") >
252 <#assign sharedURL = sharedURL?keep_before("/-/asset_publisher/") >
253 <#assign sharedURL = sharedURL + "/-/journal/" + currentArticle.urlTitle>
254 <link data-senna-track="permanent" href="${cssURL}" rel="stylesheet" type="text/css">
255 <hr class="separator">
256 <div class="autofit-row autofit-float autofit-row-center asset-details">
257 <div class="autofit-col">
258 <div class="taglib-social-bookmarks" id="ykmt_column_2d_1_0_socialBookmarks">
259 <ul class="list-unstyled inline">
260 <#assign ChoixRS = ChoixRS.getData()>
261 <#list ChoixRS?eval as reseau>
262 <#switch reseau>
263 <#case "facebook">
264 <li class="taglib-social-bookmark taglib-social-bookmark-facebook">
265 <div class="lfr-tooltip-scope">
266 <a class="lfr-portal-tooltip btn btn-monospaced btn-outline-borderless btn-sm btn-outline-secondary" title="Facebook"
267 href="http://www.facebook.com/sharer.php?u=${sharedURL}" aria-label="Facebook">
268 <@liferay_ui["icon"]
269 icon="social-facebook"
270 markupView="lexicon"
271 />
272 </a>
273 </div>
274 </li>
275 <#break>
276 <#case "twitter">
277 <li class="taglib-social-bookmark taglib-social-bookmark-twitter">
278 <div class="lfr-tooltip-scope">
279 <a class="lfr-portal-tooltip btn btn-monospaced btn-outline-borderless btn-sm btn-outline-secondary"
280 href="https://twitter.com/intent/tweet?text=${currentArticle.getTitle(locale)}&tw_p=tweetbutton&url=${sharedURL}"
281 aria-label="Twitter" title="Twitter">
282 <@liferay_ui["icon"]
283 icon="twitter-x"
284 markupView="lexicon"
285 />
286 </a>
287 </div>
288 </li>
289 <#break>
290 <#case "linkedin">
291 <li class="taglib-social-bookmark taglib-social-bookmark-linkedin">
292 <div class="lfr-tooltip-scope">
293 <a class="lfr-portal-tooltip btn btn-monospaced btn-outline-borderless btn-sm btn-outline-secondary"
294 href="http://www.linkedin.com/shareArticle?title=${currentArticle.getTitle(locale)}&mini=true&url=${sharedURL}&summary=${currentArticle.getDescription(locale)}"
295 aria-label="LinkedIn" title="LinkedIn">
296 <@liferay_ui["icon"]
297 icon="social-linkedin"
298 markupView="lexicon"
299 />
300 </a>
301 </div>
302 </li>
303 <#break>
304 <#default>
305 </#switch>
306 </#list>
307 </ul>
308 </div>
309 </div>
310 </div>
311 </#if>
312
313 <#else>
314
315 <div class="actualites-interieur-list">
316 <div class="actualites-interieur-list-article row">
317 <#if assetEntriesFiltres?size gt 0>
318
319
320 <#list start..end as i>
321 <div class="col-lg-4">
322 <#assign renderer = assetEntriesFiltres[i].getAssetRenderer()
323 localActualite = renderer.getArticle() >
324 <@liferay_journal["journal-article"]
325 articleId=localActualite.getArticleId()
326 groupId=localActualite.getGroupId()
327 ddmTemplateKey="ACTUALITE_PAGE_PAR_PAGE"
328 />
329 </div>
330 </#list>
331 <#else>
332 <div class="alert alert-info">
333 <@liferay_ui["message"] key="there-are-no-results" />
334 </div>
335 </#if>
336 </div>
337 </div>
338 </#if>
339</div>
340
341<#if paginationData?? && (paginationData.pagesAvailable gt 1) >
342 <div class="actualites-pagination offres-pagination pagination pagination-focused" style="justify-content: space-between;">
343 <div style="margin: 10px; padding: 10px;">
344 <@pagination_Counter />
345 </div>
346 <ul class="actualites-pagination-content pagination pagination-content" style="margin: 0;">
347 <@pagination_First />
348 <@pagination_Previous />
349 <@pagination_Numbers maxPages = 5 separator = ""/>
350 <@pagination_Next />
351 <@pagination_Last />
352 </ul>
353 </div>
354</#if>
355
356<#function convert param>
357 <#attempt>
358 <#assign currentPage = param?number>
359 <#recover>
360 <#assign currentPage = 1>
361 </#attempt>
362 <#return currentPage />
363</#function>
364
365<#function filtre assetEntry param1 param2 >
366 <#switch param1>
367 <#case "publishDate">
368 <#return assetEntry.publishDate />
369 <#case "modifiedDate">
370 <#return assetEntry.modifiedDate />
371 <#case "createDate">
372 <#return assetEntry.createDate />
373 <#default>
374 <#switch param2>
375 <#case "publishDate">
376 <#return assetEntry.publishDate />
377 <#case "modifiedDate">
378 <#return assetEntry.modifiedDate />
379 <#case "createDate">
380 <#return assetEntry.createDate />
381 <#default>
382 <#return assetEntry.publishDate />
383 </#switch>
384 </#switch>
385</#function>
386
387<#--
388 Pagination macros.
389-->
390
391<#-- Premier Page -->
392<#macro pagination_First>
393 <#if (paginationData.pageNumber <= 1)>
394 <#local classAttr = "class=\"disabled\"" />
395 <#else>
396 <#local classAttr = "" />
397 </#if>
398 <#local text><@liferay_ui["message"] key="first" /></#local>
399 <@pagination_Link 1, text, classAttr/>
400</#macro>
401
402<#-- Dernière page -->
403<#macro pagination_Last>
404 <#if (paginationData.pageNumber >= paginationData.pagesAvailable - 1)>
405 <#local classAttr = "class=\"disabled\"" />
406 <#else>
407 <#local classAttr = "" />
408 </#if>
409 <#local text><@liferay_ui["message"] key="last" /></#local>
410 <@pagination_Link paginationData.pagesAvailable, text, classAttr/>
411</#macro>
412
413<#-- Page suivante -->
414<#macro pagination_Next>
415 <#if (paginationData.pageNumber >= paginationData.pagesAvailable)>
416 <#local pageNumber = paginationData.pageNumber />
417 <#local classAttr = "class=\"disabled\"" />
418 <#else>
419 <#local pageNumber = paginationData.pageNumber + 1 />
420 <#local classAttr = "" />
421 </#if>
422 <#local text><@liferay_ui["message"] key="next" /></#local>
423 <@pagination_Link pageNumber, text, classAttr/>
424</#macro>
425
426<#-- Page précédente -->
427<#macro pagination_Previous>
428 <#if (paginationData.pageNumber <= 1)>
429 <#local pageNumber = paginationData.pageNumber />
430 <#local classAttr = "class=\"disabled\"" />
431 <#else>
432 <#local pageNumber = paginationData.pageNumber - 1 />
433 <#local classAttr = "" />
434 </#if>
435 <#local text><@liferay_ui["message"] key="previous" /></#local>
436 <@pagination_Link pageNumber, text, classAttr/>
437</#macro>
438
439<#--
440 * Construction des liens intermédiaires
441 *
442 * @param maxPages (Optional) Nombre max de liens à afficher
443 * @param separator (Optional) Séparateur
444-->
445<#macro pagination_Numbers maxPages = 9 separator = " | ">
446 <#local pagesBefore = (maxPages / 2)?floor />
447 <#local pagesAfter = (maxPages / 2)?floor />
448 <#if maxPages % 2 == 0>
449 <#local pagesBefore = pagesBefore - 1 />
450 </#if>
451 <#local pageNumMin = paginationData.pageNumber - pagesBefore />
452 <#local pageNumMax = paginationData.pageNumber + pagesBefore />
453 <#if (pageNumMin < 1)>
454 <#local pageNumMax = pageNumMax + (1 - pageNumMin) />
455 <#local pageNumMin = 1 />
456 </#if>
457 <#if (pageNumMax >= paginationData.pagesAvailable)>
458 <#local pageNumMin = pageNumMin - (pageNumMax - paginationData.pagesAvailable) />
459 <#local pageNumMax = paginationData.pagesAvailable />
460 <#if (pageNumMin < 1)>
461 <#local pageNumMin = 1 />
462 </#if>
463 <#if (pageNumMax < 1)>
464 <#local pageNumMax = 1 />
465 </#if>
466 </#if>
467 <#list pageNumMin..pageNumMax as pageNumber>
468 <#if pageNumber == paginationData.pageNumber>
469 <#local classAttr = "class=\"selected\"" />
470 <#else>
471 <#local classAttr = "" />
472 </#if>
473 <@pagination_Link pageNumber, "", classAttr/><#if pageNumber_has_next>${separator}</#if>
474 </#list>
475</#macro>
476
477<#--
478 * Construction du lien vers la page
479 *
480 * @param pageNumber Numéro de la page
481 * @param text (Optional) Texte du lien
482 * @param attributes (Optional) Attributs ajoutés à l'URL
483-->
484<#macro pagination_Link pageNumber text = "" attributes = "">
485 <#if text == "">
486 <#local text = (pageNumber)?string />
487 </#if>
488 <#if (attributes != "" && attributes?starts_with(" ") == false)>
489 <#local attributes = " " + attributes />
490 </#if>
491 <li ${attributes}><a href="?page=${pageNumber}">${text?html}</a></li>
492</#macro>
493
494<#-- Nombre total de pages -->
495<#macro pagination_Counter>
496 <#if paginationData.pagesAvailable == 0>
497 <#local pagesAvailable = 1 />
498 <#else>
499 <#local pagesAvailable = paginationData.pagesAvailable />
500 </#if>
501 ${languageUtil.format(locale, "page-x-of-x", [paginationData.pageNumber, pagesAvailable])}
502</#macro>
503
504<style>
505.actualites-pagination li.disabled a {
506 background-color: white;
507 pointer-events: none;
508 border: 1px solid #f5f5f5;
509}
510.actualites-pagination li.selected a {
511 /* background-color: #d1cfcf;
512 color: #7d7d7d; */
513 font-weight: bolder;
514 pointer-events: none;
515}
516.actualites-interieur .titre .add-icon {
517 z-index: 100;
518}
519</style>
520
521<script>
522
523function checkPeriode() {
524
525 var periodeSelect = document.getElementById("adt-periode-select").value;
526
527 /*Get current URL*/
528 var _url = location.href;
529 var index = _url.indexOf('?');
530 if ( index !== -1 ) {
531 _url = _url.substring(0,index);
532 }
533 _url = _url + '?';
534 if (periodeSelect) {
535 _url = _url + 'periodeSelect='+periodeSelect;
536 }
537 /*reload the page */
538 window.location.href = _url;
539}
540
541</script>

