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>