[SPIP] +2.1.12
[velocampus/web/www.git] / www / plugins / auto / couteau_suisse / couteau_suisse / outils / sommaire.php
1 <?php
2 /*
3
4 +-------------------------------+
5 Nom de l'outil : sommaire
6 +-------------------------------+
7 Date : mardi 03 avril 2007
8 Auteur : Patrice Vanneufville
9 +-------------------------------+
10 Presente un petit sommaire
11 en haut de l'article base sur
12 les balises {{{}}}
13 +-------------------------------+
14
15 */
16
17 // liste des nouveaux raccourcis ajoutes par l'outil
18 // si cette fonction n'existe pas, le plugin cherche alors _T('couteauprive:un_outil:aide');
19 function sommaire_raccourcis() {
20 return _T('couteauprive:sommaire_'.(defined('_sommaire_AUTOMATIQUE')?'sans':'avec'))
21 .'<br />'._T('couteauprive:sommaire_titres')
22 .(defined('_sommaire_JOLIES_ANCRES')?'<br />'._T('couteauprive:sommaire_ancres'):'');
23 }
24
25 // pipeline 'nettoyer_raccourcis'
26 function sommaire_nettoyer_raccourcis($texte) {
27 $texte = preg_replace(',\{\{\{\*+,', '{{{', $texte);
28 return str_replace(array(_sommaire_SANS_FOND, _CS_SANS_SOMMAIRE, _CS_AVEC_SOMMAIRE), '', $texte);
29 }
30
31 // renvoie le niveau d'intertitre en cours
32 function sommaire_niveau_intertitres() {
33 // SPIP 3.0 remplace les intertitres avec TextWheels
34 // TODO : recuperer la valeur utilisee par TW au lieu de '3'
35 return (isset($GLOBALS['debut_intertitre']) && preg_match(',<h(\d),', $GLOBALS['debut_intertitre'], $r))
36 ?$r[1]:'3';
37 }
38
39 // informer dans la description de l'outil de la balise utilisee par SPIP
40 function sommaire_description_outil($flux) {
41 if($flux['outil']=='sommaire') {
42 $h = sommaire_niveau_intertitres();
43 $flux['texte'] = str_replace(array('@h3@','@h4@'), array('h'.$h,'h'.($h+1)), $flux['texte']);
44 }
45 return $flux;
46 }
47
48 // callback pour la fonction suivante
49 function sommaire_intertitres_callback($matches) {
50 static $racc = array();
51 $niv = strlen($matches[1])-1;
52 if(!isset($racc[$niv])) {
53 // SPIP 3.0 : plus de globale ! TODO : recuperer la valeur utilisee par TW au lieu de 'h3'
54 if(!isset($GLOBALS['debut_intertitre'])) $GLOBALS['debut_intertitre'] = '<h3 class="spip">';
55 if(!isset($GLOBALS['fin_intertitre'])) $GLOBALS['fin_intertitre'] = '</h3>';
56 $cfg = $niv+1;
57 // compatibilite avec les Enluminures Typo v3 et initialisation des variables
58 if(function_exists('typoenluminee_pre_propre')) typoenluminee_pre_propre('');
59 // double emploi ici, mais le sommaire a besoin que les titres soient transformes
60 if($cfg>1 && isset($GLOBALS['debut_intertitre_'.$cfg]))
61 $racc[$niv][0] = $GLOBALS['debut_intertitre_'.$cfg];
62 // si pas d'enluminures, copie sur les <h3>
63 elseif(preg_match(',<h(\d),', $GLOBALS['debut_intertitre'], $r))
64 $racc[$niv][0] = str_replace($r[0], '<h'.($r[1]+$niv), $GLOBALS['debut_intertitre']);
65 // au pire, pas de sous-titres !
66 else $racc[$niv][0] = $GLOBALS['debut_intertitre'];
67 if($cfg>1 && isset($GLOBALS['fin_intertitre_'.$cfg]))
68 $racc[$niv][1] = $GLOBALS['fin_intertitre_'.$cfg];
69 elseif(preg_match(',/h(\d)>,', $GLOBALS['fin_intertitre'], $r))
70 $racc[$niv][1] = str_replace($r[0], '/h'.($r[1]+$niv).'>', $GLOBALS['fin_intertitre']);
71 else $racc[$niv][1] = $GLOBALS['fin_intertitre'];
72 }
73 return $racc[$niv][0].$matches[2].$racc[$niv][1];
74 }
75
76 // cette fonction n'est pas appelee dans les balises html : html|code|cadre|frame|script
77 function sommaire_intertitres_rempl($texte) {
78 if (strpos($texte, '{{{*')===false) return $texte;
79 return preg_replace_callback(',\{\{\{(\*+)(.*?)\}\}\},ms', 'sommaire_intertitres_callback', $texte);
80 }
81
82 // fonction pipeline pre_typo
83 function sommaire_intertitres($texte) {
84 if (strpos($texte, '{{{*')===false) return $texte;
85 // on remplace apres echappement
86 return cs_echappe_balises('', 'sommaire_intertitres_rempl', $texte);
87 }
88 ?>