source: spip-zone/_plugins_/couteau_suisse/outils/smileys.php @ 47574

Last change on this file since 47574 was 47574, checked in by patfr@…, 10 years ago
  • La fonction d'installation d'un outil est désormais surchargeable : "monoutil_installe()" surcharge "monoutil_installe_dist()"

Exemples :

function typo_exposants_installe() {

$datas = typo_exposants_installe_dist();
$datasfr?[0][] = '/exemple/';
$datasfr?[1][] = 'ex<sup>emple</sup>';
return $datas;

}
function spam_installe() {

$datas = spam_installe_dist();
$datas[0][] = 'verybadword';
return $datas;

}

Rappel:

Le résultat compilé de toutes les données d'installation est visible dans le fichier : tmp/couteau-suisse/mes_outils.php

  • Le tableau renvoyé par la function monoutil_installe() n'a plus besoin de clé si le casier utilisé est unique.
File size: 6.6 KB
Line 
1<?php
2
3// Outil SMILEYS - 25 decembre 2006
4// serieuse refonte et integration au Couteau Suisse : Patrice Vanneufville, 2006
5// Toutes les infos sur : http://www.spip-contrib.net/?article1561
6// dessin des frimousses : Sylvain Michel [http://www.guaph.net/]
7
8// cette fonction appelee automatiquement a chaque affichage de la page privee du Couteau Suisse renvoie un tableau
9function smileys_installe_dist() {
10        $path = find_in_path('img/smileys');
11cs_log("smileys_installe_dist() : $path");
12        $path2 = url_absolue($path);
13
14        // l'ordre des smileys ici est important :
15        //  - les doubles, puis les simples, puis les courts
16        //  - le raccourci insere par la balise #SMILEYS est la premiere occurence de chaque fichier
17        $smileys = array(
18        // attention ' est different de ’ (&#8217;) (SPIP utilise/ecrit ce dernier)
19         ":&#8217;-))"=> 'pleure_de_rire.png',
20         ":&#8217;-)"=> 'pleure_de_rire.png',
21         ":&#8217;-D"   => 'pleure_de_rire.png',
22         ":&#8217;-("   => 'triste.png',
23       
24        // les doubles :
25         ':-))' => 'mort_de_rire.png',
26         ':))'  => 'mort_de_rire.png',
27         ":'-))"=> 'pleure_de_rire.png',
28         ':-((' => 'en_colere.png',
29
30        // les simples :
31         ';-)'  => 'clin_d-oeil.png',
32         ':-)'  => 'sourire.png',
33         ':-D'  => 'mort_de_rire.png',
34         ":'-)"=> 'pleure_de_rire.png',
35         ":'-D" => 'pleure_de_rire.png',
36         ':-('  => 'pas_content.png',
37         ":'-(" => 'triste.png',
38         ':-&gt;' => 'diable.png',
39         '|-)'  => 'rouge.png',
40         ':o)'  => 'rigolo.png',
41         'B-)'  => 'lunettes.png',
42         ':-P'  => 'tire_la_langue.png',
43         ':-p'  => 'tire_la_langue.png',
44         ':-|'  => 'bof.png',
45         ':-/'  => 'mouais.png',
46         ':-O'  => 'surpris.png',
47         ':-o'  => 'surpris.png',
48
49        // les courts : tester a l'usage...
50        // attention : ils ne sont reconnus que s'il y a un espace avant !
51         ':)'   => 'sourire.png',
52         ':('   => 'pas_content.png',
53         ';)'   => 'clin_d-oeil.png',
54         ':|'   => 'bof.png',
55         '|)'   => 'rouge.png',
56         ':/'   => 'mouais.png',
57        );
58       
59        $aide = array();
60        foreach ($smileys as $smy=>$val) {
61                $espace = strlen($smy)==2?' ':'';
62                $smileys2[0][] = $espace.$smy;
63                list(,,,$size) = @getimagesize("$path/$val");
64                // cs_code_echappement evite que le remplacement se fasse a l'interieur des attributs de la balise <img>
65                $smileys2[1][] = cs_code_echappement($espace."<img alt=\"$smy\" title=\"$smy\" class=\"no_image_filtrer format_png\" src=\"$path2/$val\" $size/>", 'SMILE');
66                $smileys2[2][] = $val;
67                // aide : liste des smileys disponibles
68                $aide[] = $smy;
69        }
70
71        if(defined('_DIR_PLUGIN_PORTE_PLUME')) {
72                $sm = smileys_uniques($smileys2);
73                $max = count($sm[2]);
74                for ($i=0; $i<$max; $i++)
75                        $smileys2[4]['smiley_'.str_replace('.png','',$sm[2][$i])] = $sm[2][$i];
76        }
77        return array($smileys2, 'racc'=>$aide);
78}
79
80// liste des nouveaux raccourcis ajoutes par l'outil
81// si cette fonction n'existe pas, le plugin cherche alors  _T('couteauprive:un_outil:aide');
82function smileys_raccourcis() {
83        $racc = cs_lire_data_outil('smileys', 'racc');
84        return _T('couteauprive:smileys:aide', array('liste' => '<b>'.join('</b>, <b>', $racc).'</b>'));
85}
86
87function smileys_echappe_balises_callback($matches) {
88 return cs_code_echappement($matches[1], 'SMILE');
89}
90
91// fonction de remplacement
92// les balises suivantes sont protegees : html|code|cadre|frame|script|acronym|cite
93function cs_rempl_smileys($texte) {
94        if (strpos($texte, ':')===false && strpos($texte, ')')===false) return $texte;
95        $smileys_rempl = cs_lire_data_outil('smileys');
96        // protection des images, on ne sait jamais...
97        $texte = preg_replace_callback(',(<img .*?/>),ms', 'smileys_echappe_balises_callback', $texte);
98        // smileys a probleme :
99        $texte = str_replace(':->', ':-&gt;', $texte); // remplacer > par &gt;
100        // remplacer ’ (apostrophe curly) par &#8217;
101        $texte = str_replace(':’-', ':&#8217;-', $texte);
102        $texte = str_replace(':'.chr(146).'-', ':&#8217;-', $texte);
103        // voila, on remplace tous les smileys d'un coup...
104        $texte = str_replace($smileys_rempl[0], $smileys_rempl[1], $texte);
105        return echappe_retour($texte, 'SMILE');
106}
107
108// fonction principale (pipeline pre_typo)
109function cs_smileys_pre_typo($texte) {
110        if (strpos($texte, ':')===false && strpos($texte, ')')===false) return $texte;
111        // appeler cs_rempl_smileys() une fois que certaines balises ont ete protegees
112        return cs_echappe_balises('html|code|cadre|frame|script|acronym|cite', 'cs_rempl_smileys', $texte);
113}
114
115// fonction qui renvoie un tableau de smileys uniques
116function smileys_uniques($smileys) {
117        $max = count($smileys[1]);
118        $new = array(array(), array(), array());
119        for ($i=0; $i<$max; $i++) {
120                if(!in_array($smileys[2][$i], $new[2])) {
121                        $new[0][] = $smileys[0][$i]; // texte
122                        $new[1][] = $smileys[1][$i]; // image
123                        $new[2][] = $smileys[2][$i]; // nom de fichier
124                }
125        }
126        return $new;
127}
128
129// cette fonction renvoie une ligne de tableau entre <tr></tr> afin de l'inserer dans la Barre Typo V2, si elle est presente
130function cs_smileys_BarreTypo($tr) {
131        $smileys = smileys_uniques(cs_lire_data_outil('smileys'));
132        $max = count($smileys[0]);
133        $res = '';
134        for ($i=0; $i<$max; $i++)
135                $res .= "<a href=\"javascript:barre_inserer('{$smileys[0][$i]}',@@champ@@)\">{$smileys[1][$i]}</a>";
136        return $tr.'<tr><td><@@span@@>'._T('couteauprive:smileys:nom').'</span>&nbsp;'.echappe_retour($res, 'SMILE').'</td></tr>';
137}
138
139// les 2 fonctions suivantes inserent les boutons pour le plugin Porte Plume, s'il est present (SPIP>=2.0)
140function cs_smileys_PP_pre_charger($flux) {
141        $smileys = smileys_uniques(cs_lire_data_outil('smileys'));
142        $max = count($smileys[0]);
143        $r = array();
144        for ($i=0; $i<$max; $i++) {
145                $id = 'smiley_'.str_replace('.png','',$smileys[2][$i]);
146                $r[] = array(
147                                "id" => $id,
148                                "name" => _T('couteau:pp_smileys_inserer', array('smiley'=>$smileys[0][$i])),
149                                "className" => $id,
150                                "replaceWith" => $smileys[0][$i],
151                                "display" => true);
152        }
153        $r = array(
154                "id" => 'cs_smileys_drop',
155                "name" => _T('couteau:pp_smileys_inserer', array('smiley'=>'')),
156                "className" => 'cs_smileys_drop',
157                "replaceWith" => '',
158                "display" => true,
159                "dropMenu"      => $r,
160        );
161        foreach(cs_pp_liste_barres('smileys') as $b)
162                $flux[$b]->ajouterApres('grpCaracteres', $r);
163        return $flux;
164}
165function cs_smileys_PP_icones($flux) {
166        $smileys = cs_lire_data_outil('smileys');
167        $path = find_in_path('img/smileys').'/';
168        // icones utilisees. Attention : mettre les drop-boutons en premier !!
169        $flux['cs_smileys_drop'] = smileys_creer_icone_barre(find_in_path('img/smileys/mort_de_rire.png'));
170        foreach($smileys[4] as $i=>$v) $flux[$i] = smileys_creer_icone_barre($path.$v);
171        return $flux;
172}
173// creation d'icone pour le plugin porte-plume
174function smileys_creer_icone_barre($file) {
175        static $icones_barre;
176        rep_icones_barre($icones_barre);
177        $file = filtrer('image_recadre', $file, 16, 16, 'topleft');
178        $nom = basename($src = extraire_attribut($file, 'src'));
179        @copy($src, $icones_barre.$nom);
180        return $nom;
181}
182
183?>
Note: See TracBrowser for help on using the repository browser.