diff --git a/.gitattributes b/.gitattributes
index eca76f96d96336f0ccb1b90aa59f33ace9741a40..596b42bab9224a1f20570bfb02d8ba04a52659df 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -309,6 +309,7 @@ ecrire/action/editer_auteurs.php -text
 ecrire/action/editer_forum.php -text
 ecrire/action/editer_mot.php -text
 ecrire/action/editer_rubrique.php -text
+ecrire/action/editer_signatures.php -text
 ecrire/action/ical.php -text
 ecrire/action/iconifier.php -text
 ecrire/action/instituer_article.php -text
diff --git a/ecrire/action/editer_signatures.php b/ecrire/action/editer_signatures.php
new file mode 100644
index 0000000000000000000000000000000000000000..fd97dccfb504db0b5ed3e893d58a5d63eab27682
--- /dev/null
+++ b/ecrire/action/editer_signatures.php
@@ -0,0 +1,56 @@
+<?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;
+
+include_spip('inc/actions');
+
+// Modifier le reglage des forums publics de l'article x
+// http://doc.spip.org/@action_poster_dist
+function action_editer_signatures_dist()
+{
+	$var_f = charger_fonction('controler_action_auteur', 'inc');
+	$var_f();
+
+	$arg = _request('arg');
+
+	if (!preg_match(",^(-?\d+)$,", $arg, $r)) {
+		 spip_log("action_editer_signature_dist $arg pas compris");
+	} else action_editer_signatures_post($r);
+}
+
+// http://doc.spip.org/@action_poster_post
+function action_editer_signatures_post($r)
+{
+	$id = intval($r[1]);
+
+	if ($id < 0){
+		$id = 0 - $id;
+		$result_forum = spip_query("UPDATE spip_signatures SET statut='poubelle' WHERE id_signature=$id");
+
+	} elseif ($id > 0){
+		$result_forum = spip_query("UPDATE spip_signatures SET statut='publie' WHERE id_signature=$id");
+
+	}
+spip_log("action_editer_signature_dist $id maj");
+	// Invalider les pages ayant trait aux petitions
+	if ($id) {
+		include_spip('inc/invalideur');
+		$id_article = spip_fetch_array(spip_query("SELECT id_article FROM spip_signatures WHERE id_signature=$id"));
+		$id_article = $id_article['id_article'];
+		suivre_invalideur("id='varia/pet$id_article'");
+	}
+
+	# cette requete devrait figurer dans l'optimisation
+	spip_query("DELETE FROM spip_signatures WHERE NOT (statut='publie' OR statut='poubelle') AND date_time<DATE_SUB(NOW(),INTERVAL 10 DAY)");
+}
+?>
diff --git a/ecrire/exec/controle_petition.php b/ecrire/exec/controle_petition.php
index 5024672de933670482849bfa29975cb57e5bacb1..874043c09830126732f33cc3eccad4ca12eeb1d3 100644
--- a/ecrire/exec/controle_petition.php
+++ b/ecrire/exec/controle_petition.php
@@ -15,71 +15,39 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 include_spip('inc/presentation');
 include_spip('inc/signatures');
 
-// http://doc.spip.org/@message_de_signature
-function message_de_signature($row)
-{
-  return propre(echapper_tags($row['message']));
-}
-
 // http://doc.spip.org/@exec_controle_petition_dist
 function exec_controle_petition_dist()
 {
-  global $connect_statut, $id_article, $add_petition, $supp_petition, $debut;
+	global $connect_statut, $id_article, $debut;
 
 	$id_article = intval($id_article);
-	$add_petition =  intval($add_petition);
-	$supp_petition =  intval($supp_petition);
 	$debut =  intval($debut);
 
 	debut_page(_T('titre_page_controle_petition'), "forum", "suivi-petition");
 	debut_gauche();
 
-debut_droite();
+	debut_droite();
   
-echo "<div class='serif2'>";
+	echo "<div class='serif2'>";
  
-if ($connect_statut == "0minirezo") {
-	gros_titre(_T('titre_suivi_petition'));
-
-	if ($supp_petition){
-		$result_forum = spip_query("UPDATE spip_signatures SET statut='poubelle' WHERE id_signature=$supp_petition");
-
-	}
-
-	if ($add_petition){
-		$result_forum = spip_query("UPDATE spip_signatures SET statut='publie' WHERE id_signature=$add_petition");
-
+	if ($connect_statut == "0minirezo") {
+		gros_titre(_T('titre_suivi_petition'));
+
+		$var_f = charger_fonction('signatures', 'inc');
+		$var_f('controle_petition',
+			$id_article,
+			$debut, 
+			"(statut='publie' OR statut='poubelle')",
+			"date_time DESC",
+			10);
+	} else {
+		echo "<b>"._T('avis_non_acces_page')."</b>";
 	}
 
-	// Invalider les pages ayant trait aux petitions
-	if ($id_signature = ($add_petition?$add_petition:$supp_petition)) {
-		include_spip('inc/invalideur');
-		$id_article = spip_fetch_array(spip_query("SELECT id_article FROM spip_signatures WHERE id_signature=$id_signature"));
-		$id_article = $id_article['id_article'];
-		suivre_invalideur("id='varia/pet$id_article'");
-	}
-
-	if (!$debut) $debut = 0;
-
-	# cette requete devrait figurer dans l'optimisation
-	spip_query("DELETE FROM spip_signatures WHERE NOT (statut='publie' OR statut='poubelle') AND date_time<DATE_SUB(NOW(),INTERVAL 10 DAY)");
-
-	controle_signatures('controle_petition',
-			    $id_article,
-			    $debut, 
-			    "(statut='publie' OR statut='poubelle')",
-			    "date_time DESC",
-			    10);
-
- }
-else {
-	echo "<B>"._T('avis_non_acces_page')."</B>";
-}
-
 
-echo "</div>";
+	echo "</div>";
 
-echo fin_page();
+	echo fin_page();
 
 }
 ?>
diff --git a/ecrire/inc/signatures.php b/ecrire/inc/signatures.php
index 5dc19998fbfcd17825a65a5241f2d30c49d660de..1716da9092ddf6f3d8d38304ccea813caed974b9 100644
--- a/ecrire/inc/signatures.php
+++ b/ecrire/inc/signatures.php
@@ -15,8 +15,14 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 charger_generer_url();
 
+// http://doc.spip.org/@message_de_signature
+function message_de_signature($row)
+{
+  return propre(echapper_tags($row['message']));
+}
+
 // http://doc.spip.org/@controle_signatures
-function controle_signatures($script, $id, $debut, $where, $order, $limit='') {
+function inc_signatures_dist($script, $id, $debut, $where, $order, $limit='') {
 	global $couleur_foncee;
 
 	$where = tronconne_signatures($script, $id, $debut, $where, $limit);
@@ -34,40 +40,42 @@ function controle_signatures($script, $id, $debut, $where, $order, $limit='') {
 		$url_site = echapper_tags($row['url_site']);
 		$statut = $row['statut'];
 		
-		echo "<P>";
+		echo "<p>";
 		
 		if ($statut=="poubelle"){
-			echo "<TABLE WIDTH=100% CELLPADDING=2 CELLSPACING=0 BORDER=0><TR><TD BGCOLOR='#FF0000'>";
+			echo "<table width='100%' cellpadding='2' cellspacing='0' border='0'><tr><td bgcolor='#FF0000'>";
 		}
 		
-		echo "<TABLE WIDTH=100% CELLPADDING=3 CELLSPACING=0><TR><TD BGCOLOR='$couleur_foncee' class='verdana2' style='color: white;'><b>",
+		echo "<Table width='100%' cellpadding='3' cellspacing='0'><tr><td bgcolor='$couleur_foncee' class='verdana2' style='color: white;'><b>",
 		  ($nom_site ? "$nom_site / " : ""),
 		  $nom_email,
-		  "</b></TD></TR>",
-		  "<TR><TD BGCOLOR='#FFFFFF' class='serif'>";
+		  "</b></td></tr>",
+		  "<tr><td bgcolor='#FFFFFF' class='serif'>";
 				
 		if ($statut=="publie"){
-			icone (_T('icone_supprimer_signature'), generer_url_ecrire($script, "supp_petition=$id_signature&debut=$debut"),
+			icone (_T('icone_supprimer_signature'),
+			       redirige_action_auteur('editer_signatures', "-$id_signature", $script, "id_article=$id&debut=$debut"),
 			       "forum-interne-24.gif", 
 			       "supprimer.gif",
 			       "right");
 		}
 		if ($statut=="poubelle"){
-			icone (_T('icone_valider_signature'), generer_url_ecrire($script, "add_petition=$id_signature&debut=$debut"),
+			icone (_T('icone_valider_signature'),
+			       redirige_action_auteur('editer_signatures', $id_signature, $script, "id_article=$id&debut=$debut"),
 			       "forum-interne-24.gif", 
 			       "creer.gif",
 			       "right");
 		}
 		
-		echo "<FONT SIZE=2>".date_interface($date_time)."</FONT><BR>";
+		echo "<font size='2'>".date_interface($date_time)."</font><br />";
 		if ($statut=="poubelle"){
-			echo "<FONT SIZE=1 COLOR='red'>"._T('info_message_efface')."</FONT><BR>";
+			echo "<font size='1' color='red'>"._T('info_message_efface')."</font><br />";
 		}
 		if (strlen($url_site)>6 AND strlen($nom_site)>0){
-			echo "<FONT SIZE=1>"._T('info_site_web')."</FONT> <A HREF='$url_site'>$nom_site</A><BR>";
+			echo "<font size='1'>"._T('info_site_web')."</font> <a href='$url_site'>$nom_site</a><br />";
 		}
 		if (strlen($ad_email)>0){
-			echo "<FONT SIZE=1>"._T('info_adresse_email')."</FONT> <A HREF='mailto:$ad_email'>$ad_email</A><BR>";
+			echo "<font size='1'>"._T('info_adresse_email')."</font> <a href='mailto:$ad_email'>$ad_email</a><br />";
 		}
 
 		echo "<p>",message_de_signature($row),"</p>";
@@ -88,10 +96,10 @@ function controle_signatures($script, $id, $debut, $where, $order, $limit='') {
 		  typo($titre['titre']),
 		  "</a>";
 
-		echo "</TD></TR></TABLE>";
+		echo "</td></tr></table>";
 		
 		if ($statut=="poubelle"){
-			echo "</TD></TR></TABLE>";
+			echo "</td></tr></table>";
 		}
 	}
 }
@@ -114,9 +122,9 @@ function tronconne_signatures($script, $id_article, $debut, $where, $limit=10)
 			if ($c > 1) echo " | ";
 			$date = entites_html(affdate_court($row['date_time']));
 			if ($c == ($debut+1))
-				echo "<FONT SIZE=3><B>$c</B></FONT>";
+				echo "<font size='3'><b>$c</b></font>";
 			else
-			  echo "<A alt=\"$date\" title=\"$date\" href='", generer_url_ecrire($script, $args ."debut=".($c-1)), "'>$c</A>";
+			  echo "<a alt=\"$date\" title=\"$date\" href='", generer_url_ecrire($script, $args ."debut=".($c-1)), "'>$c</a>";
 		}
 	}
 	return $where;