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

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

barre typo (soi-disant) enrichie sans fork

File size: 8.7 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
35// recuperer le raccourci [texte|bulle d'aide{lang}->xxx]
36// version compliquee de la function traiter_raccourci_lien($regs) (inc/texte)
37function BarreTypoEnrichie_traiter_raccourci_lien($flux) {
38        $regs = $flux['args'];
39
40        if (preg_match(',^(.*?)([|](.*?))?([{]([a-z_]+)[}])$,', $regs[1], $m)) {
41                if ($m[2]) $bulle = ' title="'.texte_backend($m[3]).'"';
42                if ($m[4]) $hreflang = ' hreflang="'.texte_backend($m[5]).'"';
43                $regs[1] = $m[1];
44        }
45
46        list($lien, $class, $texte) = calculer_url($regs[3], $regs[1], 'tout');
47        # ici bien passer le lien pour traiter [<doc3>->url]
48        $flux['data'] = typo("<a href=\"$lien\" class=\"$class\"$bulle$hreflang>"
49                . $texte
50                . "</a>");
51
52        return $flux;
53}
54
55function BarreTypoEnrichie_pre_propre($texte) {
56        // remplace les fausses listes à puce par de vraies
57        // (recherche en début de lignes - suivi d'un ou plusieurs caractères blancs, en mode multiligne)
58        // Mettre $GLOBALS['barre_typo_preserve_puces'] = true; dans mes_options.php pour ne pas avoir ce comportement
59        if (!isset($GLOBALS['barre_typo_preserve_puces']))
60                $texte =  preg_replace('/^-\s+/m','-* ',$texte);
61
62        // tous les elements block doivent etre introduits ici
63        // pour etre pris en charge par paragrapher
64
65        // Definition des différents intertitres possibles, si pas deja definies
66        tester_variable('debut_intertitre', '<h2>');
67        tester_variable('fin_intertitre', '</h2>');
68        tester_variable('debut_intertitre_2', '<h3>');
69        tester_variable('fin_intertitre_2', '</h3>');
70        tester_variable('debut_intertitre_3', '<h4>');
71        tester_variable('fin_intertitre_3', '</h4>');
72        tester_variable('debut_intertitre_4', '<h5>');
73        tester_variable('fin_intertitre_4', '</h5>');
74        tester_variable('debut_intertitre_5', '<h6>');
75        tester_variable('fin_intertitre_5', '</h6>');
76
77        global $debut_intertitre, $fin_intertitre;
78        global $debut_intertitre_2, $fin_intertitre_2;
79        global $debut_intertitre_3, $fin_intertitre_3;
80        global $debut_intertitre_4, $fin_intertitre_4;
81        global $debut_intertitre_5, $fin_intertitre_5;
82
83        $chercher_raccourcis = array(
84                /* 1 */         "/(^|[^{])[{][{][{]/S",
85                /* 2 */         "/[}][}][}]($|[^}])/S",
86                /* 3 */         "/(^|[^{])\{1\{/S",
87                /* 4 */         "/\}1\}($|[^}])/S",
88                /* 5 */         "/(^|[^{])\{2\{/S",
89                /* 6 */         "/\}2\}($|[^}])/S",
90                /* 7 */         "/(^|[^{])\{3\{/S",
91                /* 8 */         "/\}3\}($|[^}])/S",
92                /* 9 */         "/(^|[^{])\{4\{/S",
93                /* 10 */        "/\}4\}($|[^}])/S",
94                /* 9b */        "/(^|[^{])\{5\{/S",
95                /* 10b */       "/\}5\}($|[^}])/S",
96                /* 11 */        "/\{(§|§)\{/S", # § Pour gérer l'unicode aussi !
97                /* 12 */        "/\}(§|§)\}/S",
98                /* 13 */        "/<-->/S",
99                /* 14 */        "/-->/S",
100                /* 15 */        "/<--/S"
101        );
102
103        $remplacer_raccourcis = array(
104                /* 1 */         "\$1\n\n$debut_intertitre",
105                /* 2 */         "$fin_intertitre\n\n\$1",
106                /* 3 */         "\$1\n\n$debut_intertitre",
107                /* 4 */         "$fin_intertitre\n\n\$1",
108                /* 5 */         "\$1\n\n$debut_intertitre_2",
109                /* 6 */         "$fin_intertitre_2\n\n\$1",
110                /* 7 */         "\$1\n\n$debut_intertitre_3",
111                /* 8 */         "$fin_intertitre_3\n\n\$1",
112                /* 9 */         "\$1\n\n$debut_intertitre_4",
113                /* 10 */        "$fin_intertitre_4\n\n\$1",
114                /* 9b */        "\$1\n\n$debut_intertitre_5",
115                /* 10b */       "$fin_intertitre_5\n\n\$1",
116                /* 11 */        "<span style=\"font-variant: small-caps\">",
117                /* 12 */        "</span>",
118                /* 13 */        "&harr;",
119                /* 14 */        "&rarr;",
120                /* 15 */        "&larr;"
121        );
122
123        $texte = preg_replace($chercher_raccourcis, $remplacer_raccourcis, $texte);
124
125        // remplace les fausses listes à puce par de vraies
126        // (recherche en début de lignes - suivi d'un ou plusieurs caractères blancs, en mode multiligne)
127        // $texte =  preg_replace('/^-\s+/m','-* ',$texte); # deja fait dans post_propre
128
129        return $texte;
130}
131
132function BarreTypoEnrichie_post_propre($texte) {
133
134        # Le remplacement des intertitres de premier niveau a déjà été effectué dans inc/texte.php
135
136        # Intertitre de deuxième niveau
137        /*global $debut_intertitre_2, $fin_intertitre_2;
138        $texte = ereg_replace('(<p class="spip">)?[[:space:]]*@@SPIP_debut_intertitre_2@@', $debut_intertitre_2, $texte);
139        $texte = ereg_replace('@@SPIP_fin_intertitre_2@@[[:space:]]*(</p>)?', $fin_intertitre_2, $texte);*/
140
141        # Intertitre de troisième niveau
142        /*global $debut_intertitre_3, $fin_intertitre_3;
143        $texte = ereg_replace('(<p class="spip">)?[[:space:]]*@@SPIP_debut_intertitre_3@@', $debut_intertitre_3, $texte);
144        $texte = ereg_replace('@@SPIP_fin_intertitre_3@@[[:space:]]*(</p>)?', $fin_intertitre_3, $texte);*/
145
146        # Intertitre de quatrième niveau
147        /*global $debut_intertitre_4, $fin_intertitre_4;
148        $texte = ereg_replace('(<p class="spip">)?[[:space:]]*@@SPIP_debut_intertitre_4@@', $debut_intertitre_4, $texte);
149        $texte = ereg_replace('@@SPIP_fin_intertitre_4@@[[:space:]]*(</p>)?', $fin_intertitre_4, $texte);*/
150
151        # Intertitre de cinquième niveau
152        /*global $debut_intertitre_5, $fin_intertitre_5;
153        $texte = ereg_replace('(<p class="spip">)?[[:space:]]*@@SPIP_debut_intertitre_5@@', $debut_intertitre_5, $texte);
154        $texte = ereg_replace('@@SPIP_fin_intertitre_5@@[[:space:]]*(</p>)?', $fin_intertitre_5, $texte);*/
155
156                $cherche1 = array(
157                        /* 15 */        ",\[/(.*)/\],Ums",
158                        /* 17 */        ",\[\|(.*)\|\],Ums",
159                        /* 19 */        ",\[\((.*)\)\],Ums",
160                        /* 21 */        "/\[\*\*/S",
161                        /* 21b */       "/\[\*/S",
162                        /* 22 */        "/\*\]/S",
163                        /* 23 */        "/\[\^/S",
164                        /* 24 */        "/\^\]/S",
165                        /* 40 */        "/\[([^|][^][]*)\|([^][]*)\]/S",
166                        /* 41 */        "/<a href=([^>]*)>([^|<]*)\|([^<]*)<\/a>/S"
167
168                );
169                $remplace1 = array(
170                        /* 15 */        "<div style=\"text-align:right;\">$1</div>",
171                        /* 17 */        "<div style=\"text-align:center;\">$1</div>",
172                        /* 19 */        "<div class=\"texteencadre-spip\">$1</div>",
173                        /* 21 */        "<strong class=\"caractencadre2-spip\">",
174                        /* 21b */       "<strong class=\"caractencadre-spip\">",
175                        /* 22 */        "</strong>",
176                        /* 23 */        "<sup>",
177                        /* 24 */        "</sup>",
178                        /* 25 */        #"<ul class=\"spip\">",
179                        /* 26 */        #"</ul>",
180                        /* 27 */        #"<ol class=\"spip\">",
181                        /* 28 */        #"</ol>",
182                        /* 29 */        #"<table class=\"spip\">",
183                        /* 30 */        #"</table>",
184                        /* 31 */        #"<div",
185                        /* 32 */        #"</div>",
186                        /* 33 */        #"<h$1>",
187                        /* 34 */        #"</h$1>",
188                        /* 35 */        #"<div class='spip_documents'>",
189                        /* 36 */        #"</div>",
190                        /* 37 */        #"<div",
191                        /* 38 */        #"<blockquote class=\"spip\"><p class=\"spip\">",
192                        /* 39 */        #"</p></blockquote>",
193                        /* 40 */        "<acronym title='$2' class='spip_acronym'>$1</acronym>",
194                        /* 41 */        "<a href=$1 title=\"$3\">$2</a>"
195
196                );
197                $texte = preg_replace($cherche1, $remplace1, $texte);
198                $texte = paragrapher($texte); // il faut reparagrapher a cause des raccourcis typo que l'on a ajoute (block div)
199        return $texte;
200}
201
202
203function BarreTypoEnrichie_post_typo($texte) {
204        // Correction des & en &amp;
205        $texte = preg_replace('/&([A-Za-z#0-9]*);/','@@@amp:\1:amp@@@',$texte); // échapement des entités html déjà présentes
206        $texte = str_replace('&','&amp;',$texte);
207        $texte = preg_replace('/@@@amp:([A-Za-z#0-9]*):amp@@@/','&\1;',$texte);
208        // Raccourci typographique <sc></sc>
209        $texte = str_replace("<sc>",
210                "<span style=\"font-variant: small-caps\">", $texte);
211        $texte = str_replace("</sc>", "</span>", $texte);
212        return $texte;
213}
214
215function BarreTypoEnrichie_nettoyer_raccourcis_typo($texte){
216        $texte = preg_replace(',{[1-5]{,','',$texte);
217        $texte = preg_replace(',}[1-5]},','',$texte);
218        return $texte;
219}
220
221function BarreTypoEnrichie_header_prive($texte) {
222        $p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(__FILE__))));
223        $texte.= '<link rel="stylesheet" type="text/css" href="' . (_DIR_PLUGINS.end($p)) . '/css/bartypenr.css" />' . "\n";
224        return $texte;
225}
226
227?>
Note: See TracBrowser for help on using the repository browser.