Changeset 34369 in spip-zone


Ignore:
Timestamp:
Jan 10, 2010, 4:55:45 PM (10 years ago)
Author:
patfr@…
Message:

Sommaire automatique :

  • nouvelle variable sur la profondeur des intertitres traités
  • information sur la globale SPIP $GLOBALSdebut_intertitre?
  • compatibilité avec les blocs dépliables

Ensemble des outils : la liste des raccourcis typographiques reconnus par un outil est ajoutée à la description de l'outil concerné, s'il est actif.

Location:
_plugins_/couteau_suisse
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/couteau_suisse/config_outils.php

    r34319 r34369  
    596596// il faut inserer le sommaire dans l'article et ensuite seulement choisir la page
    597597add_variables( array(
     598        'nom' => 'prof_sommaire',
     599        'format' => _format_NOMBRE,
     600        'defaut' => 1,
     601        'code:%s>=2 && %s<=4' => "define('_sommaire_PROFONDEUR', %s);\n",
     602), array(
    598603        'nom' => 'lgr_sommaire',
    599604        'format' => _format_NOMBRE,
     
    618623        'contrib'       => 2378,
    619624        // Le separateur <span class='csfoo xxxx'></span> est supprime en fin de calcul de page
    620         'code:options' => "define('_sommaire_REM', '<span class=\'csfoo somm\'></span>');\ndefine('_CS_SANS_SOMMAIRE', '[!sommaire]');\ndefine('_CS_AVEC_SOMMAIRE', '[sommaire]');\n%%lgr_sommaire%%%%auto_sommaire%%%%balise_sommaire%%",
     625        'code:options' => "define('_sommaire_REM', '<span class=\'csfoo somm\'></span>');\ndefine('_CS_SANS_SOMMAIRE', '[!sommaire]');\ndefine('_CS_AVEC_SOMMAIRE', '[sommaire]');\n%%prof_sommaire%%%%lgr_sommaire%%%%auto_sommaire%%%%balise_sommaire%%",
    621626        'code:jq' => 'if(jQuery("div.cs_sommaire").length) {
    622627                // s\'il y a un sommaire, on cache la navigation haute sur les pages
     
    634639        'categorie' => 'typo-corr',
    635640        'pipeline:nettoyer_raccourcis_typo' => 'sommaire_nettoyer_raccourcis',
     641        'pipeline:pre_description_outil' => 'sommaire_description_outil',
    636642));
    637643
  • _plugins_/couteau_suisse/cout_utils.php

    r34225 r34369  
    261261}
    262262
    263 // retourne une aide concernant les raccourcis ajoutes par l'outil
     263// retourne les raccourcis ajoutes par l'outil, s'il est actif
     264function cs_aide_raccourci($id) {
     265        global $outils;
     266        // stockage de la liste des fonctions par pipeline, si l'outil est actif...
     267        if($outils[$id]['actif']) {
     268                include_spip('outils/'.$id);   
     269                if(function_exists($f = $id.'_raccourcis')) return $f();
     270                if(!preg_match(',:aide$,', _T("couteauprive:$id:aide") )) return _T("couteauprive:$id:aide");
     271        }
     272        return '';
     273}
     274       
     275// retourne la liste des raccourcis disponibles
    264276function cs_aide_raccourcis() {
    265277        global $outils;
    266278        $aide = array();
    267         foreach ($outils as $outil) {
    268                 // stockage de la liste des fonctions par pipeline, si l'outil est actif...
    269                 if($outil['actif']) {
    270                         $id = $outil['id'];
    271                         include_spip('outils/'.$id);   
    272                         if(function_exists($f = $id.'_raccourcis')) $aide[] = '<li style="margin: 0.7em 0 0 0;">&bull; ' . $f() . '</li>';
    273                         elseif(!preg_match(',:aide$,', _T("couteauprive:$id:aide") ))
    274                                 $aide[] = '<li style="margin: 0.7em 0 0 0;">&bull; ' .  _T("couteauprive:$id:aide") . '</li>';
    275                 }
    276         }
     279        foreach ($outils as $outil)
     280                if($a = cs_aide_raccourci($outil['id'])) $aide[] = '<li style="margin: 0.7em 0 0 0;">&bull; ' . $a . '</li>';
    277281        if(!count($aide)) return '';
    278282        // remplacement des constantes de forme @_CS_XXXX@
  • _plugins_/couteau_suisse/inc/cs_outils.php

    r33843 r34369  
    100100        $p = '';
    101101        if(preg_match_all(',traitement:([A-Z_]+),', $serial, $regs, PREG_PATTERN_ORDER))
    102                 $p .=  _T('couteauprive:detail_balise_etoilee', array('bal' => '#'.join('*, #', array_unique($regs[1])).'*')); 
     102                $p .=  _T('couteauprive:detail_balise_etoilee', array('bal' => '#'.join('*, #', array_unique($regs[1])).'*'));
    103103        if(isset($outil['jquery']) && $outil['jquery']=='oui')
    104104                $p .= '<p>' . _T('couteauprive:detail_jquery2') . '</p>';
  • _plugins_/couteau_suisse/inc/description_outil.php

    r34214 r34369  
    186186        if(!$modif) {unset($cs_input_variable); return;}
    187187
     188        // information sur les raccourcis disponibles
     189        if($a=cs_aide_raccourci($outil_)) $res .= '<p>@puce@ '._T('couteauprive:detail_raccourcis').'<br /><html>'.$a.'.</html></p>';
    188190        // envoi de la description courante en pipeline
    189191        $res = pipeline('pre_description_outil', array('outil'=>$outil_, 'texte'=>$res));
     
    223225        $res = str_replace(array('@puce@', '@_CS_CHOIX@','@_CS_ASTER@','@_CS_PLUGIN_JQUERY192@'),
    224226                array(definir_puce(), _T('couteauprive:votre_choix'), '<sup>(*)</sup>', defined('_SPIP19300')?'':_T('couteauprive:detail_jquery3')), $res);
    225 
    226227        // remplacement des constantes qui restent de forme @_CS_XXXX@
    227228        if(strpos($res,'@_CS')!==false)
  • _plugins_/couteau_suisse/lang/couteauprive_fr.php

    r34319 r34369  
    239239        'detail_jquery3' => '{{Attention}} : cet outil n&eacute;cessite le plugin [jQuery pour SPIP 1.92->http://files.spip.org/spip-zone/jquery_192.zip] pour fonctionner correctement avec cette version de SPIP.',
    240240        'detail_pipelines' => 'Pipelines :',
     241        'detail_raccourcis' => 'Voici la liste des raccourcis typographiques reconnus par cet outil.',
    241242        'detail_traitements' => 'Traitements :',
    242243        'distant_aide' => 'Cet outil requiert des fichiers distants qui doivent tous &ecirc;tre correctement install&eacute;s en librairie. Avant d\'activer cet outil ou d\'actualiser ce cadre, assurez-vous que les fichiers requis sont bien pr&eacute;sents sur le serveur distant.',
     
    395396        'label:lgr_introduction' => 'Longueur du r&eacute;sum&eacute; :',
    396397        'label:lgr_sommaire' => 'Largeur du sommaire (9 &agrave; 99) :',
     398        'label:prof_sommaire' => 'Profondeur retenue (1 &agrave; 4) :',
    397399        'label:lien_introduction' => 'Points de suite cliquables :',
    398400        'label:liens_interrogation' => 'Prot&eacute;ger les URLs :',
     
    580582@_CS_PLUGIN_JQUERY192@',
    581583        'soft_scroller:nom' => 'Ancres douces',
    582         'sommaire:description' => 'Construit un sommaire pour le texte de vos articles et de vos rubriques afin d&rsquo;acc&eacute;der rapidement aux gros titres (balises HTML &lt;h3>Un intertitre&lt;/h3> ou raccourcis SPIP : intertitres de la forme :<code>{{{Un gros titre}}}</code>).
    583 
    584 @puce@ Vous pouvez d&eacute;finir ici le nombre maximal de caract&egrave;res retenus des intertitres pour construire le sommaire :[[%lgr_sommaire% caract&egrave;res]]
    585 
    586 @puce@ Vous pouvez aussi fixer le comportement du plugin concernant la cr&eacute;ation du sommaire:
     584        'sommaire:description' => 'Construit un sommaire pour le texte de vos articles et de vos rubriques afin d&rsquo;acc&eacute;der rapidement aux gros titres (balises HTML &lt;@h3@>Un gros titre&lt;/@h3@>) ou aux intertitres SPIP (de syntaxe <code>{{{Un intertitre}}}</code>).
     585
     586Pour information, l\'outil &laquo;&nbsp;[.->class_spip]&nbsp;&raquo; permet de choisir la balise &lt;hN> utilis&eacute;e pour les intertitres de SPIP.
     587
     588@puce@ D&eacute;finissez ici la profondeur retenue sur les intertitres pour construire le sommaire (1 = &lt;@h3@>, 2 = &lt;@h3@> et &lt;@h4@>, etc.) :[[%prof_sommaire%]]
     589
     590@puce@ D&eacute;finissez ici le nombre maximal de caract&egrave;res retenus par intertitre :[[%lgr_sommaire% caract&egrave;res]]
     591
     592@puce@ Fixez ici le comportement du plugin concernant la cr&eacute;ation du sommaire:
    587593_ &bull; Syst&eacute;matique pour chaque article (une balise <code>@_CS_SANS_SOMMAIRE@</code> plac&eacute;e n&rsquo;importe o&ugrave; &agrave; l&rsquo;int&eacute;rieur du texte de l&rsquo;article cr&eacute;era une exception).
    588594_ &bull; Uniquement pour les articles contenant la balise <code>@_CS_AVEC_SOMMAIRE@</code>.
     
    590596[[%auto_sommaire%]]
    591597
    592 @puce@ Par d&eacute;faut, le Couteau Suisse ins&egrave;re le sommaire en t&ecirc;te d\'article automatiquement. Mais vous avez la possibilit&eacute; de placer ce sommaire ailleurs dans votre squelette gr&acirc;ce &agrave; une balise #CS_SOMMAIRE que vous pouvez activer ici :
     598@puce@ Par d&eacute;faut, le Couteau Suisse ins&egrave;re automatiquement le sommaire en t&ecirc;te d\'article. Mais vous avez la possibilit&eacute; de placer ce sommaire ailleurs dans votre squelette gr&acirc;ce &agrave; une balise #CS_SOMMAIRE que vous pouvez activer ici :
    593599[[%balise_sommaire%]]
    594600
    595 Ce sommaire peut &ecirc;tre coupl&eacute; avec : &laquo;&nbsp;[.->decoupe]&nbsp;&raquo;.',
     601Ce sommaire est compatible avec : &laquo;&nbsp;[.->decoupe]&nbsp;&raquo;.',
    596602        'sommaire:nom' => 'Un sommaire automatique',
    597603        'sommaire_avec' => 'Un texte avec sommaire&nbsp;: <b>@_CS_AVEC_SOMMAIRE@</b>',
  • _plugins_/couteau_suisse/outils/blocs.js

    r34001 r34369  
    1818        // on replie/deplie la cible...
    1919        cible.toggleClass('blocs_replie');
    20         var dest = this[0].id===''?cible.next():jQuery('div.'+this[0].id);
     20        var dest = ((this[0].id==='') || this[0].id.match('outil_sommaire_'))
     21                ?cible.next():jQuery('div.'+this[0].id);
    2122        if(blocs_slide==='aucun') {
    2223                dest.toggleClass('blocs_invisible');
  • _plugins_/couteau_suisse/outils/sommaire.php

    r24105 r34369  
    2525}
    2626
     27// informer dans la description de l'outil de la balise utilisee par SPIP
     28function sommaire_description_outil($flux) {
     29        if($flux['outil']=='sommaire' && preg_match(',<h(\d),', $GLOBALS['debut_intertitre'], $r))
     30                $flux['texte'] = str_replace(array('@h3@','@h4@'), array('h'.$r[1],'h'.($r[1]+1)), $flux['texte']);
     31        return $flux;
     32}
     33
    2734?>
  • _plugins_/couteau_suisse/outils/sommaire_fonctions.php

    r34010 r34369  
    1717        if($page===false) return;
    1818        // trouver quel <hx> est utilise
    19         $hierarchie = preg_match(',<h(\d),',$GLOBALS['debut_intertitre'],$regs)?$regs[1]:'3';
     19        $niveau = $match = preg_match(',<h(\d),',$GLOBALS['debut_intertitre'],$regs)?$regs[1]:'3';
    2020        @define('_sommaire_NB_CARACTERES', 30);
     21        @define('_sommaire_PROFONDEUR', 1);
     22        if(_sommaire_PROFONDEUR>1)
     23                $match = $match .'-' . ($match+_sommaire_PROFONDEUR-1);
    2124        // traitement des intertitres <hx>
    22         preg_match_all(",(<h{$hierarchie}[^>]*)>(.*)</h{$hierarchie}>,Umsi", $texte, $regs);
     25        preg_match_all(",(<h([$match])[^>]*)>(.*)</h\\2>,Umsi", $texte, $regs);
    2326        $nbh3 += count($regs[0]);
    2427        $pos = 0; $sommaire = '';
     
    2730        $fct_lien_retour = function_exists('sommaire_lien_retour')?'sommaire_lien_retour':'sommaire_lien_retour_dist';
    2831        for($i=0;$i<count($regs[0]);$i++,$index++){
    29                 $ancre = " id=\"outil_sommaire_$index\">";
    30                 if (($pos2 = strpos($texte, $regs[0][$i], $pos))!==false) {
    31                         $titre = preg_replace(',^<p[^>]*>(.*)</p>$,Umsi', '\\1', trim($regs[2][$i]));
     32                $id = " id=\"outil_sommaire_$index\">";
     33                $w = &$regs[0][$i]; $h = &$regs[1][$i]; $n = &$regs[2][$i]; $t = &$regs[3][$i];
     34                if (($pos2 = strpos($texte, $w, $pos))!==false) {
     35                        //$titre = preg_replace(',^<p[^>]*>(.*)</p>$,Umsi', '\\1', trim($t));
    3236                        // ancre 'retour au sommaire', sauf :
    33                         // si on imprime, ou si les blocs depliables utilisent h{$hierarchie}...
    34                         $haut = (defined('_CS_PRINT') OR (strpos($regs[0][$i], 'blocs_titre')!==false))
    35                                 ?''
    36                                 :$fct_lien_retour($self, $titre);
    37                         $texte = substr($texte, 0, $pos2) . $regs[1][$i] . $ancre . $haut
    38                                 . substr($texte, $pos2 + strlen($regs[1][$i])+1 + strlen($regs[2][$i]));
    39                         $pos = $pos2 + strlen($ancre) + strlen($regs[0][$i]);
     37                        // si on imprime, ou si les blocs depliables utilisent h{$n}...
     38                        $titre = (defined('_CS_PRINT') OR (strpos($w, 'blocs_titre')!==false))
     39                                ?$t//$titre
     40                                :$fct_lien_retour($self, $t);//$titre);
     41                        $texte = substr($texte, 0, $pos2) . $h . $id . $titre
     42                                . substr($texte, $pos2 + strlen($h)+1 + strlen($t));
     43                        $pos = $pos2 + strlen($id) + strlen($w);
    4044                        // tout le texte, sans les notes
    41                         $brut = preg_replace(',\[<a href=["\']#nb.*?</a>\],','', echappe_retour($regs[2][$i],'CS'));
     45                        $brut = preg_replace(',\[<a href=["\']#nb.*?</a>\],','', echappe_retour($t,'CS'));
    4246                        // pas de glossaire
    4347                        if(function_exists('cs_retire_glossaire')) $brut = cs_retire_glossaire($brut);
     
    5458                        $artpage = (function_exists('decoupe_url') && (strlen(_request('artpage')) || $page>1) )
    5559                                ?decoupe_url($self, $page, $num_pages):$self;
    56                         $sommaire .= "<li><a $st title=\"$titre\" href=\"{$artpage}#outil_sommaire_$index\">$lien</a>$suffixe</li>";
     60                        $artpage = "<li><a $st title=\"$titre\" href=\"{$artpage}#outil_sommaire_$index\">$lien</a>$suffixe</li>";
     61                        $sommaire .= $niveau<$n?'<ul>'.$artpage
     62                                :($niveau>$n?$artpage.'</ul>':$artpage);
     63                        $niveau = $n;
    5764                }
    5865        }
  • _plugins_/couteau_suisse/plugin.xml

    r34319 r34369  
    22        <nom><multi>Swiss Knife[fr]Le Couteau Suisse[ca]El Ganivet Su&#237;s[ar]&#1587;&#1603;&#1610;&#1606; &#1575;&#1604;&#1580;&#1610;&#1576;[nl]Het Zwitserland Mes[gl]A navalla su&#237;za[es]La Navaja Suiza[de]Schweizer Taschenmesser[tr]&#304;svi&#231;re &#199;ak&#305;s&#305;[br]Ar Gontell Suis[pt_br]Canivete Su&#237;&#231;o[ast]La Navaya Suiza[gl]A navalla su&#237;za[ro]Cu&#355;itul Elve&#355;ian[it]Coltellino Svizzero</multi></nom>
    33        <icon>img/couteau-50.gif</icon>
    4         <version>1.8.11.02</version>
     4        <version>1.8.12.00</version>
    55        <auteur>Patrice Vanneufville
    66_ &#169; 2007-2009 - Distribu&#233; sous licence GPL
Note: See TracChangeset for help on using the changeset viewer.