diff --git a/ecrire/action/editer_signatures.php b/ecrire/action/editer_signatures.php
index df5812370eb1f959a9272fcfc8fd7cb962cfcf0e..8a25d53f87d31a29cd9e043ff163f5fd780f1fec 100644
--- a/ecrire/action/editer_signatures.php
+++ b/ecrire/action/editer_signatures.php
@@ -12,8 +12,6 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-
-// Modifier le reglage des forums publics de l'article x
 // http://doc.spip.org/@action_editer_signatures_dist
 function action_editer_signatures_dist()
 {
@@ -25,6 +23,10 @@ function action_editer_signatures_dist()
 	} else action_editer_signatures_post($r);
 }
 
+// mettre un signature a la poubelle
+// ou l'en sortir
+// ou relancer le signataire.
+
 // http://doc.spip.org/@action_editer_signatures_post
 function action_editer_signatures_post($r)
 {
@@ -32,10 +34,23 @@ function action_editer_signatures_post($r)
 
 	if ($id < 0){
 		$id = 0 - $id;
-		$result_forum = sql_updateq("spip_signatures", array("statut" => 'poubelle'), "id_signature=$id");
+		sql_updateq("spip_signatures", array("statut" => 'poubelle'), "id_signature=$id");
 
 	} elseif ($id > 0){
-		$result_forum = sql_updateq("spip_signatures", array("statut" => 'publie'), "id_signature=$id");
+		$row = sql_fetsel('*', 'spip_signatures', "id_signature=$id"); 
+		if ($row['statut']=='poubelle')
+			sql_updateq("spip_signatures", array("statut" => 'publie'), "id_signature=$id");
+		else {
+			include_spip('balise/formulaire_signature');
+			include_spip('inc/texte');
+			
+			charger_generer_url();
+			$id_article = $row['id_article'];
+			$url = $GLOBALS['meta']['adresse_site'] . '/' . generer_url_article($id_article);
+			if (signature_a_confirmer($id_article, $url, $row['nom_email'], $row['ad_email'], $row['nom_site'], $row['url_site'], $row['message'], $row['lang'], $row['statut']))
+				sql_update("spip_signatures", array("date_time" => 'NOW()'), "id_signature=$id");
+			$id = 0;
+		}
 
 	}
 
diff --git a/ecrire/balise/formulaire_signature.php b/ecrire/balise/formulaire_signature.php
index c4f0f08bc027ebfc14a04f3e77f394ebb9cd4d6a..10a88812aad0e965b9f64e720924b784faaf8e09 100644
--- a/ecrire/balise/formulaire_signature.php
+++ b/ecrire/balise/formulaire_signature.php
@@ -155,13 +155,13 @@ function reponse_confirmation($var_confirm = '') {
 
 	if ($email_unique) {
 
-		$r = sql_select('id_signature', 'spip_signatures', "id_article=$id_article AND ad_email=" . sql_quote($adresse_email) . " AND statut='publie'","","date_time desc");
+		$r = "id_article=$id_article AND ad_email=" . sql_quote($adresse_email);
 		if (signature_entrop($r))
 			  $confirm =  _T('form_pet_deja_signe');
 	} 
 
 	if ($site_unique) {
-		$r = sql_select('id_signature', 'spip_signatures', "id_article=$id_article AND url_site=" . sql_quote($url_site) . " AND (statut='publie' OR statut='poubelle')",'',"date_time desc");
+		$r = "id_article=$id_article AND url_site=" . sql_quote($url_site);
 		if (signature_entrop($r))
 			$confirm = _T('form_pet_site_deja_enregistre');
 	}
@@ -179,18 +179,16 @@ function reponse_confirmation($var_confirm = '') {
 //
 
 // http://doc.spip.org/@inc_controler_signature_dist
-function inc_controler_signature_dist($id_article, $nom_email, $adresse_email, $message, $nom_site, $url_site, $url_page) {
+function inc_controler_signature_dist($id_article, $nom, $mail, $message, $site, $url_site, $url_page) {
 
 	include_spip('inc/texte');
 	include_spip('inc/filtres');
 
-	$envoyer_mail = charger_fonction('envoyer_mail','inc');
-
-	if (strlen($nom_email) < 2)
+	if (strlen($nom) < 2)
 		return _T('form_indiquer_nom');
-	elseif ($adresse_email == _T('info_mail_fournisseur'))
-		return _T('form_indiquer_email');
-	elseif (!email_valide($adresse_email)) 
+	elseif ($mail == _T('info_mail_fournisseur'))
+		return _T('form_indiquer');
+	elseif (!email_valide($mail)) 
 		return _T('form_email_non_valide');
 	elseif (strlen(_request('nobot'))
 		OR (@preg_match_all(',\bhref=[\'"]?http,i', // bug PHP
@@ -198,24 +196,20 @@ function inc_controler_signature_dist($id_article, $nom_email, $adresse_email, $
 				    # ,  PREG_PATTERN_ORDER
 				   )
 		    >2)) {
+		#$envoyer_mail = charger_fonction('envoyer_mail','inc');
 		#envoyer_mail('email_moderateur@example.tld', 'spam intercepte', var_export($_POST,1));
 		return _T('form_pet_probleme_liens');
 	}
 
 	// tout le monde est la.
 
-	$row = sql_fetch(sql_select('titre,lang', 'spip_articles', "id_article=$id_article"));
-	$lang = lang_select($row['lang']);
-	$titre = textebrut(typo($row['titre']));
-	if ($lang) lang_select();
-
 	$result_petition = sql_select('*', 'spip_petitions', "id_article=$id_article");
 
 	if (!$row = sql_fetch($result_petition)) 
 		return _T('form_pet_probleme_technique');
 
 	if ($row['site_obli'] == "oui") {
-		if (!strlen($nom_site)
+		if (!strlen($site)
 		OR !vider_url($url_site)) {
 			return  _T('form_indiquer_nom_site');
 		}
@@ -233,7 +227,7 @@ function inc_controler_signature_dist($id_article, $nom_email, $adresse_email, $
 	// On traite donc le probleme a la confirmation.
 
 	if ($email_unique) {
-		$r = sql_countsel('spip_signatures', "id_article=$id_article AND ad_email=" . sql_quote($adresse_email) . " AND statut='publie'");
+		$r = sql_countsel('spip_signatures', "id_article=$id_article AND ad_email=" . sql_quote($mail) . " AND statut='publie'");
 
 		if ($r)	return _T('form_pet_deja_signe');
 	}
@@ -244,37 +238,56 @@ function inc_controler_signature_dist($id_article, $nom_email, $adresse_email, $
 		if ($r)	return _T('form_pet_site_deja_enregistre');
 	}
 	
-	// preparer l'url de confirmation
 	$passw = test_pass();
-	$url = parametre_url($url_page,	'var_confirm',$passw,'&');
-	if ($lang != $GLOBALS['meta']['langue_site'])
-		  $url = parametre_url($url, "lang", $row['lang'],'&');
-	$url .= "#sp$id_article";
-
-	$messagex = _T('form_pet_mail_confirmation', array('titre' => $titre, 'nom_email' => $nom_email, 'nom_site' => $nom_site, 'url_site' => $url_site, 'url' => $url, 'message' => $message));
-
-	if (!$envoyer_mail($adresse_email, _T('form_pet_confirmation')." ".$titre, $messagex)) 
+	if (!signature_a_confirmer($id_article, $url_page, $nom, $mail, $site, $url_site, $message, $lang, $passw))
 		return _T('form_pet_probleme_technique');
 
 	$id_signature = sql_insertq('spip_signatures', array(
 		'id_article' => $id_article,
 		'date_time' => 'NOW()',
 		'statut' => $passw,
-		'ad_email' => $adresse_email,
+		'ad_email' => $mail,
 		'url_site' => $url_site));
 
 	if (!$id_signature) return _T('form_pet_probleme_technique');
 	include_spip('inc/modifier');
 	revision_signature($id_signature, array(
-				'nom_email' => $nom_email,
-				'ad_email' => $adresse_email,
+				'nom_email' => $nom,
+				'ad_email' => $mail,
 				'message' => $message,
-				'nom_site' => $nom_site,
+				'nom_site' => $site,
 				'url_site' => $url_site
 				));
 	return _T('form_pet_envoi_mail_confirmation');
 }
 
+function signature_a_confirmer($id_article, $url_page, $nom, $mail, $site, $url, $msg, $lang, $passw)
+{
+	$row = sql_fetsel('titre,lang', 'spip_articles', "id_article=$id_article");
+	$lang = lang_select($row['lang']);
+	$titre = textebrut(typo($row['titre']));
+	if ($lang) lang_select();
+
+	if ($lang != $GLOBALS['meta']['langue_site'])
+		  $url_page = parametre_url($url_page, "lang", $lang,'&');
+
+	$url_page = parametre_url($url_page, 'var_confirm', $passw, '&')
+	. "#sp$id_article";
+
+	$r = _T('form_pet_mail_confirmation',
+		 array('titre' => $titre,
+		       'nom_email' => $nom,
+		       'nom_site' => $site,
+		       'url_site' => $url, 
+		       'url' => $url_page,
+		       'message' => $msg));
+
+	$titre = _T('form_pet_confirmation')." ". $titre;
+	$envoyer_mail = charger_fonction('envoyer_mail','inc');
+	return $envoyer_mail($mail,$titre, $r); 
+
+}
+
 // Pour eviter le recours a un verrou (qui bloque l'acces a la base),
 // on commence par inserer systematiquement la signature 
 // puis on demande toutes celles ayant la propriete devant etre unique
@@ -283,8 +296,10 @@ function inc_controler_signature_dist($id_article, $nom_email, $adresse_email, $
 // deja detruits. Bizarre ?  C'est mieux que de bloquer!
 
 // http://doc.spip.org/@signature_entrop
-function signature_entrop($query)
+function signature_entrop($where)
 {
+	$query = sql_select('id_signature', 'spip_signatures', $where . " AND statut='publie'",'',"date_time desc");
+	$entrop = '';
 	$n = sql_count($query);
 	if ($n>1) {
 		$entrop = array();
@@ -292,10 +307,11 @@ function signature_entrop($query)
 			$r = sql_fetch($query);
 			$entrop[]=$r['id_signature'];
 		}
-		if ($entrop)
-			sql_delete('spip_signatures',
-				"id_signature IN (" . join(',',$entrop) .')');
+		$entrop = " OR (id_signature IN (" . join(',',$entrop) .'))';
 	}
+	
+	sql_delete('spip_signatures', "($where AND statut<>'publie')$entrop");
+
 	return $entrop;
 }
 
diff --git a/ecrire/exec/controle_petition.php b/ecrire/exec/controle_petition.php
index 1c716322e1826f01071130483096371d84573b9d..d7e42cfad154efeb015daf5362b5c6a420a1187b 100644
--- a/ecrire/exec/controle_petition.php
+++ b/ecrire/exec/controle_petition.php
@@ -14,10 +14,16 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 // http://doc.spip.org/@exec_controle_petition_dist
 function exec_controle_petition_dist()
+{
+	exec_controle_petition_args(intval(_request('id_article')),
+				    _request('type'),
+				    intval(_request('debut')));
+}
+
+function exec_controle_petition_args($id_article, $type, $debut)
 {
 	include_spip('inc/presentation');
 
-	$id_article = intval(_request('id_article'));
 	$titre =' ';
 	$statut='new';
 	if ($id_article) {
@@ -37,38 +43,48 @@ function exec_controle_petition_dist()
 			AND autoriser('modererpetition', 'article', $id_article)
 			)
 		)) {
-	  include_spip('inc/minipres'); 
-	  echo minipres();}
+		include_spip('inc/minipres'); 
+		echo minipres();}
 	else {
-
-		$debut = intval(_request('debut'));
-
 		$signatures = charger_fonction('signatures', 'inc');
-
 		$r = $signatures('controle_petition',
 			$id_article,
 			$debut, 
 			"(statut='publie' OR statut='poubelle')",
 			"date_time DESC",
-			10);
+			 10,
+			 $type);
 
 		if (_request('var_ajaxcharset'))
 			ajax_retour($r);
-		else {
+		else controle_petition_page($id_article, $debut, $type, $titre, $statut, $r);
+	}
+}
 
-		$commencer_page = charger_fonction('commencer_page', 'inc');
-		echo $commencer_page(_T('titre_page_controle_petition'), "forum", "suivi-petition");
-		echo debut_gauche('', true);
+function controle_petition_page($id_article, $debut, $type, $titre, $statut, $r)
+{
+	$args = ($id_article ? "id_article=$id_article" :'')
+		. ($debut ? "debut=$debut" : '')
+		. '&type=';
+
+	$commencer_page = charger_fonction('commencer_page', 'inc');
+	echo $commencer_page(_T('titre_page_controle_petition'), "forum", "suivi-petition");
+	echo debut_gauche('', true);
 
-		echo debut_droite('', true);
+	echo debut_droite('', true);
   
-		echo gros_titre(_T('titre_suivi_petition'),'', false);
+	echo gros_titre(_T('titre_suivi_petition'),'', false);
 
-		if (!$titre)
-		  echo _T('trad_article_inexistant');
-		else {
-		  if ($id_article) {
-			  echo  "<a href='",
+	echo debut_onglet();
+	echo onglet(_L('Signatures confirm&eacute;es'), generer_url_ecrire('controle_petition', $args . "public"), "public", $type=='public', "forum-public-24.gif");
+	echo onglet(_L('Signatures en attente de validation'), generer_url_ecrire('controle_petition', $args . "interne"), "interne", $type=='interne', "forum-interne-24.gif");
+	echo fin_onglet(), '<br /><br />';
+
+	if (!$titre)
+			echo _T('trad_article_inexistant');
+	else {
+		if ($id_article) {
+			echo  "<a href='",
 			  (($statut == 'publie') ? 
 			   generer_url_action('redirect', "id_article=$id_article") :
 			   generer_url_ecrire('articles', "id_article=$id_article")),
@@ -79,14 +95,11 @@ function exec_controle_petition_dist()
 			  _T('info_numero_abbreviation'),
 			  $id_article,
 			  ")</span>";
-		  }
-		  $a = "editer_signature-" . $id_article;
-
-		  echo  "<div id='", $a, "' class='serif2'>", $r, "</div>";
-		}
-		echo fin_gauche(), fin_page();
 		}
+		$a = "editer_signature-" . $id_article;
+
+		echo  "<div id='", $a, "' class='serif2'>", $r, "</div>";
 	}
+	echo fin_gauche(), fin_page();
 }
-
 ?>
diff --git a/ecrire/inc/signatures.php b/ecrire/inc/signatures.php
index 290d4082c8eb22c5643cc07e332b7c29977d15c7..54cbccd50e235b5fc489a41b62d8f559b0f4c95d 100644
--- a/ecrire/inc/signatures.php
+++ b/ecrire/inc/signatures.php
@@ -19,12 +19,12 @@ function message_de_signature($row)
 }
 
 // http://doc.spip.org/@inc_signatures_dist
-function inc_signatures_dist($script, $id, $debut, $where, $order, $limit='') {
-
+function inc_signatures_dist($script, $id, $debut, $where, $order, $limit='', $type='') {
 	charger_generer_url();
 
 	# filtre de duree (a remplacer par une vraie pagination)
 	#$where .= ($where ? " AND " : "") . "date_time>DATE_SUB(NOW(),INTERVAL 180 DAY)";
+	if ($type == 'interne')   $where = "NOT($where)";
 	if ($id) { 
 		$args = "id_article=$id&";
 		$where .= " AND id_article=$id";
@@ -36,7 +36,6 @@ function inc_signatures_dist($script, $id, $debut, $where, $order, $limit='') {
 		$res = navigation_pagination($t, $nb_aff, generer_url_ecrire($script, $args), false, 'debut');
 	} else $res = '';
 
-
 	$limit = (!$limit AND !$debut) ? '' : (($debut ? "$debut," : "") . $limit);
 
 	$request = sql_select('*', 'spip_signatures', $where, '', $order, $limit);
@@ -44,13 +43,13 @@ function inc_signatures_dist($script, $id, $debut, $where, $order, $limit='') {
 	$res .= '<br />';
 
  	while($row=sql_fetch($request)){
-		$res .= '<br />' . signatures_edit($script, $id, $debut, $row);
+	  $res .= '<br />' . signatures_edit($script, $id, $debut, $row, $type);
 	}
 	return $res;
 }
 
 // http://doc.spip.org/@signatures_edit
-function signatures_edit($script, $id, $debut, $row) {
+function signatures_edit($script, $id, $debut, $row, $type) {
 
 		$id_signature = $row['id_signature'];
 		$id_article = $row['id_article'];
@@ -62,13 +61,15 @@ function signatures_edit($script, $id, $debut, $row) {
 		$statut = $row['statut'];
 		
 		$arg = ($statut=="publie") ? "-$id_signature" : $id_signature;
+
+		$retour = redirige_action_auteur('editer_signatures', $arg, $script, "id_article=$id_article&debut=$debut&type=$type#signature$id_signature");
 		$res = "";
 		
 		if ($statut=="poubelle"){
 			$res .= "<table width='100%' cellpadding='2' cellspacing='0' border='0'><tr><td style='background-color: #ff0000'>";
 		}
 		
-		$res .= "<table width='100%' cellpadding='3' cellspacing='0'><tr><td class='verdana2 toile_foncee' style='color: white;'><b>"
+		$res .= "<table id='signature$id_signature' width='100%' cellpadding='3' cellspacing='0'><tr><td class='verdana2 toile_foncee' style='color: white;'><b>"
  		.  ($nom_site ? "$nom_site / " : "")
 		.  $nom_email
 		.  "</b></td></tr>"
@@ -76,19 +77,24 @@ function signatures_edit($script, $id, $debut, $row) {
 				
 		if ($statut=="publie"){
 			$res .= icone_inline (_T('icone_supprimer_signature'),
-				redirige_action_auteur('editer_signatures', $arg, $script, "id_article=$id&debut=$debut"),
+				$retour,
 				"forum-interne-24.gif", 
 				"supprimer.gif",
 				"right",
 				false);
 		} elseif ($statut=="poubelle"){
 			$res .= icone_inline (_T('icone_valider_signature'),
-				redirige_action_auteur('editer_signatures', $arg, $script, "id_article=$id&debut=$debut"),
+				$retour,
+				"forum-interne-24.gif", 
+				"creer.gif",
+				"right",
+				false);
+		} else $res .= icone_inline (_L('relancer le signataire'),
+				$retour,
 				"forum-interne-24.gif", 
 				"creer.gif",
 				"right",
 				false);
-		}
 		
 		$res .= "<span class='spip_small'>".date_interface($date_time)."</span><br />";
 		if ($statut=="poubelle"){