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

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

Un commentaire copié par erreur (supprimé !)

File size: 9.5 KB
Line 
1<?php
2
3/*
4  * Ce plugin rajoute des raccourcis typographique et améliore les possibilités de la barre typographique pour les rédacteurs
5*/
6
7        /*
8         *    Fonctions de ces filtres :
9         *     Ils rajoutent quelques racourcis typo à SPIP
10         *
11         *     Syntaxe des raccourcis :
12         *           [/texte/] : aligner le texte à droite
13         *           [|texte|] : centrer le texte
14         *           [(texte)] : encadrer le texte (occupe toute la largeur de la page, à mettre autour d'un paragraphe)
15         *           [*texte*] : encadrer/surligner le texte (une partie à l'intérieur d'un paragraphe)
16         *           [**texte*] : variante encadrer/surligner le texte (une partie à l'intérieur d'un paragraphe)
17         *           <sup>texte</sup> : mettre en exposant le texte sélectionné
18         *
19         *     Styles pour les encadrements à 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 à puce par de vraies
37        // (recherche en début de lignes - suivi d'un ou plusieurs caractères 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 différents 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        $chercher_raccourcis = array(
64                /* 1 */         "/(^|[^{])[{][{][{]/S",
65                /* 2 */         "/[}][}][}]($|[^}])/S",
66                /* 3 */         "/(^|[^{])\{1\{/S",
67                /* 4 */         "/\}1\}($|[^}])/S",
68                /* 5 */         "/(^|[^{])\{2\{/S",
69                /* 6 */         "/\}2\}($|[^}])/S",
70                /* 7 */         "/(^|[^{])\{3\{/S",
71                /* 8 */         "/\}3\}($|[^}])/S",
72                /* 9 */         "/(^|[^{])\{4\{/S",
73                /* 10 */        "/\}4\}($|[^}])/S",
74                /* 9b */        "/(^|[^{])\{5\{/S",
75                /* 10b */       "/\}5\}($|[^}])/S",
76                /* 11 */        "/\{(§|§)\{/S", # § Pour gérer l'unicode aussi !
77                /* 12 */        "/\}(§|§)\}/S",
78                /* 13 */        "/<-->/S",
79                /* 14 */        "/-->/S",
80                /* 15 */        "/<--/S",
81                /* 16 */        "/<==>/S",
82                /* 17 */        "/==>/S",
83                /* 18 */        "/<==/S",
84                /* 19 */        "/\([cC]\)/S",
85                /* 20 */        "/\([rR]\)/S",
86                /* 21 */        "/\([tT][mM]\)/S",
87                /* 22 */        "/\.\.\./S",
88                /* 23 */        "/\[([^|?][^][]*)\|((?:[^][](?!->))*)\]/S"
89        );
90
91        $remplacer_raccourcis = array(
92                /* 1 */         "\$1\n\n$debut_intertitre",
93                /* 2 */         "$fin_intertitre\n\n\$1",
94                /* 3 */         "\$1\n\n$debut_intertitre",
95                /* 4 */         "$fin_intertitre\n\n\$1",
96                /* 5 */         "\$1\n\n$debut_intertitre_2",
97                /* 6 */         "$fin_intertitre_2\n\n\$1",
98                /* 7 */         "\$1\n\n$debut_intertitre_3",
99                /* 8 */         "$fin_intertitre_3\n\n\$1",
100                /* 9 */         "\$1\n\n$debut_intertitre_4",
101                /* 10 */        "$fin_intertitre_4\n\n\$1",
102                /* 9b */        "\$1\n\n$debut_intertitre_5",
103                /* 10b */       "$fin_intertitre_5\n\n\$1",
104                /* 11 */        "<span style=\"font-variant: small-caps\">",
105                /* 12 */        "</span>",
106                /* 13 */        "&harr;",
107                /* 14 */        "&rarr;",
108                /* 15 */        "&larr;",
109                /* 16 */        "&hArr;",
110                /* 17 */        "&rArr;",
111                /* 18 */        "&lArr;",
112                /* 19 */        "&copy;",
113                /* 20 */        "&reg;",
114                /* 21 */        "&trade;",
115                /* 22 */        "&hellip;",
116                /* 23 */        "@@acro@@$2@@$1@@acro@@"
117        );
118
119        $texte = preg_replace($chercher_raccourcis, $remplacer_raccourcis, $texte);
120
121        // remplace les fausses listes à puce par de vraies
122        // (recherche en début de lignes - suivi d'un ou plusieurs caractères blancs, en mode multiligne)
123        // $texte =  preg_replace('/^-\s+/m','-* ',$texte); # deja fait dans post_propre
124
125        return $texte;
126}
127
128function BarreTypoEnrichie_post_propre($texte) {
129
130        # Le remplacement des intertitres de premier niveau a déjà été effectué dans inc/texte.php
131
132        # Intertitre de deuxième niveau
133        /*global $debut_intertitre_2, $fin_intertitre_2;
134        $texte = ereg_replace('(<p class="spip">)?[[:space:]]*@@SPIP_debut_intertitre_2@@', $debut_intertitre_2, $texte);
135        $texte = ereg_replace('@@SPIP_fin_intertitre_2@@[[:space:]]*(</p>)?', $fin_intertitre_2, $texte);*/
136
137        # Intertitre de troisième niveau
138        /*global $debut_intertitre_3, $fin_intertitre_3;
139        $texte = ereg_replace('(<p class="spip">)?[[:space:]]*@@SPIP_debut_intertitre_3@@', $debut_intertitre_3, $texte);
140        $texte = ereg_replace('@@SPIP_fin_intertitre_3@@[[:space:]]*(</p>)?', $fin_intertitre_3, $texte);*/
141
142        # Intertitre de quatrième niveau
143        /*global $debut_intertitre_4, $fin_intertitre_4;
144        $texte = ereg_replace('(<p class="spip">)?[[:space:]]*@@SPIP_debut_intertitre_4@@', $debut_intertitre_4, $texte);
145        $texte = ereg_replace('@@SPIP_fin_intertitre_4@@[[:space:]]*(</p>)?', $fin_intertitre_4, $texte);*/
146
147        # Intertitre de cinquième niveau
148        /*global $debut_intertitre_5, $fin_intertitre_5;
149        $texte = ereg_replace('(<p class="spip">)?[[:space:]]*@@SPIP_debut_intertitre_5@@', $debut_intertitre_5, $texte);
150        $texte = ereg_replace('@@SPIP_fin_intertitre_5@@[[:space:]]*(</p>)?', $fin_intertitre_5, $texte);*/
151
152        $cherche1 = array(
153                /* 15 */        ",\[/(.*)/\],Ums",
154                /* 17 */        ",\[\|(.*)\|\],Ums",
155                /* 19 */        ",\[\((.*)\)\],Ums",
156                /* 21 */        "/\[\*\*/S",
157                /* 21b */       "/\[\*/S",
158                /* 22 */        "/\*\]/S",
159                /* 23 */        "/\[\^/S",
160                /* 24 */        "/\^\]/S",
161                /* 40 */        "/@@acro@@([^@]*)@@([^@]*)@@acro@@/S"
162        );
163
164        $remplace1 = array(
165                /* 15 */        "<div class=\"spip\" style=\"text-align:right;\">$1</div>",
166                /* 17 */        "<div class=\"spip\" style=\"text-align:center;\">$1</div>",
167                /* 19 */        "<div class=\"texteencadre-spip spip\">$1</div>",
168                /* 21 */        "<strong class=\"caractencadre2-spip spip\">",
169                /* 21b */       "<strong class=\"caractencadre-spip spip\">",
170                /* 22 */        "</strong>",
171                /* 23 */        "<sup>",
172                /* 24 */        "</sup>",
173                /* 40 */        "<acronym title='$1' class='spip_acronym spip'>$2</acronym>"
174        );
175        $texte = preg_replace($cherche1, $remplace1, $texte);
176        $texte = paragrapher($texte,$GLOBALS['toujours_paragrapher']); // il faut reparagrapher a cause des raccourcis typo que l'on a ajoute (block div)
177        return $texte;
178}
179
180
181function BarreTypoEnrichie_pre_typo($texte) {
182        $chercher_raccourcis = array(
183                /* 7 */         "/(?<![{])[{][{](?![{])/S", // Expressions complexes car on n'a pas encore traite les titres ici
184                /* 8 */         "/(?<![}])[}][}](?![}])/S", // En gros, verification qu'on n'est pas a l'interieur d'un titre
185                /* 9 */         "/(?<![{\d])[{](?![{\d])/S", // puisque gras et italique utilisent les memes caracteres en nombre inferieur
186                /* 10 */        "/(?<![}\d])[}](?![}\d])/S",
187                /* 13 */        "/<-->/S",
188                /* 14 */        "/-->/S",
189                /* 15 */        "/<--/S",
190                /* 16 */        "/<==>/S",
191                /* 17 */        "/==>/S",
192                /* 18 */        "/<==/S",
193                /* 19 */        "/\(c\)/Si",
194                /* 20 */        "/\(r\)/Si",
195                /* 21 */        "/\(tm\)/Si",
196                /* 22 */        "/\.\.\./S",
197                /* 23 */        "/\[([^|?][^][]*)\|((?:[^][](?!->))*)\]/S"
198        );
199
200        $remplacer_raccourcis = array(
201                /* 7 */         "<strong class=\"spip\">",
202                /* 8 */         "</strong>",
203                /* 9 */         "<i class=\"spip\">",
204                /* 10 */        "</i>",
205                /* 13 */        "&harr;",
206                /* 14 */        "&rarr;",
207                /* 15 */        "&larr;",
208                /* 16 */        "&hArr;",
209                /* 17 */        "&rArr;",
210                /* 18 */        "&lArr;",
211                /* 19 */        "&copy;",
212                /* 20 */        "&reg;",
213                /* 21 */        "&trade;",
214                /* 22 */        "&hellip;",
215                /* 23 */        "@@acro@@$2@@$1@@acro@@"
216        );
217
218        $texte = preg_replace($chercher_raccourcis, $remplacer_raccourcis, $texte);
219        return $texte;
220}
221
222function BarreTypoEnrichie_post_typo($texte) {
223        $cherche1 = array(
224                /* 21 */        "/\[\*\*/S",
225                /* 21b */       "/\[\*/S",
226                /* 22 */        "/\*\]/S",
227                /* 23 */        "/\[\^/S",
228                /* 24 */        "/\^\]/S",
229        );
230
231        $remplace1 = array(
232                /* 21 */        "<strong class=\"caractencadre2-spip spip\">",
233                /* 21b */       "<strong class=\"caractencadre-spip spip\">",
234                /* 22 */        "</strong>",
235                /* 23 */        "<sup>",
236                /* 24 */        "</sup>",
237        );
238        $texte = preg_replace($cherche1, $remplace1, $texte);
239        // Acronymes
240        $texte = preg_replace('/@@acro@@([^@]*)@@([^@]*)@@acro@@/S',"<acronym title='$1' class='spip_acronym spip'>$2</acronym>",$texte);
241        // Correction des & en &amp;
242        $texte = preg_replace('/&([A-Za-z#0-9]*);/','@@@amp:\1:amp@@@',$texte); // échapement des entités html déjà présentes
243        $texte = str_replace('&','&amp;',$texte);
244        $texte = preg_replace('/@@@amp:([A-Za-z#0-9]*):amp@@@/','&\1;',$texte);
245        // Raccourci typographique <sc></sc>
246        $texte = str_replace("<sc>",
247                "<span class=\"spip\" style=\"font-variant: small-caps\">", $texte);
248        $texte = str_replace("</sc>", "</span>", $texte);
249        return $texte;
250}
251
252function BarreTypoEnrichie_nettoyer_raccourcis_typo($texte){
253        $texte = preg_replace(',{[1-5]{,','',$texte);
254        $texte = preg_replace(',}[1-5]},','',$texte);
255        return $texte;
256}
257
258function BarreTypoEnrichie_header_prive($texte) {
259        $p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(__FILE__))));
260        $texte.= '<link rel="stylesheet" type="text/css" href="' . (_DIR_PLUGINS.end($p)) . '/css/bartypenr.css" />' . "\n";
261        return $texte;
262}
263
264?>
Note: See TracBrowser for help on using the repository browser.