diff --git a/ecrire/action/converser.php b/ecrire/action/converser.php
index 7fb2d52f658ace75d3659555bb97d41d4ee4f915..2320a6a523ff5adbc4006e6b3be12a24c0dfec62 100644
--- a/ecrire/action/converser.php
+++ b/ecrire/action/converser.php
@@ -16,16 +16,17 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 function action_converser_dist()
 {
-	$lang = _request('var_lang_ecrire');
 
-	if (_FILE_CONNECT AND $lang) {
-		$securiser_action = charger_fonction('securiser_action', 'inc');
-		$securiser_action();
+	$securiser_action = charger_fonction('securiser_action', 'inc');
+	$securiser_action();
+
+	if (_FILE_CONNECT AND $lang = _request('var_lang_ecrire')) {
 		spip_query("UPDATE spip_auteurs SET lang = " . _q($lang) . " WHERE id_auteur = " . $GLOBALS['auteur_session']['id_auteur']);
 		$auteur_session['lang'] = $lang;
 		$session = charger_fonction('session', 'inc');
 		$session($auteur_session);
 	}
+	action_converser_post();
 }
 
 function action_converser_post()
diff --git a/ecrire/action/editer_article.php b/ecrire/action/editer_article.php
index a4c07119442f9c65ef888bfcf351b9cc1a3ace0f..d43e74cb096d63b74e53a6b53ad6a31e00068157 100644
--- a/ecrire/action/editer_article.php
+++ b/ecrire/action/editer_article.php
@@ -21,18 +21,19 @@ function action_editer_article_dist() {
 
 	$arg = _request('arg');
 
-	// Creation d'un article ?
+	// si id_article n'est pas un nombre, c'est une creation 
+	// mais on verifie qu'on a toutes les données qu'il faut.
 	if (!$id_article = intval($arg)) {
-		if ($arg != 'oui') redirige_par_entete('./');
-		$id_article = insert_article(_request('id_parent'));
+		$id_parent = _request('id_parent');
+		$id_auteur = $GLOBALS['auteur_session']['id_auteur'];
+		if (!($id_parent AND $id_auteur)) redirige_par_entete('./');
+		$id_article = insert_article($id_parent);
 		
 		# cf. GROS HACK ecrire/inc/getdocument
 		# rattrapper les documents associes a cet article nouveau
 		# ils ont un id = 0-id_auteur
-		if ($GLOBALS['auteur_session']['id_auteur']>0)
-			spip_query("UPDATE spip_documents_articles
-			SET id_article = $id_article
-			WHERE id_article = ".(0-$GLOBALS['auteur_session']['id_auteur']));
+
+		spip_query("UPDATE spip_documents_articles SET id_article = $id_article WHERE id_article = ".(0-$id_auteur));
 	} 
 
 	// Enregistre l'envoi dans la BD
diff --git a/ecrire/inc/editer_article.php b/ecrire/inc/editer_article.php
index 6820df49adaa55d7b30bd6582589d9019163849f..6d331fd91dece363a00252a8fb94144f7876c65e 100644
--- a/ecrire/inc/editer_article.php
+++ b/ecrire/inc/editer_article.php
@@ -21,10 +21,12 @@ function inc_editer_article_dist($new, $id_rubrique=0, $lier_trad=0, $retour='',
 		include_spip('inc/presentation');
 		include_spip('inc/article_select');
 		$row = article_select($new, $id_rubrique, $lier_trad);
+		if (is_numeric($new)) $new = '';
 	}
 	// Gaffe: sans ceci, on ecrase systematiquement l'article d'origine
 	// (et donc: pas de lien de traduction)
 	$id_trad = $row['id_article'];
+
 	$id_article = $lier_trad ? '' : $id_trad;
 	$id_rubrique = $row['id_rubrique'];
 	$id_secteur = $row['id_secteur'];
@@ -80,22 +82,23 @@ function editer_article_texte($texte, $config, $aider)
 		.  afficher_barre('document.formulaire.texte')
 		. '</div>';
 	} else $afficher_barre = '';
-	return
-		"<p><b>" ._T('info_texte') ."</b>" . 
-		$aider ("arttexte") . "<br />\n" .
-		_T('texte_enrichir_mise_a_jour') .
-		$aider("raccourcis") .
-		'<br />' .
-		$sup .
-		'</p>' .
-		$afficher_barre .
-		"<textarea id='text_area' name='texte'$att_text>$texte</textarea>\n"
-	  ."<script type='text/javascript'><!--\njQuery(hauteurTextarea);\n//--></script>\n";
+	return	"\n<p><b>" ._T('info_texte') ."</b>"
+	. $aider ("arttexte") . "<br />\n" 
+	. _T('texte_enrichir_mise_a_jour')
+	. $aider("raccourcis")
+	. "<br />"
+	. $sup
+	. "</p>\n"
+	. $afficher_barre
+	.  "<textarea id='text_area' name='texte'$att_text>"
+	.  $texte
+	. "</textarea>\n"
+	. (_DIR_RESTREINT ? '' : "<script type='text/javascript'><!--\njQuery(hauteurTextarea);\n//--></script>\n");
 }
 
 function editer_article_titre($titre, $onfocus, $config, $aider)
 {
-	return	'<p>' .
+	return	"\n<p>" .
 		_T('texte_titre_obligatoire') .
 		$aider("arttitre") .
 		"\n<br /><input type='text' name='titre' style='font-weight: bold; font-size: 13px;' class='formo' value=\"" .
@@ -126,7 +129,7 @@ function editer_article_surtitre($surtitre, $config, $aider)
 	if (($config['articles_surtitre'] == 'non') AND !$surtitre)
 		return '';
 
-	return ( "<p><b>" .
+	return ( "\n<p><b>" .
 		 _T('texte_sur_titre') .
 		"</b>" .
 		$aider ("arttitre") .
@@ -140,7 +143,7 @@ function editer_article_soustitre($soustitre, $config, $aider)
 	if (($config['articles_soustitre'] == "non") AND !$soustitre)
 		return '';
 
-	return ("<p><b>" .
+	return ("\n<p><b>" .
 		  _T('texte_sous_titre') .
 		  "</b>" .
 		  $aider ("arttitre") .
@@ -154,12 +157,14 @@ function editer_article_descriptif($descriptif, $config, $aider)
 	if (($config['articles_descriptif'] == "non") AND !$descriptif)
 		return '';
 
+	$msg = _T('texte_contenu_article');
 	return ("\n<p><b>" ._T('texte_descriptif_rapide') ."</b>" .
 		  $aider("artdesc") .
-		  "<br />" ._T('texte_contenu_article') ."<br />\n" .
-		  "<textarea name='descriptif' class='forml' rows='2' cols='40'>" .
+		"<br />\n" . 
+		(!trim($msg) ? '' : "$msg<br />\n") .
+		"<textarea name='descriptif' class='forml' rows='2' cols='40'>" .
 		entites_html($descriptif) .
-		"</textarea></p>\n");
+		"\n</textarea></p>");
 }
 
 function editer_article_url($url, $nom, $config, $aider)
@@ -267,7 +272,7 @@ function editer_article_chapo($chapo, $config, $aider)
 			return '';
 
 		$rows = $config['lignes'];
-		return "<p><br /><b>"._T('info_chapeau')."</b>" .
+		return "\n<p><br /><b>"._T('info_chapeau')."</b>" .
 			$aider ("artchap") .
 		  	"\n<br />"._T('texte_introductif_article')."<br />\n" .
 			"<textarea name='chapo' class='forml' rows='$rows' cols='40'>" .