From 0c216952fb84067d1e2c544bf53831ebf146afbd Mon Sep 17 00:00:00 2001
From: ARNO* <arno@rezo.net>
Date: Fri, 22 Aug 2003 01:59:10 +0000
Subject: [PATCH] Ajout d'une barre de raccourcis de mise en page au dessus des
 champs des formulaires

---
 .gitattributes                       |  13 ++++
 ecrire/articles_edit.php3            |  13 ++--
 ecrire/breves_edit.php3              |   6 +-
 ecrire/forum_envoi.php3              |   6 +-
 ecrire/img_pack/barre-a-grave.png    | Bin 0 -> 582 bytes
 ecrire/img_pack/barre-bold.png       | Bin 0 -> 504 bytes
 ecrire/img_pack/barre-e-aigu.png     | Bin 0 -> 586 bytes
 ecrire/img_pack/barre-euro.png       | Bin 0 -> 564 bytes
 ecrire/img_pack/barre-guillemets.png | Bin 0 -> 529 bytes
 ecrire/img_pack/barre-intertitre.png | Bin 0 -> 627 bytes
 ecrire/img_pack/barre-italic.png     | Bin 0 -> 541 bytes
 ecrire/img_pack/barre-lien.png       | Bin 0 -> 645 bytes
 ecrire/img_pack/barre-note.png       | Bin 0 -> 506 bytes
 ecrire/img_pack/barre-oe-maj.png     | Bin 0 -> 598 bytes
 ecrire/img_pack/barre-oe.png         | Bin 0 -> 547 bytes
 ecrire/img_pack/barre-quote.png      | Bin 0 -> 571 bytes
 ecrire/img_pack/barre-wikipedia.png  | Bin 0 -> 634 bytes
 ecrire/inc_barre.php3                |  90 +++++++++++++++++++++++++
 ecrire/inc_layer.php3                |  20 +-----
 ecrire/inc_texte.php3                |  12 +++-
 ecrire/inc_version.php3              |  28 ++++++++
 ecrire/spip_barre.js                 |  96 +++++++++++++++++++++++++++
 ecrire/spip_style.php3               |   8 +++
 inc-forum.php3                       |   8 ++-
 spip_style.css                       |   8 +++
 25 files changed, 276 insertions(+), 32 deletions(-)
 create mode 100644 ecrire/img_pack/barre-a-grave.png
 create mode 100644 ecrire/img_pack/barre-bold.png
 create mode 100644 ecrire/img_pack/barre-e-aigu.png
 create mode 100644 ecrire/img_pack/barre-euro.png
 create mode 100644 ecrire/img_pack/barre-guillemets.png
 create mode 100644 ecrire/img_pack/barre-intertitre.png
 create mode 100644 ecrire/img_pack/barre-italic.png
 create mode 100644 ecrire/img_pack/barre-lien.png
 create mode 100644 ecrire/img_pack/barre-note.png
 create mode 100644 ecrire/img_pack/barre-oe-maj.png
 create mode 100644 ecrire/img_pack/barre-oe.png
 create mode 100644 ecrire/img_pack/barre-quote.png
 create mode 100644 ecrire/img_pack/barre-wikipedia.png
 create mode 100644 ecrire/inc_barre.php3
 create mode 100644 ecrire/spip_barre.js

diff --git a/.gitattributes b/.gitattributes
index 3028201cdc..edc05b2fdb 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -61,11 +61,24 @@ ecrire/img_pack/aide_rtl.gif -text
 ecrire/img_pack/article-24.gif -text
 ecrire/img_pack/asuivre-24.gif -text
 ecrire/img_pack/asuivre-48.gif -text
+ecrire/img_pack/barre-a-grave.png -text
 ecrire/img_pack/barre-blanc.gif -text
+ecrire/img_pack/barre-bold.png -text
 ecrire/img_pack/barre-couleurs.gif -text
 ecrire/img_pack/barre-d.gif -text
+ecrire/img_pack/barre-e-aigu.png -text
+ecrire/img_pack/barre-euro.png -text
 ecrire/img_pack/barre-g.gif -text
+ecrire/img_pack/barre-guillemets.png -text
+ecrire/img_pack/barre-intertitre.png -text
+ecrire/img_pack/barre-italic.png -text
+ecrire/img_pack/barre-lien.png -text
 ecrire/img_pack/barre-noir.gif -text
+ecrire/img_pack/barre-note.png -text
+ecrire/img_pack/barre-oe-maj.png -text
+ecrire/img_pack/barre-oe.png -text
+ecrire/img_pack/barre-quote.png -text
+ecrire/img_pack/barre-wikipedia.png -text
 ecrire/img_pack/base-24.gif -text
 ecrire/img_pack/breve-24.gif -text
 ecrire/img_pack/cache-24.gif -text
diff --git a/ecrire/articles_edit.php3 b/ecrire/articles_edit.php3
index 8c4ed75480..8c5ad5e86c 100644
--- a/ecrire/articles_edit.php3
+++ b/ecrire/articles_edit.php3
@@ -2,6 +2,7 @@
 
 include ("inc.php3");
 include_ecrire ("inc_documents.php3");
+include_ecrire ("inc_barre.php3");
 
 $articles_surtitre = lire_meta("articles_surtitre");
 $articles_soustitre = lire_meta("articles_soustitre");
@@ -284,7 +285,7 @@ echo "<P><HR><P>";
 
 	$lien = 'articles.php3';
 	if ($id_article) $lien .= "?id_article=$id_article";
-	echo "<FORM ACTION='$lien' METHOD='post'>\n";
+	echo "<FORM ACTION='$lien' METHOD='post' name='formulaire'>\n";
 
 	if ($id_article)
 		echo "<INPUT TYPE='Hidden' NAME='id_article' VALUE='$id_article'>";
@@ -407,8 +408,10 @@ echo "<P><HR><P>";
 			$nombre_textes ++;
 			list($texte1,$texte) = coupe_trop_long($texte);
 
-			$textes_supplement .= "<BR><TEXTAREA NAME='texte$nombre_textes'".
-				" CLASS='formo' ROWS='$rows' COLS='40' wrap=soft>" .
+			$textes_supplement .= "<BR>";
+			$textes_supplement .= afficher_barre('formulaire', 'texte'.$nombre_textes);
+			$textes_supplement .= "<TEXTAREA NAME='texte$nombre_textes'".
+				" CLASS='formo' ".afficher_claret()." ROWS='$rows' COLS='40' wrap=soft>" .
 				$texte1 . "</TEXTAREA><P>\n";
 		}
 	}
@@ -419,7 +422,9 @@ echo "<P><HR><P>";
 
 	echo $textes_supplement;
 
-	echo "<BR><TEXTAREA NAME='texte' CLASS='formo' ROWS='$rows' COLS='40' wrap=soft>";
+	echo "<BR>";
+	echo afficher_barre('formulaire', 'texte');
+	echo "<TEXTAREA NAME='texte' ".afficher_claret()." CLASS='formo' ROWS='$rows' COLS='40' wrap=soft>";
 	echo $texte;
 	echo "</TEXTAREA><P>\n";
 
diff --git a/ecrire/breves_edit.php3 b/ecrire/breves_edit.php3
index 9d0879a6d2..09198a7efb 100644
--- a/ecrire/breves_edit.php3
+++ b/ecrire/breves_edit.php3
@@ -2,6 +2,7 @@
 
 include ("inc.php3");
 include_ecrire ("inc_documents.php3");
+include_ecrire ("inc_barre.php3");
 
 function mySel($varaut,$variable){
 		$retour= " VALUE=\"$varaut\"";
@@ -113,7 +114,7 @@ if ($new != "oui") {
 
 
 if ($connect_statut=="0minirezo" OR $statut=="prop" OR $new == "oui") {
-	echo "<FORM ACTION='breves_voir.php3' METHOD='post'>";
+	echo "<FORM ACTION='breves_voir.php3' METHOD='post' name='formulaire'>";
 
 	echo "<INPUT TYPE='Hidden' NAME='modifier_breve' VALUE=\"oui\">";
 	echo "<INPUT TYPE='Hidden' NAME='id_breve' VALUE=\"$id_breve\">";
@@ -156,7 +157,8 @@ if ($connect_statut=="0minirezo" OR $statut=="prop" OR $new == "oui") {
 	else $rows = 15;
 	
 	echo "<B>"._T('entree_texte_breve')."</B><BR>";
-	echo "<TEXTAREA NAME='texte' ROWS='$rows' CLASS='formo' COLS='40' wrap=soft>";
+	echo afficher_barre('formulaire', 'texte');
+	echo "<TEXTAREA NAME='texte' ".afficher_claret()." 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 c73b769d11..f316b1c4a9 100644
--- a/ecrire/forum_envoi.php3
+++ b/ecrire/forum_envoi.php3
@@ -1,6 +1,7 @@
 <?php
 
 include ("inc.php3");
+include_ecrire ("inc_barre.php3");
 
 
 if ($modif_forum != "oui") $titre_message = ereg_replace("^([^>])", "> \\1", $titre_message);
@@ -50,7 +51,7 @@ if ($id_parent) {
 }
 
 
-echo "<FORM ACTION='forum_envoi.php3' METHOD='post'>";
+echo "<FORM ACTION='forum_envoi.php3' name='formulaire' METHOD='post'>";
 
 if ($titre_parent) {
 	debut_cadre_relief("forum-interne-24.gif");
@@ -134,7 +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 "<TEXTAREA NAME='texte' ROWS='15' CLASS='formo' COLS='40' wrap=soft>";
+echo afficher_barre('formulaire', 'texte', true);
+echo "<TEXTAREA NAME='texte' ".afficher_claret()." ROWS='15' CLASS='formo' COLS='40' wrap=soft>";
 echo entites_html($texte);
 echo "</TEXTAREA><P>\n";
 
diff --git a/ecrire/img_pack/barre-a-grave.png b/ecrire/img_pack/barre-a-grave.png
new file mode 100644
index 0000000000000000000000000000000000000000..50c47394d6d4787e333765d4a072b79a8060fc4f
GIT binary patch
literal 582
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;X^yK%)o!U)KhEOCt}
z3C>R|DNig)WpGT%PfAtr%uP&B4N6T+sVqF1Y6Dbc5a1Ky`sB%z*RNj(1_qu!efrX+
zOUsrmn>KCQkt0Wni;HjExFI7Wvv=>_PoF;ByLYd%vvbp?O>%Sgc``6C&hd0{45_%4
z^x)~!BTO@XGBR~E&SaM~aAMSFcVI9qaAvjG@k3HV@<7A%>C<O(Dl|9<^*9v9nd#|;
z?XU=7QfO!pQYds|%d=DK;PIF<8KOerz=4xz4<0?vE%@xolXNByg&8c$%G~1O?CK#h
zE0`4;76>^g&)B(R$Bc!2=?_8jY<Vjzm@ky+g>~phGzc*;vP@#w-8#9mv%9;KRflI1
z1Bb!_mLn72#K<^EmUV!wT_Ci_p?(7s?_*}}%?6*18Ce8enx;>0?d<Mn&JZ(>kkMci
zaNxNkV85~0k-^?$#>|;hfo^XQO4wdpP`IISOMyW%qrI>LgQJSY%$+lC?D*-Z_l&J`
z^JXKUK@m(6EHN^7badW0=&n&HT)^VMz^K~bm(Hq{%4{j*@p<FsW)%itFiEeN$NGX*
zjc>wKhw{RLW>p3z4xNK%&L2B|{1o4^A2$>r{*XF%_Uu_cli9Q9&z~=?1a{Q~gN7ZG
zWSMsCjGPHFXa4Nosl1{e7;BHP0NuP`!Q&(*WeEmjMkXExk6Qk-k~zLNfN{*=>FVdQ
I&MBb@05kQ~AOHXW

literal 0
HcmV?d00001

diff --git a/ecrire/img_pack/barre-bold.png b/ecrire/img_pack/barre-bold.png
new file mode 100644
index 0000000000000000000000000000000000000000..67b3c88e5af4060854bba3e90e037bd8e7c6b9ab
GIT binary patch
literal 504
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;X^yK%)o!U)KhEOCt}
z3C>R|DNig)WpGT%PfAtr%uP&B4N6T+sVqF1Y6Dbc5a1Ky`ug?jCr_TNTD9up#fzs;
zpPn{tT3A@vkt0W1T3UcgK7IOh<Hn8MyLaEacTZPWx3skMqd*GK1&n^4E{-7;w~`(_
zeR_;(#!LpLj>cAQNdpH)eR~H6!w(AF22G6m`uhCR4h)T|0WFS?95@>om^=*@tbYFV
zSt2us!U7hLp4psS5fum5Jp}PPSd@j;c|J7D9zDz^;1IwW<`*KVX4b%v^nh`9AG6}Y
zV`t9tTwxS&P>^-tcC`9oVe!L3=*^ikXMA!P7+J0`7I8+fOG|e=Y4BiR5pZdeP85;X
zHjZFYXqZsykQy-~GGfLJkQ>=m_^vT-Va^fL=Jo(eHV7%`H>%E<@k3!+g9-x^htk2G
z6cG=0YhkdncT80MG2_O~Mj@aLQy5qoC#{}QaRA6Ua^NsGpL7_XMgmhNgBQ@gkfyoq
z?d&qUY!tpKfW6sJ!%||+vALo3W+l{KwR243Y)oMw4<$TGOghT)2k7o22hJaB7iD0P
ZVDM-cFiZ+dKMf3W22WQ%mvv4FO#lgdt?B>(

literal 0
HcmV?d00001

diff --git a/ecrire/img_pack/barre-e-aigu.png b/ecrire/img_pack/barre-e-aigu.png
new file mode 100644
index 0000000000000000000000000000000000000000..0915f86016681b55845f32bdd8cb33c3d714586a
GIT binary patch
literal 586
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;X^yK%)o!U)KhEOCt}
z3C>R|DNig)WpGT%PfAtr%uP&B4N6T+sVqF1Y6Dbc5a1Ky8WIxn`t|FJ7cV}3{J5~N
z@W_!PGiJ;<efso@6)Se{-hJc7jZdFGb#-;!y?a+jM~9i2`A!7W1_lPk1)eUBAr-fh
z9z1<|h-roe15-!iTxm%ICq{j42L{6eC6*bHKPqQBHcX#BnNgwPfRI4w8J<5pZv+Y#
zusAR@sw~(g`6J@Sj01=E#LVGgU}TxX(7CCoV1wa?4IegaY&zN~1QeT?ke2-5`Saw2
z2anSqFm)Oi8Zod4gfz`<o<F~}x4FHsQT9y?A6o-M(gT*;r;i>ye*VxYt|^JEKbclA
zD>OJ*Ip`&_dKG*G8oR0a$V>|f1}2Ub&5|mIIj1B%V#-Qj>SQhjn&;6Zsl>QNCPOA-
z&fI38OBV?3StAh6SlV!;(T$NsAcE;h=mPJX4Sh_W8#aSAFsnz*;Z9*!S7&F}j*!t{
z6mW3h^pIfqd+^keQ>RWb38g<xVBk>Lz;fZGf~>+-9iBN3P%k??(s4K)*)Z*caRJj-
zMpdA5G#Ec=@iWWIUkG(5|L6b|>1Y&Q(%3n<x4pf+m)D~RB*dY@SfZ${E>XZ>=rLz9
z$b}6;J_!tEJl5JG8w`OSU}jgB)_TA=>-e!l3<3^3Ittkv85$Uv8UCj8@8fGr>jcI#
NgQu&X%Q~loCIA8#)sz4L

literal 0
HcmV?d00001

diff --git a/ecrire/img_pack/barre-euro.png b/ecrire/img_pack/barre-euro.png
new file mode 100644
index 0000000000000000000000000000000000000000..d1f1467dcbd76a0bd2ef32ef6c214b1ecc15c00d
GIT binary patch
literal 564
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;X^yK%)o!U)KhEOCt}
z3C>R|DNig)WpGT%PfAtr%uP&B4N6T+sVqF1Y6Dbc5a1Ky`s&rIB}<kB2M1rgc=7S$
z$EQ!9o;-PSPEO8|BS-e`-TUd&ryDnJ=<Dm>y?b}lrcF#tOac5qycrl6yF6VSLn>}1
zJ$U-`7}JcO3``x3Q@JG#92oVj9T*G?7I7GCXkgISR~L3*XjGBdF~QaGkppJ~1Jmn<
zQw0V_pBh^$cUsP5VB*kV3_W||Fh5hy9fju~3>jGje41K&=eN)8ojA9BKIaoHKeYyi
zCa(<!pFSHH6%~Cl++@75DdsebfCJB*1l~I~Ha#+T_S`umQ&Y3%&Ka-;-WxV-{QTKq
zV>6>PyRoqclR|@okj|Vx90$(vOl06tSir)~t$o2yPEActA>~nWs|N#%Km?N~yRdq|
zjHy%mITacX2%YJ1IKHWo(SuoATU#0E0mA~Ozo&RZ4xT^9$>eaK`DkMe&?8<AhZ;m*
z<f|>Hj=1^rrbR@gr3A=7I*gyRG+ZhiW=w3J%A6qr^8EqB!zWK1JHq^hM_Qg;z`zLT
z$p9vub39WLQ&O1Q^x0j2Zj`X7RD9&{+0tQJv4bkm7?p!Og6xcZJ6IeT7*!2gEiEO1
whIcgf^QV|dOC_W;aVW5rEr{O0*ucQdP=8Z^wZ7NZ0T`nUp00i_>zopr0Cma9;s5{u

literal 0
HcmV?d00001

diff --git a/ecrire/img_pack/barre-guillemets.png b/ecrire/img_pack/barre-guillemets.png
new file mode 100644
index 0000000000000000000000000000000000000000..b929bc2881aecae2a34710d73fa0c4c5d35098c0
GIT binary patch
literal 529
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;X^yK%)o!U)KhEOCt}
z3C>R|DNig)WpGT%PfAtr%uP&B4N6T+sVqF1Y6Dbc5a1Ky`uOo<Wo6|{mo5bd2QOW^
z^z`Y|M~@zzGG)q*8#g|E`m}fN-tzMDmoH!5yLa#1yLX#5ZCbFcx|M-}G2PR}F{I*F
z(u1c@4=_diWMt}SoGQ%ufsv7)<3kZMivY8D7XvfLhfkl141qk4CVpob4MqV62hJT9
z%rSGCyCoGG6ogisYMl1j7$_gX<Ses-S)oB<#|DmKgO4Dg5GG%+js#A&x-^9(CNAU6
zhK8FA8dVs8R&i^bJ9OgEp%dqhoIZH!%!%{7lOCqCaVRWcVYXK`wpLaa7uHabkZklR
z3#&_OU|{kpFle^8lcR8W=M2f6GbLx<{4tY}i9>}k<QUTx#z_f`*=Y}x5`p^J^w{DS
zFrIM`TrhWyLSb52-2y(KZqI@ZA2)ygycuZ!#=_5^i#LDRym6xe$X84+q|Cz1^uiYK
z>FJp%BqgVU3|YW(!#&{u7fVjUfkQk34m>e?WDF$3!gla*8#^#Gs$OVy6k=dxnRGzl
zIg=LyD4@&=7ubV5HNU%cZmX<p0m%2v1}qzx8W@-vY7g?K`8|v+21XZyr>mdKI;Vst
E09BT~TL1t6

literal 0
HcmV?d00001

diff --git a/ecrire/img_pack/barre-intertitre.png b/ecrire/img_pack/barre-intertitre.png
new file mode 100644
index 0000000000000000000000000000000000000000..7a044b58f1ea454d785b0aca2f1e827b73db3fe1
GIT binary patch
literal 627
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;X^yK%)o!U)KhEOCt}
z3C>R|DNig)WpGT%PfAtr%uP&B4N6T+sVqF1Y6Dbc5a1Ky`s~@WTeohhtE-<mbEc=K
zCnO}~^5x5uCr{qHcW-`v{;XNE)~s2xdGqGx=H{hKmmWTRcuU~AVg?4rlb$Y)Ar-fh
z5{_`q*vZJ$(KxfQv2o(e_L(z#dwXX#HqURK**mehu~Ar|LE?vG#Eu;mH-ARlxEc9l
zM?^$K#m$>HXIe&pv^7s`?w{M*-QV9mcW(deZdr|kN7<(^a44|xv6U^biql)5W8HD|
z+|kpAPM<l<CE&m#ljE>d$3fRY_(r2oS>6J<I=Qe01}4d)XAhq}e)!;FUZxrwo0^zA
z4vQI>I5I>|ROUDwVJngpF#c@3`QrvA7J&<)9t@8-7aXnx+Rm|pS>?cyBd1uH=J@z1
z@NX>K3{>F4Zmcb=tsT<G{3IA;cGHW5XHTA_q&{VN{g^TG$XTEx1USw3<QAOXv2(|c
zh#eLUj~qCGPVjDc%Um?`XCs3PvntSTm4h7RJRx!_j6mh}8$LEWPoF<?KJ$|1=K1}i
z3Jnc*&zV@Y#I3~zJ~BFsOWe?rxwD3Wk%doNEKV#zfQfm+Tyc(uBAXhZ;E@9dc_uM@
zY+#9K64wEm=D;~YK);FM;vJAA%M=DTL4zwh9oz~VQ*Z2Sumbs--JYGDpPgOfMrDP=
zzbB8MJ$#VN3JlOZK0S_vb|x`_XDJ}ApT~tnh6V;^hHdxxB5x<oW&tJ$22WQ%mvv4F
FO#sx<?$`hT

literal 0
HcmV?d00001

diff --git a/ecrire/img_pack/barre-italic.png b/ecrire/img_pack/barre-italic.png
new file mode 100644
index 0000000000000000000000000000000000000000..c4ebf4b03c2ecd05ddfba7e361c5b1f693df98c9
GIT binary patch
literal 541
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;X^yK%)o!U)KhEOCt}
z3C>R|DNig)WpGT%PfAtr%uP&B4N6T+sVqF1Y6Dbc5a1Kyx@XTG1qFo(6DFKKefr3e
zBg>aBkBEr4dGqF{PoM7HyZ7?t%O_8sT)cSk;lqbluU>uk?%jN54o?OK#$rzw$B>F!
zNe`Z+9A~PCU}WlOoXO1jftgX9<AV_+ivTlo7lXOLhfhUCMjL=!k0yDwbB9kHIL$4@
z?!~|&5Wu8&?&PTxNBD%ErKBe?b0~DM9Fd4)Qwy{6+mJ1BgMo=dhtYK2^!C<vS)Fr-
z53mV1@bGwSGcs_HIe+~4DIhn1bAo}jw6Ze4i_8jUg@yw{cMJ;M#3mTX^Yd#<J1`g;
zI86Cmw29&9O$monl@3A-j4V?ces#7^oj9>mQt8|okP!)-6D+Lxg_V`Hp@uXF3GCnW
zc>|*_6E`y>#FT>1PJdapH1$d<@l9diP*}j?GN)fO#nPB%!-h>jZ$&UYsYqKOnzKen
zpl|^T$l4E1e~z3vb>i3&E<rX=phsPpo_Mf@g|W@B2w+lZXgJ9HQJX)2MU7_?*t9GD
zXU=dGvW1y7FeEXsF~!VbRpYzD2=wfl12-6*MGhPTdE94#!%-#%CLV@>VEz-o(tp|l
PqmIGT)z4*}Q$iB}-deq@

literal 0
HcmV?d00001

diff --git a/ecrire/img_pack/barre-lien.png b/ecrire/img_pack/barre-lien.png
new file mode 100644
index 0000000000000000000000000000000000000000..d40ee067839393570619cfba9ee15281588c0959
GIT binary patch
literal 645
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;X^yK%)o!U)KhEOCt}
z3C>R|DNig)WpGT%PfAtr%uP&B4N6T+sVqF1Y6Dbc5a1Ky+TZ_l*|KH9!C|jny<%ee
zd;9hsd3pK0d-whS|35kTLrY7`;lq#g^<Vz~e`f94S7*<hDX~;?VPIgq?djqeQgJIO
z;c4=N$7xT~9;78aNM^mXW{rXxv$6w&p}_}(4<8IZZ~S0Tu*rZSGc8R_%#Te>t$`sa
z;Xz7j+Or4DTt>~J45}89k(QMVOdX9ATU*=tH4Yp<bLJ$|lE_F$As!zF#v=##o;0vD
zSXmsjauE76$A*ECWs8u~fx~CnMHpWvJbe5tk%>crjZI8!!%`ccoH=&{IOP_+1nWD;
zYa*+0@W`3d$If#x>D1KJ^Z<ofwlquX96WaL^fA7P2?<Zr(?Pn+!~`BZX7p^BxyHuf
z`UV3=7J(3UV`~p4ju{QdK7RgeYy=eXU|J%tbMVAzmMN@V%)LNe3s|&`wS}dvh1re8
zjoHOLxYjT$G#s#+VR7T;4T}X0^LqtV7zG>@WZ&ehaVWNkket~lu!2noD3rjdw}8h!
zK+|4YTl#`z&l?BM1_mb255`4?hQ$RNHZ>~fi@UG`!>_^S==l@J&Yd}Uo^4`MQc8My
z3eeULmJ0?8c*HNn#`NUGy!ivx>&>v$z>qQ3qG21e>4)YL2B2e`<lhvil_|{UUBU=*
zR)f$V1<3^xA_X6tLqOhRR<>4_C@?f+bmrpNu|s0#jvX^V5zyVqE6i||fr*FVoF<=}
U*7Jqtz$C)p>FVdQ&MBb@0Qf8F!T<mO

literal 0
HcmV?d00001

diff --git a/ecrire/img_pack/barre-note.png b/ecrire/img_pack/barre-note.png
new file mode 100644
index 0000000000000000000000000000000000000000..40516c86e7932a00af16d39ae087327627de6ffa
GIT binary patch
literal 506
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;X^yK%)o!U)KhEOCt}
z3C>R|DNig)WpGT%PfAtr%uP&B4N6T+sVqF1Y6Dbc5a1Kynv|4u>(;GHmo6(RDxN-l
z`qisfj~+dmGG)r{-Mi<_dmI<{Zsp3AM~)nkmj3ne<Huvi?wx)oI+=liF~HNsF{I*F
zQbO_(wi!DZnK~L<`6V|vF-kK#Fc^MVz}?88%no7}By=?KJWpWYP}sntEkDa5fJvdj
zK}h42V&6lM-~tw>IrAs?cFymeEc`^HfuYH>LA1EgsHo7;=%bNQp#cMn05h|^H8Zoh
zIWsdezp}oxvbwmkvbcHxJJ4{0;?2g!#l{BAj3G^&I*bAiJZIkYoH?_`p=;*M-sux3
zPM<z`;&fIGu!K%d0%uwpo7w`_9v_`KF*-VTco-Ou95~2k*fqCv;>6xgagK-x2O*Fc
zW6;@i=g#nQS*eND$<=kRI504l9<Vve!l)y_*}%Z`s-e}yX+~@NY(}70tPGAe0yVKr
zIUvI333ROsQ|z4fxj-2SiwzvjB|s5_mJJ=ur9egiyI3J#9$N!L(t~FS&(n@G@Bm%F
h!jqS_hC$%~!+8N7rAx8Lj{)O_!PC{xWt~$(697AFs*eBw

literal 0
HcmV?d00001

diff --git a/ecrire/img_pack/barre-oe-maj.png b/ecrire/img_pack/barre-oe-maj.png
new file mode 100644
index 0000000000000000000000000000000000000000..eb681d2c1c23d0366318433596bab9af57a4994b
GIT binary patch
literal 598
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;X^yK%)o!U)KhEOCt}
z3C>R|DNig)WpGT%PfAtr%uP&B4N6T+sVqF1Y6Dbc5a1Kyx@5_cf`WqJ;NWS~roDds
z`qHIKXU?2?`0(M8BS-e`-K(Xg_36{6n>TN^w6w6YvTokI`IC=d2Ll7+8c!F;kcwML
z3F*%dGTr#W$kfr;D=oRffzevofx)mqiF*UHphSTYBa47X6YDwwtuu!YpJWkmaNyiv
zVXQ1*(7<TV@4=+d;2@-<!xK~Ev!|z~rpCv|rzR%H#^#R?10&0{2Tva-r#(n#>tZzh
z@Tst=gaKsK<o^DN^QX2qclP(sZ=T%PIlq1Cd`^W135&=Zj#`xsVMd<{8AXka3pOyR
zGB9yy9ON>Y#rr}mEY41^PR>kkfkgn&&ITbFhshC+LOlwnckZw_C<L@@3PU8L5vSV0
z^QTT7I}dbb0B6{O<qkr7&g^mEG+V&pz|g4DFfW0bRpvqwn;%=6pP88%n_2?{lV`&m
z&Z!Kmo;`W+l;ITvhXR{lSy-B$onF`i77xY%Q)6*;c4lD*21eBii^@i$J!=jWJWNhW
zOM8<1h+T?Rz(IjCtS-(?PvODiM@(&^!s7b&0qh{VDk2)gnC>1ved6?Ko)m+I9wrWj
z4wegEbp{N<b7UMi8yJ!vuyisrN=p<tFha~XXtiu~<PmV-`7?)y=Zr+dL{Oke%-peo
dseyr+VON4+?1bY=*1$Mt@O1TaS?83{1OU$Y&pH4A

literal 0
HcmV?d00001

diff --git a/ecrire/img_pack/barre-oe.png b/ecrire/img_pack/barre-oe.png
new file mode 100644
index 0000000000000000000000000000000000000000..f7061a255e0bb84ebd0f095582bd233c991f03fc
GIT binary patch
literal 547
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;X^yK%)o!U)KhEOCt}
z3C>R|DNig)WpGT%PfAtr%uP&B4N6T+sVqF1Y6Dbc5a1Ky`s&rI$B!Q$J$iJ-iWO(h
zoCyvNzI^%ev}x0Fa&mU<+I8c`jgKEc>gnk<H#gtCdzXWQL+EnDM+OGQN>3NZkcwML
z4<0{0#1t`uk*TAxRhrenfkBzwfx*yVVTVBzqrAMjHjq=Gw7R*IS(Sl_L+9Xu-bFGQ
zx**|36$yz8M;nD07+IzqP&#+)B$t3g0H+zBoLpF$UYx?oldRJiI21ZqxcTk%jrr~Q
z?X9i(?S-YKrH#R6HpQMjfAHkVGyF=GKP)30K*mf;c=G6Zdiuj8rYuIr2`nH>7*!=C
zBY*s~{P`my;^)noGj9TMM8u3pMvz-rrX?h?N*z7IDZ=K-z#`znlwmF{9x#hN#l|>-
zNufc)qA@T1;nU}dNy*RIPi<g6%Ph?*;NT!zQ<F1C#=)?TPvPYG^V}vqoijxh8XBw`
z;!+=`JY$VIbLJf55{sEL8o*9s_%)?fm}ABai<t)xDR4G0FnKjJF>pjEG;nG$3OMl0
zsR<}FQz=})0tyd-R|^k0D1+Rl(da6(f*I(98J3L;8yGDjK*2kGD!VoVhXKQqZhqc6
Tr8IkB1TuKK`njxgN@xNA4PU(5

literal 0
HcmV?d00001

diff --git a/ecrire/img_pack/barre-quote.png b/ecrire/img_pack/barre-quote.png
new file mode 100644
index 0000000000000000000000000000000000000000..2a1be699bdcfda5faedcd089e79546318853c5fb
GIT binary patch
literal 571
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;X^yK%)o!U)KhEOCt}
z3C>R|DNig)WpGT%PfAtr%uP&B4N6T+sVqF1Y6Dbc5a1Kydg8>1sZ*!kym@okvSnRe
zUB$)44<A1K`}c1|M8u^_m)1l@?cKX~)22-?U%u4S)7#hAH;pg!HUk6WL{AsTkcwML
z3CYQam@Fz8m^vC8=g#eIoIJg8cH{Kk#?HySC!VA}N=;_vP+-f8OLJ35NKAZ^n8IkZ
z!*NFEY-WXq2BAA=Y|flfh)i=66KI|}v3+toSky*=SKtiO6^=u9Y-AW1S*9c~%szU8
znbqO14G&1*$bqxRcs4O)u&S%8GpjR8F!VBUC`{nXo8XkkW@fhIa-$Gf)1wq7t!F7t
z9tBLQ3``svj4U}he_}iu<TV%t91=Lq%;NOQR1UCCVc<|$z;c4aOpndZEzFHCER8RW
zZvl%jy92{P)g6(R5se+Kz|fiA-8d8Iwgo~yF?VWY6d0yFPGk3EU=eU>>g?=h*En^E
zYf=J(H&Eb0bAox%N2Xf#LNomcCXgQ!mM^vv2U%*s>9>S|@fa`2Y(`ZJ#he5VM$f!}
z9|gt6#Xz0R=EBA*2P7R8`S>cu#1^nPFc=mTe{yJ&73xnoaN_V8pa~9~65@;wK<^zn
taG3d%j#dI=6^BBDM8wYx%nc0840reO>Aa59umDCZgQu&X%Q~loCIHa^!FT`w

literal 0
HcmV?d00001

diff --git a/ecrire/img_pack/barre-wikipedia.png b/ecrire/img_pack/barre-wikipedia.png
new file mode 100644
index 0000000000000000000000000000000000000000..a8a5714ab15f6ac27ccd1e21530af7c52bbc9e7a
GIT binary patch
literal 634
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAv7|ftIx;X^yK%)o!U)KhEOCt}
z3C>R|DNig)WpGT%PfAtr%uP&B4N6T+sVqF1Y6Dbc5a1KyI&0A^BWt68j^H(aH~szd
z=luW6*REfk_H@ql|MPe4+*RLHyZi5f+~dUspQ@fec@`KG)ZVB&fq{YXf~SjPNX4zB
zgvZH;*(?~DIvVFsoH(Dm<EP|K2?@!Y5sD4H+zJg67L7`4czXWu_}p3J!*fUBz?m~=
zPVx&l@XV=EDDCO#xwGa?k3r!A76%5yf=xz-Mh#mwY%(f1c%)H?fstj(gOn%F)6!B>
zo;^!%=PE8J_{7X25YRMr{=~-F6DM}hl~+5*GlhXeVFC-Yvaq;tKwG=yD!C=h3JnfI
z4p0BwQAq#n(CP>>Xj(#2%A;qAPaY*FJ#X+b_y977>4{%jUYQ%4nArjzc6NS#{Q!0c
zhDMbgJ8w2_Gb-G;p}?qcgR!B3!N($ytu9PYq$aR%GYbo=tBVWsGuwk4+|+Wja>tAx
zjzT&yJ~}af=EVH@19COP>a>J}2alM&HWYp=WYSH3!VYvIUs_p5l9|H6<3~AFe*FB&
z$i%Uxc`oM?DV>9d4lo?~69dvY=|RHthtJcKAGW+;ewC1v^Z=-l%`f1>hR+5cnUC)H
z@x!9=mxbdxCJu!KEGIVau~E2gR8Yuhy5XboM<bA*JlNS?*fOM~rRBNRm4)>Km=qcw
z2sub5{3&9(%plC~0pv?qSV}4|WboK)bo|`u&>#;KY0zZRX5cVjSdq^!zChtFD==L!
Nc)I$ztaD0e0s!v8^IiY|

literal 0
HcmV?d00001

diff --git a/ecrire/inc_barre.php3 b/ecrire/inc_barre.php3
new file mode 100644
index 0000000000..089fb53ae5
--- /dev/null
+++ b/ecrire/inc_barre.php3
@@ -0,0 +1,90 @@
+<?php
+//
+// Ce fichier ne sera execute qu'une fois
+if (defined("_INC_BARRE")) return;
+define("_INC_BARRE", "1");
+
+//include_ecrire ("inc_layers.php3"); // (pour memoire)
+
+function test_barre() {
+	global $HTTP_UA_OS, $browser_name, $browser_version, $browser_description, $browser_rev;
+		
+	if ($browser_name == '') verif_butineur();	
+		
+	if (
+	(eregi("msie", $browser_name) AND $browser_version >= 5 AND $HTTP_UA_OS != 'MacOS')
+	|| (eregi("mozilla", $browser_name) AND $browser_version >= 5 AND $browser_rev >= 1.3)
+	)
+		return true;
+}
+
+
+function test_claret() {
+	global $HTTP_UA_OS, $browser_name, $browser_version, $browser_description, $browser_rev;
+
+	if ( test_barre() && (eregi("msie", $browser_name)) ) return true;
+}
+
+
+function afficher_script_barre(){
+	global $flag_ecrire, $flag_script_deja_affiche;
+	
+	if ($flag_script_deja_affiche != 1) {
+		$flag_script_deja_affiche = 1;
+		$ret = '<script type="text/javascript" src="'.($flag_ecrire ? "" : "ecrire/").'spip_barre.js">';
+		$ret .= "</script>\n";
+		return $ret;	
+	}
+}
+
+function afficher_barre($formulaire='',$texte='', $forum=false) {
+	global $spip_lang, $flag_ecrire;
+
+	if (test_barre()) {	
+		$ret = afficher_script_barre();
+		$champ = "document.$formulaire.$texte";
+		$ret .= "<div align='left'>";
+		$ret .= "<a href=\"javascript:barre_raccourci('{{','}}',$champ)\"><img src='".($flag_ecrire ? "" : "ecrire/")."img_pack/barre-bold.png' border='0' width='24' height='24' title='Mettre en gras'></a>";
+		$ret .= "&nbsp;";
+		$ret .= "<a href=\"javascript:barre_raccourci('{','}',$champ)\"><img src='".($flag_ecrire ? "" : "ecrire/")."img_pack/barre-italic.png' border='0' width='24' height='24' title='Mettre en italique'></a>";
+		$ret .= "&nbsp;&nbsp;&nbsp;";
+		$ret .= "<a href=\"javascript:barre_raccourci('\n\n{{{','}}}\n\n',$champ)\"><img src='".($flag_ecrire ? "" : "ecrire/")."img_pack/barre-intertitre.png' border='0' width='24' height='24' title='Cr&eacute;er un intertitre'></a>";
+		$ret .= "&nbsp;";
+		$ret .= "<a href=\"javascript:barre_raccourci('[[',']]',$champ)\"><img src='".($flag_ecrire ? "" : "ecrire/")."img_pack/barre-note.png' border='0' width='24' height='24' title='Cr&eacute;er une note de bas de page'></a>";
+		$ret .= "&nbsp;&nbsp;&nbsp;";
+		$ret .= "<a href=\"javascript:barre_demande('[','->',']','Veuillez indiquer l\'adresse de votre lien (vous pouvez indiquer une adresse Web sous la forme http://www.monsite/com ou simplement indiquer le num&eacute;ro d\'un article de ce site.',$champ)\"><img src='".($flag_ecrire ? "" : "ecrire/")."img_pack/barre-lien.png' border='0' width='24' height='24' title='Cr&eacute;er un lien hypertexte'></a>";
+		
+		if ($forum) {
+			$ret .= "&nbsp;&nbsp;&nbsp;";
+			$ret .= "<a href=\"javascript:barre_raccourci('\n\n<quote>','</quote>\n\n',$champ)\"><img src='".($flag_ecrire ? "" : "ecrire/")."img_pack/barre-quote.png' border='0' width='24' height='24' title='Citer un extrait'></a>";
+		}
+		
+		if ($spip_lang == "fr") {
+			$ret .= "&nbsp;&nbsp;&nbsp;";
+			$ret .= "<a href=\"javascript:barre_raccourci('&laquo;','&raquo;',$champ)\"><img src='".($flag_ecrire ? "" : "ecrire/")."img_pack/barre-guillemets.png' border='0' width='24' height='24' title='Placer entre guillemets'></a>";
+			if (test_claret()) {
+				$ret .= "&nbsp;";
+				$ret .= "<a href=\"javascript:barre_inserer('&OElig;',$champ)\"><img src='".($flag_ecrire ? "" : "ecrire/")."img_pack/barre-oe-maj.png' border='0' width='24' height='24' title='Ins&eacute;rer un E-dans-l-O majuscule'></a>";
+				$ret .= "&nbsp;";
+				$ret .= "<a href=\"javascript:barre_inserer('&oelig;',$champ)\"><img src='".($flag_ecrire ? "" : "ecrire/")."img_pack/barre-oe.png' border='0' width='24' height='24' title='Ins&eacute;rer un E-dans-l-O'></a>";
+				$ret .= "&nbsp;";
+				$ret .= "<a href=\"javascript:barre_inserer('&Agrave;',$champ)\"><img src='".($flag_ecrire ? "" : "ecrire/")."img_pack/barre-a-grave.png' border='0' width='24' height='24' title='Ins&eacute;rer un A accent grave'></a>";
+				$ret .= "&nbsp;";
+				$ret .= "<a href=\"javascript:barre_inserer('&Eacute;',$champ)\"><img src='".($flag_ecrire ? "" : "ecrire/")."img_pack/barre-e-aigu.png' border='0' width='24' height='24' title='Ins&eacute;rer un E accent aigu'></a>";
+			}
+		}
+		if (test_claret()) {
+			$ret .= "&nbsp;";
+			$ret .= "<a href=\"javascript:barre_inserer('&euro;',$champ)\"><img src='".($flag_ecrire ? "" : "ecrire/")."img_pack/barre-euro.png' border='0' width='24' height='24' title='Ins&eacute;rer le symbole euro'></a>";
+		}
+		$ret .= "<div>";
+	}
+	return $ret;
+}
+
+function afficher_claret() {
+	if (test_claret()) {
+		return "onselect='storeCaret(this);' onclick='storeCaret(this);' onkeyup='storeCaret(this);' ondbclick='storeCaret(this);'";
+	}
+}
+?>
\ No newline at end of file
diff --git a/ecrire/inc_layer.php3 b/ecrire/inc_layer.php3
index d405dc6658..235f22124c 100644
--- a/ecrire/inc_layer.php3
+++ b/ecrire/inc_layer.php3
@@ -9,25 +9,7 @@ define("_INC_LAYER", "1");
 // Le contenu de cette fonction est a mettre dans inc_version
 //
 
-function init_layer() {
-	global $HTTP_USER_AGENT, $browser_name, $browser_version, $browser_description;
-	ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $HTTP_USER_AGENT, $match);
-	$browser_name = $match[1];
-	$browser_version = $match[2];
-	$browser_description = $match[3];
-	
-	if (eregi("opera", $browser_description)) {
-		eregi("Opera ([^\ ]*)", $browser_description, $match);
-		$browser_name = "Opera";
-		$browser_version = $match[1];
-	}
-	else if (eregi("msie", $browser_description)) {
-		eregi("MSIE ([^;]*)", $browser_description, $match);
-		$browser_name = "MSIE";
-		$browser_version = $match[1];
-	}
 
-}
 
 function test_layer(){
 	global $browser_name, $browser_version, $browser_description;
@@ -136,6 +118,6 @@ function bouton_block_visible($nom_block){
 	}
 }
 
-init_layer();
+verif_butineur();
 
 ?>
diff --git a/ecrire/inc_texte.php3 b/ecrire/inc_texte.php3
index d6dd9e47ce..0283a38b66 100644
--- a/ecrire/inc_texte.php3
+++ b/ecrire/inc_texte.php3
@@ -297,7 +297,7 @@ function typo_fr($letexte) {
 	$letexte = ereg_replace(" *~+ *", "~", $letexte);
 
 	$cherche2 = array(
-		'/(http|ftp|mailto)~:/',
+		'/(http|https|ftp|mailto)~:/',
 		'/~/'
 	);
 	$remplace2 = array(
@@ -731,6 +731,8 @@ function traiter_raccourcis($letexte, $les_echap = false, $traiter_les_notes = '
 		$letexte = eregi_replace("(<br[[:space:]]*/?".">)+(<p>|<br[[:space:]]*/?".">)", "\n<p class=\"spip\">", $letexte);
 		$letexte = str_replace("<p>", "<p class=\"spip\">", $letexte);
 		$letexte = str_replace("\n", " ", $letexte);
+		$letexte = str_replace("<quote>", "<div class='spip_quote'>", $letexte);
+		$letexte = str_replace("<\/quote>", "</div'>", $letexte);
 	}
 	else {
 		$cherche1 = array(
@@ -748,7 +750,9 @@ function traiter_raccourcis($letexte, $les_echap = false, $traiter_les_notes = '
 			/* 11 */	"/(<br[[:space:]]*\/?".">){2,}/",
 			/* 12 */	"/<p>([\n]*)(<br[[:space:]]*\/?".">)+/",
 			/* 13 */	"/<p>/",
-			/* 14 */	"/\n/"
+			/* 14 */	"/\n/",
+			/* 16 */	"/<quote>/",
+			/* 16 */	"/<\/quote>/"
 		);
 		$remplace1 = array(
 			/* 0 */ 	"___SPIP_ligne_horizontale___",
@@ -765,7 +769,9 @@ function traiter_raccourcis($letexte, $les_echap = false, $traiter_les_notes = '
 			/* 11 */	"\n<p class=\"spip\">",
 			/* 12 */	"\n<p class=\"spip\">",
 			/* 13 */	"<p class=\"spip\">",
-			/* 14 */	" "
+			/* 14 */	" ",
+			/* 15 */	"<div class=\"spip_quote\">",
+			/* 16 */	"</div>"
 		);
 		$letexte = ereg_remplace($cherche1, $remplace1, $letexte);
 	}
diff --git a/ecrire/inc_version.php3 b/ecrire/inc_version.php3
index 2b8849e180..74be702e8f 100644
--- a/ecrire/inc_version.php3
+++ b/ecrire/inc_version.php3
@@ -805,6 +805,34 @@ function spip_log($message) {
 	}
 }
 
+//
+// Tests sur le nom du butineur
+//
+function verif_butineur() {
+	global $HTTP_USER_AGENT, $browser_name, $browser_version, $browser_description, $browser_rev;
+	ereg("^([A-Za-z]+)/([0-9]+\.[0-9]+) (.*)$", $HTTP_USER_AGENT, $match);
+	$browser_name = $match[1];
+	$browser_version = $match[2];
+	$browser_description = $match[3];
+	
+	
+	if (eregi("opera", $browser_description)) {
+		eregi("Opera ([^\ ]*)", $browser_description, $match);
+		$browser_name = "Opera";
+		$browser_version = $match[1];
+	}
+	else if (eregi("msie", $browser_description)) {
+		eregi("MSIE ([^;]*)", $browser_description, $match);
+		$browser_name = "MSIE";
+		$browser_version = $match[1];
+	}
+	else if (eregi("mozilla", $browser_name) AND $browser_version >= 5) {
+		ereg("rv:([0-9]+\.[0-9]+)", $browser_description, $match);
+		$browser_rev = doubleval($match[1]);
+	}
+}
+
+
 
 function spip_debug($message) {
 	if ($GLOBALS['debug'])
diff --git a/ecrire/spip_barre.js b/ecrire/spip_barre.js
new file mode 100644
index 0000000000..0e031fcd8c
--- /dev/null
+++ b/ecrire/spip_barre.js
@@ -0,0 +1,96 @@
+// Barre de raccourcis
+// derive du:
+// bbCode control by subBlue design : www.subBlue.com
+
+// Startup variables
+var theSelection = false;
+
+// Check for Browser & Platform for PC & IE specific bits
+// More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
+var clientPC = navigator.userAgent.toLowerCase(); // Get client info
+var clientVer = parseInt(navigator.appVersion); // Get browser version
+
+var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
+var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)
+                && (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)
+                && (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));
+var is_moz = 0;
+
+var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));
+var is_mac = (clientPC.indexOf("mac")!=-1);
+
+
+function barre_raccourci(debut,fin,champ) {
+	var txtarea = champ;
+
+	txtarea.focus();
+	donotinsert = false;
+	theSelection = false;
+	bblast = 0;
+
+
+	if ((clientVer >= 4) && is_ie && is_win)
+	{
+		theSelection = document.selection.createRange().text; // Get text selection
+		if (theSelection) {
+			// Add tags around selection
+			document.selection.createRange().text = debut + theSelection + fin;
+			txtarea.focus();
+			theSelection = '';
+			return;
+		}
+	}
+	else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0))
+	{
+		mozWrap(txtarea, debut, fin);
+		return;
+	}
+}
+
+function barre_demande(debut,milieu,fin,affich,champ) {
+	var inserer = prompt(affich);
+	
+	if (inserer != null) {
+		if (inserer == "") {inserer = "xxx"; }
+
+		barre_raccourci(debut, milieu+inserer+fin, champ);
+	}
+}
+
+function barre_inserer(text,champ) {
+	var txtarea = champ;
+	
+	if (txtarea.createTextRange && txtarea.caretPos) {
+		var caretPos = txtarea.caretPos;
+		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
+		txtarea.focus();
+	} else {
+		txtarea.value  += text;
+		txtarea.focus();
+	}
+}
+
+
+// From http://www.massless.org/mozedit/
+function mozWrap(txtarea, open, close)
+{
+	var selLength = txtarea.textLength;
+	var selStart = txtarea.selectionStart;
+	var selEnd = txtarea.selectionEnd;
+	if (selEnd == 1 || selEnd == 2)
+		selEnd = selLength;
+
+	var s1 = (txtarea.value).substring(0,selStart);
+	var s2 = (txtarea.value).substring(selStart, selEnd)
+	var s3 = (txtarea.value).substring(selEnd, selLength);
+	txtarea.value = s1 + open + s2 + close + s3;
+	return;
+}
+
+// Insert at Claret position. Code from
+// http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130
+     function storeCaret (textEl) {
+       if (textEl.createTextRange) 
+         textEl.caretPos = document.selection.createRange().duplicate();
+     }
+
diff --git a/ecrire/spip_style.php3 b/ecrire/spip_style.php3
index 534b0b923c..117bf95c76 100644
--- a/ecrire/spip_style.php3
+++ b/ecrire/spip_style.php3
@@ -239,6 +239,14 @@ a.spip_glossaire:hover {text-decoration: underline overline;}
 	background-color: #FFFFFF;
 	padding: 5px;
 }
+.spip_quote {
+	margin-left : 40px;
+	margin-top : 10px;
+	margin-bottom : 10px;
+	border : solid 1px #aaaaaa;
+	background-color: #ffffff;
+	padding: 5px;
+}
 
 .boutonlien {
 	font-family: Verdana,Arial,Helvetica,sans-serif;
diff --git a/inc-forum.php3 b/inc-forum.php3
index fd2bd7958e..ef1fd7d52a 100644
--- a/inc-forum.php3
+++ b/inc-forum.php3
@@ -12,6 +12,8 @@ include_ecrire("inc_acces.php3");
 include_ecrire("inc_texte.php3");
 include_ecrire("inc_filtres.php3");
 include_ecrire("inc_mail.php3");
+include_ecrire("inc_barre.php3");
+
 if (file_exists("inc-urls.php3")) {
 	include_local ("inc-urls.php3");
 }
@@ -109,7 +111,7 @@ function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_synd
 		$ret .= '<'.'?php { ?'.'>';
 
 	$ret .= "\n<a name='formulaire_forum'></a>\n";
-	$ret .= "\n<form action='$lien' method='post'>";
+	$ret .= "\n<form action='$lien' name='formulaire' method='post'>";
 
 	if ($forums_publics == "pri") {
 		$ret.= _T('forum_info_modere')."<p>";
@@ -230,7 +232,9 @@ function retour_forum($id_rubrique, $id_parent, $id_article, $id_breve, $id_synd
 	if ($afficher_texte != "non"){
 		$ret .= "\n<br /><div class='spip_encadrer'><b>"._T('forum_texte')."</b><br />\n";
 		$ret .= _T('forum_creer_paragraphes');
-		$ret .= "<br>\n<textarea name='texte' rows='12' class='forml' cols='40'>";
+		$ret .= "<br />\n";
+		$ret .= afficher_barre('formulaire', 'texte', true);
+		$ret .= "<textarea name='texte' ".afficher_claret()." rows='12' class='forml' cols='40'>";
 		$ret.= $texte;
 		$ret .= "\n</textarea></div>\n";
 	}
diff --git a/spip_style.css b/spip_style.css
index 48bc0e1dad..75ef2a8b35 100644
--- a/spip_style.css
+++ b/spip_style.css
@@ -72,6 +72,14 @@ i.spip { }
 	padding: 5px;
 }
 
+.spip_quote {
+	margin-left : 40px;
+	margin-top : 10px;
+	margin-bottom : 10px;
+	border : solid 1px #aaaaaa;
+	background-color: #ffffff;
+	padding: 5px;
+}
 
 .spip_bouton { background-color: #FFCC00;}
 
-- 
GitLab