source: spip-zone/_plugins_/_typo_/barre_typo_enrichie/typo_enrichie.php @ 4976

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

Suivi de la modif proposée par Cédric sur la branche 1.9
Report d'une dernière pétouille SVN

File size: 8.0 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 (!isset($GLOBALS['barre_typo_preserve_puces']))
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', '<h2>');
47        tester_variable('fin_intertitre', '</h2>');
48        tester_variable('debut_intertitre_2', '<h3>');
49        tester_variable('fin_intertitre_2', '</h3>');
50        tester_variable('debut_intertitre_3', '<h4>');
51        tester_variable('fin_intertitre_3', '</h4>');
52        tester_variable('debut_intertitre_4', '<h5>');
53        tester_variable('fin_intertitre_4', '</h5>');
54        tester_variable('debut_intertitre_5', '<h6>');
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        );
82
83        $remplacer_raccourcis = array(
84                /* 1 */         "\$1\n\n$debut_intertitre",
85                /* 2 */         "$fin_intertitre\n\n\$1",
86                /* 3 */         "\$1\n\n$debut_intertitre",
87                /* 4 */         "$fin_intertitre\n\n\$1",
88                /* 5 */         "\$1\n\n$debut_intertitre_2",
89                /* 6 */         "$fin_intertitre_2\n\n\$1",
90                /* 7 */         "\$1\n\n$debut_intertitre_3",
91                /* 8 */         "$fin_intertitre_3\n\n\$1",
92                /* 9 */         "\$1\n\n$debut_intertitre_4",
93                /* 10 */        "$fin_intertitre_4\n\n\$1",
94                /* 9b */        "\$1\n\n$debut_intertitre_5",
95                /* 10b */       "$fin_intertitre_5\n\n\$1",
96                /* 11 */        "<span style=\"font-variant: small-caps\">",
97                /* 12 */        "</span>",
98                /* 13 */        "&harr;",
99                /* 14 */        "&rarr;",
100                /* 15 */        "&larr;"
101        );
102
103        $texte = preg_replace($chercher_raccourcis, $remplacer_raccourcis, $texte);
104
105        // remplace les fausses listes à puce par de vraies
106        // (recherche en début de lignes - suivi d'un ou plusieurs caractères blancs, en mode multiligne)
107        // $texte =  preg_replace('/^-\s+/m','-* ',$texte); # deja fait dans post_propre
108
109        return $texte;
110}
111
112function BarreTypoEnrichie_post_propre($texte) {
113
114        # Le remplacement des intertitres de premier niveau a déjà été effectué dans inc/texte.php
115
116        # Intertitre de deuxième niveau
117        /*global $debut_intertitre_2, $fin_intertitre_2;
118        $texte = ereg_replace('(<p class="spip">)?[[:space:]]*@@SPIP_debut_intertitre_2@@', $debut_intertitre_2, $texte);
119        $texte = ereg_replace('@@SPIP_fin_intertitre_2@@[[:space:]]*(</p>)?', $fin_intertitre_2, $texte);*/
120
121        # Intertitre de troisième niveau
122        /*global $debut_intertitre_3, $fin_intertitre_3;
123        $texte = ereg_replace('(<p class="spip">)?[[:space:]]*@@SPIP_debut_intertitre_3@@', $debut_intertitre_3, $texte);
124        $texte = ereg_replace('@@SPIP_fin_intertitre_3@@[[:space:]]*(</p>)?', $fin_intertitre_3, $texte);*/
125
126        # Intertitre de quatrième niveau
127        /*global $debut_intertitre_4, $fin_intertitre_4;
128        $texte = ereg_replace('(<p class="spip">)?[[:space:]]*@@SPIP_debut_intertitre_4@@', $debut_intertitre_4, $texte);
129        $texte = ereg_replace('@@SPIP_fin_intertitre_4@@[[:space:]]*(</p>)?', $fin_intertitre_4, $texte);*/
130
131        # Intertitre de cinquième niveau
132        /*global $debut_intertitre_5, $fin_intertitre_5;
133        $texte = ereg_replace('(<p class="spip">)?[[:space:]]*@@SPIP_debut_intertitre_5@@', $debut_intertitre_5, $texte);
134        $texte = ereg_replace('@@SPIP_fin_intertitre_5@@[[:space:]]*(</p>)?', $fin_intertitre_5, $texte);*/
135
136                $cherche1 = array(
137                        /* 15 */        ",\[/(.*)/\],Ums",
138                        /* 17 */        ",\[\|(.*)\|\],Ums",
139                        /* 19 */        ",\[\((.*)\)\],Ums",
140                        /* 21 */        "/\[\*\*/S",
141                        /* 21b */       "/\[\*/S",
142                        /* 22 */        "/\*\]/S",
143                        /* 23 */        "/\[\^/S",
144                        /* 24 */        "/\^\]/S",
145                        /* 40 */        "/\[([^|][^][]*)\|([^][]*)\]/S",
146                        /* 41 */        "/<a href=([^>]*)>([^|<]*)\|([^<]*)<\/a>/S"
147
148                );
149                $remplace1 = array(
150                        /* 15 */        "<div style=\"text-align:right;\">$1</div>",
151                        /* 17 */        "<div style=\"text-align:center;\">$1</div>",
152                        /* 19 */        "<div class=\"texteencadre-spip\">$1</div>",
153                        /* 21 */        "<strong class=\"caractencadre2-spip\">",
154                        /* 21b */       "<strong class=\"caractencadre-spip\">",
155                        /* 22 */        "</strong>",
156                        /* 23 */        "<sup>",
157                        /* 24 */        "</sup>",
158                        /* 25 */        #"<ul class=\"spip\">",
159                        /* 26 */        #"</ul>",
160                        /* 27 */        #"<ol class=\"spip\">",
161                        /* 28 */        #"</ol>",
162                        /* 29 */        #"<table class=\"spip\">",
163                        /* 30 */        #"</table>",
164                        /* 31 */        #"<div",
165                        /* 32 */        #"</div>",
166                        /* 33 */        #"<h$1>",
167                        /* 34 */        #"</h$1>",
168                        /* 35 */        #"<div class='spip_documents'>",
169                        /* 36 */        #"</div>",
170                        /* 37 */        #"<div",
171                        /* 38 */        #"<blockquote class=\"spip\"><p class=\"spip\">",
172                        /* 39 */        #"</p></blockquote>",
173                        /* 40 */        "<acronym title='$2' class='spip_acronym'>$1</acronym>",
174                        /* 41 */        "<a href=$1 title=\"$3\">$2</a>"
175
176                );
177                $texte = preg_replace($cherche1, $remplace1, $texte);
178                $texte = paragrapher($texte); // il faut reparagrapher a cause des raccourcis typo que l'on a ajoute (block div)
179        return $texte;
180}
181
182
183function BarreTypoEnrichie_post_typo($texte) {
184        // Correction des & en &amp;
185        $texte = preg_replace('/&([A-Za-z#0-9]*);/','@@@amp:\1:amp@@@',$texte); // échapement des entités html déjà présentes
186        $texte = str_replace('&','&amp;',$texte);
187        $texte = preg_replace('/@@@amp:([A-Za-z#0-9]*):amp@@@/','&\1;',$texte);
188        // Raccourci typographique <sc></sc>
189        $texte = str_replace("<sc>",
190                "<span style=\"font-variant: small-caps\">", $texte);
191        $texte = str_replace("</sc>", "</span>", $texte);
192        return $texte;
193}
194
195function BarreTypoEnrichie_nettoyer_raccourcis_typo($texte){
196        $texte = preg_replace(',{[1-5]{,','',$texte);
197        $texte = preg_replace(',}[1-5]},','',$texte);
198        return $texte;
199}
200
201function BarreTypoEnrichie_header_prive($texte) {
202        $p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(__FILE__))));
203        $texte.= '<link rel="stylesheet" type="text/css" href="' . (_DIR_PLUGINS.end($p)) . '/css/bartypenr.css" />' . "\n";
204        return $texte;
205}
206
207?>
Note: See TracBrowser for help on using the repository browser.