From fd7e8c328a4ccdf7f5dc01be97a0a97b2bd23027 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Sat, 3 Jun 2006 07:30:47 +0000 Subject: [PATCH] allez voila une pagination jolie --- dist/habillage.css | 128 +++++++++++++++++++------------------- dist/inc-petition.html | 4 +- dist/recherche.html | 24 ++++--- ecrire/inc/filtres.php | 73 +++++++++++++++++----- ecrire/public/balises.php | 4 +- 5 files changed, 142 insertions(+), 91 deletions(-) diff --git a/dist/habillage.css b/dist/habillage.css index 6259d2ed66..517ca02a11 100755 --- a/dist/habillage.css +++ b/dist/habillage.css @@ -1,30 +1,31 @@ -/* ---------------------------------------------------------------- */ -/* Feuilles de styles des squelettes par defaut pour SPIP 1.9 beta */ -/* ---------------------------------------------------------------- */ +/* ----------------------------------------------------------- */ +/* Feuilles de styles des squelettes par defaut pour SPIP 1.9 */ +/* ----------------------------------------------------------- */ /* taille typo - * Base 100% + * Base 100% * ------------------------------------- * 20px 1.27em * 19px 1.21em - * 18px 1.15em - * 17px 1.09em - * 16px 1.03em - * 15px 0.96em - * 14px 0.88em - * 13px 0.82em - * 12px 0.77em + * 18px 1.15em + * 17px 1.09em + * 16px 1.03em + * 15px 0.96em + * 14px 0.88em + * 13px 0.82em + * 12px 0.77em * 11px 0.71em * 10px 0.65em * 9px 0.59em - * attention en dessous de 0.71em le texte devient illisible en text smallest sur ie + * attention en dessous de 0.71em le texte devient illisible + * en text smallest sur ie */ /* ------------------------------------------ /* Correction des styles HTML par defaut /* ------------------------------------------ */ -body { - background: #FFF; +body { + background: #FFF; margin: 1.5em; text-align: center; font-family: "Trebuchet MS", Tahoma, Arial, Helvetica, sans-serif; @@ -33,7 +34,8 @@ body { } img, table { margin: 0; padding: 0; border: 0; } -ul, ol, li { margin: 0; padding: 0; list-style: none; } +ul, ol, li { margin: 0; padding: 0; } +ul { list-style: none; } h1, h2, h3, h4, h5, h6 { margin: 0; padding: 0; font-size: 1em; font-weight: normal; } /* ------------------------------------------ @@ -47,13 +49,13 @@ h1, h2, h3, h4, h5, h6 { margin: 0; padding: 0; font-size: 1em; font-weight: nor } #conteneur { width: 100%; } /* Particularisme IE/PC */ - -#conteneur #contenu { - float: left; + +#conteneur #contenu { + float: left; width: 33em; } -#conteneur #navigation { +#conteneur #navigation { float: right; width: 12em; text-align: center; @@ -61,13 +63,13 @@ h1, h2, h3, h4, h5, h6 { margin: 0; padding: 0; font-size: 1em; font-weight: nor /* Blocs du contenu (c-a-d. la colonne principale) ---------------------------------------------- */ -#contenu .contre-encart { +#contenu .contre-encart { float: left; width: 21em; } -#contenu .encart { - float: right; +#contenu .encart { + float: right; width: 11em; margin: 0; margin-bottom: 1em; @@ -90,11 +92,11 @@ h1, h2, h3, h4, h5, h6 { margin: 0; padding: 0; font-size: 1em; font-weight: nor #hierarchie { clear: both; margin-bottom: 16px; - border-top: 2px solid #333333; + border-top: 2px solid #333333; font-size: 0.77em; } /* * Pied de page */ -#pied { +#pied { clear: both; width: 100%; margin-top: 4em; @@ -109,15 +111,15 @@ h1, h2, h3, h4, h5, h6 { margin: 0; padding: 0; font-size: 1em; font-weight: nor /* Habillage general des menus de navigation ---------------------------------------------- */ -.rubriques, .breves, .syndic, .forums, .divers { - text-align: left; - border: 1px solid #CCCCCC; +.rubriques, .breves, .syndic, .forums, .divers { + text-align: left; + border: 1px solid #CCCCCC; margin-bottom: 1em; min-width: 10em; font-size: 0.77em; } - -.rubriques .titre, .breves .titre, .syndic .titre, .forums .titre, .divers .titre { + +.rubriques .titre, .breves .titre, .syndic .titre, .forums .titre, .divers .titre { padding: 3px 4px 2px 4px; border-bottom: 1px dotted #CCCCCC; text-align: center; @@ -126,14 +128,14 @@ h1, h2, h3, h4, h5, h6 { margin: 0; padding: 0; font-size: 1em; font-weight: nor } .rubriques p, .breves p, .syndic p, .forums p, .divers p { margin: 2px 4px; } - -.rubriques ul, .breves ul, .syndic ul, .forums ul, .divers ul { + +.rubriques ul, .breves ul, .syndic ul, .forums ul, .divers ul { display: block; padding: 2px 0; padding-right: 0.7em; } - -.rubriques li, .breves li, .syndic li, .forums li, .divers li { padding-left: 0.7em; } + +.rubriques li, .breves li, .syndic li, .forums li, .divers li { padding-left: 0.7em; } /* Des couleurs specifiques selon les types de menus ---------------------------------------------- */ @@ -161,9 +163,9 @@ h1, h2, h3, h4, h5, h6 { margin: 0; padding: 0; font-size: 1em; font-weight: nor .cartouche { margin-bottom: 2em; } .cartouche small { font-size: 0.71em; } -.cartouche .titre { - font-size: 1.27em; - font-weight: bold; +.cartouche .titre { + font-size: 1.27em; + font-weight: bold; color: #000; } .cartouche .spip_logos { @@ -177,15 +179,15 @@ h1, h2, h3, h4, h5, h6 { margin: 0; padding: 0; font-size: 1em; font-weight: nor .cartouche .traductions p { float: left; } .cartouche .traductions li { float: left; margin-left: 1em; } -#contenu .surtitre, #contenu .soustitre { - font-size: 0.82em; - font-variant: small-caps; +#contenu .surtitre, #contenu .soustitre { + font-size: 0.82em; + font-variant: small-caps; font-family: Georgia, Garamond, Times, serif; } /* Mise en forme des textes du contenu ---------------------------------------------- */ -.chapo { +.chapo { margin-bottom: 1.5em; font-weight: bold; line-height: 1.4em; } @@ -198,7 +200,7 @@ h1, h2, h3, h4, h5, h6 { margin: 0; padding: 0; font-size: 1em; font-weight: nor border: 1px solid #CCCCCC; font-size: 0.82em; font-weight: bold; } - + .texte { color: #000; font-size: 0.96em; } .ps, .notes { @@ -236,10 +238,10 @@ h1, h2, h3, h4, h5, h6 { margin: 0; padding: 0; font-size: 1em; font-weight: nor ----------------------------------------------- */ .extrait { margin-bottom: 1em; } -.extrait .titre { - font-size: 1.03em; +.extrait .titre { + font-size: 1.03em; font-weight: bold; } - + .extrait .spip_logos { float: right; margin-left: 16px; @@ -247,23 +249,23 @@ h1, h2, h3, h4, h5, h6 { margin: 0; padding: 0; font-size: 1em; font-weight: nor clear: right; } .extrait p { margin: 0; padding: 0; } - -.extrait .enclosures { + +.extrait .enclosures { float: right; text-align: right; - max-width: 60%; + max-width: 60%; margin: 0; } - -.extrait small { - display: block; + +.extrait small { + display: block; font-size: 0.71em; } - -.extrait .texte { + +.extrait .texte { margin-top: 5px; - margin-bottom: 2em; - border: 1px solid #CCCCCC; - padding: 0.9em; - font-size: 0.82em; + margin-bottom: 2em; + border: 1px solid #CCCCCC; + padding: 0.9em; + font-size: 0.82em; line-height: 1.4em; } .pagination { font-size: 0.71em; margin-top: 0; padding-top: 0; } @@ -279,14 +281,14 @@ h1, h2, h3, h4, h5, h6 { margin: 0; padding: 0; font-size: 1em; font-weight: nor background: #e0ffe0; border: 1px solid #CCCCCC; padding: 0.5em; - margin-bottom: 1em; - font-weight: bold; + margin-bottom: 1em; + font-weight: bold; text-align: center; } - -#page_plan #contenu .contre-encart ul { - display: block; - clear: left; - margin-left: 1em; + +#page_plan #contenu .contre-encart ul { + display: block; + clear: left; + margin-left: 1em; margin-bottom: 1em; list-style: square; } #page_plan #contenu .contre-encart li { list-style: inherit; } diff --git a/dist/inc-petition.html b/dist/inc-petition.html index f7c6dd9bd8..33ecbbf4bc 100644 --- a/dist/inc-petition.html +++ b/dist/inc-petition.html @@ -5,7 +5,7 @@ <B_signatures> <div id="signatures"> - #ANCRES_PAGINATION + #ANCRE_PAGINATION <table summary="<:signatures_petition:>"> <caption><h2>#GRAND_TOTAL <:signatures_petition:></h2></caption> @@ -17,7 +17,7 @@ </tr> </thead> <tbody> -<BOUCLE_signatures(SIGNATURES) {id_article} {par date}{inverse} {pagination 20}> +<BOUCLE_signatures(SIGNATURES) {id_article} {par date}{inverse} {pagination 15}> <tr> <td class="signature-date">[(#DATE|affdate)]</td> <td class="signature-nom">#NOM[<br /><a href="(#URL_SITE)" class="spip_out"><small>[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]})</small>]</a>]</td> diff --git a/dist/recherche.html b/dist/recherche.html index 06692d36ae..c8963aa4d2 100644 --- a/dist/recherche.html +++ b/dist/recherche.html @@ -42,16 +42,19 @@ [(#REM) Articles trouves ] <B_articles> + #ANCRE_PAGINATION <h2 class="invisible"><:articles:></h2> - #PAGINATION - <ol> + + <ul> <BOUCLE_articles(ARTICLES) {recherche} {par points}{inverse} {pagination 10}> <li class="extrait"> <h3 class="titre"><a href="#URL_ARTICLE">[(#TITRE|supprimer_numero|couper{80})]</a></h3> <small>[(#DATE|affdate)]<B_auteurs>, <:par_auteur:> <BOUCLE_auteurs(AUTEURS) {id_article} {", "}>[(#NOM|supprimer_numero)]</BOUCLE_auteurs></small> </li> </BOUCLE_articles> - </ol></B_articles> + </ul> + [<p class="pagination">(#PAGINATION)</p>] + </B_articles> </div><!-- fin contre-encart --> @@ -60,65 +63,70 @@ [(#REM) Rubriques trouvees ] <B_rubriques> <div class="rubriques"> + #ANCRE_PAGINATION <h2 class="titre"><:rubriques:></h2> - #PAGINATION <ul> <BOUCLE_rubriques(RUBRIQUES) {recherche} {par points}{inverse} {pagination 5}> <li><a href="#URL_RUBRIQUE">[(#TITRE|supprimer_numero|couper{80})]</a></li> </BOUCLE_rubriques> </ul> + [<p class="pagination">(#PAGINATION)</p>] </div> </B_rubriques> [(#REM) Mots-cles trouves ] <B_mots> <div class="divers"> + #ANCRE_PAGINATION <h2 class="titre"><:mots_clefs:></h2> - #PAGINATION <ul> <BOUCLE_mots(MOTS) {recherche} {par points}{inverse} {pagination 5}> <li><a href="#URL_MOT">[(#TITRE|supprimer_numero|couper{80})]</a></li> </BOUCLE_mots> </ul> + [<p class="pagination">(#PAGINATION)</p>] </div> </B_mots> [(#REM) Breves trouvees ] <B_breves> <div class="breves"> + #ANCRE_PAGINATION <h2 class="titre"><:breves:></h2> - #PAGINATION <ul> <BOUCLE_breves(BREVES) {recherche} {par points}{inverse} {pagination 5}> <li>[(#DATE|affdate_court) : ]<a href="#URL_BREVE">[(#TITRE|supprimer_numero|couper{80})]</a></li> </BOUCLE_breves> </ul> + [<p class="pagination">(#PAGINATION)</p>] </div> </B_breves> [(#REM) Messages trouves ] <B_messages> <div class="forums"> + #ANCRE_PAGINATION <h2 class="titre"><:messages_forum:></h2> - #PAGINATION <ul> <BOUCLE_messages(FORUMS) {recherche} {par points}{inverse} {pagination 5}> <li>[(#DATE|affdate_court) : ]<a href="#URL_FORUM">#TITRE</a></li> </BOUCLE_messages> </ul> + [<p class="pagination">(#PAGINATION)</p>] </div> </B_messages> [(#REM) Sites web trouves ] <B_sites> <div class="syndic"> + #ANCRE_PAGINATION <h2 class="titre"><:sites_web:></h2> - #PAGINATION <ul> <BOUCLE_sites(SITES) {recherche} {par points}{inverse} {pagination 5}> <li><a href="[(#ID_SYNDIC|generer_url_site)]">[(#NOM_SITE|supprimer_numero|couper{80})]</a></li> </BOUCLE_sites> </ul> + [<p class="pagination">(#PAGINATION)</p>] </div> </B_sites> diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php index 1ac8aead17..318f3a072a 100644 --- a/ecrire/inc/filtres.php +++ b/ecrire/inc/filtres.php @@ -2655,18 +2655,27 @@ function calcul_bornes_pagination($max, $nombre, $courante) { if($max<=0 OR $max>=$nombre) return array(1, $nombre); - $premiere = max(1, $courante-floor($max/2)); - $derniere = min($nombre, $premiere+$max-1); + $premiere = max(1, $courante-floor(($max-1)/2)); + $derniere = min($nombre, $premiere+$max-2); $premiere = $derniere == $nombre ? $derniere-$max+1 : $premiere; 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 : // function pagination($total, $nom, $pas, $liste) {...} // function calcul_pagination($total, $nom, $pas, $liste = true) { + static $ancres = array(); + if (function_exists("pagination")) return pagination($total, $nom, $pas, $liste); @@ -2687,30 +2696,62 @@ function calcul_pagination($total, $nom, $pas, $liste = true) { ); $ancre='pagination'.$nom; - $bloc_ancre = unique("<a name='$ancre' id='$ancre'></a>"); + + // 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) + if ($pagination['nombre_pages']<=1) return ''; // liste = false : on ne veut que l'ancre if (!$liste) return $bloc_ancre; - list($premiere, $derniere) = calcul_bornes_pagination(PAGINATION_MAX, $pagination['nombre_pages'], $pagination['page_courante']); - // liste = true : on retourne tout (ancre + bloc de navigation) + + list ($premiere, $derniere) = calcul_bornes_pagination( + PAGINATION_MAX, + $pagination['nombre_pages'], + $pagination['page_courante']); + $texte = ''; - for($i = $premiere;$i<=$derniere;$i++) { - $url = parametre_url($pagination['lien_base'], $debut, strval(($i-1)*$pas)); - $_item = strval($i); - $item = preg_replace( - array(',@url@,', ',@item@,'), - array($url.'#'.$ancre, $_item), - $pagination[($i != $pagination['page_courante']) ? 'lien_pagination' : 'lien_item_courant']); - $texte .= $item; - if($i<$derniere) $texte .= $separateur; - } + + 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; } diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php index 61fb1daa50..ae24e13e40 100644 --- a/ecrire/public/balises.php +++ b/ecrire/public/balises.php @@ -595,9 +595,9 @@ function balise_PAGINATION_dist($p, $liste='true') { return $p; } -// N'afficher que les ancres de la pagination (au-dessus, par exemple, alors +// N'afficher que l'ancre de la pagination (au-dessus, par exemple, alors // qu'on mettra les liens en-dessous de la liste paginee) -function balise_ANCRES_PAGINATION_dist($p) { +function balise_ANCRE_PAGINATION_dist($p) { $p = balise_PAGINATION_dist($p, $liste='false'); return $p; } -- GitLab