diff --git a/.gitattributes b/.gitattributes index 32ecd53c2e29fcfce0bd545ccb4339a99560bd50..cb0a3e3e6a3dab6f6d6abdcd0a4f12a33d80a348 100644 --- a/.gitattributes +++ b/.gitattributes @@ -9,6 +9,8 @@ dist/inc-head.html -text dist/inc-petition.html -text dist/inc-pied.html -text dist/inc-rubriques.html -text +dist/modeles/pagination_dist.html -text +dist/modeles/pagination_page.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 new file mode 100644 index 0000000000000000000000000000000000000000..39f4bd472ef9b7554bc5a7ca0af7ceb461be4c61 --- /dev/null +++ b/dist/modeles/pagination_dist.html @@ -0,0 +1,74 @@ +#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}}|?{'|',''})] +] +[(#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}}|?{'|',''})] +] +[(#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}}|?{'|',''})] +] +[(#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}}|?{'|',''})] +] +[(#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}}|?{'|',''})] +] +[(#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}}|?{'|',''})] +] +[(#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}}|?{'|',''})] +] +[(#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}}|?{'|',''})] +] +[(#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}}|?{'|',''})] +] +[(#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}}|?{'|',''})] +] +[| <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 new file mode 100644 index 0000000000000000000000000000000000000000..7cab2f7fa4fc3dd5cbb2c684d0a1e7e2ff74f794 --- /dev/null +++ b/dist/modeles/pagination_page.html @@ -0,0 +1,74 @@ +#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}}|?{'|',''})] +] +[(#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}}|?{'|',''})] +] +[(#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}}|?{'|',''})] +] +[(#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}}|?{'|',''})] +] +[(#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}}|?{'|',''})] +] +[(#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}}|?{'|',''})] +] +[(#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}}|?{'|',''})] +] +[(#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}}|?{'|',''})] +] +[(#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}}|?{'|',''})] +] +[(#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}}|?{'|',''})] +] +[| <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/ecrire/inc/filtres.php b/ecrire/inc/filtres.php index 0ccc676eb16a0f21d35fc2d0f07053a9f1c42d72..b0aeceba21b484ec39994dc336e7369ec372b495 100644 --- a/ecrire/inc/filtres.php +++ b/ecrire/inc/filtres.php @@ -79,7 +79,7 @@ function image_filtrer($args){ $texte = array_shift($args); if (!$texte) return; // Cas du nom de fichier local - if (preg_match(',^'._DIR_IMG.',', $texte)) { + if (preg_match(',^('._DIR_IMG . '|'. _DIR_IMG_PACK .'),', $texte)) { if (!@file_exists($texte)) { spip_log("Image absente : $texte"); return ''; @@ -1367,13 +1367,6 @@ function calcul_bornes_pagination($max, $nombre, $courante) { return array($premiere, $derniere); } -function pagination_item($num, $txt, $pattern, $lien_base, $debut, $ancre) { - $url = parametre_url($lien_base, $debut, $num); - return str_replace('@url@', $url.'#'.$ancre, - str_replace('@item@', $txt, - $pattern)); -} - // // fonction standard de calcul de la balise #PAGINATION // on peut la surcharger en definissant dans mes_fonctions : @@ -1382,7 +1375,7 @@ function pagination_item($num, $txt, $pattern, $lien_base, $debut, $ancre) { define('PAGINATION_MAX', 10); -function calcul_pagination($total, $nom, $pas, $liste = true) { +function calcul_pagination($total, $nom, $pas, $liste = true, $modele='dist') { static $ancres = array(); $bloc_ancre = ""; @@ -1394,24 +1387,28 @@ function calcul_pagination($total, $nom, $pas, $liste = true) { $separateur = ' | '; $debut = 'debut'.$nom; + $ancre='pagination'.$nom; + + // n'afficher l'ancre qu'une fois + if (!isset($ancres[$ancre])) + $bloc_ancre = $ancres[$ancre] = "<a name='$ancre' id='$ancre'></a>"; + + $nombre_pages = floor(($total-1)/$pas)+1; $pagination = array( - 'lien_base' => parametre_url(self(),'fragment',''), // nettoyer l'id ahah eventuel + 'debut' => 'debut'.$nom, + 'url' => parametre_url(self(),'fragment',''), // nettoyer l'id ahah eventuel 'total' => $total, 'position' => intval(_request($debut)), 'pas' => $pas, - 'nombre_pages' => floor(($total-1)/$pas)+1, + 'nombre_pages' => $nombre_pages, 'page_courante' => floor(intval(_request($debut))/$pas)+1, 'lien_pagination' => '<a href="@url@" class="lien_pagination">@item@</a>', - 'lien_item_courant' => '<span class="on">@item@</span>' + 'lien_item_courant' => '<span class="on">@item@</span>', + 'ancre' => $ancre, + 'bloc_ancre' => $bloc_ancre ); - $ancre='pagination'.$nom; - - // n'afficher l'ancre qu'une fois - if (!isset($ancres[$ancre])) - $bloc_ancre = $ancres[$ancre] = "<a name='$ancre' id='$ancre'></a>"; - // Pas de pagination if ($pagination['nombre_pages']<=1) return ''; @@ -1426,44 +1423,13 @@ function calcul_pagination($total, $nom, $pas, $liste = true) { PAGINATION_MAX, $pagination['nombre_pages'], $pagination['page_courante']); - - $texte = ''; - - if ($premiere > 2) - $texte .= pagination_item('', - '...', - $pagination[ - ($i != $pagination['page_courante']) ? - 'lien_pagination' : 'lien_item_courant' - ], - $pagination['lien_base'], $debut, $ancre) - . $separateur; - + if ($premiere == 2) $premiere = 1; # '...' inutile quand on peut mettre 0 - - for ($i = $premiere; $i<=$derniere; $i++) { - $num = strval(($i-1)*$pas); - $texte .= pagination_item($num, - $num, - $pagination[ - ($i != $pagination['page_courante']) ? - 'lien_pagination' : 'lien_item_courant' - ], - $pagination['lien_base'], $debut, $ancre); - if ($i<$derniere) $texte .= $separateur; - } - - if ($derniere < $pagination['nombre_pages']) - $texte .= $separateur. - pagination_item(strval(($pagination['nombre_pages']-1)*$pas), - '...', - $pagination[ - ($i != $pagination['page_courante']) ? - 'lien_pagination' : 'lien_item_courant' - ], - $pagination['lien_base'], $debut, $ancre); - - return $bloc_ancre.$texte; + + $pagination['premiere'] = $premiere; + $pagination['derniere'] = $derniere; + + return recuperer_fond("modeles/pagination_$modele",$pagination); } // recuperere le chemin d'une css existante et : diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php index 0d59de5bd5f735d722e4da06f7c6d8d9424cb936..35741e60a2e9fd64082f001573a4747de655a453 100644 --- a/ecrire/public/balises.php +++ b/ecrire/public/balises.php @@ -593,6 +593,14 @@ function balise_PAGINATION_dist($p, $liste='true') { $p->code = "''"; return $p; } + $__modele = ""; + if ($p->param && !$p->param[0][0]) { + $__modele = ",". calculer_liste($p->param[0][1], + $p->descr, + $p->boucles, + $p->id_boucle); + } + $p->boucles[$b]->numrows = true; @@ -601,7 +609,7 @@ function balise_PAGINATION_dist($p, $liste='true') { \$Numrows['$b']['grand_total'] : \$Numrows['$b']['total'] ), '$b', " . $p->boucles[$b]->total_parties - . ", $liste)"; + . ", $liste $__modele)"; $p->interdire_scripts = false; return $p;