diff --git a/ecrire/inc/article_select.php b/ecrire/inc/article_select.php
index 8debbe279d082ebb080ab5e16b7c6feb2fe13bc5..0728206445a91b21793d5bbc43abcc589b0d7cb1 100644
--- a/ecrire/inc/article_select.php
+++ b/ecrire/inc/article_select.php
@@ -49,9 +49,8 @@ function article_select($id_article, $id_rubrique=0, $lier_trad=0, $id_version=0
 			}
 		}
 		return $row;
-
-	} else if ($id_article !='new') return array(); // anormal
-
+	}
+	// id_article non numerique, c'est une demande de creation.
 	// Si c'est une demande de nouvelle traduction, init specifique
 	if ($lier_trad)
 		$row = article_select_trad($lier_trad);
diff --git a/ecrire/inc/editer_article.php b/ecrire/inc/editer_article.php
index b7972d16e07ffb4a5d086001d001daf924a921cd..a1d202044fb1a4dab54579c0798451aae21a66cb 100644
--- a/ecrire/inc/editer_article.php
+++ b/ecrire/inc/editer_article.php
@@ -14,15 +14,8 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_spip('inc/actions');
 
-// http://doc.spip.org/@inc_editer_article
 function inc_editer_article_dist($new, $id_rubrique=0, $lier_trad=0, $retour='', $config=array(), $row=array()) {
 
-	$articles_soustitre = $config['articles_soustitre'] != "non";
-	$articles_surtitre = $config['articles_surtitre'] != 'non';
-	$articles_urlref = $config['articles_urlref'] != "non";
-	$articles_descriptif = $config['articles_descriptif'] != "non";
-	$articles_chapeau = $config['articles_chapeau'] != "non";
-	$articles_ps = $config['articles_ps'] != "non";
 
 	if ($afficher_barre = $config['afficher_barre'])
 		include_spip('inc/barre');
@@ -33,21 +26,12 @@ function inc_editer_article_dist($new, $id_rubrique=0, $lier_trad=0, $retour='',
 		include_spip('inc/article_select');
 		$row = article_select($new, $id_rubrique, $lier_trad);
 	}
-	$id_trad = $row['id_article'];
-	$gros_titre = $row['titre'];
 	// Gaffe: sans ceci, on ecrase systematiquement l'article d'origine
 	// (et donc: pas de lien de traduction)
 	$id_article = $lier_trad ? '' : $id_trad;
-
+	$id_trad = $row['id_article'];
 	$titre = entites_html($row['titre']);
-	$soustitre = entites_html($row['soustitre']);
-	$surtitre = entites_html($row['surtitre']);
-	$descriptif = entites_html($row['descriptif']);
-	$nom_site = entites_html($row['nom_site']);
-	$url_site = entites_html($row['url_site']);
-	$chapo = entites_html($row['chapo']);
 	$texte = entites_html($row['texte']);
-	$ps = entites_html($row['ps']);
 
 	$id_rubrique = $row['id_rubrique'];
 	$id_secteur = $row['id_secteur'];
@@ -56,17 +40,12 @@ function inc_editer_article_dist($new, $id_rubrique=0, $lier_trad=0, $retour='',
 	$statut = $row['statut'];
 	$onfocus = $row['onfocus']; // effacer le titre lorsque nouvel article
 	
-	if ($id_rubrique == 0) $logo = "racine-site-24.gif";
-	elseif ($id_secteur == $id_rubrique) $logo = "secteur-24.gif";
-	else $logo = "rubrique-24.gif";
-
-	$rows = $config['ligne'] +15;
+	$rows = $config['lignes'] +15;
 	$att_text = " class='formo' ".$GLOBALS['browser_caret']." rows='$rows' cols='40'";
 	if (strlen($texte)>29*1024) { // texte > 32 ko -> decouper en morceaux
-	  list($texte, $sup) = articles_edit_recolle($texte, $att_text);
+	  list($texte, $sup) = editer_article_recolle($texte, $att_text);
 	} else $sup='';
 
-	$chercher_rubrique = charger_fonction('chercher_rubrique', 'inc');
 	$aider = charger_fonction('aider', 'inc');
 
 	$form = "<input type='hidden' name='editer_article' value='oui' />\n" .
@@ -77,59 +56,22 @@ function inc_editer_article_dist($new, $id_rubrique=0, $lier_trad=0, $retour='',
 		  "\n<input type='hidden' name='changer_lang' value='" .
 		  $config['langue'] .
 		  "' />")) .
-
-		(!($articles_surtitre OR $surtitre)?
-			("\n<input type='hidden' name='surtitre' value=\"$surtitre\" />") :
-			( "<b>" .
-			  _T('texte_sur_titre') .
-			  "</b>" .
-			  $aider ("arttitre") .
-			  "<br />\n<input type='text' name='surtitre' class='forml' value=\"" .
-			  $surtitre .
-			  "\" size='40' /><p>")) .
+		editer_article_surtitre($row, $config, $aider) .
 		_T('texte_titre_obligatoire') .
-		$aider ("arttitre") .
+		$aider("arttitre") .
 		"\n<br /><input type='text' name='titre' style='font-weight: bold; font-size: 13px;' class='formo' value=\"" .
 		$titre .
 		"\" size='40' " .
 		$onfocus .
-		" />\n</p><p>" .
-
-		(($articles_soustitre OR strlen($soustitre)) ?
-		 ("<b>" .
-		  _T('texte_sous_titre') .
-		  "</b>" .
-		  $aider ("arttitre") .
-		  "\n<br /><input type='text' name='soustitre' class='forml' value=\"" .
-		  $soustitre .
-		  "\" size='40' /><br /><br /></p>\n") :
-		 '') .
+		" />\n</p>" .
 
-		debut_cadre_couleur($logo, true, "", _T('titre_cadre_interieur_rubrique'). $aider("artrub")) .
+		editer_article_soustitre($row, $config, $aider) .
+		editer_article_rubrique($row, $config, $aider) .
+		editer_article_descriptif($row, $config, $aider) .
+		editer_article_url($row, $config, $aider) .
+		editer_article_chapo($row, $config, $aider) .
 
-		$chercher_rubrique($id_rubrique, 'article', ($statut == 'publie')) .
-
-		fin_cadre_couleur(true) .
-	
-		(($articles_descriptif OR strlen($descriptif))?
-		 ("\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'>" .
-		  $descriptif .
-		  "</textarea>\n") :
-		 '') .
-
-		(($articles_urlref OR $nom_site OR $url_site) ?
-		 ('<br />' . _T('entree_liens_sites') ."<br />\n" .
-		  _T('info_titre') ." " .
-		  "\n<input type='text' name='nom_site' class='forml' width='40' value=\"$nom_site\"/><br />\n" .
-		  _T('info_url') .
-		  "\n<input type='text' name='url_site' class='forml' width='40' value=\"$url_site\"/>\n") : '') .
-
-		chapo_articles_edit($chapo, $articles_chapeau, $config['lignes']) .
-
-		"</p><p><b>" ._T('info_texte') ."</b>" . 
+		"<p><b>" ._T('info_texte') ."</b>" . 
 		$aider ("arttexte") . "<br />\n" .
 		_T('texte_enrichir_mise_a_jour') .
 		$aider("raccourcis") .
@@ -137,16 +79,11 @@ function inc_editer_article_dist($new, $id_rubrique=0, $lier_trad=0, $retour='',
 		$sup .
 		(!$afficher_barre ? '' : afficher_barre('document.formulaire.texte')) .
 		"<textarea id='text_area' name='texte'$att_text>$texte</textarea>\n"
-		."<script type='text/javascript'><!--\njQuery(hauteurTextarea);\n//--></script>\n"
+		."<script type='text/javascript'><!--\njQuery(hauteurTextarea);\n//--></script>\n" .
 
-		.
-
-		(($articles_ps OR strlen($ps)) ?
-		 ("\n</p><p><b>" . _T('info_post_scriptum') ."</b><br />" . "<textarea name='ps' class='forml' rows='5' cols='40'>" . $ps . "</textarea>\n") :
-		 '') .
+		editer_article_ps($row, $config, $aider) .
 
 		(!$config['extra'] ? '': extra_saisie($extra, 'articles', $id_secteur)) .
-
 		"<div align='right'><input class='fondo' type='submit' value='"
 		. _T('bouton_enregistrer')
 		. "' /></div></p>";
@@ -169,18 +106,104 @@ function inc_editer_article_dist($new, $id_rubrique=0, $lier_trad=0, $retour='',
 		"</td>\n" .
 		"<td width='100%'>" .
 	 	_T('texte_modifier_article') .
-		gros_titre($gros_titre,'',false) . 
+		gros_titre($row['titre'],'',false) . 
 		"</td></tr></table><hr />\n<p>" .
 	  generer_action_auteur("editer_article", $new ? $new : $id_article, $retour, $form, " method='post' name='formulaire'");
 
 }
 
+function editer_article_rubrique($row, $config, $aider)
+{
+	$chercher_rubrique = charger_fonction('chercher_rubrique', 'inc');
+
+	$id_rubrique = $row['id_rubrique'];
+	$id_secteur = $row['id_secteur'];
+	$statut = $row['statut'];
+
+	if ($id_rubrique == 0) $logo = "racine-site-24.gif";
+	elseif ($id_secteur == $id_rubrique) $logo = "secteur-24.gif";
+	else $logo = "rubrique-24.gif";
+
+	return debut_cadre_couleur($logo, true, "", _T('titre_cadre_interieur_rubrique'). $aider("artrub")) .
+
+	  $chercher_rubrique($id_rubrique, 'article', ($statut == 'publie')) .
+
+	  fin_cadre_couleur(true);
+}
+
+function editer_article_surtitre($row, $config, $aider)
+{
+	if (($config['articles_surtitre'] == 'non') AND !$row['surtitre'])
+		return '';
+
+	return ( "<p><b>" .
+		 _T('texte_sur_titre') .
+		"</b>" .
+		$aider ("arttitre") .
+		"<br />\n<input type='text' name='surtitre' class='forml' value=\"" .
+		 entites_html($row['surtitre']) .
+		 "\" size='40' /></p>");
+}
+
+function editer_article_soustitre($row, $config, $aider)
+{
+	if (($config['articles_soustitre'] == "non") AND !$row['soustitre'])
+		return '';
+
+	return ("<p><b>" .
+		  _T('texte_sous_titre') .
+		  "</b>" .
+		  $aider ("arttitre") .
+		  "\n<br /><input type='text' name='soustitre' class='forml' value=\"" .
+		  entites_html($row['soustitre']) .
+		"\" size='40' /><br /><br /></p>\n");
+}
+
+function editer_article_descriptif($row, $config, $aider)
+{
+	if (($config['articles_descriptif'] == "non") AND !$row['descriptif'])
+		return '';
+
+	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'>" .
+		entites_html($row['descriptif']) .
+		"</textarea></p>\n");
+}
+
+function editer_article_url($row, $config, $aider)
+{
+	if (($config['articles_urlref'] == "non") AND !$row['url_site'] AND $row['nom_site'])
+		return '';
+
+	$url_site = entites_html($row['url_site']);
+	$nom_site = entites_html($row['nom_site']);
+
+	return '<br />' . _T('entree_liens_sites') ."<br />\n" .
+	  _T('info_titre') ." " .
+	  "\n<input type='text' name='nom_site' class='forml' width='40' value=\"$nom_site\"/><br />\n" .
+	  _T('info_url') .
+	  "\n<input type='text' name='url_site' class='forml' width='40' value=\"$url_site\"/>\n";
+}
+
+function editer_article_ps($row, $config, $aider)
+{
+	if (($config['articles_ps'] == "non") AND !$row['ps'])
+		 return '';
+
+	return ("\n<p><b>"
+		. _T('info_post_scriptum')
+		."</b><br />"
+		. "<textarea name='ps' class='forml' rows='5' cols='40'>"
+		. entites_html($row['ps'])
+		. "</textarea></p>\n");
+}
 
 //
 // Gestion des textes trop longs (limitation brouteurs)
 // utile pour les textes > 32ko
 
-// http://doc.spip.org/@coupe_trop_long
 function coupe_trop_long($texte){
 	$aider = charger_fonction('aider', 'inc');
 	if (strlen($texte) > 28*1024) {
@@ -206,8 +229,7 @@ function coupe_trop_long($texte){
 		return (array($texte,''));
 }
 
-// http://doc.spip.org/@articles_edit_recolle
-function articles_edit_recolle($texte, $att_text)
+function editer_article_recolle($texte, $att_text)
 {
 	$textes_supplement = "<br /><font color='red'>"._T('info_texte_long')."</font>\n";
 	$nombre = 0;
@@ -224,16 +246,13 @@ function articles_edit_recolle($texte, $att_text)
 }
 
 
-// http://doc.spip.org/@chapo_articles_edit
-function chapo_articles_edit($chapo, $articles_chapeau, $rows)
+function editer_article_chapo($row, $config, $aider)
 {
-	$aider = charger_fonction('aider', 'inc');
+	$chapo = entites_html($row['chapo']);
+
 	if (substr($chapo, 0, 1) == '=') {
 		$virtuel = substr($chapo, 1);
-		$chapo = "";
-	}
 
-	if ($virtuel) {
 		return "<div style='border: 1px dashed #666666; background-color: #f0f0f0; padding: 5px;'>" .
 			"<table width=100% cellspacing=0 cellpadding=0 border=0>" .
 			"<tr><td valign='top'>" .
@@ -254,15 +273,16 @@ function chapo_articles_edit($chapo, $articles_chapeau, $rows)
 			"</div>\n";
 	} else {
 
-		if (($articles_chapeau) OR strlen($chapo)) {
-			return "<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'>" .
-				$chapo .
-				"</textarea>\n";
-		}
+		if (($config['articles_chapeau'] == "non") AND !$chapo)
+			return '';
+
+		$rows = $config['lignes'];
+		return "<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'>" .
+			$chapo .
+			"</textarea></p>\n";
 	}
 }
-
 ?>