900ac6a2e9465c79ce4eea0a063f4b6a8e694e4b
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/]
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) {
14 if(document.selection){
16 var r = document.selection.createRange();
18 txtarea.selectionStart = txtarea.value.length;
19 txtarea.selectionEnd = txtarea.selectionStart;
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;
29 mozWrap(txtarea, '', text);
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;
52 // le tableau des smileys est present dans les metas
53 $smileys = cs_lire_data_outil('smileys');;
56 $titre = _T('couteau:smileys_dispos');
59 // traitement des arguments : [(#SMILEYS{arg1, arg2, ...})]
61 $arg = interprete_argument_balise($n++
,$p);
63 // un nombre est le nombre de colonne
64 if (preg_match(",'([0-9]+)',", $arg, $reg))
65 $nb_col = intval($reg[1]);
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'") {
72 include_spip('outils/smileys');
73 $smileys = smileys_uniques($smileys);
75 $arg = interprete_argument_balise($n++
,$p);
77 $max = count($smileys[0]);
78 if (!$nb_col) $nb_col = $max;
79 $html = "<table summary=\"$titre\" class=\"spip cs_smileys smileys\">$head";
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\">";
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)
92 // on finit la ligne qd meme...
93 if ($i = $max %
$nb_col) $html .= str_repeat('<td> </td>', $nb_col - $i) . '</tr>';
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;