source: spip-zone/_plugins_/revision_nbsp/revision_nbsp.php @ 60810

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

retour sur [53104] qui rendait le plugin incompatible SPIP 2.1 ; et ajout d'une nouvelle variante d'insecable (futur plugin si j'ai le temps)

File size: 3.0 KB
Line 
1<?php
2
3/*
4 * revision_nbsp
5 *
6 * Dans l'espace prive, souligne en grise les espaces insecables
7 *
8 * Auteur : fil@rezo.net
9 * © 2005-2007 - Distribue sous licence GNU/GPL
10 *
11 * l'icone <edit-find-replace.png> est tiree de Tango Desktop Project
12 * http://tango.freedesktop.org/Tango_Desktop_Project -- sous licence
13 * http://creativecommons.org/licenses/by-sa/2.5/
14 *
15 */
16
17
18        function RevisionNbsp_revision_nbsp($letexte) {
19                if (!_DIR_RESTREINT
20                AND !defined('_STOP_REVISION_NBSP')
21                ) {
22                        $letexte = echappe_html($letexte, '', true, ',(<img[^<]*>),Ums');
23
24                        // NBSP classique
25                        $letexte = str_replace('&nbsp;',
26                                '<span style="border-bottom:2px solid #ccc;">&nbsp;</span>', $letexte);
27
28                        // NBSP sous forme small.fine :
29                        if (strpos($letexte, '<small class="fine">'))
30                                $letexte .= '<style type="text/css">small.fine {background-color:#ccc;}</style>';
31
32                        // redondant avec le nouveau systeme
33                        $letexte = str_replace("\n_ ",
34                                "<span style='color:orange;'>&para;</span>\n_ ", $letexte);
35
36                        return $letexte;
37                } else
38                        return $letexte;
39        }
40
41        function RevisionNbsp_ajoute_bouton_corriger_les_notes($x) {
42                global $nb_notes;
43                if ($GLOBALS['auteur_session']['statut'] == '0minirezo')
44                if ($x['args']['exec'] == 'articles') {
45                        $id_article = intval($x['args']['id_article']);
46                        $t = sql_fetch(spip_query("SELECT texte FROM spip_articles WHERE id_article=$id_article"));
47                        if ($c = notes_automatiques($t['texte'])) {
48                                $x['data'] .= "<br />\n"
49                                .debut_boite_info(true)
50                                .icone_horizontale(
51                                        'Transformer les ' . $nb_notes . ' notes de cet article.',
52                                        generer_url_action('corriger_notes', 'id_article='.$id_article),
53                                                _DIR_PLUGIN_REVISIONNBSP."edit-find-replace.png",  # grml!!
54                                                "rien.gif", false)
55                                .fin_boite_info(true);
56                        }
57#                       else $x['data'] .= "<div>pas de notes a corriger</div>";
58                }
59                return $x;
60        }
61
62
63        function notes_automatiques($texte) {
64                global $nb_notes; // sale
65
66                // Attraper les notes
67                $regexp = ', *\[\[(.*?)\]\],msS';
68                if ($s = preg_match_all($regexp, $texte, $matches, PREG_SET_ORDER)
69                AND $s==1
70                AND preg_match(",^ *<>(.*),s", $matches[0][1], $r)) {
71                        $lesnotes = $r[1];
72                        $letexte = trim(str_replace($matches[0][0], '', $texte));
73
74                        $num = 0;
75                        while (($a = strpos($lesnotes, '('.(++$num).')')) !== false
76                        AND ($b = strpos($letexte, '('.($num).')')) !== false
77                        ) {
78                                if (!isset($debut))
79                                        $debut = trim(substr($lesnotes, 0, $a));
80
81                                $lanote = substr($lesnotes,$a+strlen('('.$num.')'));
82
83                                $lanote = preg_replace(
84                                ',[(]'.($num+1).'[)].*,s', '',$lanote
85                                );
86                                $lesnotes = substr($lesnotes, $a+strlen('('.$num.')')+strlen($lanote));
87                                $lanote = trim($lanote);
88                                $lanote = (strlen($lanote) ? '[[ '.$lanote.' ]]' : '');
89
90                                $letexte = substr($letexte,0,$b)
91                                        . $lanote
92                                        . substr($letexte,$b+strlen('('.$num.')'));
93                        }
94
95                        $nb_notes = $num-1;
96
97                        if (strlen($suite = trim($lesnotes)))
98                                $letexte.= '[[<> '.$suite.' ]]';
99
100                        if (isset($debut)) {
101                                return (strlen($debut)?"\n\n[[<>$debut ]]":'') . $letexte;
102                        }
103                }
104        }
105
106?>
Note: See TracBrowser for help on using the repository browser.