source: spip-zone/_plugins_/_stable_/barre_typo_enrichie/1_9_1/typo_enrichie.php @ 9946

Last change on this file since 9946 was 9946, checked in by real3t@…, 13 years ago

Intégration d'une partie de la barre typo extensible.

Attention spipcarto : ton éditeur détruit les caractères spéciaux, or, il y en a un dans une des regexp : §

File size: 11.0 KB
Line 
1<?php
2
3/*
4  * Ce plugin rajoute des raccourcis typographique et ameliore les possibilites de la barre typographique pour les redacteurs
5*/
6
7        /*
8         *    Fonctions de ces filtres :
9         *     Ils rajoutent quelques racourcis typo a SPIP
10         *
11         *     Syntaxe des raccourcis :
12         *           [/texte/] : aligner le texte a droite
13         *           [|texte|] : centrer le texte
14         *           [(texte)] : encadrer le texte (occupe toute la largeur de la page, a mettre autour d'un paragraphe)
15         *           [*texte*] : encadrer/surligner le texte (une partie a l'interieur d'un paragraphe)
16         *           [**texte*] : variante encadrer/surligner le texte (une partie a l'interieur d'un paragraphe)
17         *           <sup>texte</sup> : mettre en exposant le texte selectionne
18         *
19         *     Styles pour les encadrements a rajouter dans votre feuille de style :
20         *            .texteencadre-spip {
21         *              background: #FFE;
22         *              border-bottom: 2px solid #999999;
23         *              border-left: 1px solid #EEEEEE;
24         *              border-right: 2px solid #999999;
25         *              border-top: 1px solid #EEEEEE;
26         *              padding: .25em;
27         *           }
28         *           .caractencadre-spip {
29         *              border: 1px solid #666;
30         *              padding: 0px .5em 0px .5em;
31         *           }
32         *
33        */
34
35function BarreTypoEnrichie_pre_propre($texte) {
36        // remplace les fausses listes a puce par de vraies
37        // (recherche en debut de lignes - suivi d'un ou plusieurs caracteres blancs, en mode multiligne)
38        // Mettre $GLOBALS['barre_typo_preserve_puces'] = true; dans mes_options.php pour ne pas avoir ce comportement
39        if ($GLOBALS['barre_typo_pas_de_fausses_puces'] === true)
40                $texte =  preg_replace('/^-\s+/m','-* ',$texte);
41
42        // tous les elements block doivent etre introduits ici
43        // pour etre pris en charge par paragrapher
44
45        // Definition des differents intertitres possibles, si pas deja definies
46        tester_variable('debut_intertitre', '<h3 class="spip">');
47        tester_variable('fin_intertitre', '</h3>');
48        tester_variable('debut_intertitre_2', '<h4 class="spip">');
49        tester_variable('fin_intertitre_2', '</h4>');
50        tester_variable('debut_intertitre_3', '<h5 class="spip">');
51        tester_variable('fin_intertitre_3', '</h5>');
52        tester_variable('debut_intertitre_4', '<h6 class="spip">');
53        tester_variable('fin_intertitre_4', '</h6>');
54        tester_variable('debut_intertitre_5', '<h6 class="spip">');
55        tester_variable('fin_intertitre_5', '</h6>');
56
57        global $debut_intertitre, $fin_intertitre;
58        global $debut_intertitre_2, $fin_intertitre_2;
59        global $debut_intertitre_3, $fin_intertitre_3;
60        global $debut_intertitre_4, $fin_intertitre_4;
61        global $debut_intertitre_5, $fin_intertitre_5;
62
63///////////////////////////
64//MODIFICATION
65//////////////////////////
66        $chercher_raccourcis=array();
67        $remplacer_raccourcis=array();
68        global $BarreTypoEnrichie;
69        if (is_array($BarreTypoEnrichie))
70                foreach($BarreTypoEnrichie as $item) {
71                        $chercher_raccourcis[]=$item['chercher'];                                       
72                        $remplacer_raccourcis[]=$item['remplacer'];                                     
73                }
74
75                /* 1 */         $chercher_raccourcis[]="/(^|[^{])[{][{][{]/S";
76                /* 2 */         $chercher_raccourcis[]="/[}][}][}]($|[^}])/S";
77                /* 3 */         $chercher_raccourcis[]="/(^|[^{])\{1\{/S";
78                /* 4 */         $chercher_raccourcis[]="/\}1\}($|[^}])/S";
79                /* 5 */         $chercher_raccourcis[]="/(^|[^{])\{2\{/S";
80                /* 6 */         $chercher_raccourcis[]="/\}2\}($|[^}])/S";
81                /* 7 */         $chercher_raccourcis[]="/(^|[^{])\{3\{/S";
82                /* 8 */         $chercher_raccourcis[]="/\}3\}($|[^}])/S";
83                /* 9 */         $chercher_raccourcis[]="/(^|[^{])\{4\{/S";
84                /* 10 */        $chercher_raccourcis[]="/\}4\}($|[^}])/S";
85                /* 9b */        $chercher_raccourcis[]="/(^|[^{])\{5\{/S";
86                /* 10b */       $chercher_raccourcis[]="/\}5\}($|[^}])/S";
87                /* 11 */        $chercher_raccourcis[]="/\{(§|§)\{/S"; # § Pour gerer l'unicode aussi !
88                /* 12 */        $chercher_raccourcis[]="/\}(§|§)\}/S";
89                /* 13 */        $chercher_raccourcis[]="/<-->/S";
90                /* 14 */        $chercher_raccourcis[]="/-->/S";
91                /* 15 */        $chercher_raccourcis[]="/<--/S";
92                /* 16 */        $chercher_raccourcis[]="/<==>/S";
93                /* 17 */        $chercher_raccourcis[]="/==>/S";
94                /* 18 */        $chercher_raccourcis[]="/<==/S";
95                /* 19 */        $chercher_raccourcis[]="/\([cC]\)/S";
96                /* 20 */        $chercher_raccourcis[]="/\([rR]\)/S";
97                /* 21 */        $chercher_raccourcis[]="/\([tT][mM]\)/S";
98                /* 22 */        $chercher_raccourcis[]="/\.\.\./S";
99                /* 23 */        $chercher_raccourcis[]="/\[([^|?][^][]*)\|((?:[^][](?!->))*)\]/S";
100
101                /* 1 */         $remplacer_raccourcis[]="\$1\n\n$debut_intertitre";
102                /* 2 */         $remplacer_raccourcis[]="$fin_intertitre\n\n\$1";
103                /* 3 */         $remplacer_raccourcis[]="\$1\n\n$debut_intertitre";
104                /* 4 */         $remplacer_raccourcis[]="$fin_intertitre\n\n\$1";
105                /* 5 */         $remplacer_raccourcis[]="\$1\n\n$debut_intertitre_2";
106                /* 6 */         $remplacer_raccourcis[]="$fin_intertitre_2\n\n\$1";
107                /* 7 */         $remplacer_raccourcis[]="\$1\n\n$debut_intertitre_3";
108                /* 8 */         $remplacer_raccourcis[]="$fin_intertitre_3\n\n\$1";
109                /* 9 */         $remplacer_raccourcis[]="\$1\n\n$debut_intertitre_4";
110                /* 10 */        $remplacer_raccourcis[]="$fin_intertitre_4\n\n\$1";
111                /* 9b */        $remplacer_raccourcis[]="\$1\n\n$debut_intertitre_5";
112                /* 10b */       $remplacer_raccourcis[]="$fin_intertitre_5\n\n\$1";
113                /* 11 */        $remplacer_raccourcis[]="<span style=\"font-variant: small-caps\">";
114                /* 12 */        $remplacer_raccourcis[]="</span>";
115                /* 13 */        $remplacer_raccourcis[]="&harr;";
116                /* 14 */        $remplacer_raccourcis[]="&rarr;";
117                /* 15 */        $remplacer_raccourcis[]="&larr;";
118                /* 16 */        $remplacer_raccourcis[]="&hArr;";
119                /* 17 */        $remplacer_raccourcis[]="&rArr;";
120                /* 18 */        $remplacer_raccourcis[]="&lArr;";
121                /* 19 */        $remplacer_raccourcis[]="&copy;";
122                /* 20 */        $remplacer_raccourcis[]="&reg;";
123                /* 21 */        $remplacer_raccourcis[]="&trade;";
124                /* 22 */        $remplacer_raccourcis[]="&hellip;";
125                /* 23 */        $remplacer_raccourcis[]="@@acro@@$2@@$1@@acro@@";
126
127        $texte = preg_replace($chercher_raccourcis, $remplacer_raccourcis, $texte);
128
129        // remplace les fausses listes a puce par de vraies
130        // (recherche en debut de lignes - suivi d'un ou plusieurs caracteres blancs, en mode multiligne)
131        // $texte =  preg_replace('/^-\s+/m','-* ',$texte); # deja fait dans post_propre
132
133        return $texte;
134}
135
136function BarreTypoEnrichie_post_propre($texte) {
137
138        # Le remplacement des intertitres de premier niveau a deja ete effectue dans inc/texte.php
139
140        # Intertitre de deuxieme niveau
141        /*global $debut_intertitre_2, $fin_intertitre_2;
142        $texte = ereg_replace('(<p class="spip">)?[[:space:]]*@@SPIP_debut_intertitre_2@@', $debut_intertitre_2, $texte);
143        $texte = ereg_replace('@@SPIP_fin_intertitre_2@@[[:space:]]*(</p>)?', $fin_intertitre_2, $texte);*/
144
145        # Intertitre de troisieme niveau
146        /*global $debut_intertitre_3, $fin_intertitre_3;
147        $texte = ereg_replace('(<p class="spip">)?[[:space:]]*@@SPIP_debut_intertitre_3@@', $debut_intertitre_3, $texte);
148        $texte = ereg_replace('@@SPIP_fin_intertitre_3@@[[:space:]]*(</p>)?', $fin_intertitre_3, $texte);*/
149
150        # Intertitre de quatrieme niveau
151        /*global $debut_intertitre_4, $fin_intertitre_4;
152        $texte = ereg_replace('(<p class="spip">)?[[:space:]]*@@SPIP_debut_intertitre_4@@', $debut_intertitre_4, $texte);
153        $texte = ereg_replace('@@SPIP_fin_intertitre_4@@[[:space:]]*(</p>)?', $fin_intertitre_4, $texte);*/
154
155        # Intertitre de cinquieme niveau
156        /*global $debut_intertitre_5, $fin_intertitre_5;
157        $texte = ereg_replace('(<p class="spip">)?[[:space:]]*@@SPIP_debut_intertitre_5@@', $debut_intertitre_5, $texte);
158        $texte = ereg_replace('@@SPIP_fin_intertitre_5@@[[:space:]]*(</p>)?', $fin_intertitre_5, $texte);*/
159
160        $cherche1 = array(
161                /* 15 */        ",\[/(.*)/\],Ums",
162                /* 17 */        ",\[\|(.*)\|\],Ums",
163                /* 19 */        ",\[\((.*)\)\],Ums",
164                /* 21 */        "/\[\*\*/S",
165                /* 21b */       "/\[\*/S",
166                /* 22 */        "/\*\]/S",
167                /* 23 */        "/\[\^/S",
168                /* 24 */        "/\^\]/S",
169                /* 40 */        "/@@acro@@([^@]*)@@([^@]*)@@acro@@/S"
170        );
171
172        $remplace1 = array(
173                /* 15 */        "<div class=\"spip\" style=\"text-align:right;\">$1</div>",
174                /* 17 */        "<div class=\"spip\" style=\"text-align:center;\">$1</div>",
175                /* 19 */        "<div class=\"texteencadre-spip spip\">$1</div>",
176                /* 21 */        "<strong class=\"caractencadre2-spip spip\">",
177                /* 21b */       "<strong class=\"caractencadre-spip spip\">",
178                /* 22 */        "</strong>",
179                /* 23 */        "<sup>",
180                /* 24 */        "</sup>",
181                /* 40 */        "<acronym title='$1' class='spip_acronym spip'>$2</acronym>"
182        );
183        $texte = preg_replace($cherche1, $remplace1, $texte);
184        $texte = paragrapher($texte,$GLOBALS['toujours_paragrapher']); // il faut reparagrapher a cause des raccourcis typo que l'on a ajoute (block div)
185        return $texte;
186}
187
188
189function BarreTypoEnrichie_pre_typo($texte) {
190        $chercher_raccourcis = array(
191                /* 7 */         "/(?<![{])[{][{](?![{])/S", // Expressions complexes car on n'a pas encore traite les titres ici
192                /* 8 */         "/(?<![}])[}][}](?![}])/S", // En gros, verification qu'on n'est pas a l'interieur d'un titre
193                /* 9 */         "/(?<![{\d])[{](?![{\d])/S", // puisque gras et italique utilisent les memes caracteres en nombre inferieur
194                /* 10 */        "/(?<![}\d])[}](?![}\d])/S",
195                /* 13 */        "/<-->/S",
196                /* 14 */        "/-->/S",
197                /* 15 */        "/<--/S",
198                /* 16 */        "/<==>/S",
199                /* 17 */        "/==>/S",
200                /* 18 */        "/<==/S",
201                /* 19 */        "/\(c\)/Si",
202                /* 20 */        "/\(r\)/Si",
203                /* 21 */        "/\(tm\)/Si",
204                /* 22 */        "/\.\.\./S",
205                /* 23 */        "/\[([^|?][^][]*)\|((?:[^][](?!->))*)\]/S"
206        );
207
208        $remplacer_raccourcis = array(
209                /* 7 */         "<strong class=\"spip\">",
210                /* 8 */         "</strong>",
211                /* 9 */         "<i class=\"spip\">",
212                /* 10 */        "</i>",
213                /* 13 */        "&harr;",
214                /* 14 */        "&rarr;",
215                /* 15 */        "&larr;",
216                /* 16 */        "&hArr;",
217                /* 17 */        "&rArr;",
218                /* 18 */        "&lArr;",
219                /* 19 */        "&copy;",
220                /* 20 */        "&reg;",
221                /* 21 */        "&trade;",
222                /* 22 */        "&hellip;",
223                /* 23 */        "@@acro@@$2@@$1@@acro@@"
224        );
225
226        $texte = preg_replace($chercher_raccourcis, $remplacer_raccourcis, $texte);
227        return $texte;
228}
229
230function BarreTypoEnrichie_post_typo($texte) {
231        $cherche1 = array(
232                /* 21 */        "/\[\*\*/S",
233                /* 21b */       "/\[\*/S",
234                /* 22 */        "/\*\]/S",
235                /* 23 */        "/\[\^/S",
236                /* 24 */        "/\^\]/S",
237        );
238
239        $remplace1 = array(
240                /* 21 */        "<strong class=\"caractencadre2-spip spip\">",
241                /* 21b */       "<strong class=\"caractencadre-spip spip\">",
242                /* 22 */        "</strong>",
243                /* 23 */        "<sup>",
244                /* 24 */        "</sup>",
245        );
246        $texte = preg_replace($cherche1, $remplace1, $texte);
247        // Acronymes
248        $texte = preg_replace('/@@acro@@([^@]*)@@([^@]*)@@acro@@/S',"<acronym title='$1' class='spip_acronym spip'>$2</acronym>",$texte);
249        // Correction des & en &amp;
250        $texte = preg_replace('/&([A-Za-z#0-9]*);/','@@@amp:\1:amp@@@',$texte); // echapement des entites html deja presentes
251        $texte = str_replace('&','&amp;',$texte);
252        $texte = preg_replace('/@@@amp:([A-Za-z#0-9]*):amp@@@/','&\1;',$texte);
253        // Raccourci typographique <sc></sc>
254        $texte = str_replace("<sc>",
255                "<span class=\"spip\" style=\"font-variant: small-caps\">", $texte);
256        $texte = str_replace("</sc>", "</span>", $texte);
257        return $texte;
258}
259
260function BarreTypoEnrichie_nettoyer_raccourcis_typo($texte){
261        $texte = preg_replace(',{[1-5]{,','',$texte);
262        $texte = preg_replace(',}[1-5]},','',$texte);
263        return $texte;
264}
265
266function BarreTypoEnrichie_header_prive($texte) {
267        $p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(__FILE__))));
268        $texte.= '<link rel="stylesheet" type="text/css" href="' . (_DIR_PLUGINS.end($p)) . '/css/bartypenr.css" />' . "\n";
269        return $texte;
270}
271
272?>
Note: See TracBrowser for help on using the repository browser.