From 250db8ba3c6c4286abdbe93257e60be358861081 Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Mon, 14 Aug 2006 14:44:12 +0000
Subject: [PATCH] =?UTF-8?q?Insertion/modification=20d'un=20article=20g?=
 =?UTF-8?q?=C3=A9r=C3=A9e=20par=20un=20script=20de=20action/,=20non=20plus?=
 =?UTF-8?q?=20par=20exec/articles.php.=20Toutefois,=20la=20gestion=20de=20?=
 =?UTF-8?q?id=5Ftrad=20est=20encore=20assur=C3=A9e=20par=20celui-ci,=20le?=
 =?UTF-8?q?=20script=20action/editer=5Farticle=20lui=20donnant=20les=20inf?=
 =?UTF-8?q?ormations=20pour=20ce=20faire=20(provisoire=20en=20attendant=20?=
 =?UTF-8?q?de=20bien=20cerner=20tous=20les=20cas=20d'appels).?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .gitattributes                   |   1 +
 ecrire/action/editer_article.php | 167 ++++++++++++++++++++++++++++++
 ecrire/exec/articles.php         | 172 ++-----------------------------
 ecrire/exec/articles_edit.php    |  76 +++++++-------
 4 files changed, 218 insertions(+), 198 deletions(-)
 create mode 100644 ecrire/action/editer_article.php

diff --git a/.gitattributes b/.gitattributes
index 8dca00349b..8b0002f3f1 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -27,6 +27,7 @@ ecrire/action/ajouter.php -text
 ecrire/action/autoriser.php -text
 ecrire/action/dater.php -text
 ecrire/action/documenter.php -text
+ecrire/action/editer_article.php -text
 ecrire/action/ical.php -text
 ecrire/action/iconifier.php -text
 ecrire/action/instituer_article.php -text
diff --git a/ecrire/action/editer_article.php b/ecrire/action/editer_article.php
new file mode 100644
index 0000000000..da51bc3a64
--- /dev/null
+++ b/ecrire/action/editer_article.php
@@ -0,0 +1,167 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2006                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+function action_editer_article_dist() {
+
+	include_spip('inc/actions');
+	$var_f = charger_fonction('controler_action_auteur', 'inc');
+	$var_f();
+
+	$arg = _request('arg');
+	$lier_trad = _request('lier_trad');
+	$id_parent =_request('id_parent');
+
+	if (!$id_article = intval($arg)) {
+		if ($arg != 'oui') redirige_par_entete('./');
+	        $id_article = insert_article($id_parent);
+	}
+
+	// id_article_bloque,  globale dans inc/presentation 
+	$redirect = _request('redirect')
+	. "&id_article=$id_article&id_article_bloque=$id_article"
+	  . ($arg=='oui' ? '&new=oui' : '')
+	  . ($lier_trad ? "&lier_trad=$lier_trad" : '') ;  
+
+	articles_set($id_article, $id_parent, $arg=='oui');
+
+	redirige_par_entete(urldecode($redirect));
+}
+
+function insert_article($id_parent)
+{
+	include_spip('base/abstract_sql');
+	$id_auteur =  _request('id_auteur');
+	$id_parent =  _request('id_parent');
+
+	// Avec l'Ajax parfois id_rubrique vaut 0... ne pas l'accepter
+	if (!$id_rubrique = intval($id_parent)) {
+		$row = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0 ORDER by 0+titre,titre LIMIT 1"));
+		$id_rubrique = $row['id_rubrique'];
+	}
+
+	$row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
+
+	$id_article = spip_abstract_insert("spip_articles",
+			"(id_rubrique, statut, date, accepter_forum, lang, langue_choisie)", 
+			"($id_rubrique, 'prepa', NOW(), '" .
+				substr($GLOBALS['meta']['forums_publics'],0,3)
+				. "', '"
+				. ($row["lang"] ? $row["lang"] : $GLOBALS['meta']['langue_site'])
+				. "', 'non')");
+	spip_abstract_insert('spip_auteurs_articles', "(id_auteur,id_article)", "('$id_auteur','$id_article')");
+	return $id_article;
+}
+
+function articles_set($id_article, $id_rubrique, $new)
+{
+
+	include_spip('inc/filtres');
+	include_spip('inc/rubriques');
+	if (!strlen($titre_article=corriger_caracteres($_POST['titre'])))
+		$titre_article = _T('info_sans_titre');
+
+	revisions_articles($id_article, $id_rubrique, $titre_article, $new);
+}
+
+function revisions_articles ($id_article, $id_rubrique, $titre_article) {
+{
+	global $flag_revisions, $champs_extra;
+
+	$id_auteur =  _request('id_auteur');
+	$texte = trop_longs_articles(_request('texte_plus')) . _request('texte');
+	$champs = array(
+		'surtitre' => corriger_caracteres(_request('surtitre')),
+		'titre' => $titre_article,
+		'soustitre' => corriger_caracteres(_request('soustitre')),
+		'descriptif' => corriger_caracteres(_request('descriptif')),
+		'nom_site' => corriger_caracteres(_request('nom_site')),
+		'url_site' => corriger_caracteres(_request('url_site')),
+		'chapo' => corriger_caracteres( _request('chapo')),
+		'texte' => corriger_caracteres($texte),
+		'ps' => corriger_caracteres(_request('ps')))  ;
+
+	// Stockage des versions : creer une premier version si non-existante
+	if (($GLOBALS['meta']["articles_versions"]=='oui') && $flag_revisions) {
+		include_spip('inc/revisions');
+		if  (!$new) {
+			$query = spip_query("SELECT id_article FROM spip_versions WHERE id_article=$id_article LIMIT 1");
+			if (!spip_num_rows($query)) {
+				$select = join(", ", array_keys($champs));
+				$query = spip_query("SELECT $select FROM spip_articles WHERE id_article=$id_article");
+				$champs_originaux = spip_fetch_array($query);
+				$id_version = ajouter_version($id_article, $champs_originaux, _T('version_initiale'), 0);
+
+				// Remettre une date un peu ancienne pour la version initiale 
+				if ($id_version == 1) // test inutile ?
+				spip_query("UPDATE spip_versions SET date=DATE_SUB(NOW(), INTERVAL 2 HOUR) WHERE id_article=$id_article AND id_version=1");
+			}
+		}
+	}
+
+	if ($champs_extra) {
+		include_spip('inc/extra');
+		$champs_extra = extra_recup_saisie("articles", _request('id_secteur'));
+	}
+
+	spip_query("UPDATE spip_articles SET surtitre=" . spip_abstract_quote($champs['surtitre']) . ", titre=" . spip_abstract_quote($champs['titre']) . ", soustitre=" . spip_abstract_quote($champs['soustitre']) . ", id_rubrique=" .			   intval($id_rubrique) .		   ", descriptif=" . spip_abstract_quote($champs['descriptif']) . ", chapo=" . spip_abstract_quote($champs['chapo']) . ", texte=" . spip_abstract_quote($champs['texte']) . ", ps=" . spip_abstract_quote($champs['ps']) . ", url_site=" . spip_abstract_quote($champs['url_site']) . ", nom_site=" . spip_abstract_quote($champs['nom_site']) . ", date_modif=NOW() " . ($champs_extra ? (", extra = " . spip_abstract_quote($champs_extra)) : '') . " WHERE id_article=$id_article");
+
+	// Stockage des versions
+	if (($GLOBALS['meta']["articles_versions"]=='oui') && $flag_revisions) {
+		ajouter_version($id_article, $champs, '', $id_auteur);
+	}
+
+	// marquer le fait que l'article est travaille par toto a telle date
+	// une alerte sera donnee aux autres redacteurs sur exec=articles
+	if ($GLOBALS['meta']['articles_modif'] != 'non') {
+		include_spip('inc/drapeau_edition');
+		if ($id_article)
+			signale_edition ($id_article, $id_auteur, 'article');
+	}
+
+
+	// Changer la langue heritee
+	if ($id_rubrique != _request('id_rubrique_old')) {
+		propager_les_secteurs();
+		$row = spip_fetch_array(spip_query("SELECT lang, langue_choisie FROM spip_articles WHERE id_article=$id_article"));
+		$langue_old = $row['lang'];
+		$langue_choisie_old = $row['langue_choisie'];
+
+		if ($langue_choisie_old != "oui") {
+			$row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
+			$langue_new = $row['lang'];
+			if ($langue_new != $langue_old)
+				spip_query("UPDATE spip_articles SET lang = '$langue_new' WHERE id_article = $id_article");
+		}
+	}
+
+	calculer_rubriques();
+ }
+}
+
+
+//
+// Reunit les textes decoupes parce que trop longs
+//
+
+function trop_longs_articles($texte_plus)
+{
+	$nb_texte = 0;
+	while ($nb_texte ++ < count($texte_plus)+1){
+		$texte_ajout .= ereg_replace("<!--SPIP-->[\n\r]*","",
+					     $texte_plus[$nb_texte]);
+	}
+	return $texte_ajout;
+}
+
+?>
diff --git a/ecrire/exec/articles.php b/ecrire/exec/articles.php
index 5c67712f07..a041a5a340 100644
--- a/ecrire/exec/articles.php
+++ b/ecrire/exec/articles.php
@@ -31,14 +31,11 @@ function exec_articles_dist()
 	$id_parent = intval($id_parent);
 	$lier_trad = intval($lier_trad);
 	$supp_mot = intval($supp_mot);
-	if (!($id_article=intval($id_article))) {
-		if ($new!='oui')  redirige_par_entete("./");
-		$id_article = insert_article($id_parent);
-	}
+	$id_article= intval($id_article);
 
 	pipeline('exec_init',array('args'=>array('exec'=>'articles','id_article'=>$id_article),'data'=>''));
 
-	$row = spip_fetch_array(spip_query("SELECT statut, id_rubrique FROM spip_articles WHERE id_article=$id_article"));
+	$row = spip_fetch_array(spip_query("SELECT * FROM spip_articles WHERE id_article=$id_article"));
 
 	if (!$row) {
 	   // cas du numero hors table
@@ -52,42 +49,9 @@ function exec_articles_dist()
 
 	$id_rubrique = $row['id_rubrique'];
 	$statut_article = $row['statut'];
-	$statut_rubrique = acces_rubrique($id_rubrique);
-
-	$flag_auteur = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs_articles WHERE id_article=$id_article AND id_auteur=$connect_id_auteur LIMIT 1"));
-
-	$flag_modifiable = ($flag_auteur OR $statut_rubrique);
-
-	if ($flag_modifiable AND $id_parent)
- // Les redacteurs ont le droit de changer la rubrique destination
- // avant la publication de l'article, mais plus apres
-			$id_rubrique = $id_parent;
-
-	$flag_editable = ($flag_modifiable OR ($flag_auteur AND ($statut_article == 'prepa' OR $statut_article == 'prop' OR $statut_article == 'poubelle')));
-
-	if ($flag_editable) {
-		if (isset($_POST['titre'])) {
-   // id_article_bloque,  globale dans inc/presentation 
-			$id_article_bloque =     $id_article;  
-			articles_set($id_article, $id_rubrique, $flag_modifiable);
-		}
-
-	// renvoyer vers la page de l'article
-		if ($new == 'oui'
-		AND ! $lier_trad  # sauf dans le cas d'un lier_trad car le code de mise a jour du lien est au meme endroit que l'affichage (a corriger).
-		    )
-			redirige_par_entete(
-				generer_url_ecrire('articles', 'id_article='.$id_article, '&'));
-	}
-
-	// recharger apres mise a jour de articles_set
-	$row = spip_fetch_array(spip_query("SELECT * FROM spip_articles WHERE id_article='$id_article'"));
-
-	$id_article = $row["id_article"];
 	$surtitre = $row["surtitre"];
 	$titre = $row["titre"];
 	$soustitre = $row["soustitre"];
-	$id_rubrique = $row["id_rubrique"];
 	$descriptif = $row["descriptif"];
 	$nom_site = $row["nom_site"];
 	$url_site = $row["url_site"];
@@ -95,7 +59,6 @@ function exec_articles_dist()
 	$texte = $row["texte"];
 	$ps = $row["ps"];
 	$date = $row["date"];
-	$statut_article = $row["statut"];
 	$maj = $row["maj"];
 	$date_redac = $row["date_redac"];
 	$visites = $row["visites"];
@@ -104,6 +67,14 @@ function exec_articles_dist()
 	$id_trad = $row["id_trad"];
 	$id_version = $row["id_version"];
 	
+	$statut_rubrique = acces_rubrique($id_rubrique);
+
+	$flag_auteur = spip_num_rows(spip_query("SELECT id_auteur FROM spip_auteurs_articles WHERE id_article=$id_article AND id_auteur=$connect_id_auteur LIMIT 1"));
+
+	$flag_modifiable = ($flag_auteur OR $statut_rubrique);
+
+	$flag_editable = ($flag_modifiable OR ($flag_auteur AND ($statut_article == 'prepa' OR $statut_article == 'prop' OR $statut_article == 'poubelle')));
+
 	// aucun doc implicitement inclus au depart.
 	inclus_non_articles($id_article);
 	
@@ -127,7 +98,7 @@ boite_info_articles($id_article, $statut_article, $visites, $id_version);
 // Logos de l'article
 //
 
-  if ($id_article AND $flag_editable AND ($spip_display != 4)) {
+  if ($flag_editable AND ($spip_display != 4)) {
 	  include_spip('inc/chercher_logo');
 	  echo afficher_boite_logo('id_article', $id_article,
 			      _T('logo_article').aide ("logoart"), _T('logo_survol'), 'articles');
@@ -1179,21 +1150,6 @@ function formulaire_instituer_article($id_article, $statut, $script, $args)
   */
 }
 
-
-//
-// Reunit les textes decoupes parce que trop longs
-//
-
-function trop_longs_articles($texte_plus)
-{
-	$nb_texte = 0;
-	while ($nb_texte ++ < count($texte_plus)+1){
-		$texte_ajout .= ereg_replace("<!--SPIP-->[\n\r]*","",
-					     $texte_plus[$nb_texte]);
-	}
-	return $texte_ajout;
-}
-
 // Passer les images/docs en "inclus=non"
 
 function inclus_non_articles($id_article)
@@ -1212,110 +1168,4 @@ if (count($ze_doc)>0){
 
 }
 
-function revisions_articles ($id_article, $id_rubrique, $change_rubrique, $titre_article) {
-{
-	global $connect_id_auteur, $flag_revisions, $champs_extra;
-
-	$texte = trop_longs_articles(_request('texte_plus')) . _request('texte');
-	$new = _request('new');
-	$champs = array(
-		'surtitre' => corriger_caracteres(_request('surtitre')),
-		'titre' => $titre_article,
-		'soustitre' => corriger_caracteres(_request('soustitre')),
-		'descriptif' => corriger_caracteres(_request('descriptif')),
-		'nom_site' => corriger_caracteres(_request('nom_site')),
-		'url_site' => corriger_caracteres(_request('url_site')),
-		'chapo' => corriger_caracteres( _request('chapo')),
-		'texte' => corriger_caracteres($texte),
-		'ps' => corriger_caracteres(_request('ps')))  ;
-
-	// Stockage des versions : creer une premier version si non-existante
-	if (($GLOBALS['meta']["articles_versions"]=='oui') && $flag_revisions) {
-		include_spip('inc/revisions');
-		if  ($new != 'oui') {
-			$query = spip_query("SELECT id_article FROM spip_versions WHERE id_article=$id_article LIMIT 1");
-			if (!spip_num_rows($query)) {
-				$select = join(", ", array_keys($champs));
-				$query = spip_query("SELECT $select FROM spip_articles WHERE id_article=$id_article");
-				$champs_originaux = spip_fetch_array($query);
-				$id_version = ajouter_version($id_article, $champs_originaux, _T('version_initiale'), 0);
-
-				// Remettre une date un peu ancienne pour la version initiale 
-				if ($id_version == 1) // test inutile ?
-				spip_query("UPDATE spip_versions SET date=DATE_SUB(NOW(), INTERVAL 2 HOUR) WHERE id_article=$id_article AND id_version=1");
-			}
-		}
-	}
-
-	if ($champs_extra) {
-		include_spip('inc/extra');
-		$champs_extra = extra_recup_saisie("articles", _request('id_secteur'));
-	}
-
-	spip_query("UPDATE spip_articles SET surtitre=" . spip_abstract_quote($champs['surtitre']) . ", titre=" . spip_abstract_quote($champs['titre']) . ", soustitre=" . spip_abstract_quote($champs['soustitre']) . ", id_rubrique=" .			   intval($id_rubrique) .		   ", descriptif=" . spip_abstract_quote($champs['descriptif']) . ", chapo=" . spip_abstract_quote($champs['chapo']) . ", texte=" . spip_abstract_quote($champs['texte']) . ", ps=" . spip_abstract_quote($champs['ps']) . ", url_site=" . spip_abstract_quote($champs['url_site']) . ", nom_site=" . spip_abstract_quote($champs['nom_site']) . ", date_modif=NOW() " . ($champs_extra ? (", extra = " . spip_abstract_quote($champs_extra)) : '') . " WHERE id_article=$id_article");
-
-	// Stockage des versions
-	if (($GLOBALS['meta']["articles_versions"]=='oui') && $flag_revisions) {
-		ajouter_version($id_article, $champs, '', $connect_id_auteur);
-	}
-
-	// marquer le fait que l'article est travaille par toto a telle date
-	// une alerte sera donnee aux autres redacteurs sur exec=articles
-	if ($GLOBALS['meta']['articles_modif'] != 'non') {
-		include_spip('inc/drapeau_edition');
-		if ($id_article)
-			signale_edition ($id_article, $connect_id_auteur, 'article');
-	}
-
-
-	// Changer la langue heritee
-	if ($id_rubrique != _request('id_rubrique_old')) {
-		propager_les_secteurs();
-		$row = spip_fetch_array(spip_query("SELECT lang, langue_choisie FROM spip_articles WHERE id_article=$id_article"));
-		$langue_old = $row['lang'];
-		$langue_choisie_old = $row['langue_choisie'];
-
-		if ($langue_choisie_old != "oui") {
-			$row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
-			$langue_new = $row['lang'];
-			if ($langue_new != $langue_old)
-				spip_query("UPDATE spip_articles SET lang = '$langue_new' WHERE id_article = $id_article");
-		}
-	}
-
-	calculer_rubriques();
- }
-}
-
-function insert_article($id_parent)
-{
-	global $connect_id_auteur;
-	// Avec l'Ajax parfois id_rubrique vaut 0... ne pas l'accepter
-	if (!$id_rubrique = intval($id_parent)) {
-		$row = spip_fetch_array(spip_query("SELECT id_rubrique FROM spip_rubriques WHERE id_parent=0 ORDER by 0+titre,titre LIMIT 1"));
-		$id_rubrique = $row['id_rubrique'];
-	}
-
-	$row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_rubrique"));
-
-	$id_article = spip_abstract_insert("spip_articles",
-			"(id_rubrique, statut, date, accepter_forum, lang, langue_choisie)", 
-			"($id_rubrique, 'prepa', NOW(), '" .
-				substr($GLOBALS['meta']['forums_publics'],0,3)
-				. "', '"
-				. ($row["lang"] ? $row["lang"] : $GLOBALS['meta']['langue_site'])
-				. "', 'non')");
-	spip_abstract_insert('spip_auteurs_articles', "(id_auteur,id_article)", "('$connect_id_auteur','$id_article')");
-	return $id_article;
-}
-
-function articles_set($id_article, $id_rubrique, $statut)
-{
-
-   if (!strlen($titre_article=corriger_caracteres($_POST['titre'])))
-		$titre_article = _T('info_sans_titre');
-
-   revisions_articles ($id_article, $id_rubrique, $statut, $titre_article);
-}
-
 ?>
diff --git a/ecrire/exec/articles_edit.php b/ecrire/exec/articles_edit.php
index 0a6f4e6027..dedd3ba4ab 100644
--- a/ecrire/exec/articles_edit.php
+++ b/ecrire/exec/articles_edit.php
@@ -99,7 +99,7 @@ function chapo_articles_edit($chapo, $articles_chapeau)
 			else $rows = 5;
 			return "<br /><B>"._T('info_chapeau')."</B>" .
 				aide ("artchap") .
-				"<BR>"._T('texte_introductif_article')."<BR>" .
+				"\n<br />"._T('texte_introductif_article')."<br />\n" .
 				"<textarea name='chapo' class='forml' rows='$rows' COLS='40' wrap=soft>" .
 				$chapo .
 				"</textarea><P>\n";
@@ -157,38 +157,23 @@ function formulaire_articles_edit($row, $lier_trad, $new, $champs_article) {
 	if ($champs_extra) include_spip('inc/extra');
 
 	$selecteur_rubrique = charger_fonction('chercher_rubrique', 'inc');
-	return
-		"\n<table cellpadding='0' cellspacing='0' border='0' width='100%'>" .
-		"<tr width='100%'>" .
-		"<td>" .
-		($lier_trad ?
-		 icone(_T('icone_retour'), generer_url_ecrire("articles","id_article=$lier_trad"), "article-24.gif", "rien.gif", '',false) :
-		 icone(_T('icone_retour'), generer_url_ecrire("articles","id_article=$id_trad"), "article-24.gif", "rien.gif",'',false)) .
-		"</td>\n<td>" .
-		http_img_pack('rien.gif', " ", "width='10'") .
-		"</td>\n" .
-		"<td width='100%'>" .
-	 	_T('texte_modifier_article') .
-		gros_titre($gros_titre,'',false) . 
-		"</td></tr></table><p><hr /><p>" .
+	$redirect = generer_url_ecrire("articles");
 
-		generer_url_post_ecrire("articles", ($id_article ? "id_article=$id_article" : ""),'formulaire','',' onchange="disable_other_forms(this);"') .
-		(!$new ? '' : "<input type='hidden' name='new' value='oui' />") .
-		(!$lier_trad ? '' :
-		 ("<input type='hidden' name='lier_trad' value='" .
+	$form = (!$lier_trad ? '' :
+		 ("\n<input type='hidden' name='lier_trad' value='" .
 		  $lier_trad .
 		  "' />" .
-		  "<input type='hidden' name='changer_lang' value='" .
+		  "\n<input type='hidden' name='changer_lang' value='" .
 		  $spip_lang .
 		  "' />")) .
 
 		(!(($options == "avancees" AND $articles_surtitre) OR $surtitre)?
-			("<input type='hidden' name='surtitre' value=\"$surtitre\" />") :
+			("\n<input type='hidden' name='surtitre' value=\"$surtitre\" />") :
 			( "<b>" .
 			  _T('texte_sur_titre') .
 			  "</b>" .
 			  aide ("arttitre") .
-			  "<br /><input type='text' name='surtitre' class='forml' value=\"" .
+			  "<br />\n<input type='text' name='surtitre' class='forml' value=\"" .
 			  $surtitre .
 			  "\" size='40'" .
 // Pour faire fonctionner le onchange sur Safari il faudrait modifier
@@ -208,10 +193,10 @@ function formulaire_articles_edit($row, $lier_trad, $new, $champs_article) {
 		  _T('texte_sous_titre') .
 		  "</b>" .
 		  aide ("arttitre") .
-		  "<br /><input type='text' name='soustitre' class='forml' value=\"" .
+		  "\n<br /><input type='text' name='soustitre' class='forml' value=\"" .
 		  $soustitre .
-		  "\" size='40' /><br /><br />") :
-		 ("<input type='hidden' name='soustitre' value=\"$soustitre\" />")) .
+		  "\" size='40' /><br /><br />\n") :
+		 ("\n<input type='hidden' name='soustitre' value=\"$soustitre\" />")) .
 
 		debut_cadre_couleur($logo, true, "", _T('titre_cadre_interieur_rubrique'). aide("artrub")) .
 
@@ -219,28 +204,28 @@ function formulaire_articles_edit($row, $lier_trad, $new, $champs_article) {
 
 		fin_cadre_couleur(true) .
 	
-		($new ? '' : "<input type='hidden' name='id_rubrique_old' value='$id_rubrique'>") .
+		($new ? '' : "\n<input type='hidden' name='id_rubrique_old' value='$id_rubrique'>") .
 
 		((($options == "avancees" AND $articles_descriptif) OR $descriptif)?
-		 ("<P><B>" ._T('texte_descriptif_rapide') ."</B>" .
+		 ("\n<P><B>" ._T('texte_descriptif_rapide') ."</B>" .
 		  aide ("artdesc") .
-		  "</p><br />" ._T('texte_contenu_article') ."<br />" .
+		  "</p>\n<br />" ._T('texte_contenu_article') ."<br />\n" .
 		  "<textarea name='descriptif' class='forml' rows='2' cols='40' wrap=soft>" .
 		  $descriptif .
 		  "</textarea>\n") :
-		 ("<INPUT TYPE='hidden' NAME='descriptif' VALUE=\"$descriptif\" />")) .
+		 ("<input type='hidden' name='descriptif' value=\"$descriptif\" />")) .
 
 		((($options == "avancees" AND $articles_urlref) OR $nom_site OR $url_site) ?
 		 (_T('entree_liens_sites') ."<br />\n" .
 		  _T('info_titre') ." " .
-		  "<input type='text' name='nom_site' class='forml' width='40' value=\"$nom_site\"/><br />\n" .
-		  _T('info_url') ." " .
-		  "<input type='text' name='url_site' class='forml' width='40' value=\"$url_site\"/>") : '') .
+		  "\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) .
 
 		"<b>" ._T('info_texte') ."</b>" . 
-		aide ("arttexte") . "<br />" .
+		aide ("arttexte") . "<br />\n" .
 		_T('texte_enrichir_mise_a_jour') .
 		aide("raccourcis") .
 		$sup .
@@ -248,16 +233,33 @@ function formulaire_articles_edit($row, $lier_trad, $new, $champs_article) {
 		"<textarea id='text_area' name='texte'$att_text>$texte</textarea>\n" .
 
 		((($articles_ps AND $options == "avancees") OR $ps) ?
-		 ("<p><b>" . _T('info_post_scriptum') ."</b><br />" . "<textarea name='ps' class='forml' rows='5' cols='40' wrap=soft>" . $ps . "</textarea></p><p>\n") :
+		 ("\n<p><b>" . _T('info_post_scriptum') ."</b><br />" . "<textarea name='ps' class='forml' rows='5' cols='40' wrap=soft>" . $ps . "</textarea></p><p>\n") :
 		 ("<input type='hidden' name='ps' value=\"" . $ps . "\">")) .
 
 		(!$champs_extra ? '': extra_saisie($extra, 'articles', $id_secteur, false)) .
 
-		(!$date ? '' : ("<input type='hidden' name='date' value=\"$date\" size='40'><P>")) .
+		(!$date ? '' : ("\n<input type='hidden' name='date' value=\"$date\" size='40'><P>")) .
+
+		(!$new ? '' : ("\n<input type='hidden' name='statut_nouv' value=\"prepa\" SIZE='40' /><p>")) .
 
-		(!$new ? '' : ("<input type='hidden' name='statut_nouv' value=\"prepa\" SIZE='40' /><p>")) .
+		"<div align='right'><input class='fondo' type='submit' value='" . _T('bouton_enregistrer') . "'></div>";
+
+	return
+		"\n<table cellpadding='0' cellspacing='0' border='0' width='100%'>" .
+		"<tr width='100%'>" .
+		"\n<td>" .
+		($lier_trad ?
+		 icone(_T('icone_retour'), generer_url_ecrire("articles","id_article=$lier_trad"), "article-24.gif", "rien.gif", '',false) :
+		 icone(_T('icone_retour'), generer_url_ecrire("articles","id_article=$id_trad"), "article-24.gif", "rien.gif",'',false)) .
+		"</td>\n<td>" .
+		http_img_pack('rien.gif', " ", "width='10'") .
+		"</td>\n" .
+		"<td width='100%'>" .
+	 	_T('texte_modifier_article') .
+		gros_titre($gros_titre,'',false) . 
+		"</td></tr></table><p><hr />\n<p>" .
+	  generer_action_auteur("editer_article", $new ? $new : $id_article, $redirect, $form, " method='post' name='formulaire' onchange='disable_other_forms(this);'");
 
-		"<div align='right'><input class='fondo' type='submit' value='" . _T('bouton_enregistrer') . "'></div></form>";
 }
 
 function exec_articles_edit_dist()
-- 
GitLab