Skip to content
Extraits de code Groupes Projets
Valider e7c77c3c rédigé par cerdic's avatar cerdic
Parcourir les fichiers

Refactoring : un seul modele pour gerer la pagination avec affichage par page...

Refactoring : un seul modele pour gerer la pagination avec affichage par page ou par rang (historique)
+ le type de pagination demande est passe dans type_pagination dans le contexte du modele, et si il n'y a pas de modele existant pour le type demande, on utilise le modele par defaut `modeles/pagination.html`
+ le type de pagination genere une class homonyme sur le container pagination-items
+ l'affichage par defaut est par page (et non plus par rang)
+ un filtre (surchargeable) filtre_pagination_affiche_page() pour gerer l'affichage en fonction du type, qui permet de choisir entre page (1 2 3 4 5), rang (0 10 20 30), resultats (1 11 21 31) et naturel (1 10 20 30) ce dernier etant juste un affichage plus humain meme si pas tout a fait exact
(Ce dernier peut donc etre utilise pour ajouter ses propres formes d'affichage)
parent 881a8a56
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -204,7 +204,13 @@ function filtre_pagination_dist(
}
if ($modele) {
$modele = '_' . $modele;
$pagination['type_pagination'] = $modele;
if (trouver_fond('pagination_'.$modele, 'modele')) {
$modele = '_' . $modele;
}
else {
$modele = '';
}
}
if (!defined('_PAGINATION_NOMBRE_LIENS_MAX')) {
......@@ -248,6 +254,19 @@ function filtre_bornes_pagination_dist($courante, $nombre, $max = 10) {
return array($premiere, $derniere);
}
function filtre_pagination_affiche_page($type_pagination, $numero_page, $rang_item) {
switch ($type_pagination) {
case 'resultats':
return $rang_item + 1; // 1 11 21 31...
case 'naturel':
return $rang_item ? $rang_item : 1; // 1 10 20 30...
case 'rang':
return $rang_item; // 0 10 20 30...
case 'page':
default:
return $numero_page; // 1 2 3 4 5...
}
}
/**
* Retourne pour une clé primaire d'objet donnée les identifiants ayant un logo
......
......@@ -3,27 +3,29 @@
#SET{premiere, #GET{bornes}|reset}
#SET{derniere, #GET{bornes}|end}
#SET{pages,#GET{premiere}|range{#GET{derniere}}}
#SET{type,#ENV{type_pagination,page}}
<B_pages>
[<span class="pagination-label"><span class="label">(#ENV{label})</span></span>]
<ul class="pagination-items">
<ul class="pagination-items pagination_#GET{type}">
[<li class="pagination-item"><a
href='[(#ENV{url}|parametre_url{#ENV{debut},''}|ancre_url{#ENV{ancre}})]'
class='pagination-lien lien_pagination'
rel='nofollow'>(#GET{premiere}|>{1}|?{0})</a></li><li
class="pagination-item tbc disabled"><span class="pagination-lien">...</span></li>]
href="[(#ENV{url}|parametre_url{#ENV{debut},''}|ancre_url{#ENV{ancre}})]"
class="pagination-lien lien_pagination"
rel="nofollow">(#GET{premiere}|>{1}|?{#GET{type}|pagination_affiche_page{1,0}})</a></li><li
class="pagination-item tbc disabled"><span class="pagination-lien">...</span></li>]
<BOUCLE_pages(POUR){tableau #GET{pages}}>[
(#SET{item, #VALEUR|moins{1}|mult{#ENV{pas}} })
][<li class="pagination-item[(#VALEUR|=={#ENV{page_courante}}|oui)on active]">(#ENV{url}
|parametre_url{#ENV{debut},#GET{item}|?{#GET{item}}}
|ancre_url{#ENV{ancre}}
|lien_ou_expose{#GET{item},#VALEUR|=={#ENV{page_courante}}|?{span.pagination-lien},pagination-lien lien_pagination,'',nofollow})</li>]
|lien_ou_expose{#GET{type}|pagination_affiche_page{#VALEUR,#GET{item}},#VALEUR|=={#ENV{page_courante}}|?{span.pagination-lien},pagination-lien lien_pagination,'',nofollow})</li>]
</BOUCLE_pages>
[<li class="pagination-item tbc disabled"><span class="pagination-lien">...</span></li>
#SET{item, #ENV{nombre_pages}|moins{1}|mult{#ENV{pas}}}
<li class="pagination-item"><a
href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{nombre_pages}|moins{1}|mult{#ENV{pas}}}|ancre_url{#ENV{ancre}})]'
class='pagination-lien lien_pagination'
rel='nofollow'>(#GET{derniere}|<{#ENV{nombre_pages}}|?{#ENV{nombre_pages}|moins{1}|mult{#ENV{pas}}})</a></li>]
href="[(#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|ancre_url{#ENV{ancre}})]"
class="pagination-lien lien_pagination"
rel="nofollow">(#GET{derniere}|<{#ENV{nombre_pages}}|?{#GET{type}|pagination_affiche_page{#ENV{nombre_pages},#GET{item}}})</a></li>]
</ul>
</B_pages>
\ No newline at end of file
</B_pages>
#ENV*{bloc_ancre}
#SET{bornes,#ENV{page_courante}|bornes_pagination{#ENV{nombre_pages},#ENV{nombre_liens_max,#CONST{_PAGINATION_NOMBRE_LIENS_MAX}}|max{3}}}
#SET{premiere, #GET{bornes}|reset}
#SET{derniere, #GET{bornes}|end}
#SET{pages,#GET{premiere}|range{#GET{derniere}}}
#SET{sep,#ENV{separateur,' | '}}
<B_pages>
[<span class="pagination-label"><span class="label">(#ENV{label})</span></span>]
<ul class="pagination-items pagination_page">
[<li class="pagination-item"><a
href="[(#ENV{url}|parametre_url{#ENV{debut},''}|ancre_url{#ENV{ancre}})]"
class="pagination-lien lien_pagination"
rel="nofollow">(#GET{premiere}|>{1}|?{1})</a></li><li
class="pagination-item tbc disabled"><span class="pagination-lien">...</span></li>]
<BOUCLE_pages(POUR){tableau #GET{pages}}>[
(#SET{item, #VALEUR|moins{1}|mult{#ENV{pas}} })
][<li class="pagination-item[(#VALEUR|=={#ENV{page_courante}}|oui)on active]">(#ENV{url}
|parametre_url{#ENV{debut},#GET{item}|?{#GET{item}}}
|ancre_url{#ENV{ancre}}
|lien_ou_expose{#VALEUR,#VALEUR|=={#ENV{page_courante}}|?{span.pagination-lien},pagination-lien lien_pagination,'',nofollow})</li>]
</BOUCLE_pages>
[<li class="pagination-item tbc disabled"><span class="pagination-lien">...</span></li>
<li class="pagination-item"><a
href="[(#ENV{url}|parametre_url{#ENV{debut},#ENV{nombre_pages}|moins{1}|mult{#ENV{pas}}}|ancre_url{#ENV{ancre}})]"
class="pagination-lien lien_pagination"
rel="nofollow">(#GET{derniere}|<{#ENV{nombre_pages}}|?{#ENV{nombre_pages}})</a></li>]
</ul>
</B_pages>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter