Changeset 95960 in spip-zone for _plugins_/fil_ariane


Ignore:
Timestamp:
Mar 13, 2016, 4:36:35 PM (3 years ago)
Author:
spip.franck@…
Message:

des tab à la place d'espace

Location:
_plugins_/fil_ariane/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/fil_ariane/trunk/fil_ariane_fonctions.php

    r72965 r95960  
    3030 * et construit un fil d'Ariane.
    3131 */
    32 function balise_FIL_ARIANE_dist($p)
    33 {
    34 
    35     // il est possible qu'il y ait un tableau des valeurs souhaitées pour  le fil d'Ariane
    36     // il s'agit dans ce cas du 1er paramètre passé avec la balise "fil_ariane"
    37     if ($fil = interprete_argument_balise(1, $p)) {
    38         // si un id_objet est passé à la balise
    39         if ($id_objet = interprete_argument_balise(2, $p)) {
    40             $p->code = "calcule_hierarchie_objet($fil, $id_objet)";
    41             return $p;
    42         }
    43     }
    44 
    45     if (!$fil) {
    46         // On appele la fonction qui construit le fil d'Ariane
    47         // en prenant en compte seulement l'id de l'objet
    48         $_id_objet = $p->boucles[$p->id_boucle]->primary;
    49 
    50         // Code php mis en cache, et qui sera exécuté et qui est sensé ramener la valeur du champ
    51         $id_objet = champ_sql($_id_objet, $p);
    52 
    53         // L'objet issu du nom de la table
    54         $objet = $p->boucles[$p->id_boucle]->id_table;
    55 
    56         $p->code = "calcule_hierarchie_objet('$objet', $id_objet)";
    57     } else {
    58         // On décortique le tableau $fil et on appelle la fonction qui construit le fil
    59         // avec les valeurs du tableau
    60         $p->code = "construire_FIL_ARIANE($fil)";
    61 
    62     }
    63 
    64     return $p;
     32function balise_FIL_ARIANE_dist($p) {
     33
     34        // il est possible qu'il y ait un tableau des valeurs souhaitées pour  le fil d'Ariane
     35        // il s'agit dans ce cas du 1er paramètre passé avec la balise "fil_ariane"
     36        if ($fil = interprete_argument_balise(1, $p)) {
     37                // si un id_objet est passé à la balise
     38                if ($id_objet = interprete_argument_balise(2, $p)) {
     39                        $p->code = "calcule_hierarchie_objet($fil, $id_objet)";
     40                        return $p;
     41                }
     42        }
     43
     44        if (!$fil) {
     45                // On appele la fonction qui construit le fil d'Ariane
     46                // en prenant en compte seulement l'id de l'objet
     47                $_id_objet = $p->boucles[$p->id_boucle]->primary;
     48
     49                // Code php mis en cache, et qui sera exécuté et qui est sensé ramener la valeur du champ
     50                $id_objet = champ_sql($_id_objet, $p);
     51
     52                // L'objet issu du nom de la table
     53                $objet = $p->boucles[$p->id_boucle]->id_table;
     54
     55                $p->code = "calcule_hierarchie_objet('$objet', $id_objet)";
     56        } else {
     57                // On décortique le tableau $fil et on appelle la fonction qui construit le fil
     58                // avec les valeurs du tableau
     59                $p->code = "construire_FIL_ARIANE($fil)";
     60
     61        }
     62
     63        return $p;
    6564}
    6665
     
    7069 * Calcule la hierarchie d'un objet et la retourne sous forme d'un tableau
    7170 */
    72 function calcule_hierarchie_objet($objet, $id_objet)
    73 {
    74 
    75     $objet = objet_type($objet); // pour obtenir le type d'objet au singulier
    76 
    77     if ($f = charger_fonction($objet, 'fil_ariane', true)) {
    78         $fil = $f($id_objet);
    79         return construire_FIL_ARIANE($fil);
    80     }
    81 
    82     $fil_ariane_objet = charger_fonction('objet', 'fil_ariane');
    83     $fil              = $fil_ariane_objet($objet, $id_objet);
    84     return construire_FIL_ARIANE($fil);
     71function calcule_hierarchie_objet($objet, $id_objet) {
     72
     73        $objet = objet_type($objet); // pour obtenir le type d'objet au singulier
     74
     75        if ($f = charger_fonction($objet, 'fil_ariane', true)) {
     76                $fil = $f($id_objet);
     77                return construire_FIL_ARIANE($fil);
     78        }
     79
     80        $fil_ariane_objet = charger_fonction('objet', 'fil_ariane');
     81        $fil              = $fil_ariane_objet($objet, $id_objet);
     82        return construire_FIL_ARIANE($fil);
    8583
    8684}
     
    8987 * Construit le fil d'Ariane
    9088 */
    91 function construire_FIL_ARIANE($fil)
    92 {
    93 
    94     $fil_ariane = '<div class="' . _FIL_ARIANE_STYLE . '">';
    95 
    96     if (!is_array($fil)) {
    97         return '';
    98     }
    99 
    100     // si on doit tracer le 1er élément, on l'ajoute au début du tableau
    101     if (_FIL_ARIANE_ACCUEIL)
    102         $fil = array(_T('public:accueil_site') => $GLOBALS['meta']['adresse_site']) + $fil;
    103 
    104     // si le fil d'Ariane est court, on retire le dernier élément
    105     if (_FIL_ARIANE_COURT)
    106         array_pop($fil);
    107 
    108     $nb    = count($fil);
    109     $passe = 0;
    110 
    111     foreach ($fil as $titre => $lien) {
    112 
    113         // si on a déja tracé un élément, mais qu'on est pas encore arrivé au dernier
    114         if ($passe > 0)
    115             $fil_ariane .= "<span class=\"sep divider\">" . _FIL_ARIANE_SEP . "</span>";
    116 
    117         // tant qu'on est pas encore arrivé au dernier élément
    118         if ($passe < $nb - 1)
    119             $fil_ariane .= "<a href='$lien'>$titre</a>";
    120 
    121         // si on arrive au dernier
    122         elseif ($passe >= $nb - 1) {
    123             if (_FIL_ARIANE_COURT) { // si court, lien off dans tous les cas
    124                 $fil_ariane .= "<a href='$lien'>$titre</a>";
    125             } else { // sinon, lien ou pas selon conf
    126                 if (_FIL_ARIANE_LIEN)
    127                     $fil_ariane .= "<a class='on' href='$lien'>$titre</a>";
    128                 else
    129                     $fil_ariane .= "<span class='on'>$titre</span>";
    130             }
    131         }
    132 
    133         $passe++;
    134     }
    135 
    136     $fil_ariane .= '</div>';
    137     return $fil_ariane;
     89function construire_FIL_ARIANE($fil) {
     90
     91        $fil_ariane = '<div class="' . _FIL_ARIANE_STYLE . '">';
     92
     93        if (!is_array($fil)) {
     94                return '';
     95        }
     96
     97        // si on doit tracer le 1er élément, on l'ajoute au début du tableau
     98        if (_FIL_ARIANE_ACCUEIL)
     99                $fil = array(_T('public:accueil_site') => $GLOBALS['meta']['adresse_site']) + $fil;
     100
     101        // si le fil d'Ariane est court, on retire le dernier élément
     102        if (_FIL_ARIANE_COURT)
     103                array_pop($fil);
     104
     105        $nb    = count($fil);
     106        $passe = 0;
     107
     108        foreach ($fil as $titre => $lien) {
     109
     110                // si on a déja tracé un élément, mais qu'on est pas encore arrivé au dernier
     111                if ($passe > 0)
     112                        $fil_ariane .= "<span class=\"sep divider\">" . _FIL_ARIANE_SEP . "</span>";
     113
     114                // tant qu'on est pas encore arrivé au dernier élément
     115                if ($passe < $nb - 1)
     116                        $fil_ariane .= "<a href='$lien'>$titre</a>";
     117
     118                // si on arrive au dernier
     119                elseif ($passe >= $nb - 1) {
     120                        if (_FIL_ARIANE_COURT) { // si court, lien off dans tous les cas
     121                                $fil_ariane .= "<a href='$lien'>$titre</a>";
     122                        } else { // sinon, lien ou pas selon conf
     123                                if (_FIL_ARIANE_LIEN)
     124                                        $fil_ariane .= "<a class='on' href='$lien'>$titre</a>";
     125                                else
     126                                        $fil_ariane .= "<span class='on'>$titre</span>";
     127                        }
     128                }
     129
     130                $passe++;
     131        }
     132
     133        $fil_ariane .= '</div>';
     134        return $fil_ariane;
    138135}
    139136
     
    144141 *    couples titre => url
    145142 */
    146 function fil_ariane_objet_dist($objet, $id_objet)
    147 {
    148 
    149     $url   = generer_url_entite($id_objet, $objet);
    150     $titre = generer_info_entite($id_objet, $objet, 'titre');
    151 
    152     $fil         = array();
    153     $fil[$titre] = $url;
    154     return $fil;
    155 }
    156 
    157 function fil_ariane_organisation_dist($id_organisation)
    158 {
    159     return fil_ariane_hierarchie_objet('organisation', $id_organisation, 'nom', 'id_parent');
    160 }
    161 
    162 function fil_ariane_rubrique_dist($id_rubrique)
    163 {
    164     return fil_ariane_hierarchie_objet('rubrique', $id_rubrique, 'titre', 'id_parent');
    165 }
    166 
    167 function fil_ariane_article_dist($id_article)
    168 {
    169     // récupere l'id de la rubrique parent, le titre de l'article
    170     $item = sql_fetsel('id_rubrique, titre', 'spip_articles', "id_article = " . sql_quote($id_article));
    171 
    172     // récupère la hierarchie de la rubrique parent seulement si id_rubrique non nul (cas des pages uniques);
    173     $fil = array();
    174     if ($item['id_rubrique'] > 0) {
    175         $fil_ariane_rubrique = charger_fonction('rubrique', 'fil_ariane');
    176         $fil                 = $fil_ariane_rubrique($item['id_rubrique']);
    177     }
    178 
    179     // ajoute le titre et l'url de l'article
    180     $fil[typo(supprimer_numero($item['titre']))] = generer_url_entite($id_article, 'article');
    181 
    182     return $fil;
    183 }
    184 
    185 function fil_ariane_produit_dist($id_produit)
    186 {
    187     // récupère l'id de la rubrique parent ainsi que le titre du produit
    188     $item = sql_fetsel('id_rubrique, titre', 'spip_produits', "id_produit = " . sql_quote($id_produit));
    189 
    190     // récupère la hierarchie de la rubrique du produit
    191     $fil_ariane_rubrique = charger_fonction('rubrique', 'fil_ariane');
    192     $fil                 = $fil_ariane_rubrique($item['id_rubrique']);
    193 
    194     // ajoute le titre et l'url du produit
    195     $fil[typo(supprimer_numero($item['titre']))] = generer_url_entite($id_produit, 'produit');
    196 
    197     return $fil;
    198 }
    199 
    200 function fil_ariane_mot_dist($id_mot)
    201 {
    202     // récupère l'id du groupe, le titre du mot
    203     $item = sql_fetsel('id_groupe, titre', 'spip_mots', "id_mot = " . sql_quote($id_mot));
    204 
    205     // récupère la hierarchie du parent (si le plugin groupes de mots arborescents)
    206     # $fil = fil_ariane_hierarchie_objet('groupe' , $item['id_groupe'], 'titre', 'id_parent');
    207 
    208     // récupère le nom du groupe
    209     $groupe = sql_getfetsel('titre', 'spip_groupes_mots', "id_groupe = " . sql_quote($item['id_groupe']));
    210 
    211     // ajoute le titre et l'url du groupe
    212     $fil[typo(supprimer_numero($groupe))] = generer_url_entite($item['id_groupe'], 'groupe');
    213 
    214     // ajoute le titre et l'url du mot
    215     $fil[typo(supprimer_numero($item['titre']))] = generer_url_entite($id_mot, 'mot');
    216 
    217     return $fil;
    218 }
    219 
    220 
    221 function fil_ariane_hierarchie_objet($objet, $id_objet, $col_titre, $col_parent)
    222 {
    223     $fil = array();
    224 
    225     // trouver le nom du champ contenant la clé primaire de l'objet
    226     $col_id = id_table_objet($objet);
    227 
    228     // trouver le nom de la table contenant l'objet
    229     $table = table_objet_sql($objet);
    230 
    231     // trouver le titre et l'id du parent de l'objet en cours; on calcule son url;
    232     $item = sql_fetsel("$col_titre AS titre , $col_parent AS id_parent", $table, "$col_id = " . sql_quote($id_objet));
    233 
    234     $titre     = typo(supprimer_numero($item['titre']));
    235     $id_parent = $item['id_parent'];
    236     $url       = generer_url_entite($id_objet, $objet);
    237 
    238     // tant qu'il y a des parents, je place nom => url dans le tableau
    239     while ($id_parent) {
    240         // on trouve le parent, son titre; on calcule son url
    241         $parent = sql_fetsel("$col_titre AS titre , $col_parent AS id_parent", $table, "$col_id = " . sql_quote($id_parent));
    242 
    243         $nom_parent = typo(supprimer_numero($parent['titre']));
    244         $url_parent = generer_url_entite($id_parent, $objet);
    245 
    246         $fil[$nom_parent] = $url_parent;
    247         $id_parent        = $parent['id_parent'];
    248     }
    249 
    250     // on inverse le tableau
    251     $fil = array_reverse($fil, true);
    252 
    253     $fil[$titre] = $url;
    254 
    255     return $fil;
    256 
    257 }
     143function fil_ariane_objet_dist($objet, $id_objet) {
     144
     145        $url   = generer_url_entite($id_objet, $objet);
     146        $titre = generer_info_entite($id_objet, $objet, 'titre');
     147
     148        $fil         = array();
     149        $fil[$titre] = $url;
     150        return $fil;
     151}
     152
     153function fil_ariane_organisation_dist($id_organisation) {
     154        return fil_ariane_hierarchie_objet('organisation', $id_organisation, 'nom', 'id_parent');
     155}
     156
     157function fil_ariane_rubrique_dist($id_rubrique) {
     158        return fil_ariane_hierarchie_objet('rubrique', $id_rubrique, 'titre', 'id_parent');
     159}
     160
     161function fil_ariane_article_dist($id_article) {
     162        // récupere l'id de la rubrique parent, le titre de l'article
     163        $item = sql_fetsel('id_rubrique, titre', 'spip_articles', "id_article = " . sql_quote($id_article));
     164
     165        // récupère la hierarchie de la rubrique parent seulement si id_rubrique non nul (cas des pages uniques);
     166        $fil = array();
     167        if ($item['id_rubrique'] > 0) {
     168                $fil_ariane_rubrique = charger_fonction('rubrique', 'fil_ariane');
     169                $fil                 = $fil_ariane_rubrique($item['id_rubrique']);
     170        }
     171
     172        // ajoute le titre et l'url de l'article
     173        $fil[typo(supprimer_numero($item['titre']))] = generer_url_entite($id_article, 'article');
     174
     175        return $fil;
     176}
     177
     178function fil_ariane_produit_dist($id_produit) {
     179        // récupère l'id de la rubrique parent ainsi que le titre du produit
     180        $item = sql_fetsel('id_rubrique, titre', 'spip_produits', "id_produit = " . sql_quote($id_produit));
     181
     182        // récupère la hierarchie de la rubrique du produit
     183        $fil_ariane_rubrique = charger_fonction('rubrique', 'fil_ariane');
     184        $fil                 = $fil_ariane_rubrique($item['id_rubrique']);
     185
     186        // ajoute le titre et l'url du produit
     187        $fil[typo(supprimer_numero($item['titre']))] = generer_url_entite($id_produit, 'produit');
     188
     189        return $fil;
     190}
     191
     192function fil_ariane_mot_dist($id_mot) {
     193        // récupère l'id du groupe, le titre du mot
     194        $item = sql_fetsel('id_groupe, titre', 'spip_mots', "id_mot = " . sql_quote($id_mot));
     195
     196        // récupère la hierarchie du parent (si le plugin groupes de mots arborescents)
     197        # $fil = fil_ariane_hierarchie_objet('groupe' , $item['id_groupe'], 'titre', 'id_parent');
     198
     199        // récupère le nom du groupe
     200        $groupe = sql_getfetsel('titre', 'spip_groupes_mots', "id_groupe = " . sql_quote($item['id_groupe']));
     201
     202        // ajoute le titre et l'url du groupe
     203        $fil[typo(supprimer_numero($groupe))] = generer_url_entite($item['id_groupe'], 'groupe');
     204
     205        // ajoute le titre et l'url du mot
     206        $fil[typo(supprimer_numero($item['titre']))] = generer_url_entite($id_mot, 'mot');
     207
     208        return $fil;
     209}
     210
     211
     212function fil_ariane_hierarchie_objet($objet, $id_objet, $col_titre, $col_parent) {
     213        $fil = array();
     214
     215        // trouver le nom du champ contenant la clé primaire de l'objet
     216        $col_id = id_table_objet($objet);
     217
     218        // trouver le nom de la table contenant l'objet
     219        $table = table_objet_sql($objet);
     220
     221        // trouver le titre et l'id du parent de l'objet en cours; on calcule son url;
     222        $item = sql_fetsel("$col_titre AS titre , $col_parent AS id_parent", $table, "$col_id = " . sql_quote($id_objet));
     223
     224        $titre     = typo(supprimer_numero($item['titre']));
     225        $id_parent = $item['id_parent'];
     226        $url       = generer_url_entite($id_objet, $objet);
     227
     228        // tant qu'il y a des parents, je place nom => url dans le tableau
     229        while ($id_parent) {
     230                // on trouve le parent, son titre; on calcule son url
     231                $parent = sql_fetsel("$col_titre AS titre , $col_parent AS id_parent", $table, "$col_id = " . sql_quote($id_parent));
     232
     233                $nom_parent = typo(supprimer_numero($parent['titre']));
     234                $url_parent = generer_url_entite($id_parent, $objet);
     235
     236                $fil[$nom_parent] = $url_parent;
     237                $id_parent        = $parent['id_parent'];
     238        }
     239
     240        // on inverse le tableau
     241        $fil = array_reverse($fil, true);
     242
     243        $fil[$titre] = $url;
     244
     245        return $fil;
     246
     247}
  • _plugins_/fil_ariane/trunk/fil_ariane_pipelines.php

    r65952 r95960  
    22
    33function fil_ariane_insert_head($flux){
    4     $flux .= '<!-- insertion de la css fil_ariane --><link rel="stylesheet" type="text/css" href="'.find_in_path('fil_ariane.css').'" media="all" />';
    5     return $flux;
     4        $flux .= '<!-- insertion de la css fil_ariane --><link rel="stylesheet" type="text/css" href="'.find_in_path('fil_ariane.css').'" media="all" />';
     5        return $flux;
    66}
    77
  • _plugins_/fil_ariane/trunk/paquet.xml

    r90453 r95960  
    1212
    1313        <auteur lien="http://www.cym.fr">Cyril MARION</auteur>
    14     <auteur lien="http://magraine.net">Matthieu Marcillaud</auteur>
     14        <auteur lien="http://magraine.net">Matthieu Marcillaud</auteur>
    1515
    1616        <licence>GNU/GPL</licence>
    1717        <traduire gestionnaire="salvatore" module="fil_ariane" reference="fr" />
    1818
    19     <pipeline nom="insert_head" inclure="fil_ariane_pipelines.php" />
     19        <pipeline nom="insert_head" inclure="fil_ariane_pipelines.php" />
    2020
    2121</paquet>
Note: See TracChangeset for help on using the changeset viewer.