From 150e5c986f9d5188ee0ce447519c9e02ee9d60e5 Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Sun, 13 Aug 2006 08:55:24 +0000
Subject: [PATCH] Reecriture allegee des modeles de pagination avec
 #SET,#GET,et #INCLURE Modele supplementaire precedent_suivant filtre
 ancre_url pour ajouter/enlever une ancre a une url, sur le meme principe que
 parametre_url

---
 .gitattributes                                |  2 +
 dist/modeles/pagination_dist.html             | 90 +++++++------------
 dist/modeles/pagination_page.html             | 90 +++++++------------
 .../modeles/pagination_precedent_suivant.html | 10 +++
 dist/modeles/paginationitem.html              |  5 ++
 ecrire/inc/utils.php                          | 10 +++
 6 files changed, 87 insertions(+), 120 deletions(-)
 create mode 100644 dist/modeles/pagination_precedent_suivant.html
 create mode 100644 dist/modeles/paginationitem.html

diff --git a/.gitattributes b/.gitattributes
index cb0a3e3e6a..e03e3bd47a 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -11,6 +11,8 @@ dist/inc-pied.html -text
 dist/inc-rubriques.html -text
 dist/modeles/pagination_dist.html -text
 dist/modeles/pagination_page.html -text
+dist/modeles/pagination_precedent_suivant.html -text
+dist/modeles/paginationitem.html -text
 dist/polices/dustismo-license.txt -text svneol=unset#application/octet-stream
 dist/polices/dustismo.ttf -text
 dist/polices/dustismo_bold.ttf -text
diff --git a/dist/modeles/pagination_dist.html b/dist/modeles/pagination_dist.html
index 39f4bd472e..1054fe8cda 100644
--- a/dist/modeles/pagination_dist.html
+++ b/dist/modeles/pagination_dist.html
@@ -1,74 +1,44 @@
 #ENV{bloc_ancre}
 [<a href='[(#ENV{url}|parametre_url{#ENV{debut},''})]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|>{1}|?{'...',''})</a> |]
 
-[(#ENV{premiere}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere}|moins{1}|mult{#ENV{pas}})</span>]
-	][(#ENV{premiere}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|moins{1}|mult{#ENV{pas}})</a>]
-	][(#ENV{premiere}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#ENV{premiere}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{item}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
-[(#ENV{premiere}|plus{1}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|plus{1}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere}|plus{1}|moins{1}|mult{#ENV{pas}})</span>]
-	][(#ENV{premiere}|plus{1}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{1}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{1}|moins{1}|mult{#ENV{pas}})</a>]
-	][(#ENV{premiere}|plus{1}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#GET{i}|plus{1}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{item}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
-[(#ENV{premiere}|plus{2}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|plus{2}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere}|plus{2}|moins{1}|mult{#ENV{pas}})</span>]
-	][(#ENV{premiere}|plus{2}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{2}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{2}|moins{1}|mult{#ENV{pas}})</a>]
-	][(#ENV{premiere}|plus{2}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#GET{i}|plus{1}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{item}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
-[(#ENV{premiere}|plus{3}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|plus{3}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere}|plus{3}|moins{1}|mult{#ENV{pas}})</span>]
-	][(#ENV{premiere}|plus{3}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{3}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{3}|moins{1}|mult{#ENV{pas}})</a>]
-	][(#ENV{premiere}|plus{3}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#GET{i}|plus{1}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{item}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
-[(#ENV{premiere}|plus{4}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|plus{4}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere}|plus{4}|moins{1}|mult{#ENV{pas}})</span>]
-	][(#ENV{premiere}|plus{4}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{4}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{4}|moins{1}|mult{#ENV{pas}})</a>]
-	][(#ENV{premiere}|plus{4}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#GET{i}|plus{1}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{item}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
-[(#ENV{premiere}|plus{5}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|plus{5}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere}|plus{5}|moins{1}|mult{#ENV{pas}})</span>]
-	][(#ENV{premiere}|plus{5}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{5}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{5}|moins{1}|mult{#ENV{pas}})</a>]
-	][(#ENV{premiere}|plus{5}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#GET{i}|plus{1}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{item}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
-[(#ENV{premiere}|plus{6}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|plus{6}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere}|plus{6}|moins{1}|mult{#ENV{pas}})</span>]
-	][(#ENV{premiere}|plus{6}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{6}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{6}|moins{1}|mult{#ENV{pas}})</a>]
-	][(#ENV{premiere}|plus{6}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#GET{i}|plus{1}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{item}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
-[(#ENV{premiere}|plus{7}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|plus{7}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere}|plus{7}|moins{1}|mult{#ENV{pas}})</span>]
-	][(#ENV{premiere}|plus{7}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{7}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{7}|moins{1}|mult{#ENV{pas}})</a>]
-	][(#ENV{premiere}|plus{7}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#GET{i}|plus{1}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{item}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
-[(#ENV{premiere}|plus{8}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|plus{8}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere}|plus{8}|moins{1}|mult{#ENV{pas}})</span>]
-	][(#ENV{premiere}|plus{8}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{8}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{8}|moins{1}|mult{#ENV{pas}})</a>]
-	][(#ENV{premiere}|plus{8}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#GET{i}|plus{1}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{item}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
-[(#ENV{premiere}|plus{9}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|plus{9}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere}|plus{9}|moins{1}|mult{#ENV{pas}})</span>]
-	][(#ENV{premiere}|plus{9}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{9}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{9}|moins{1}|mult{#ENV{pas}})</a>]
-	][(#ENV{premiere}|plus{9}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#GET{i}|plus{1}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{item}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
 [| <a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{nombre_pages}|moins{1}|mult{#ENV{pas}}})]##ENV{ancre}' class='lien_pagination'>(#ENV{derniere}|<{#ENV{nombre_pages}}|?{'...',''})</a>]
diff --git a/dist/modeles/pagination_page.html b/dist/modeles/pagination_page.html
index 7cab2f7fa4..231f88747c 100644
--- a/dist/modeles/pagination_page.html
+++ b/dist/modeles/pagination_page.html
@@ -1,74 +1,44 @@
 #ENV{bloc_ancre}
 [<a href='[(#ENV{url}|parametre_url{#ENV{debut},''})]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|>{1}|?{'...',''})</a> |]
 
-[(#ENV{premiere}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere})</span>]
-	][(#ENV{premiere}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere})</a>]
-	][(#ENV{premiere}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#ENV{premiere}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{i}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
-[(#ENV{premiere}|plus{1}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|plus{1}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere}|plus{1})</span>]
-	][(#ENV{premiere}|plus{1}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{1}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{1})</a>]
-	][(#ENV{premiere}|plus{1}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#GET{i}|plus{1}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{i}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
-[(#ENV{premiere}|plus{2}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|plus{2}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere}|plus{2})</span>]
-	][(#ENV{premiere}|plus{2}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{2}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{2})</a>]
-	][(#ENV{premiere}|plus{2}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#GET{i}|plus{1}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{i}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
-[(#ENV{premiere}|plus{3}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|plus{3}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere}|plus{3})</span>]
-	][(#ENV{premiere}|plus{3}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{3}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{3})</a>]
-	][(#ENV{premiere}|plus{3}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#GET{i}|plus{1}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{i}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
-[(#ENV{premiere}|plus{4}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|plus{4}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere}|plus{4})</span>]
-	][(#ENV{premiere}|plus{4}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{4}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{4})</a>]
-	][(#ENV{premiere}|plus{4}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#GET{i}|plus{1}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{i}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
-[(#ENV{premiere}|plus{5}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|plus{5}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere}|plus{5})</span>]
-	][(#ENV{premiere}|plus{5}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{5}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{5})</a>]
-	][(#ENV{premiere}|plus{5}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#GET{i}|plus{1}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{i}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
-[(#ENV{premiere}|plus{6}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|plus{6}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere}|plus{6})</span>]
-	][(#ENV{premiere}|plus{6}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{6}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{6})</a>]
-	][(#ENV{premiere}|plus{6}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#GET{i}|plus{1}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{i}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
-[(#ENV{premiere}|plus{7}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|plus{7}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere}|plus{7})</span>]
-	][(#ENV{premiere}|plus{7}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{7}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{7})</a>]
-	][(#ENV{premiere}|plus{7}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#GET{i}|plus{1}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{i}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
-[(#ENV{premiere}|plus{8}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|plus{8}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere}|plus{8})</span>]
-	][(#ENV{premiere}|plus{8}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{8}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{8})</a>]
-	][(#ENV{premiere}|plus{8}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#GET{i}|plus{1}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{i}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
-[(#ENV{premiere}|plus{9}|<={#ENV{derniere}}|?{' ',''})[
-	(#ENV{premiere}|plus{9}|=={#ENV{page_courante}}|?{' ',''})
-		[<span class="on">(#ENV{premiere}|plus{9})</span>]
-	][(#ENV{premiere}|plus{9}|=={#ENV{page_courante}}|?{'',' '})
-		[<a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{premiere}|plus{9}|moins{1}|mult{#ENV{pas}} })]##ENV{ancre}' class='lien_pagination'>(#ENV{premiere}|plus{9})</a>]
-	][(#ENV{premiere}|plus{9}|<{#ENV{derniere}}|?{'|',''})]
+[(#SET{i,#GET{i}|plus{1}}|<={#ENV{derniere}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=#GET{i}}{separateur='|'}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
 ]
 [| <a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{nombre_pages}|moins{1}|mult{#ENV{pas}}})]##ENV{ancre}' class='lien_pagination'>(#ENV{derniere}|<{#ENV{nombre_pages}}|?{'...',''})</a>]
diff --git a/dist/modeles/pagination_precedent_suivant.html b/dist/modeles/pagination_precedent_suivant.html
new file mode 100644
index 0000000000..76b33cb085
--- /dev/null
+++ b/dist/modeles/pagination_precedent_suivant.html
@@ -0,0 +1,10 @@
+#ENV{bloc_ancre}
+[(#SET{i,#ENV{page_courante}|moins{1}}|>{0}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=<:public:page_precedente:>}{separateur=''}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
+	[(#SET{i,#GET{i}|plus{2}}|<{#ENV{nombre_pages}}|?{'|',''})]
+]
+[(#SET{i,#ENV{page_courante}|plus{1}}|<{#ENV{nombre_pages}}|?{' ',''})[
+	(#SET{item, #GET{i}|moins{1}|mult{#ENV{pas}} }|rien)
+	][(#INCLURE{fond=modeles/paginationitem}{num=#GET{i}}{texte=<:public:page_suivante:>}{separateur=''}{url=#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}}}{page_courante=#ENV{page_courante}}{derniere=#ENV{derniere}})]
+]
diff --git a/dist/modeles/paginationitem.html b/dist/modeles/paginationitem.html
new file mode 100644
index 0000000000..8fad4071e6
--- /dev/null
+++ b/dist/modeles/paginationitem.html
@@ -0,0 +1,5 @@
+[(#ENV{num}|=={#ENV{page_courante}}|?{' ',''})
+		[<span class="on">(#ENV{texte})</span>]
+	][(#ENV{num}|=={#ENV{page_courante}}|?{'',' '})
+		[<a href='#ENV{url}' class='lien_pagination'>(#ENV*{texte})</a>]
+	][(#ENV{num}|<{#ENV{derniere}}|?{#ENV{separateur},''})]
\ No newline at end of file
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index b84259f825..042205d866 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -313,6 +313,16 @@ function parametre_url($url, $c, $v=NULL, $sep='&amp;') {
 	return $a . $ancre;
 }
 
+//
+// Prend une URL et lui ajoute/retire une ancre.
+function ancre_url($url, $ancre) {
+	// lever l'#ancre
+	if (preg_match(',^([^#]*)(#.*)$,', $url, $r)) {
+		$url = $r[1];
+	}
+	return $url .'#'. $ancre;
+}
+
 //
 // pour calcul du nom du fichier cache et autres
 //
-- 
GitLab