From 298392d1db25ee58daf1542d6b9b058e95048e43 Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Thu, 6 Jan 2005 16:47:10 +0000 Subject: [PATCH] transformation en filtre de la barre de raccourci --- ecrire/articles_edit.php3 | 8 +- ecrire/breves_edit.php3 | 4 +- ecrire/forum_envoi.php3 | 4 +- ecrire/inc_barre.php3 | 208 +++++++++++++++++-------------------- ecrire/inc_layer.php3 | 12 ++- formulaire_forum-dist.html | 6 +- inc-formulaire_forum.php3 | 24 ++++- 7 files changed, 136 insertions(+), 130 deletions(-) diff --git a/ecrire/articles_edit.php3 b/ecrire/articles_edit.php3 index daf39b2efa..0b30b06ad1 100644 --- a/ecrire/articles_edit.php3 +++ b/ecrire/articles_edit.php3 @@ -502,9 +502,9 @@ echo "<P><HR><P>"; list($texte1,$texte) = coupe_trop_long($texte); $textes_supplement .= "<BR>"; - $textes_supplement .= afficher_barre('formulaire', 'texte'.$nombre_textes); + $textes_supplement .= afficher_barre('document.formulaire.texte'.$nombre_textes); $textes_supplement .= "<TEXTAREA NAME='texte$nombre_textes'". - " CLASS='formo' ".afficher_claret()." ROWS='$rows' COLS='40' wrap=soft>" . + " CLASS='formo' ".$GLOBALS['browser_caret']." ROWS='$rows' COLS='40' wrap=soft>" . $texte1 . "</TEXTAREA><P>\n"; } } @@ -516,8 +516,8 @@ echo "<P><HR><P>"; echo $textes_supplement; //echo "<BR>"; - echo afficher_barre('formulaire', 'texte'); - echo "<TEXTAREA id='text_area' NAME='texte' ".afficher_claret()." CLASS='formo' ROWS='$rows' COLS='40' wrap=soft>"; + echo afficher_barre('document.formulaire.texte'); + echo "<TEXTAREA id='text_area' NAME='texte' ".$GLOBALS['browser_caret']." CLASS='formo' ROWS='$rows' COLS='40' wrap=soft>"; echo $texte; echo "</TEXTAREA>\n"; diff --git a/ecrire/breves_edit.php3 b/ecrire/breves_edit.php3 index 8b51872a47..0a2d0a4348 100644 --- a/ecrire/breves_edit.php3 +++ b/ecrire/breves_edit.php3 @@ -155,8 +155,8 @@ if ($connect_statut=="0minirezo" OR $statut=="prop" OR $new == "oui") { else $rows = 15; echo "<p /><B>"._T('entree_texte_breve')."</B><BR>"; - echo afficher_barre('formulaire', 'texte'); - echo "<TEXTAREA NAME='texte' ".afficher_claret()." ROWS='$rows' CLASS='formo' COLS='40' wrap=soft>"; + echo afficher_barre('document.formulaire.texte'); + echo "<TEXTAREA NAME='texte' ".$GLOBALS['browser_caret']." ROWS='$rows' CLASS='formo' COLS='40' wrap=soft>"; echo $texte; echo "</TEXTAREA><P>\n"; diff --git a/ecrire/forum_envoi.php3 b/ecrire/forum_envoi.php3 index 25a1d3527c..090d8e5443 100644 --- a/ecrire/forum_envoi.php3 +++ b/ecrire/forum_envoi.php3 @@ -135,8 +135,8 @@ echo "<INPUT TYPE='Hidden' NAME='statut' VALUE=\"$statut\">\n"; echo "<p><B>"._T('info_texte_message')."</B><BR>"; echo _T('info_creation_paragraphe')."<BR>"; -echo afficher_barre('formulaire', 'texte', true); -echo "<TEXTAREA NAME='texte' ".afficher_claret()." ROWS='15' CLASS='formo' COLS='40' wrap=soft>"; +echo afficher_barre('document.formulaire.texte', true); +echo "<TEXTAREA NAME='texte' ".$GLOBALS['browser_caret']." ROWS='15' CLASS='formo' COLS='40' wrap=soft>"; echo entites_html($texte); echo "</TEXTAREA><P>\n"; diff --git a/ecrire/inc_barre.php3 b/ecrire/inc_barre.php3 index 3467c72225..f19d4bb38a 100644 --- a/ecrire/inc_barre.php3 +++ b/ecrire/inc_barre.php3 @@ -4,138 +4,120 @@ if (defined("_INC_BARRE")) return; define("_INC_BARRE", "1"); -function test_barre() { - global $browser_name, $browser_version, $browser_rev; - - include_ecrire ("inc_layer.php3"); # verif butineur - - if ( - (eregi("msie", $browser_name) AND $browser_version >= 5.5) - || (eregi("mozilla", $browser_name) AND $browser_version >= 5 AND $browser_rev >= 1.3) - ) - return true; +// construit un bouton (ancre) de raccourci avec icone et aide + +function bouton_barre_racc($action, $img, $help, $champhelp) { + + return "<a\nhref=\"javascript:" + .$action + ."\" class='spip_barre' tabindex='1000'\ntitle=\"" + .attribut_html($help) + ."\"" + .(!_DIR_RESTREINT ? '' : "\nonMouseOver=\"helpline('" + .addslashes(attribut_html($help)) + ."',$champhelp)\"\nonMouseOut=\"helpline('" + .attribut_html(_T('barre_aide')) + ."', $champhelp)\"") + ."><img\nsrc='" + ._DIR_IMG_ICONES_BARRE + .$img + ."' border='0' height='16' width='16' align='middle' /></a>"; } +// construit un tableau de raccourcis pour un noeud de DOM -function test_claret() { - global $browser_name; - if ( test_barre() && (eregi("msie", $browser_name)) ) return true; -} +function afficher_barre($champ, $forum=false) { + static $num_barre = 0; + include_ecrire ("inc_layer.php3"); + if (!$GLOBALS['browser_barre']) return ''; + global $spip_lang, $spip_lang_right, $spip_lang_left; -function afficher_script_barre(){ - global $flag_script_deja_affiche; - - if ($flag_script_deja_affiche != 1) { - $flag_script_deja_affiche = 1; - $ret = '<script type="text/javascript" src="' . _DIR_PREFIX1. 'spip_barre.js">'; - $ret .= "</script>\n"; - return $ret; - } -} - -function bouton_barre_racc($action, $img, $help, $formulaire, $texte) { - - $champ = "document.$formulaire.$texte"; - $champhelp = "document.$formulaire.helpbox$texte"; - $retour = "<a href=\"".$action."\" class='spip_barre' tabindex='1000' title=\"".attribut_html($help)."\""; - if (_DIR_RESTREINT) $retour .= " onMouseOver=\"helpline('".addslashes(attribut_html($help))."',$champhelp)\" onMouseOut=\"helpline('".attribut_html(_T('barre_aide'))."', $champhelp)\""; - $retour .= "><img src='". - _DIR_IMG_ICONES_BARRE . - $img."' border='0' height='16' width='16' align='middle' /></a>"; - return $retour; -} + $ret = ($num_barre > 0) ? '' : + '<script type="text/javascript" src="' . _DIR_PREFIX1. 'spip_barre.js"></script>'; + $num_barre++; + $champhelp = "document.getElementById('barre_$num_barre')"; -function afficher_barre($formulaire='',$texte='', $forum=false) { - global $spip_lang, $options, $spip_lang_right, $spip_lang_left; + $ret .= "<table class='spip_barre' width='100%' cellpadding='0' cellspacing='0' border='0'>"; + $ret .= "\n<tr width='100%' class='spip_barre'>"; + $ret .= "\n<td style='text-align: $spip_lang_left;' valign='middle'>"; + $col = 1; - if (test_barre()) { - $ret = afficher_script_barre(); - $champ = "document.$formulaire.$texte"; - $ret .= "<table class='spip_barre' width='100%' cellpadding='0' cellspacing='0' border='0'>"; - $ret .= "<tr width='100%' class='spip_barre'>"; - $ret .= "<td style='text-align: $spip_lang_left;' valign='middle'>"; - $col++; - - // Italique, gras, intertitres - $ret .= bouton_barre_racc ("javascript:barre_raccourci('{','}',$champ)", "italique.png", _T('barre_italic'), $formulaire, $texte); - $ret .= bouton_barre_racc ("javascript:barre_raccourci('{{','}}',$champ)", "gras.png", _T('barre_gras'), $formulaire, $texte); - if (!$forum) { - $ret .= bouton_barre_racc ("javascript:barre_raccourci('\n\n{{{','}}}\n\n',$champ)", "intertitre.png", _T('barre_intertitre'), $formulaire, $texte); - } - $ret .= " </td><td>"; + // Italique, gras, intertitres + $ret .= bouton_barre_racc ("barre_raccourci('{','}',$champ)", "italique.png", _T('barre_italic'), $champhelp); + $ret .= bouton_barre_racc ("barre_raccourci('{{','}}',$champ)", "gras.png", _T('barre_gras'), $champhelp); + if (!$forum) { + $ret .= bouton_barre_racc ("barre_raccourci('\n\n{{{','}}}\n\n',$champ)", "intertitre.png", _T('barre_intertitre'), $champhelp); + } + $ret .= " </td>\n<td>"; + $col ++; + + // Lien hypertexte, notes de bas de page, citations + $ret .= bouton_barre_racc ("barre_demande('[','->',']', '".addslashes(_T('barre_lien_input'))."', $champ)", + "lien.png", _T('barre_lien'), $champhelp); + if (!$forum) { + $ret .= bouton_barre_racc ("barre_raccourci('[[',']]',$champ)", "notes.png", _T('barre_note'), $champhelp); + } + if ($forum) { + $ret .= " </td>\n<td>"; $col ++; + $ret .= bouton_barre_racc ("barre_raccourci('\n\n<quote>','</quote>\n\n',$champ)", "quote.png", _T('barre_quote'), $champhelp); + } - // Lien hypertexte, notes de bas de page, citations - $ret .= bouton_barre_racc ("javascript:barre_demande('[','->',']', '".addslashes(_T('barre_lien_input'))."', $champ)", - "lien.png", _T('barre_lien'), $formulaire, $texte); - if (!$forum) { - $ret .= bouton_barre_racc ("javascript:barre_raccourci('[[',']]',$champ)", "notes.png", _T('barre_note'), $formulaire, $texte); - } - if ($forum) { - $ret .= " </td><td>"; - $col ++; - $ret .= bouton_barre_racc ("javascript:barre_raccourci('\n\n<quote>','</quote>\n\n',$champ)", "quote.png", _T('barre_quote'), $formulaire, $texte); - } + $ret .= " </td>"; + $col++; - if ($options == "avancees") { - /*$ret .= " "; - $ret .= bouton_barre_racc ("javascript:barre_raccourci('[?',']',$champ)", "barre-wiki.png", "Entrée du [?glossaire] (Wikipedia)", $formulaire, $texte); - $ret .= " "; - $ret .= bouton_barre_racc ("javascript:barre_tableau($champ)", "barre-tableau.png", "Insérer un tableau", $formulaire, $texte);*/ + // Insertion de caracteres difficiles a taper au clavier (guillemets, majuscules accentuees...) + $ret .= "\n<td style='text-align:$spip_lang_left;' valign='middle'>"; + $col++; + if ($spip_lang == "fr" OR $spip_lang == "eo" OR $spip_lang == "cpf" OR $spip_lang == "ar" OR $spip_lang == "es") { + $ret .= bouton_barre_racc ("barre_raccourci('«','»',$champ)", "guillemets.png", _T('barre_guillemets'), $champhelp); + $ret .= bouton_barre_racc ("barre_raccourci('“','”',$champ)", "guillemets-simples.png", _T('barre_guillemets_simples'), $champhelp); + } + else if ($spip_lang == "bg" OR $spip_lang == "de" OR $spip_lang == "pl" OR $spip_lang == "hr" OR $spip_lang == "src") { + $ret .= bouton_barre_racc ("barre_raccourci('„','“',$champ)", "guillemets-de.png", _T('barre_guillemets'), $champhelp); + $ret .= bouton_barre_racc ("barre_raccourci('‚','‘',$champ)", "guillemets-uniques-de.png", _T('barre_guillemets_simples'), $champhelp); + } + else { + $ret .= bouton_barre_racc ("barre_raccourci('“','”',$champ)", "guillemets-simples.png", _T('barre_guillemets'), $champhelp); + $ret .= bouton_barre_racc ("barre_raccourci('‘','’',$champ)", "guillemets-uniques.png", _T('barre_guillemets_simples'), $champhelp); + } + if ($spip_lang == "fr" OR $spip_lang == "eo" OR $spip_lang == "cpf") { + $ret .= bouton_barre_racc ("barre_inserer('À',$champ)", "agrave-maj.png", _T('barre_a_accent_grave'), $champhelp); + $ret .= bouton_barre_racc ("barre_inserer('É',$champ)", "eacute-maj.png", _T('barre_e_accent_aigu'), $champhelp); + if ($spip_lang == "fr") { + $ret .= bouton_barre_racc ("barre_inserer('œ',$champ)", "oelig.png", _T('barre_eo'), $champhelp); + $ret .= bouton_barre_racc ("barre_inserer('Œ',$champ)", "oelig-maj.png", _T('barre_eo_maj'), $champhelp); } - - $ret .= " </td>"; - $col++; + } + $ret .= bouton_barre_racc ("barre_inserer('€',$champ)", "euro.png", _T('barre_euro'), $champhelp); - // Insertion de caracteres difficiles a taper au clavier (guillemets, majuscules accentuees...) - $ret .= "<td style='text-align:$spip_lang_left;' valign='middle'>"; - $col++; - if ($spip_lang == "fr" OR $spip_lang == "eo" OR $spip_lang == "cpf" OR $spip_lang == "ar" OR $spip_lang == "es") { - $ret .= bouton_barre_racc ("javascript:barre_raccourci('«','»',$champ)", "guillemets.png", _T('barre_guillemets'), $formulaire, $texte); - $ret .= bouton_barre_racc ("javascript:barre_raccourci('“','”',$champ)", "guillemets-simples.png", _T('barre_guillemets_simples'), $formulaire, $texte); - } - else if ($spip_lang == "bg" OR $spip_lang == "de" OR $spip_lang == "pl" OR $spip_lang == "hr" OR $spip_lang == "src") { - $ret .= bouton_barre_racc ("javascript:barre_raccourci('„','“',$champ)", "guillemets-de.png", _T('barre_guillemets'), $formulaire, $texte); - $ret .= bouton_barre_racc ("javascript:barre_raccourci('‚','‘',$champ)", "guillemets-uniques-de.png", _T('barre_guillemets_simples'), $formulaire, $texte); - } - else { - $ret .= bouton_barre_racc ("javascript:barre_raccourci('“','”',$champ)", "guillemets-simples.png", _T('barre_guillemets'), $formulaire, $texte); - $ret .= bouton_barre_racc ("javascript:barre_raccourci('‘','’',$champ)", "guillemets-uniques.png", _T('barre_guillemets_simples'), $formulaire, $texte); - } - if ($spip_lang == "fr" OR $spip_lang == "eo" OR $spip_lang == "cpf") { - $ret .= bouton_barre_racc ("javascript:barre_inserer('À',$champ)", "agrave-maj.png", _T('barre_a_accent_grave'), $formulaire, $texte); - $ret .= bouton_barre_racc ("javascript:barre_inserer('É',$champ)", "eacute-maj.png", _T('barre_e_accent_aigu'), $formulaire, $texte); - if ($spip_lang == "fr") { - $ret .= bouton_barre_racc ("javascript:barre_inserer('œ',$champ)", "oelig.png", _T('barre_eo'), $formulaire, $texte); - $ret .= bouton_barre_racc ("javascript:barre_inserer('Œ',$champ)", "oelig-maj.png", _T('barre_eo_maj'), $formulaire, $texte); - } - } - $ret .= bouton_barre_racc ("javascript:barre_inserer('€',$champ)", "euro.png", _T('barre_euro'), $formulaire, $texte); + $ret .= " </td>"; + $col++; - $ret .= " </td>"; + if (!_DIR_RESTREINT) { + $ret .= "\n<td style='text-align:$spip_lang_right;' valign='middle'>"; $col++; + // $ret .= " "; + $ret .= aide("raccourcis"); + $ret .= " "; + $ret .= "</td>"; + } + $ret .= "</tr>"; - if (!_DIR_RESTREINT) { - $ret .= "<td style='text-align:$spip_lang_right;' valign='middle'>"; - $col++; - // $ret .= " "; - $ret .= aide("raccourcis"); - $ret .= " "; - $ret .= "</td>"; - } - $ret .= "</tr>"; - - // Sur les forums publics, petite barre d'aide en survol des icones - if (_DIR_RESTREINT) - $ret .= "<tr><td colspan='$col'><input disabled='disabled' type='text' name='helpbox".$texte."' size='45' maxlength='100' style='width:100%; font-size:11px; color: black; background-color: #e4e4e4; border: 0px solid #dedede;' value=\"".attribut_html(_T('barre_aide'))."\" /></td></tr>"; + // Sur les forums publics, petite barre d'aide en survol des icones + if (_DIR_RESTREINT) + $ret .= "\n<tr>\n<td colspan='$col'><input disabled='disabled' type='text' id='barre_$num_barre' size='45' maxlength='100' style='width:100%; font-size:11px; color: black; background-color: #e4e4e4; border: 0px solid #dedede;'\nvalue=\"".attribut_html(_T('barre_aide'))."\" /></td></tr>"; - $ret .= "</table>"; - } + $ret .= "</table>"; return $ret; } +// pour compatibilite arriere. utiliser directement le corps a present. + function afficher_claret() { - if (test_barre()) return "onselect='storeCaret(this);' onclick='storeCaret(this);' onkeyup='storeCaret(this);' ondbclick='storeCaret(this);'"; + include_ecrire ("inc_layer.php3"); + return $GLOBALS['browser_caret']; } + ?> diff --git a/ecrire/inc_layer.php3 b/ecrire/inc_layer.php3 index f81cdc025d..3b5db56f92 100644 --- a/ecrire/inc_layer.php3 +++ b/ecrire/inc_layer.php3 @@ -88,12 +88,14 @@ document.write('<a class=\"triangle_block\" href=\"javascript:$javasc\"><img nam // function verif_butineur() { global $HTTP_USER_AGENT, $browser_name, $browser_version; - global $browser_description, $browser_rev, $browser_layer; + global $browser_description, $browser_rev, $browser_layer, $browser_barre; ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $HTTP_USER_AGENT, $match); $browser_name = $match[1]; $browser_version = $match[2]; $browser_description = $match[3]; $browser_layer = ''; + $browser_layer = ''; + $browser_barre = ''; if (eregi("opera", $browser_description)) { eregi("Opera ([^\ ]*)", $browser_description, $match); @@ -106,6 +108,7 @@ function verif_butineur() { $browser_name = "MSIE"; $browser_version = $match[1]; $browser_layer = (($browser_version < 5) ? '' : http_script('', _DIR_INCLUDE . 'layer.js','')); + $browser_barre = ($browser_version >= 5.5); } else if (eregi("KHTML", $browser_description) && eregi("Safari/([^;]*)", $browser_description, $match)) { @@ -123,6 +126,7 @@ function verif_butineur() { $browser_rev = 1.4; // Machins quelconques => equivalents 1.0 par defaut (Konqueror, etc.) else $browser_rev = 1.0; + $browser_barre = $browser_rev >= 1.3; } if (!$browser_name) $browser_name = "Mozilla"; @@ -130,4 +134,10 @@ function verif_butineur() { verif_butineur(); +$GLOBALS['browser_caret'] = (!$GLOBALS['browser_barre'] ? '' : " +onselect='storeCaret(this);' +onclick='storeCaret(this);' +onkeyup='storeCaret(this);' +ondbclick='storeCaret(this);'"); + ?> diff --git a/formulaire_forum-dist.html b/formulaire_forum-dist.html index d869ff7567..67bba9eacf 100644 --- a/formulaire_forum-dist.html +++ b/formulaire_forum-dist.html @@ -1,4 +1,4 @@ -<form action='[(#HTTP_VARS{url})]' method='post' id='formulaire'> +<form action='[(#HTTP_VARS{url})]' method='post' name='formulaire'> <input type='hidden' name='ajout_forum' value="oui" /> <input type='hidden' name='id_message' value="[(#HTTP_VARS{id_message})]" /> <input type='hidden' name='alea' value="[(#HTTP_VARS{alea})]" /> @@ -18,9 +18,7 @@ <fieldset class='spip_encadrer'> <legend><b><:forum_texte:></b></legend> <p><:info_creation_paragraphe:></p> - [(#HTTP_VARS*{afficher_barre})] - <textarea name='texte' rows='12' class='forml' cols='40' - [(#HTTP_VARS{afficher_claret})] >[(#HTTP_VARS{texte})]</textarea> +[(#HTTP_VARS{texte}|barre_forum)] </fieldset> <br /> [(#HTTP_VARS*{table})] diff --git a/inc-formulaire_forum.php3 b/inc-formulaire_forum.php3 index db4e42d155..b27dbf22b8 100644 --- a/inc-formulaire_forum.php3 +++ b/inc-formulaire_forum.php3 @@ -7,7 +7,6 @@ include_ecrire('inc_texte.php3'); include_ecrire('inc_filtres.php3'); include_ecrire('inc_lang.php3'); include_ecrire('inc_mail.php3'); -include_ecrire('inc_barre.php3'); include_ecrire('inc_forum.php3'); include_ecrire("inc_abstract_sql.php3"); include_local(_FILE_CONNECT); @@ -167,9 +166,6 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq 'formulaire_forum', 0, array( - 'afficher_claret' => afficher_claret(), - // ca devrait plutot etre un squelette - 'afficher_barre' => afficher_barre('formulaire', 'texte', true), 'afficher_non' => ($afficher_texte != 'non' ? '' : (boutonne('hidden', 'titre', htmlspecialchars($titre)) . @@ -196,6 +192,26 @@ function balise_FORMULAIRE_FORUM_dyn($titre, $table, $forums_publics, $id_rubriq )); } + +function barre_forum($texte) +{ + include_ecrire('inc_layer.php3'); + + if (!$GLOBALS['browser_barre']) + return "<textarea rows='12' class='forml' cols='40'>$texte</textarea>"; + static $num_formulaire = 0; + $num_formulaire++; + include_ecrire('inc_barre.php3'); + return afficher_barre("document.getElementById('formulaire_$num_formulaire')", true) . + " +<textarea rows='12' class='forml' cols='40' +id='formulaire_$num_formulaire' +onselect='storeCaret(this);' +onclick='storeCaret(this);' +onkeyup='storeCaret(this);' +ondbclick='storeCaret(this);'>$texte</textarea>"; +} + // Mots-cles dans les forums : // Si la variable de personnalisation $afficher_groupe[] est definie // dans le fichier d'appel, et si la table de reference est OK, proposer -- GitLab