[SPIP] +2.1.12
[velocampus/web/www.git] / www / plugins / auto / couteau_suisse / couteau_suisse / outils / smileys_fonctions.php
1 <?php
2
3 // Outil SMILEYS - 25 decembre 2006
4 // balise #SMILEYS : Patrice Vanneufville, 2007
5 // Toutes les infos sur : http://www.spip-contrib.net/?article1561
6 // dessin des frimousses : Sylvain Michel [http://www.guaph.net/]
7
8 function balise_SMILEYS_dist($p) {
9 // Fonctions abandonnees par le plugin Porte Plume
10 $js_compat = !defined('_DIR_PLUGIN_PORTE_PLUME')?"":"<script type=\"text/javascript\">/*<![CDATA[*/
11 // From SPIP 2.0 (spip_barre.js)
12 if(typeof barre_inserer!='function') { function barre_inserer(text,champ) {
13 var txtarea = champ;
14 if(document.selection){
15 txtarea.focus();
16 var r = document.selection.createRange();
17 if (r == null) {
18 txtarea.selectionStart = txtarea.value.length;
19 txtarea.selectionEnd = txtarea.selectionStart;
20 } else {
21 var re = txtarea.createTextRange();
22 var rc = re.duplicate();
23 re.moveToBookmark(r.getBookmark());
24 rc.setEndPoint('EndToStart', re);
25 txtarea.selectionStart = rc.text.length;
26 txtarea.selectionEnd = rc.text.length + r.text.length;
27 }
28 }
29 mozWrap(txtarea, '', text);
30 }}
31 // From http://www.massless.org/mozedit/
32 if(typeof mozWrap!='function') { function mozWrap(txtarea, open, close) {
33 var selLength = txtarea.textLength;
34 var selStart = txtarea.selectionStart;
35 var selEnd = txtarea.selectionEnd;
36 if (selEnd == 1 || selEnd == 2) selEnd = selLength;
37 var selTop = txtarea.scrollTop;
38 // Raccourcir la selection par double-clic si dernier caractere est espace
39 if (selEnd - selStart > 0 && (txtarea.value).substring(selEnd-1,selEnd) == ' ') selEnd = selEnd-1;
40 var s1 = (txtarea.value).substring(0,selStart);
41 var s2 = (txtarea.value).substring(selStart, selEnd)
42 var s3 = (txtarea.value).substring(selEnd, selLength);
43 txtarea.value = s1 + open + s2 + close + s3;
44 selDeb = selStart + open.length;
45 selFin = selEnd + close.length;
46 window.setSelectionRange(txtarea, selDeb, selFin);
47 txtarea.scrollTop = selTop;
48 txtarea.focus();
49 return;
50 }}
51 /*]]>*/</script>\n";
52 // le tableau des smileys est present dans les metas
53 $smileys = cs_lire_data_outil('smileys');;
54 // valeurs par defaut
55 $nb_col = 8;
56 $titre = _T('couteau:smileys_dispos');
57 $head = '';
58 $liens = false;
59 // traitement des arguments : [(#SMILEYS{arg1, arg2, ...})]
60 $n=1;
61 $arg = interprete_argument_balise($n++,$p);
62 while ($arg){
63 // un nombre est le nombre de colonne
64 if (preg_match(",'([0-9]+)',", $arg, $reg))
65 $nb_col = intval($reg[1]);
66 // on veut un titre
67 elseif ($arg=="'titre'")
68 $head = "<thead><tr class=\"row_first\"><td colspan=\"$nb_col\">$titre</td></tr></thead>";
69 // on veut un lien d'insertion sur chaque smiley
70 elseif ($arg=="'liens'") {
71 $liens = true;
72 include_spip('outils/smileys');
73 $smileys = smileys_uniques($smileys);
74 }
75 $arg = interprete_argument_balise($n++,$p);
76 }
77 $max = count($smileys[0]);
78 if (!$nb_col) $nb_col = $max;
79 $html = "<table summary=\"$titre\" class=\"spip cs_smileys smileys\">$head";
80 $l = 1;
81 for ($i=0; $i<$max; $i++) {
82 if ($i % $nb_col == 0) {
83 $class = 'row_'.alterner($l++, 'even', 'odd');
84 $html .= "<tr class=\"$class\">";
85 }
86 $html .= $liens
87 ?"<td><a href=\"javascript:barre_inserer('{$smileys[0][$i]}',document.getElementById('".(defined('_SPIP19300')?'texte':'textarea_1')."'))\">{$smileys[1][$i]}</a></td>"
88 :"<td>{$smileys[1][$i]}<br />{$smileys[0][$i]}</td>";
89 if ($i % $nb_col == $nb_col - 1)
90 $html .= "</tr>\n";
91 }
92 // on finit la ligne qd meme...
93 if ($i = $max % $nb_col) $html .= str_repeat('<td>&nbsp;</td>', $nb_col - $i) . '</tr>';
94
95 // accessibilite : alt et title avec le smiley en texte
96 $html = $js_compat . echappe_retour($html, 'SMILE');
97 $html = str_replace("'", "\'", $html);
98 $p->code = "'$html\n</table>\n'";
99 $p->interdire_scripts = false;
100 $p->type = 'html';
101 return $p;
102 }
103
104 ?>