Changeset 90364 in spip-zone


Ignore:
Timestamp:
Jun 19, 2015, 3:44:29 PM (4 years ago)
Author:
tcharlss@…
Message:

On filtre les niveaux directement dans la variable transmise au modèle, plutôt que dans le modèle.
En effet, le nombre d'entrées est utilisé dans le nom de la classe du sommaire, si on filtre dans la boucle, le résultat est faussé.

Location:
_plugins_/sommaire/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/sommaire/trunk/modeles/sommaire.html

    r90360 r90364  
    33        #SET{liste, '#'}
    44]
    5 #SET{niveau_max,#ENV{niveau_max}|intval|sinon{6}}
    65<B_somm>
    76<div class="well nav-sommaire nav-sommaire-[(#ENV{sommaire}|count)]">
    87        <h2><:sommaire:titre_cadre_sommaire:></h2>
    9         <BOUCLE_somm(POUR){tableau #ENV{sommaire}}><BOUCLE_filtrer(CONDITION){si #VALEUR{niveau}|<={#GET{niveau_max}}}>
    10 -[(#GET{liste}|str_pad{#VALEUR{niveau},#GET{liste}})] [#VALEUR{id}<-][#VALEUR{titre}->#VALEUR{href}]</BOUCLE_filtrer></BOUCLE_somm>
     8        <BOUCLE_somm(POUR){tableau #ENV{sommaire}}>
     9-[(#GET{liste}|str_pad{#VALEUR{niveau},#GET{liste}})] [#VALEUR{id}<-][#VALEUR{titre}->#VALEUR{href}]</BOUCLE_somm>
    1110</div>
    1211</B_somm>
  • _plugins_/sommaire/trunk/paquet.xml

    r90360 r90364  
    22        prefix="sommaire"
    33        categorie="edition"
    4         version="1.2.0"
     4        version="1.2.1"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.1.*]"
  • _plugins_/sommaire/trunk/sommaire_fonctions.php

    r90360 r90364  
    190190        $niveau_max_config = isset($GLOBALS['meta']['sommaire_niveau_max']) ? $GLOBALS['meta']['sommaire_niveau_max'] : '';
    191191        $niveau_max = (intval($niveau_max) > 0) ? $niveau_max : $niveau_max_config;
     192        // on filtre les entrées du sommaire selon le niveau max
     193        $sommaire = sommaire_filtrer_niveaux($sommaire, $niveau_max);
    192194
    193195        if ($ajoute OR $sommaire_seul){
     
    300302        return "$ancre-$i";
    301303}
     304
     305/**
     306 * Retire d'un sommaire les entrées d'une profondeur supérieures à un niveau donné
     307 *
     308 * @param array $sommaire
     309 *     tableau associatif des entrées du sommaire
     310 * @param int $niveau_max
     311 *     niveau de profondeur maximal
     312 * @return array
     313 *     tableau associatif des entrées du sommaire expurgé de certaines entrées
     314 */
     315function sommaire_filtrer_niveaux($sommaire, $niveau_max=''){
     316
     317        $niveau_max = intval($niveau_max);
     318        if (
     319                $niveau_max <= 0
     320                OR $niveau_max > 5
     321        )
     322        return $sommaire;
     323
     324        foreach ($sommaire as $k => $v) {
     325                if (
     326                        isset($v['niveau'])
     327                        AND is_int($v['niveau'])
     328                        AND $v['niveau'] > $niveau_max
     329                ) {
     330                        unset($sommaire[$k]);
     331                }
     332        }
     333
     334        return $sommaire;
     335}
     336
    302337?>
Note: See TracChangeset for help on using the changeset viewer.