diff --git a/.gitattributes b/.gitattributes
index a826fdad777c270cf28ce5e37220409a9248e08e..36d18bc87bf5cba05dae02937de001b5a6eabfac 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -23,7 +23,13 @@ ecrire/action/dater.php -text
 ecrire/action/documenter.php -text
 ecrire/action/ical.php -text
 ecrire/action/iconifier.php -text
-ecrire/action/instituer.php -text
+ecrire/action/instituer_article.php -text
+ecrire/action/instituer_breve.php -text
+ecrire/action/instituer_collaboration.php -text
+ecrire/action/instituer_forum.php -text
+ecrire/action/instituer_langue_article.php -text
+ecrire/action/instituer_langue_rubrique.php -text
+ecrire/action/instituer_syndic.php -text
 ecrire/action/joindre.php -text
 ecrire/action/logout.php -text
 ecrire/action/petitionner.php -text
diff --git a/ecrire/action/instituer.php b/ecrire/action/instituer.php
deleted file mode 100644
index c208b842d03cb5882de17aed61b0df0eec59fae3..0000000000000000000000000000000000000000
--- a/ecrire/action/instituer.php
+++ /dev/null
@@ -1,200 +0,0 @@
-<?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;
-
-#
-# Gere les actions cachees derrire le petit iframe de l'espace prive (faux Ajax)
-#
-
-function action_instituer_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'));
-	}
-
-	preg_match('/^(\w+)\W(.*)$/', $arg, $r);
-	$var_nom = 'instituer_' . $r[1];
-	if (function_exists($var_nom)) {
-		spip_log("$var_nom '$r[2]'");
-		$var_nom($r[2]);
-	}
-	else
-		spip_log("action $action: $arg incompris");
-}
-
-function instituer_collaboration($debloquer_article) {
-	global $id_auteur;
-	if ($debloquer_article AND ($id_auteur = intval($id_auteur))) {
-		include_spip('inc/drapeau_edition');
-		if ($debloquer_article == 'tous')
-			debloquer_tous($id_auteur);
-		else
-			debloquer_edition($id_auteur, $debloquer_article, 'article');
-	}
-}
-
-function instituer_forum($arg) {
-	list($id_forum, $statut) = preg_split('/\W/', $arg);
-	$id_forum = intval($id_forum);
-	$result = spip_query("SELECT * FROM spip_forum WHERE id_forum=$id_forum");
-	if (!($row = spip_fetch_array($result)))
-		return;
-
-	$id_parent = $row['id_parent'];
-
-	// invalider les pages comportant ce forum
-	include_spip('inc/invalideur');
-	include_spip('inc/forum');
-	$index_forum = calcul_index_forum($row['id_article'], $row['id_breve'], $row['id_rubrique'], $row['id_syndic']);
-	suivre_invalideur("id='id_forum/$index_forum'");
-
-	// Signaler au moteur de recherche qu'il faut reindexer le thread
-	if ($id_parent) {
-		include_spip('inc/indexation');
-		marquer_indexer ('forum', $id_parent);
-	}
-
-	// changer le statut de toute l'arborescence dependant de ce message
-	$id_messages = array($id_forum);
-	while ($id_messages) {
-		$id_messages = join(',', $id_messages);
-		spip_query("UPDATE spip_forum SET statut='$statut' WHERE id_forum IN ($id_messages)");
-
-		$result_forum = spip_query("SELECT id_forum FROM spip_forum WHERE id_parent IN ($id_messages)");
-		$id_messages = array();
-		while ($row = spip_fetch_array($result_forum))
-			$id_messages[] = $row['id_forum'];
-	}
-}
-
-function instituer_article($arg) {
-	list($id_article, $statut) = preg_split('/\W/', $arg);
-	if (!$statut) $statut = _request('statut_nouv'); // cas POST
-	if (!$statut) return; // impossible mais sait-on jamais
-
-	$id_article = intval($id_article);
-	$result = spip_query("SELECT statut FROM spip_articles WHERE id_article=$id_article");
-
-	if ($row = spip_fetch_array($result)) {
-		$statut_ancien = $row['statut'];
-		}
-
-	if ($statut != $statut_ancien) {
-		spip_query("UPDATE spip_articles SET statut='$statut',	date=NOW() WHERE id_article=$id_article");
-
-		include_spip('inc/rubriques');
-		calculer_rubriques();
-
-		if ($statut == 'publie') {
-			if ($GLOBALS['meta']['activer_moteur'] == 'oui') {
-			include_spip("inc/indexation");
-			marquer_indexer('article', $id_article);
-			}
-			include_spip('inc/lang');
-			include_spip('inc/texte');
-			include_spip('inc/mail');
-			envoyer_mail_publication($id_article);
-		}
-
-		if ($statut_ancien == 'publie') {
-			include_spip('inc/invalideur');
-			suivre_invalideur("id='id_article/$id_article'");
-		}
-
-		if ($statut == "prop" AND $statut_ancien != 'publie') {
-			include_spip('inc/lang');
-			include_spip('inc/texte');
-			include_spip('inc/mail');
-			envoyer_mail_proposition($id_article);
-		}
-	}
-}
-
-function instituer_syndic_article($arg) {
-	list($id_syndic_article, $statut) = preg_split('/\W/', $arg);
-
-	$id_syndic_article = intval($id_syndic_article);
-	spip_query("UPDATE spip_syndic_articles SET statut='$statut' WHERE id_syndic_article=$id_syndic_article");
-
-}
-
-function instituer_breve($arg) {
-	list($id_breve, $statut) = preg_split('/\W/', $arg);
-
-	$id_breve = intval($id_breve);
-	$result = spip_query("SELECT statut FROM spip_breves WHERE id_breve=$id_breve");
-
-	if ($row = spip_fetch_array($result)) {
-		$statut_ancien = $row['statut'];
-		}
-
-	if ($statut != $statut_ancien) {
-		spip_query("UPDATE spip_breves SET date_heure=NOW(), statut='$statut' WHERE id_breve=$id_breve");
-
-		include_spip('inc/rubriques');
-		calculer_rubriques();
-	}
-}
-
-
-function instituer_langue_rubrique($arg)
-{
-	$changer_lang = _request('changer_lang');
-	list($id_rubrique, $id_parent) = preg_split('/\W/', $arg);
-
-	if ($changer_lang
-	AND $id_rubrique>0
-	AND $GLOBALS['meta']['multi_rubriques'] == 'oui'
-	AND ($GLOBALS['meta']['multi_secteurs'] == 'non' OR $id_parent == 0)) {
-		if ($changer_lang != "herit")
-			spip_query("UPDATE spip_rubriques SET lang=" . spip_abstract_quote($changer_lang) . ", langue_choisie='oui' WHERE id_rubrique=$id_rubrique");
-		else {
-			if ($id_parent == 0)
-				$langue_parent = $GLOBALS['meta']['langue_site'];
-			else {
-				$row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_parent"));
-				$langue_parent = $row['lang'];
-			}
-			spip_query("UPDATE spip_rubriques SET lang=" . spip_abstract_quote($langue_parent) . ", langue_choisie='non' WHERE id_rubrique=$id_rubrique");
-		}
-		include_spip('inc/rubriques');
-		calculer_rubriques();
-		calculer_langues_rubriques();
-
-		// invalider les caches marques de cette rubrique
-		include_spip('inc/invalideur');
-		suivre_invalideur("id='id_rubrique/$id_rubrique'");
-	}
-}
-
-function instituer_langue_article($arg)
-{
-	$changer_lang = _request('changer_lang');
-
-	if ($GLOBALS['meta']['multi_articles'] == 'oui' AND $changer_lang) {
-		list($id_article, $id_rubrique) = preg_split('/\W/', $arg);
-		if ($changer_lang != "herit")
-			spip_query("UPDATE spip_articles SET lang=" . spip_abstract_quote($changer_lang) . ", langue_choisie='oui' WHERE id_article=$id_article");
-		else {
-			$langue_parent = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=" . $id_rubrique));
-			$langue_parent=$langue_parent['lang'];
-			spip_query("UPDATE spip_articles SET lang=" . spip_abstract_quote($langue_parent) . ", langue_choisie='non' WHERE id_article=$id_article");
-			include_spip('inc/lang');
-			calculer_langues_utilisees();
-		}
-	}
- }
-
-?>
diff --git a/ecrire/action/instituer_article.php b/ecrire/action/instituer_article.php
new file mode 100644
index 0000000000000000000000000000000000000000..242f7ef6797e262b2c5be677f8bf7a3b62367f59
--- /dev/null
+++ b/ecrire/action/instituer_article.php
@@ -0,0 +1,70 @@
+<?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_instituer_article_dist() {
+
+	include_spip('inc/actions');
+
+	$arg = _request('arg');
+	$hash = _request('hash');
+	$action = _request('action');
+	$redirect = _request('redirect');
+	$id_auteur = _request('id_auteur');
+
+	if (!verifier_action_auteur("$action-$arg", $hash, $id_auteur)) {
+		include_spip('inc/minipres');
+		minipres(_T('info_acces_interdit'));
+	}
+	list($id_article, $statut) = preg_split('/\W/', $arg);
+	if (!$statut) $statut = _request('statut_nouv'); // cas POST
+	if (!$statut) return; // impossible mais sait-on jamais
+
+	$id_article = intval($id_article);
+	$result = spip_query("SELECT statut FROM spip_articles WHERE id_article=$id_article");
+
+	if ($row = spip_fetch_array($result)) {
+		$statut_ancien = $row['statut'];
+		}
+
+	if ($statut != $statut_ancien) {
+		spip_query("UPDATE spip_articles SET statut='$statut',	date=NOW() WHERE id_article=$id_article");
+
+		include_spip('inc/rubriques');
+		calculer_rubriques();
+
+		if ($statut == 'publie') {
+			if ($GLOBALS['meta']['activer_moteur'] == 'oui') {
+			include_spip("inc/indexation");
+			marquer_indexer('article', $id_article);
+			}
+			include_spip('inc/lang');
+			include_spip('inc/texte');
+			include_spip('inc/mail');
+			envoyer_mail_publication($id_article);
+		}
+
+		if ($statut_ancien == 'publie') {
+			include_spip('inc/invalideur');
+			suivre_invalideur("id='id_article/$id_article'");
+		}
+
+		if ($statut == "prop" AND $statut_ancien != 'publie') {
+			include_spip('inc/lang');
+			include_spip('inc/texte');
+			include_spip('inc/mail');
+			envoyer_mail_proposition($id_article);
+		}
+	}
+}
+?>
diff --git a/ecrire/action/instituer_breve.php b/ecrire/action/instituer_breve.php
new file mode 100644
index 0000000000000000000000000000000000000000..8fb467f058be0c8db45928b43ac22957142249e0
--- /dev/null
+++ b/ecrire/action/instituer_breve.php
@@ -0,0 +1,45 @@
+<?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_instituer_breve_dist() {
+
+	include_spip('inc/actions');
+
+	$arg = _request('arg');
+	$hash = _request('hash');
+	$action = _request('action');
+	$redirect = _request('redirect');
+	$id_auteur = _request('id_auteur');
+
+	if (!verifier_action_auteur("$action-$arg", $hash, $id_auteur)) {
+		include_spip('inc/minipres');
+		minipres(_T('info_acces_interdit'));
+	}
+	list($id_breve, $statut) = preg_split('/\W/', $arg);
+
+	$id_breve = intval($id_breve);
+	$result = spip_query("SELECT statut FROM spip_breves WHERE id_breve=$id_breve");
+
+	if ($row = spip_fetch_array($result)) {
+		$statut_ancien = $row['statut'];
+		}
+
+	if ($statut != $statut_ancien) {
+		spip_query("UPDATE spip_breves SET date_heure=NOW(), statut='$statut' WHERE id_breve=$id_breve");
+
+		include_spip('inc/rubriques');
+		calculer_rubriques();
+	}
+}
+?>
diff --git a/ecrire/action/instituer_collaboration.php b/ecrire/action/instituer_collaboration.php
new file mode 100644
index 0000000000000000000000000000000000000000..d7db2b2a947f1e81824f49dfc2cf075e1470533c
--- /dev/null
+++ b/ecrire/action/instituer_collaboration.php
@@ -0,0 +1,38 @@
+<?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_instituer_collaboration_dist() {
+
+	include_spip('inc/actions');
+
+	$arg = _request('arg');
+	$hash = _request('hash');
+	$action = _request('action');
+	$redirect = _request('redirect');
+	$id_auteur = _request('id_auteur');
+
+	if (!verifier_action_auteur("$action-$arg", $hash, $id_auteur)) {
+		include_spip('inc/minipres');
+		minipres(_T('info_acces_interdit'));
+	}
+
+	if ($arg AND ($id_auteur = intval($id_auteur))) {
+		include_spip('inc/drapeau_edition');
+		if ($arg == 'tous')
+			debloquer_tous($id_auteur);
+		else
+			debloquer_edition($id_auteur, $arg, 'article');
+	}
+}
+?>
diff --git a/ecrire/action/instituer_forum.php b/ecrire/action/instituer_forum.php
new file mode 100644
index 0000000000000000000000000000000000000000..f8dfb9d4f0ff79db8c2c2bc6fc8a6d5047dce124
--- /dev/null
+++ b/ecrire/action/instituer_forum.php
@@ -0,0 +1,63 @@
+<?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_instituer_forum_dist() {
+
+	include_spip('inc/actions');
+
+	$arg = _request('arg');
+	$hash = _request('hash');
+	$action = _request('action');
+	$redirect = _request('redirect');
+	$id_auteur = _request('id_auteur');
+
+	if (!verifier_action_auteur("$action-$arg", $hash, $id_auteur)) {
+		include_spip('inc/minipres');
+		minipres(_T('info_acces_interdit'));
+	}
+
+
+	list($id_forum, $statut) = preg_split('/\W/', $arg);
+	$id_forum = intval($id_forum);
+	$result = spip_query("SELECT * FROM spip_forum WHERE id_forum=$id_forum");
+	if (!($row = spip_fetch_array($result)))
+		return;
+
+	$id_parent = $row['id_parent'];
+
+	// invalider les pages comportant ce forum
+	include_spip('inc/invalideur');
+	include_spip('inc/forum');
+	$index_forum = calcul_index_forum($row['id_article'], $row['id_breve'], $row['id_rubrique'], $row['id_syndic']);
+	suivre_invalideur("id='id_forum/$index_forum'");
+
+	// Signaler au moteur de recherche qu'il faut reindexer le thread
+	if ($id_parent) {
+		include_spip('inc/indexation');
+		marquer_indexer ('forum', $id_parent);
+	}
+
+	// changer le statut de toute l'arborescence dependant de ce message
+	$id_messages = array($id_forum);
+	while ($id_messages) {
+		$id_messages = join(',', $id_messages);
+		spip_query("UPDATE spip_forum SET statut='$statut' WHERE id_forum IN ($id_messages)");
+
+		$result_forum = spip_query("SELECT id_forum FROM spip_forum WHERE id_parent IN ($id_messages)");
+		$id_messages = array();
+		while ($row = spip_fetch_array($result_forum))
+			$id_messages[] = $row['id_forum'];
+	}
+}
+?>
diff --git a/ecrire/action/instituer_langue_article.php b/ecrire/action/instituer_langue_article.php
new file mode 100644
index 0000000000000000000000000000000000000000..84a23b03f4151c80e6f71a3ea6113435eb1a3544
--- /dev/null
+++ b/ecrire/action/instituer_langue_article.php
@@ -0,0 +1,44 @@
+<?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_instituer_langue_article_dist() {
+
+	include_spip('inc/actions');
+
+	$arg = _request('arg');
+	$hash = _request('hash');
+	$action = _request('action');
+	$redirect = _request('redirect');
+	$id_auteur = _request('id_auteur');
+
+	if (!verifier_action_auteur("$action-$arg", $hash, $id_auteur)) {
+		include_spip('inc/minipres');
+		minipres(_T('info_acces_interdit'));
+	}
+	$changer_lang = _request('changer_lang');
+
+	if ($GLOBALS['meta']['multi_articles'] == 'oui' AND $changer_lang) {
+		list($id_article, $id_rubrique) = preg_split('/\W/', $arg);
+		if ($changer_lang != "herit")
+			spip_query("UPDATE spip_articles SET lang=" . spip_abstract_quote($changer_lang) . ", langue_choisie='oui' WHERE id_article=$id_article");
+		else {
+			$langue_parent = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=" . $id_rubrique));
+			$langue_parent=$langue_parent['lang'];
+			spip_query("UPDATE spip_articles SET lang=" . spip_abstract_quote($langue_parent) . ", langue_choisie='non' WHERE id_article=$id_article");
+			include_spip('inc/lang');
+			calculer_langues_utilisees();
+		}
+	}
+}
+?>
diff --git a/ecrire/action/instituer_langue_rubrique.php b/ecrire/action/instituer_langue_rubrique.php
new file mode 100644
index 0000000000000000000000000000000000000000..74d9f612654a312f925fe033db673b1261c89156
--- /dev/null
+++ b/ecrire/action/instituer_langue_rubrique.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;
+
+function action_instituer_langue_rubrique_dist() {
+
+	include_spip('inc/actions');
+
+	$arg = _request('arg');
+	$hash = _request('hash');
+	$action = _request('action');
+	$redirect = _request('redirect');
+	$id_auteur = _request('id_auteur');
+
+	if (!verifier_action_auteur("$action-$arg", $hash, $id_auteur)) {
+		include_spip('inc/minipres');
+		minipres(_T('info_acces_interdit'));
+	}
+	$changer_lang = _request('changer_lang');
+	list($id_rubrique, $id_parent) = preg_split('/\W/', $arg);
+
+	if ($changer_lang
+	AND $id_rubrique>0
+	AND $GLOBALS['meta']['multi_rubriques'] == 'oui'
+	AND ($GLOBALS['meta']['multi_secteurs'] == 'non' OR $id_parent == 0)) {
+		if ($changer_lang != "herit")
+			spip_query("UPDATE spip_rubriques SET lang=" . spip_abstract_quote($changer_lang) . ", langue_choisie='oui' WHERE id_rubrique=$id_rubrique");
+		else {
+			if ($id_parent == 0)
+				$langue_parent = $GLOBALS['meta']['langue_site'];
+			else {
+				$row = spip_fetch_array(spip_query("SELECT lang FROM spip_rubriques WHERE id_rubrique=$id_parent"));
+				$langue_parent = $row['lang'];
+			}
+			spip_query("UPDATE spip_rubriques SET lang=" . spip_abstract_quote($langue_parent) . ", langue_choisie='non' WHERE id_rubrique=$id_rubrique");
+		}
+		include_spip('inc/rubriques');
+		calculer_rubriques();
+		calculer_langues_rubriques();
+
+		// invalider les caches marques de cette rubrique
+		include_spip('inc/invalideur');
+		suivre_invalideur("id='id_rubrique/$id_rubrique'");
+	}
+}
+?>
diff --git a/ecrire/action/instituer_syndic.php b/ecrire/action/instituer_syndic.php
new file mode 100644
index 0000000000000000000000000000000000000000..9b069db90aae4a39fa78d58039d05f82060d533c
--- /dev/null
+++ b/ecrire/action/instituer_syndic.php
@@ -0,0 +1,36 @@
+<?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_instituer_syndic_dist() {
+
+	include_spip('inc/actions');
+
+	$arg = _request('arg');
+	$hash = _request('hash');
+	$action = _request('action');
+	$redirect = _request('redirect');
+	$id_auteur = _request('id_auteur');
+
+	if (!verifier_action_auteur("$action-$arg", $hash, $id_auteur)) {
+		include_spip('inc/minipres');
+		minipres(_T('info_acces_interdit'));
+	}
+	list($id_syndic_article, $statut) = preg_split('/\W/', $arg);
+
+	$id_syndic_article = intval($id_syndic_article);
+	spip_query("UPDATE spip_syndic_articles SET statut='$statut' WHERE id_syndic_article=$id_syndic_article");
+
+
+}
+?>
diff --git a/ecrire/exec/articles.php b/ecrire/exec/articles.php
index 967ac600fdd3b0657cff04f54e08c21295e022fd..7baafce407b18faf2d3148545aa46c4500654904 100644
--- a/ecrire/exec/articles.php
+++ b/ecrire/exec/articles.php
@@ -265,7 +265,9 @@ if ($options == 'avancees' AND $GLOBALS['meta']["articles_mots"] != 'non') {
 
  if ($statut_rubrique)
    echo debut_cadre_relief('', true),
-     afficher_statut_articles($id_article, $id_rubrique, $statut_article),
+     "<div id='instituer_article-$id_article'>",     
+     formulaire_instituer_article($id_article, $statut_article, 'articles', "id_article=$id_article"),
+     '</div>',
      fin_cadre_relief('', true);
 
  afficher_corps_articles($virtuel, $chapo, $texte, $ps, $extra);
@@ -302,8 +304,7 @@ function demande_publication($id_article)
 		"<center>" .
 		"<b>" ._T('texte_proposer_publication') . "</b>" .
 		aide ("artprop") .
-		redirige_action_auteur("instituer", 
-			"article-$id_article-prop",
+			redirige_action_auteur('instituer_article', "$id_article-prop",
 			'articles',
 			"id_article=$id_article",
 			("<input type='submit' class='fondo' value=\"" . 
@@ -385,7 +386,6 @@ function boites_de_config_articles($id_article)
 		icone_horizontale(_T('icone_suivi_forum', array('nb_forums' => $nb_forums)), generer_url_ecrire("articles_forum","id_article=$id_article"), "suivi-forum-24.gif", "");
 	}
 
-	// Afficher le formulaire de modification du reglage
 	echo "<div id='poster-$id_article'>",
 	  formulaire_poster($id_article,"articles","&id_article=$id_article#poster-$id_article"),
 	  '</div>';
@@ -708,8 +708,8 @@ function langues_articles($id_article, $langue_article, $flag_editable, $id_rubr
 			$langue_article = $langue_parent;
 
 		debut_cadre_couleur();
-		echo "<div style='text-align: center;'>",
-			menu_langues('changer_lang', $langue_article, _T('info_multi_cet_article').' ', $langue_parent, redirige_action_auteur('instituer', "langue_article-$id_article-$id_rubrique","articles","id_article=$id_article")),
+		echo "<div style='text-align: center;' id='instituer_langue_article-$id_article'>",
+			menu_langues('changer_lang', $langue_article, _T('info_multi_cet_article').' ', $langue_parent, redirige_action_auteur('instituer_langue_article', "$id_article-$id_rubrique","articles","id_article=$id_article")),
 			"</div>\n";
 		fin_cadre_couleur();
 
@@ -1158,9 +1158,9 @@ function affiche_forums_article($id_article, $id_rubrique, $titre, $debut, $mute
 	echo "</div>\n";
 }
 
-function afficher_statut_articles($id_article, $rubrique_article, $statut_article)
+function formulaire_instituer_article($id_article, $statut, $script, $args)
 {
-  return redirige_action_auteur("instituer", "article-$id_article",'articles', "id_article=$id_article",
+  $res =
 	("\n<center>" . 
 	"<b>" ._T('texte_article_statut') ."</b>" .
 	"\n<select name='statut_nouv' size='1' class='fondl'\n" .
@@ -1168,24 +1168,30 @@ function afficher_statut_articles($id_article, $rubrique_article, $statut_articl
 	_DIR_IMG_PACK .
 	"' + puce_statut(options[selectedIndex].value);" .
 	" setvisibility('valider_statut', 'visible');\">\n" .
-	"<option"  . mySel("prepa", $statut_article)  ." style='background-color: white'>" ._T('texte_statut_en_cours_redaction') ."</option>\n" .
-	"<option"  . mySel("prop", $statut_article)  . " style='background-color: #FFF1C6'>" ._T('texte_statut_propose_evaluation') ."</option>\n" .
-	"<option"  . mySel("publie", $statut_article)  . " style='background-color: #B4E8C5'>" ._T('texte_statut_publie') ."</option>\n" .
-	"<option"  . mySel("poubelle", $statut_article) .
+	"<option"  . mySel("prepa", $statut)  ." style='background-color: white'>" ._T('texte_statut_en_cours_redaction') ."</option>\n" .
+	"<option"  . mySel("prop", $statut)  . " style='background-color: #FFF1C6'>" ._T('texte_statut_propose_evaluation') ."</option>\n" .
+	"<option"  . mySel("publie", $statut)  . " style='background-color: #B4E8C5'>" ._T('texte_statut_publie') ."</option>\n" .
+	"<option"  . mySel("poubelle", $statut) .
 	http_style_background('rayures-sup.gif')  . '>'  ._T('texte_statut_poubelle') ."</option>\n" .
-	"<option"  . mySel("refuse", $statut_article)  . " style='background-color: #FFA4A4'>" ._T('texte_statut_refuse') ."</option>\n" .
+	"<option"  . mySel("refuse", $statut)  . " style='background-color: #FFA4A4'>" ._T('texte_statut_refuse') ."</option>\n" .
 	"</select>" .
 	" &nbsp; " .
-	http_img_pack("puce-".puce_statut($statut_article).'.gif', "", "border='0' NAME='statut'") .
+	http_img_pack("puce-".puce_statut($statut).'.gif', "", "border='0' NAME='statut'") .
 	"  &nbsp;\n" .
 	"<span class='visible_au_chargement' id='valider_statut'>" .
 	"<input type='submit' value='"._T('bouton_valider')."' CLASS='fondo' />" .
 	"</span>" .
 	aide("artstatut") .
-	"</center>"), 
-			   " method='post'");
+	 "</center>");
+  
+  return redirige_action_auteur('instituer_article',$id_article,'articles', "id_article=$id_article", $res, " method='post'");
+
+  /* pour plus tard
+  return ajax_action_auteur("instituer_article", $id_article, $res, $script, $args, $args);
+  */
 }
 
+
 //
 // Reunit les textes decoupes parce que trop longs
 //
diff --git a/ecrire/exec/breves_voir.php b/ecrire/exec/breves_voir.php
index 32da0419bcf21360c4a34193b50926bd142d9dd4..62bf5f5b1a526a59a9c4e00308107b24d12b931e 100644
--- a/ecrire/exec/breves_voir.php
+++ b/ecrire/exec/breves_voir.php
@@ -197,13 +197,13 @@ if ($connect_statut=="0minirezo" AND acces_rubrique($id_rubrique) AND ($statut==
 	echo "<table>";
 	echo "<td  align='right'>";
 	icone(_T('icone_publier_breve'), 
-	      redirige_action_auteur('instituer', "breve-$id_breve-publie","breves_voir","id_breve=$id_breve"), "breve-24.gif", "racine-24.gif");
+	      redirige_action_auteur('instituer_breve',"$id_breve-publie","breves_voir","id_breve=$id_breve"), "breve-24.gif", "racine-24.gif");
 	echo "</td>";
 	
 	echo "<td>", http_img_pack("rien.gif", ' ', "width='5'") ."</td>\n";
 	echo "<td  align='right'>";
 	icone(_T('icone_refuser_breve'), 
-	      redirige_action_auteur('instituer', "breve-$id_breve-refuse", "breves_voir","id_breve=$id_breve"), "breve-24.gif", "supprimer.gif");
+	      redirige_action_auteur('instituer_breve', "$id_breve-refuse", "breves_voir","id_breve=$id_breve"), "breve-24.gif", "supprimer.gif");
 	echo "</td>";
 	echo "</table>";	
 
diff --git a/ecrire/exec/naviguer.php b/ecrire/exec/naviguer.php
index 1f6d2ea6faf73b51f1151c4466113035adab8e6e..61ef568d00d63dd21580e404a7d8c2e90f5d0cf1 100644
--- a/ecrire/exec/naviguer.php
+++ b/ecrire/exec/naviguer.php
@@ -259,7 +259,7 @@ if ($id_rubrique>0 AND $GLOBALS['meta']['multi_rubriques'] == 'oui' AND ($GLOBAL
 
 	echo debut_block_invisible('languesrubrique');
 	echo "<div class='verdana2' align='center'>";
-	echo menu_langues('changer_lang', $langue_rubrique, '', $langue_parent, redirige_action_auteur('instituer', "langue_rubrique-$id_rubrique-$id_parent","naviguer","id_rubrique=$id_rubrique"), $ze_logo, "supprimer.gif");
+	echo menu_langues('changer_lang', $langue_rubrique, '', $langue_parent, redirige_action_auteur('instituer_langue_rubrique', "$id_rubrique-$id_parent","naviguer","id_rubrique=$id_rubrique"), $ze_logo, "supprimer.gif");
 	echo "</div>\n";
 	echo fin_block();
 
diff --git a/ecrire/inc/forum.php b/ecrire/inc/forum.php
index 96583842c177b49ae4cf9bf3d4f92c954f987b0f..bf30b7d1304a69c68b15ccc4527bfb7362092acf 100644
--- a/ecrire/inc/forum.php
+++ b/ecrire/inc/forum.php
@@ -85,18 +85,18 @@ function boutons_controle_forum($id_forum, $forum_stat, $forum_id_auteur=0, $ref
 
 	$lien = str_replace('&amp;', '&', self()) . "#id$id_forum";
 	if ($supprimer)
-	  $controle .= icone(_T('icone_supprimer_message'), generer_action_auteur('instituer', "forum-$id_forum-$supprimer", _DIR_RESTREINT_ABS . $lien),
+	  $controle .= icone(_T('icone_supprimer_message'), generer_action_auteur('instituer_forum',"$id_forum-$supprimer", _DIR_RESTREINT_ABS . $lien),
 			$logo,
 			"supprimer.gif", 'right', 'non');
 
 	if ($valider)
-		$controle .= icone(_T('icone_valider_message'), generer_action_auteur('instituer', "forum-$id_forum-$valider", _DIR_RESTREINT_ABS . $lien),
+	  $controle .= icone(_T('icone_valider_message'), generer_action_auteur('instituer_forum',"$id_forum-$valider", _DIR_RESTREINT_ABS . $lien),
 			$logo,
 			"creer.gif", 'right', 'non');
 
 	if ($valider_repondre) {
 	  $dblret =  rawurlencode(_DIR_RESTREINT_ABS . $lien);
-	  $controle .= icone(_T('icone_valider_message') . " &amp; " .   _T('lien_repondre_message'), generer_action_auteur('instituer', "forum-$id_forum-$valider", generer_url_public('forum', "$ref&id_forum=$id_forum&retour=$dblret", true)),
+	  $controle .= icone(_T('icone_valider_message') . " &amp; " .   _T('lien_repondre_message'), generer_action_auteur('instituer_forum',"$id_forum-$valider", generer_url_public('forum', "$ref&id_forum=$id_forum&retour=$dblret", true)),
 			     $logo,
 			     "creer.gif", 'right', 'non');
 	}
diff --git a/ecrire/inc/presentation.php b/ecrire/inc/presentation.php
index 8bacf65a5f0e729bd6aabce7b832d1676c36b77d..80a052a69c059b69be1328c6eb00f5cd7217f8c2 100644
--- a/ecrire/inc/presentation.php
+++ b/ecrire/inc/presentation.php
@@ -672,7 +672,7 @@ function afficher_script_statut($id, $type, $n, $img, $statut, $title, $act)
   return http_href_img("javascript:selec_statut('$id', '$type', -1, '" .
 		      http_wrapper($img) .
 		      "', '" .
-		       generer_action_auteur('instituer', "$type-$id-$statut") .
+		       generer_action_auteur("instituer_$type","$id-$statut") .
 		      "');",
 		      $img,
 			"title=\"".$title."\"",
@@ -2591,7 +2591,7 @@ function fin_page($credits='') {
 function debloquer_article($arg, $texte) {
 	$lien = parametre_url(self(), 'debloquer_article', $arg, '&');
 	return "<a href='" .
-	  generer_action_auteur('instituer', "collaboration-$arg", _DIR_RESTREINT_ABS . $lien) .
+	  generer_action_auteur('instituer_collaboration',$arg, _DIR_RESTREINT_ABS . $lien) .
 	  "' title=\"" .
 	  entites_html($texte) .
 	  "\">$texte&nbsp;" .
diff --git a/ecrire/inc/sites_voir.php b/ecrire/inc/sites_voir.php
index ff026c1e95024164b207549d4debd63d655e7982..d14fd61b397c07ea48e22cdb49d80f53b24053e7 100644
--- a/ecrire/inc/sites_voir.php
+++ b/ecrire/inc/sites_voir.php
@@ -216,11 +216,11 @@ function afficher_syndic_articles_boucle($row, &$my_sites, $bof, $redirect)
 				
 	if ($connect_statut == '0minirezo'){
 		if ($statut == "publie"){
-			$s =  "[<a href='". redirige_action_auteur("instituer", "syndic_article-$id_syndic_article-refuse", $GLOBALS['exec'], $redirect) . "'><font color='black'>"._T('info_bloquer_lien')."</font></a>]";
+		  $s =  "[<a href='". redirige_action_auteur('instituer_syndic',"$id_syndic_article-refuse", $GLOBALS['exec'], $redirect) . "'><font color='black'>"._T('info_bloquer_lien')."</font></a>]";
 		
 		}
 		else if ($statut == "refuse"){
-			$s =  "[<a href='". redirige_action_auteur("instituer", "syndic_article-$id_syndic_article-publie", $GLOBALS['exec'], $redirect) . "'>"._T('info_retablir_lien')."</a>]";
+		  $s =  "[<a href='". redirige_action_auteur('instituer_syndic',"$id_syndic_article-publie", $GLOBALS['exec'], $redirect) . "'>"._T('info_retablir_lien')."</a>]";
 		}
 		else if ($statut == "off"
 		AND $my_sites[$id_syndic]['miroir'] == 'oui') {
@@ -228,7 +228,7 @@ function afficher_syndic_articles_boucle($row, &$my_sites, $bof, $redirect)
 		}
 		else /* 'dispo' ou 'off' (dans le cas ancien site 'miroir') */
 		{
-			$s = "[<a href='". redirige_action_auteur("instituer", "syndic_article-$id_syndic_article-publie", $GLOBALS['exec'], $redirect) . "'>"._T('info_valider_lien')."</a>]";
+		  $s = "[<a href='". redirige_action_auteur('instituer_syndic',"$id_syndic_article-publie", $GLOBALS['exec'], $redirect) . "'>"._T('info_valider_lien')."</a>]";
 		}
 		$vals[] = $s;
 	}