cPaginationLinks.ftl
1 <#-- Macro: cPaginationLinks
2
3 Description: permet de définir un élément de la pagination.
4
5 Parameters:
6
7 @param - class - string - optional - ajoute une classe CSS à la pagination
8 @param - paginator - list - required - Objet Paginator du core LUTECE ou liste avec comme attributs les url et index de pagination.
9 @param - fragment - string - optional - permet d'ajouter un suffixe à l'url de la page
10 -->
11 <#macro cPaginationLinks paginator fragment='' class=''>
12 <#local nbLinkPagesToDisplay = 10 />
13 <#local offsetPrev = nbLinkPagesToDisplay / 2 />
14 <#local offsetNext = nbLinkPagesToDisplay / 2 />
15 <#if ( paginator.pageCurrent <= nbLinkPagesToDisplay - offsetPrev )>
16 <#local offsetPrev = paginator.pageCurrent - 1 />
17 <#local offsetNext = nbLinkPagesToDisplay - offsetPrev />
18 <#elseif ( paginator.pageCurrent + offsetNext > paginator.pagesCount )>
19 <#local offsetNext = paginator.pagesCount - paginator.pageCurrent />
20 <#local offsetPrev = nbLinkPagesToDisplay - offsetNext />
21 </#if>
22 <ul class="pagination mb-0<#if class!=''> ${class}</#if>">
23 <#if ( paginator.pageCurrent - offsetPrev > 1 )>
24 <li class="page-item">
25 <a class="page-link" href="${paginator.firstPageLink?xhtml}<#if fragment !=''>#${fragment}</#if>" title="${paginator.labelFirst}">
26 <svg xmlns="http://www.w3.org/2000/svg" width="9.638" height="15.153" viewBox="0 0 9.638 15.153">
27 <g transform="translate(8.279 13.676) rotate(180)">
28 <g transform="translate(0 0)">
29 <path class="a" d="M1.309,0,0,1.423,4.3,6.1,0,10.776,1.309,12.2,6.92,6.1Z"/>
30 </g>
31 </g>
32 </svg>
33 </a>
34 </li>
35 </#if>
36 <#if (paginator.pageCurrent > 1) >
37 <li class="page-item">
38 <a class="page-link" href="${paginator.previousPageLink?xhtml}<#if fragment !=''>#${fragment}</#if>" title="#i18n{theme.labelPrev}">
39 <svg xmlns="http://www.w3.org/2000/svg" width="9.638" height="15.153" viewBox="0 0 9.638 15.153">
40 <g transform="translate(8.279 13.676) rotate(180)">
41 <g transform="translate(0 0)">
42 <path class="a" d="M1.309,0,0,1.423,4.3,6.1,0,10.776,1.309,12.2,6.92,6.1Z"/>
43 </g>
44 </g>
45 </svg>
46 </a>
47 </li>
48 <#else>
49 <li class="page-item disabled">
50 <a class="page-link" href="${paginator.firstPageLink?xhtml}<#if fragment !=''>#${fragment}</#if>" title="${paginator.labelFirst}">
51 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 9.638 15.153">
52 <g transform="translate(8.279 13.676) rotate(180)">
53 <path class="a" d="M1.309,0,0,1.423,4.3,6.1,0,10.776,1.309,12.2,6.92,6.1Z"/>
54 </g>
55 </svg>
56 </a>
57 </li>
58 </#if>
59 <#if ( paginator.pageCurrent - offsetPrev > 1 )>
60 <li class="page-item group">
61 <a class="page-link cesure" href="${(paginator.pagesLinks?first).url?xhtml}<#if fragment !=''>#${fragment}</#if>" title="#i18n{theme.labelNextGroup}"><strong>...</strong></a>
62 </li>
63 </#if>
64 <#list paginator.pagesLinks as link>
65 <#if ( link.index == paginator.pageCurrent )>
66 <li class="page-item active" disabled aria-current="page" >
67 <span class="page-link" title="page ${link.name} sur ${paginator.pagesCount}">${link.name}</span>
68 </li>
69 <#else>
70 <li class="page-item">
71 <a class="page-link" title="page ${link.name} sur ${paginator.pagesCount}" href="${link.url?xhtml}<#if fragment !=''>#${fragment}</#if>">${link.name}</a>
72 </li>
73 </#if>
74 </#list>
75 <#if ( paginator.pageCurrent + offsetNext < paginator.pagesCount) >
76 <li class="page-item group">
77 <a class="page-link cesure" href="${(paginator.pagesLinks?last).url?xhtml}<#if fragment !=''>#${fragment}</#if>" title="#i18n{theme.labelNextGroup}" >
78 <strong>...</strong>
79 </a>
80 </li>
81 </#if>
82 <#if (paginator.pageCurrent < paginator.pagesCount) >
83 <li class="page-item">
84 <a class="page-link" href="${paginator.nextPageLink?xhtml}<#if fragment !=''>#${fragment}</#if>" title="#i18n{theme.labelNext}">
85 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 9.638 15.153">
86 <g transform="translate(1.359 1.477)">
87 <path class="a" d="M1.309,0,0,1.423,4.3,6.1,0,10.776,1.309,12.2,6.92,6.1Z"/>
88 </g>
89 </svg>
90 </a>
91 </li>
92 <#if ( paginator.pageCurrent + offsetNext < paginator.pagesCount) >
93 <li class="page-item">
94 <a class="page-link" href="${paginator.lastPageLink?xhtml}<#if fragment !=''>#${fragment}</#if>" title="${paginator.labelLast}">
95 ${paginator.labelLast}
96 </a>
97 </li>
98 </#if>
99 <#else>
100 <li class="page-item disabled">
101 <a class="page-link" href="${paginator.lastPageLink?xhtml}<#if fragment !=''>#${fragment}</#if>" title="${paginator.labelLast}" >
102 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 9.638 15.153">
103 <g transform="translate(1.359 1.477)">
104 <path class="a" d="M1.309,0,0,1.423,4.3,6.1,0,10.776,1.309,12.2,6.92,6.1Z"/>
105 </g>
106 </svg>
107 </a>
108 </li>
109 </#if>
110 </ul>
111 </#macro>