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

