[SPIP] +2.1.12
[velocampus/web/www.git] / www / plugins / auto / couteau_suisse / couteau_suisse / outils / sommaire.php
diff --git a/www/plugins/auto/couteau_suisse/couteau_suisse/outils/sommaire.php b/www/plugins/auto/couteau_suisse/couteau_suisse/outils/sommaire.php
new file mode 100644 (file)
index 0000000..880fd04
--- /dev/null
@@ -0,0 +1,88 @@
+<?php
+/*
++-------------------------------+
+ Nom de l'outil : sommaire
++-------------------------------+
+ Date : mardi 03 avril 2007
+ Auteur :  Patrice Vanneufville
++-------------------------------+
+ Presente un petit sommaire 
+ en haut de l'article base sur 
+ les balises {{{}}}
++-------------------------------+
+
+*/
+
+// liste des nouveaux raccourcis ajoutes par l'outil
+// si cette fonction n'existe pas, le plugin cherche alors  _T('couteauprive:un_outil:aide');
+function sommaire_raccourcis() {
+       return _T('couteauprive:sommaire_'.(defined('_sommaire_AUTOMATIQUE')?'sans':'avec'))
+       .'<br />'._T('couteauprive:sommaire_titres')
+       .(defined('_sommaire_JOLIES_ANCRES')?'<br />'._T('couteauprive:sommaire_ancres'):'');
+}
+
+// pipeline 'nettoyer_raccourcis'
+function sommaire_nettoyer_raccourcis($texte) {
+       $texte = preg_replace(',\{\{\{\*+,', '{{{', $texte);
+       return str_replace(array(_sommaire_SANS_FOND, _CS_SANS_SOMMAIRE, _CS_AVEC_SOMMAIRE), '', $texte);
+}
+
+// renvoie le niveau d'intertitre en cours
+function sommaire_niveau_intertitres() {
+       // SPIP 3.0 remplace les intertitres avec TextWheels
+       // TODO : recuperer la valeur utilisee par TW au lieu de '3'
+       return (isset($GLOBALS['debut_intertitre']) && preg_match(',<h(\d),', $GLOBALS['debut_intertitre'], $r))
+               ?$r[1]:'3';
+}
+
+// informer dans la description de l'outil de la balise utilisee par SPIP
+function sommaire_description_outil($flux) {
+       if($flux['outil']=='sommaire') {
+               $h = sommaire_niveau_intertitres();
+               $flux['texte'] = str_replace(array('@h3@','@h4@'), array('h'.$h,'h'.($h+1)), $flux['texte']);
+       }
+       return $flux;
+}
+
+// callback pour la fonction suivante
+function sommaire_intertitres_callback($matches) {
+       static $racc = array();
+       $niv = strlen($matches[1])-1;
+       if(!isset($racc[$niv])) {
+               // SPIP 3.0 : plus de globale ! TODO : recuperer la valeur utilisee par TW au lieu de 'h3'
+               if(!isset($GLOBALS['debut_intertitre'])) $GLOBALS['debut_intertitre'] = '<h3 class="spip">';
+               if(!isset($GLOBALS['fin_intertitre'])) $GLOBALS['fin_intertitre'] = '</h3>';
+               $cfg = $niv+1;
+               // compatibilite avec les Enluminures Typo v3 et initialisation des variables
+               if(function_exists('typoenluminee_pre_propre')) typoenluminee_pre_propre('');
+               // double emploi ici, mais le sommaire a besoin que les titres soient transformes
+               if($cfg>1 && isset($GLOBALS['debut_intertitre_'.$cfg]))
+                       $racc[$niv][0] = $GLOBALS['debut_intertitre_'.$cfg];
+               // si pas d'enluminures, copie sur les <h3>
+               elseif(preg_match(',<h(\d),', $GLOBALS['debut_intertitre'], $r))        
+                       $racc[$niv][0] = str_replace($r[0], '<h'.($r[1]+$niv), $GLOBALS['debut_intertitre']);
+               // au pire, pas de sous-titres !
+               else $racc[$niv][0] = $GLOBALS['debut_intertitre'];
+               if($cfg>1 && isset($GLOBALS['fin_intertitre_'.$cfg]))
+                       $racc[$niv][1] = $GLOBALS['fin_intertitre_'.$cfg];
+               elseif(preg_match(',/h(\d)>,', $GLOBALS['fin_intertitre'], $r))
+                       $racc[$niv][1] = str_replace($r[0], '/h'.($r[1]+$niv).'>', $GLOBALS['fin_intertitre']);
+               else $racc[$niv][1] = $GLOBALS['fin_intertitre'];
+       }
+       return $racc[$niv][0].$matches[2].$racc[$niv][1];
+}
+
+// cette fonction n'est pas appelee dans les balises html : html|code|cadre|frame|script
+function sommaire_intertitres_rempl($texte) {
+       if (strpos($texte, '{{{*')===false) return $texte;
+       return preg_replace_callback(',\{\{\{(\*+)(.*?)\}\}\},ms', 'sommaire_intertitres_callback', $texte);
+}
+
+// fonction pipeline pre_typo
+function sommaire_intertitres($texte) {
+       if (strpos($texte, '{{{*')===false) return $texte;
+       // on remplace apres echappement
+       return cs_echappe_balises('', 'sommaire_intertitres_rempl', $texte);
+}
+?>
\ No newline at end of file