diff --git a/.gitattributes b/.gitattributes
index a392cdd35399540989c3d38d7c6c39cac779b05d..82a9ab34505039699ba8c909837ea1099f6ad72b 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -23,6 +23,7 @@ ecrire/action/iconifier.php -text
 ecrire/action/instituer.php -text
 ecrire/action/joindre.php -text
 ecrire/action/logout.php -text
+ecrire/action/petitionner.php -text
 ecrire/action/purger.php -text
 ecrire/action/redirect.php -text
 ecrire/action/supprimer.php -text
diff --git a/ecrire/action/petitionner.php b/ecrire/action/petitionner.php
new file mode 100644
index 0000000000000000000000000000000000000000..0ce1b7a443ee3ae2de9663ae9b42cfc0d11207a4
--- /dev/null
+++ b/ecrire/action/petitionner.php
@@ -0,0 +1,46 @@
+<?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_petitionner_dist() {
+	global $action, $arg, $hash, $id_auteur;
+	include_spip('inc/actions');
+	if (!verifier_action_auteur("$action-$arg", $hash, $id_auteur)) {
+		include_spip('inc/minipres');
+		minipres(_T('info_acces_interdit'));
+	}
+
+	$id_article = intval($arg);
+
+	$message = _request('message');
+	$site_obli = _request('site_obli');
+	$site_unique = _request('site_unique');
+	$email_unique = _request('email_unique');
+	$texte_petition = _request('texte_petition');
+	$change_petition = _request('change_petition');
+
+	spip_log("action $action $arg $change_petition");
+
+	if ($change_petition == "on") {
+		if (!$email_unique) $email_unique = "non";
+		if (!$site_obli) $site_obli = "non";
+		if (!$site_unique) $site_unique = "non";
+		if (!$message) $message = "non";
+
+		$result_pet = spip_query("REPLACE spip_petitions (id_article, email_unique, site_obli, site_unique, message, texte) VALUES ($id_article, '$email_unique', '$site_obli', '$site_unique', '$message', " . spip_abstract_quote($texte_petition) . ")");
+		}
+	else if ($change_petition == "off") {
+		$result_pet = spip_query("DELETE FROM spip_petitions WHERE id_article=$id_article");
+		}
+}
+?>
diff --git a/ecrire/exec/articles.php b/ecrire/exec/articles.php
index 6b1ab56dc539b46bbec7e3891a2b2d78231e3a02..28b78e4adddebfddc1532a418c74e2277b206557 100644
--- a/ecrire/exec/articles.php
+++ b/ecrire/exec/articles.php
@@ -23,7 +23,7 @@ include_spip('inc/forum');
 include_spip('base/abstract_sql');
 
 
-function exec_affiche_articles_dist($id_article, $ajout_auteur, $change_accepter_forum, $change_petition, $changer_virtuel, $cherche_auteur, $cherche_mot, $debut, $email_unique, $flag_auteur, $flag_editable, $langue_article, $message, $nom_select, $nouv_auteur, $nouv_mot, $rubrique_article, $site_obli, $site_unique, $supp_auteur, $supp_mot, $texte_petition, $titre_article, $lier_trad,  $id_trad_new)
+function exec_affiche_articles_dist($id_article, $ajout_auteur, $change_accepter_forum, $change_petition, $changer_virtuel, $cherche_auteur, $cherche_mot, $debut, $flag_auteur, $flag_editable, $langue_article, $nom_select, $nouv_auteur, $nouv_mot, $rubrique_article, $supp_auteur, $supp_mot, $titre_article, $lier_trad,  $id_trad_new)
 {
 	global $connect_statut, $options, $spip_display, $spip_lang_left, $spip_lang_right, $dir_lang;
 
@@ -100,8 +100,6 @@ if (substr($chapo, 0, 1) == '=') {
 
 boites_de_config_articles($id_article, $id_rubrique, $flag_editable,
 			  $change_accepter_forum, $change_petition,
-			  $email_unique, $site_obli, $site_unique,
-			  $message, $texte_petition,
 			  $changer_virtuel, $virtuel);
  
  echo pipeline('affiche_gauche',array('args'=>array('exec'=>'articles','id_article'=>$id_article),'data'=>''));
@@ -260,10 +258,88 @@ function boite_info_articles($id_article, $statut_article, $visites, $id_version
 	fin_boite_info();
 }
 
+function formulaire_petition($id_article, $nb_signatures)
+{
+	global $spip_lang_right;
+
+	$petition = spip_fetch_array(spip_query("SELECT * FROM spip_petitions WHERE id_article=$id_article"));
+
+	$email_unique=$petition["email_unique"];
+	$site_obli=$petition["site_obli"];
+	$site_unique=$petition["site_unique"];
+	$message=$petition["message"];
+	$texte_petition=$petition["texte"];
+
+	if ($petition) {
+		$menu = array(
+			'on' => _T('bouton_radio_petition_activee'),
+			'off'=> _T('bouton_radio_supprimer_petition')
+		);
+		$val_menu = 'on';
+	} else {
+		$menu = array(
+			'off'=> _T('bouton_radio_pas_petition'),
+			'on' => _T('bouton_radio_activer_petition')
+		);
+		$val_menu = 'off';
+	}
+
+	$res = '';
+	foreach ($menu as $val => $desc) {
+		$res .= "<option" . (($val_menu == $val) ? " selected" : '') . " value='$val'>".$desc."</option>\n";
+	}
+
+	$res = "<select name='change_petition'
+		class='fondl' style='font-size:10px;'
+		onChange=\"setvisibility('valider_petition', 'visible');\"
+		>\n$res</select>\n";
+
+
+	if ($petition) {
+		if ($nb_signatures) {
+			$res .= "<br />\n" .
+			icone_horizontale($nb_signatures.'&nbsp;'. _T('info_signatures'), generer_url_ecrire("controle_petition","id_article=$id_article",'', false), "suivi-petition-24.gif", "");
+		}
+
+		$res .= "<br />\n";
+
+		if ($email_unique=="oui")
+			$res .= "<input type='checkbox' name='email_unique' value='oui' id='emailunique' checked>";
+		else
+			$res .="<input type='checkbox' name='email_unique' value='oui' id='emailunique'>";
+		$res .=" <label for='emailunique'>"._T('bouton_checkbox_signature_unique_email')."</label><BR>";
+		if ($site_obli=="oui")
+			$res .="<input type='checkbox' name='site_obli' value='oui' id='siteobli' checked>";
+		else
+			$res .="<input type='checkbox' name='site_obli' value='oui' id='siteobli'>";
+		$res .=" <label for='siteobli'>"._T('bouton_checkbox_indiquer_site')."</label><BR>";
+		if ($site_unique=="oui")
+			$res .="<input type='checkbox' name='site_unique' value='oui' id='siteunique' checked>";
+		else
+			$res .="<input type='checkbox' name='site_unique' value='oui' id='siteunique'>";
+		$res .=" <label for='siteunique'>"._T('bouton_checkbox_signature_unique_site')."</label><BR>";
+		if ($message=="oui")
+			$res .="<input type='checkbox' name='message' value='oui' id='message' checked>";
+		else
+			$res .="<input type='checkbox' name='message' value='oui' id='message' />";
+		$res .=" <label for='message'>"._T('bouton_checkbox_envoi_message')."</label>";
+
+		$res .=_T('texte_descriptif_petition')."&nbsp;:<BR />";
+		$res .="<TEXTAREA NAME='texte_petition' CLASS='forml' ROWS='4' COLS='10' wrap=soft>";
+		$res .=entites_html($texte_petition);
+		$res .="</TEXTAREA>\n";
+
+		$res .="<span align='$spip_lang_right'>";
+	} else $res .="<span class='visible_au_chargement' id='valider_petition'>";
+	$res .="<INPUT TYPE='submit' CLASS='fondo' VALUE='"._T('bouton_changer')."' STYLE='font-size:10px' />";
+	$res .="</span>";
+
+	return generer_action_auteur('petitionner', $id_article, generer_url_ecrire('articles', "id_article=$id_article&change_petition=oui"), $res," method='POST'");
+
+}
+
 function boites_de_config_articles($id_article, $id_rubrique, $flag_editable,
 				   $change_accepter_forum, $change_petition,
-				   $email_unique, $site_obli, $site_unique,
-				   $message, $texte_petition,
 				   $changer_virtuel, $virtuel)
 {
   global $connect_statut, $options, $spip_lang_right, $spip_display;
@@ -306,10 +382,8 @@ function boites_de_config_articles($id_article, $id_rubrique, $flag_editable,
 	else
 		echo debut_block_invisible("forumpetition");
 
-
 	echo "<font face='Verdana,Arial,Sans,sans-serif' size='1'>\n";
 
-
 	// Forums
 
 	if ($nb_forums) {
@@ -330,104 +404,10 @@ function boites_de_config_articles($id_article, $id_rubrique, $flag_editable,
 	// Afficher le formulaire de modification du reglage
 	echo formulaire_modification_forums_publics($id_article, $forums_publics, generer_url_ecrire("articles","id_article=$id_article"));
 
-
 	// Petitions
 
-	if ($change_petition) {
-		if ($change_petition == "on") {
-			if (!$email_unique) $email_unique = "non";
-			if (!$site_obli) $site_obli = "non";
-			if (!$site_unique) $site_unique = "non";
-			if (!$message) $message = "non";
-
-			$result_pet = spip_query("REPLACE spip_petitions (id_article, email_unique, site_obli, site_unique, message, texte) VALUES ($id_article, '$email_unique', '$site_obli', '$site_unique', '$message', " . spip_abstract_quote($texte_petition) . ")");
-		}
-		else if ($change_petition == "off") {
-			$result_pet = spip_query("DELETE FROM spip_petitions WHERE id_article=$id_article");
-		}
-	}
-
-	$petition = spip_fetch_array(spip_query("SELECT * FROM spip_petitions WHERE id_article=$id_article"));
-
-	$email_unique=$petition["email_unique"];
-	$site_obli=$petition["site_obli"];
-	$site_unique=$petition["site_unique"];
-	$message=$petition["message"];
-	$texte_petition=$petition["texte"];
-
-	echo generer_url_post_ecrire("articles","id_article=$id_article");
-
-	echo "<select name='change_petition'
-		class='fondl' style='font-size:10px;'
-		onChange=\"setvisibility('valider_petition', 'visible');\"
-		>\n";
-
-	if ($petition) {
-		$menu = array(
-			'on' => _T('bouton_radio_petition_activee'),
-			'off'=> _T('bouton_radio_supprimer_petition')
-		);
-		$val_menu = 'on';
-	} else {
-		$menu = array(
-			'off'=> _T('bouton_radio_pas_petition'),
-			'on' => _T('bouton_radio_activer_petition')
-		);
-		$val_menu = 'off';
-	}
-
-
-	foreach ($menu as $val => $desc) {
-		echo "<option";
-		if ($val_menu == $val)
-			echo " selected";
-		echo " value='$val'>".$desc."</option>\n";
-	}
-	echo "</select>\n";
-
-	if ($petition) {
-		if ($nb_signatures) {
-			echo "<br />\n";
-			icone_horizontale($nb_signatures.'&nbsp;'. _T('info_signatures'), generer_url_ecrire("controle_petition","id_article=$id_article"), "suivi-petition-24.gif", "");
-		}
+	echo formulaire_petition($id_article, $nb_signatures);
 
-		echo "<br />\n";
-
-		if ($email_unique=="oui")
-			echo "<input type='checkbox' name='email_unique' value='oui' id='emailunique' checked>";
-		else
-			echo "<input type='checkbox' name='email_unique' value='oui' id='emailunique'>";
-		echo " <label for='emailunique'>"._T('bouton_checkbox_signature_unique_email')."</label><BR>";
-		if ($site_obli=="oui")
-			echo "<input type='checkbox' name='site_obli' value='oui' id='siteobli' checked>";
-		else
-			echo "<input type='checkbox' name='site_obli' value='oui' id='siteobli'>";
-		echo " <label for='siteobli'>"._T('bouton_checkbox_indiquer_site')."</label><BR>";
-		if ($site_unique=="oui")
-			echo "<input type='checkbox' name='site_unique' value='oui' id='siteunique' checked>";
-		else
-			echo "<input type='checkbox' name='site_unique' value='oui' id='siteunique'>";
-		echo " <label for='siteunique'>"._T('bouton_checkbox_signature_unique_site')."</label><BR>";
-		if ($message=="oui")
-			echo "<input type='checkbox' name='message' value='oui' id='message' checked>";
-		else
-			echo "<input type='checkbox' name='message' value='oui' id='message'>";
-		echo " <label for='message'>"._T('bouton_checkbox_envoi_message')."</label>";
-
-		echo "<P>"._T('texte_descriptif_petition')."&nbsp;:<BR>";
-		echo "<TEXTAREA NAME='texte_petition' CLASS='forml' ROWS='4' COLS='10' wrap=soft>";
-		echo entites_html($texte_petition);
-		echo "</TEXTAREA><P>\n";
-
-		echo "<P align='$spip_lang_right'>";
-	}
-
-	if (!$petition) echo "<span class='visible_au_chargement' id='valider_petition'>";
-	echo "<INPUT TYPE='submit' NAME='Changer' CLASS='fondo' VALUE='"._T('bouton_changer')."' STYLE='font-size:10px'>";
-	if (!$petition)  echo "</span>";
-	echo "</FORM>";
-
-	echo "</font>";
 	echo fin_block();
 
 	fin_cadre_relief();
@@ -1447,7 +1427,7 @@ function insert_article($id_parent)
 
 function exec_articles_dist()
 {
-  global $ajout_auteur, $annee, $annee_redac, $avec_redac, $change_accepter_forum, $change_petition, $changer_lang, $changer_virtuel, $chapo, $cherche_auteur, $cherche_mot, $connect_id_auteur, $date, $date_redac, $debut, $email_unique, $heure, $heure_redac, $id_article, $id_article_bloque, $id_parent, $id_rubrique_old, $id_secteur, $id_trad_new, $jour, $jour_redac, $langue_article, $lier_trad, $message, $minute, $minute_redac, $mois, $mois_redac, $new, $nom_select, $nouv_auteur, $nouv_mot, $site_obli, $site_unique, $supp_auteur, $supp_mot, $texte_petition, $titre, $titre_article, $virtuel; 
+  global $ajout_auteur, $annee, $annee_redac, $avec_redac, $change_accepter_forum, $change_petition, $changer_lang, $changer_virtuel, $chapo, $cherche_auteur, $cherche_mot, $connect_id_auteur, $date, $date_redac, $debut, $heure, $heure_redac, $id_article, $id_article_bloque, $id_parent, $id_rubrique_old, $id_secteur, $id_trad_new, $jour, $jour_redac, $langue_article, $lier_trad, $minute, $minute_redac, $mois, $mois_redac, $new, $nom_select, $nouv_auteur, $nouv_mot, $supp_auteur, $supp_mot, $titre, $titre_article, $virtuel; 
 
 
  $id_parent = intval($id_parent);
@@ -1541,7 +1521,7 @@ if (isset($_POST['titre'])) {
 		redirige_par_entete(
 			generer_url_ecrire('articles', 'id_article='.$id_article, '&'));
 
-	exec_affiche_articles_dist($id_article, $ajout_auteur, $change_accepter_forum, $change_petition, $changer_virtuel, $cherche_auteur, $cherche_mot, $debut, $email_unique, $flag_auteur, $flag_editable, $langue_article, $message, $nom_select, $nouv_auteur, $nouv_mot, $id_rubrique, $site_obli, $site_unique, $supp_auteur, $supp_mot, $texte_petition, $titre_article, $lier_trad, $id_trad_new);
+	exec_affiche_articles_dist($id_article, $ajout_auteur, $change_accepter_forum, $change_petition, $changer_virtuel, $cherche_auteur, $cherche_mot, $debut, $flag_auteur, $flag_editable, $langue_article, $nom_select, $nouv_auteur, $nouv_mot, $id_rubrique, $supp_auteur, $supp_mot, $titre_article, $lier_trad, $id_trad_new);
 
 }
 ?>