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
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+20 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -204,8 +204,14 @@ function filtre_pagination_dist(
	}

	if ($modele) {
		$pagination['type_pagination'] = $modele;
		if (trouver_fond('pagination_'.$modele, 'modele')) {
			$modele = '_' . $modele;
		}
		else {
			$modele = '';
		}
	}

	if (!defined('_PAGINATION_NOMBRE_LIENS_MAX')) {
		define('_PAGINATION_NOMBRE_LIENS_MAX', 10);
@@ -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
+12 −10
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -3,13 +3,14 @@
#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
	      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}}>[
@@ -17,13 +18,14 @@
		][<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>

prive/modeles/pagination_page.html

supprimé100644 → 0
+0 −29
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
#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>