Changeset 43331 in spip-zone


Ignore:
Timestamp:
Jan 4, 2011, 4:57:34 PM (10 years ago)
Author:
marcimat@…
Message:

Modifications (nécessite Spip2)

  • utilisation du pipeline de déclaration des champs (interface) : on ne charge plus systématiquement le fichier d'options
  • prise en compte effective du nombre minimal d'éléments définis dans la configuration pour afficher la table des matières.

Reste un problème avec <code><balise></code> qui est cassé lorsque le plugin s'active. En fait :

$texte_ancre = echappe_html($texte, 'TDM');
$texte_ancre = echappe_retour($texte_ancre, 'TDM');

$texte_ancre devrait avoir la même valeur que $texte mais il semble que dans certains cas
ce n'est pas pris en compte. Par contre, <cadre> fonctionne parfaitement.

Location:
_plugins_/table_matieres
Files:
2 edited
1 moved

Legend:

Unmodified
Added
Removed
  • _plugins_/table_matieres/plugin.xml

    r34503 r43331  
    11<plugin>
    22        <nom>Table des Mati&#232;res</nom>
    3         <version>1.0</version>
     3        <version>1.1</version>
    44        <prefix>TableMatieres</prefix>
    5         <options>tdm_options.php</options>
    65        <fonctions>table_matieres.php</fonctions>
    76        <auteur>James (c)2007 - Licence GNU/GPL</auteur>
     
    1110        <lien>[Documentation sur spip-contrib.net->http://www.spip-contrib.net/Table-des-Matieres]</lien>
    1211        <categorie>edition</categorie>
    13         <necessite id="SPIP" version="[1.9.0;]" />
     12        <necessite id="SPIP" version="[2.0;]" />
     13        <pipeline>
     14                <nom>declarer_tables_interfaces</nom>
     15                <inclure>tdm_pipelines.php</inclure>
     16        </pipeline>
    1417</plugin>
  • _plugins_/table_matieres/table_matieres.php

    r35099 r43331  
    22
    33if (!defined("_ECRIRE_INC_VERSION")) return;
     4
     5
     6// tester la presence de CFG
     7$tm = @unserialize($GLOBALS['meta']['table_matieres']);
     8
     9define('_LG_ANCRE', isset($tm['lg']) ? $tm['lg'] : 35);
     10define('_SEP_ANCRE', isset($tm['sep']) ? $tm['sep'] : '-');
     11define('_MIN_ANCRE', isset($tm['min']) ? $tm['min'] : 3);
     12define('_RETOUR_TDM', '<a href="#tdm" class="tdm"><img src="' .
     13        find_in_path('images/tdm.png') .
     14        '" /></a>');
     15
    416
    517function TableMatieres_Table($url = '', $titre = '', $cId = 0, $vider_table = false) {
     
    1022        $table[$url] = $titre;
    1123        return $url;
     24}
     25
     26function TableMatieres_SiNombreSuffisantIntertitres() {
     27        $table = TableMatieres_Table();
     28        if (count($table) < _MIN_ANCRE)
     29                return array();
     30        return $table;
     31       
    1232}
    1333
     
    6080                $texte_ancre = preg_replace_callback("/{{{(.*)}}}/UmsS", 'TableMatieres_Callback', $texte_ancre);
    6181                $nb_ancres = TableMatieres_Callback('', true);
    62                 $texte_ancre = echappe_retour($texte_ancre, 'TDM');
    63                 $textes[$md5] = $texte_ancre;
     82                if ($nb_ancres >= _MIN_ANCRE) {
     83                        $texte_ancre = echappe_retour($texte_ancre, 'TDM');
     84                        $textes[$md5] = $texte_ancre;
     85                } else {
     86                        $textes[$md5] = $texte;
     87                }
    6488        }
    6589        return $textes[$md5];
     
    7094        '<img alt="'._T('tdm:retour_table_matiere').'" title="'._T('tdm:retour_table_matiere').'"',
    7195        _RETOUR_TDM);
     96
     97        // s'il y a moins d'ancres que ce que la config demande, on n'affiche rien
     98        if ($affiche_table AND !TableMatieres_SiNombreSuffisantIntertitres()) {
     99                return $texte;
     100        }
     101
     102        // code HTML de la table des matieres
    72103        $_table = recuperer_fond('modeles/table_matieres');
    73104
     
    79110                        'rel', $_table)
    80111                        .'<script type="text/javascript"><!--
    81                         $("div.encart").html($("div.encart").attr("rel"));
     112                        $("div.encart").html($("div.encart").attr("rel")).attr("rel","");
    82113                        --></script>';
    83114                $_RETOUR_TDM = '<script type="text/javascript"><!--
     
    93124}
    94125
     126/**
     127 * Balise #TABLE_MATIERES
     128 * Affiche la table des matieres à l'endroit indique
     129 * A utiliser dans une boucle Articles
     130**/
    95131function balise_TABLE_MATIERES_dist($p) {
    96132        $b = $p->nom_boucle ? $p->nom_boucle : $p->descr['id_mere'];
     
    113149}
    114150
     151
    115152function balise_TDM_dist($p) {
    116153        if(function_exists('balise_ENV'))
    117                 return balise_ENV($p, 'TableMatieres_Table()');
     154                return balise_ENV($p, 'TableMatieres_SiNombreSuffisantIntertitres()');
    118155        else
    119                 return balise_ENV_dist($p, 'TableMatieres_Table()');
     156                return balise_ENV_dist($p, 'TableMatieres_SiNombreSuffisantIntertitres()');
    120157        return $p;
    121158}
  • _plugins_/table_matieres/tdm_pipelines.php

    r43224 r43331  
    33if (!defined("_ECRIRE_INC_VERSION")) return;
    44
    5 // tester la presence de CFG
    6 $tm = @unserialize($GLOBALS['meta']['table_matieres']);
    75
    8 define('_LG_ANCRE', isset($tm['lg']) ? $tm['lg'] : 35);
    9 define('_SEP_ANCRE', isset($tm['sep']) ? $tm['sep'] : '-');
    10 define('_MIN_ANCRE', isset($tm['min']) ? $tm['min'] : 3);
    11 define('_RETOUR_TDM', '<a href="#tdm" class="tdm"><img src="' .
    12         find_in_path('images/tdm.png') .
    13         '" /></a>');
    14 
    15 include_spip('public/interfaces');
    16 $table_des_traitements['TEXTE']['articles'] =
    17         str_replace(
    18                 '%s',
    19                 'TableMatieres_LienRetour(TableMatieres_AjouterAncres(%s))',
    20                 isset($table_des_traitements['TEXTE']['articles'])
    21                         ? $table_des_traitements['TEXTE']['articles']
    22                         : $table_des_traitements['TEXTE'][0]
    23         );
    24 $table_des_traitements['TABLE_MATIERES']['articles']= 'TableMatieres_LienRetour(TableMatieres_AjouterAncres(%s), true)';
     6/**
     7 * Déclarer le traitement spécifique des textes d'articles
     8 * pour ajouter automatiquement la table des matières.
     9 *
     10 * @param
     11 * @return
     12**/
     13function TableMatieres_declarer_tables_interfaces($interface){
     14        include_spip('table_matieres');
     15        $interface['table_des_traitements']['TEXTE']['articles'] =
     16                str_replace(
     17                        '%s',
     18                        'TableMatieres_LienRetour(TableMatieres_AjouterAncres(%s))',
     19                        isset($interface['table_des_traitements']['TEXTE']['articles'])
     20                                ? $interface['table_des_traitements']['TEXTE']['articles']
     21                                : $interface['table_des_traitements']['TEXTE'][0]
     22                );
     23        $interface['table_des_traitements']['TABLE_MATIERES']['articles']= 'TableMatieres_LienRetour(TableMatieres_AjouterAncres(%s), true)';
     24        return $interface;
     25}
    2526
    2627?>
Note: See TracChangeset for help on using the changeset viewer.