diff --git a/.gitattributes b/.gitattributes
index 117b8722cd320786e2b81f8adc5ba335f42aea01..ca7cedfa97e5979308c9d74bf2b7b0fc8512703d 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -309,6 +309,7 @@ ecrire/action/editer_mot.php -text
 ecrire/action/ical.php -text
 ecrire/action/iconifier.php -text
 ecrire/action/instituer_article.php -text
+ecrire/action/instituer_auteur.php -text
 ecrire/action/instituer_breve.php -text
 ecrire/action/instituer_collaboration.php -text
 ecrire/action/instituer_forum.php -text
@@ -404,6 +405,7 @@ ecrire/fragments/editer_mot.php -text
 ecrire/fragments/grouper_mots.php -text
 ecrire/fragments/iconifier.php -text
 ecrire/fragments/informer.php -text
+ecrire/fragments/instituer_auteur.php -text
 ecrire/fragments/legender.php -text
 ecrire/fragments/memoriser.php -text
 ecrire/fragments/petitionner.php -text
@@ -418,7 +420,6 @@ ecrire/fragments/virtualiser.php -text
 ecrire/inc/actions.php -text
 ecrire/inc/agenda.php -text
 ecrire/inc/article_select.php -text
-ecrire/inc/auteur_voir.php -text
 ecrire/inc/boutons.php -text
 ecrire/inc/chercher_logo.php -text
 ecrire/inc/chercher_rubrique.php -text
@@ -453,6 +454,7 @@ ecrire/inc/install_ldap3.php -text
 ecrire/inc/install_ldap4.php -text
 ecrire/inc/install_ldap5.php -text
 ecrire/inc/install_unpack.php -text
+ecrire/inc/instituer_auteur.php -text
 ecrire/inc/joindre.php -text
 ecrire/inc/lang_liste.php -text
 ecrire/inc/legender.php -text
diff --git a/ecrire/action/instituer_auteur.php b/ecrire/action/instituer_auteur.php
new file mode 100644
index 0000000000000000000000000000000000000000..d7e32ed1df9ffd07410fb7a892dd5a8d9058b512
--- /dev/null
+++ b/ecrire/action/instituer_auteur.php
@@ -0,0 +1,50 @@
+<?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;
+
+// http://doc.spip.org/@action_instituer_collaboration_dist
+function action_instituer_auteur_dist() {
+
+	include_spip('inc/actions');
+	$var_f = charger_fonction('controler_action_auteur', 'inc');
+	$var_f();
+
+	$arg = _request('arg');
+
+	if (preg_match(",^(\d+)\W-(\d+)$,", $arg, $r))
+		spip_query("DELETE FROM spip_auteurs_rubriques WHERE id_auteur=".$r[1]." AND id_rubrique=" . $r[2]);
+	else if (!preg_match(',^(\d+)$,', $arg, $r)) {
+		spip_log("action_instituer_auteur_dist: $arg incompris");
+	} else {
+		$id_auteur = $r[1];
+		if ($id_parent = intval(_request('id_parent'))) {
+			include_spip('base/abstract_sql');
+			spip_abstract_insert('spip_auteurs_rubriques', "(id_auteur,id_rubrique)", "(" .$id_auteur .',' . $id_parent . ')');
+		}
+		if ($statut = _request('statut')) {
+			if (!ereg("^(0minirezo|1comite|5poubelle|6forum)$",$statut))
+			  spip_log("action_instituer_auteur_dist: $statut incompris  pour $id_auteur");
+			else {
+				spip_query("UPDATE spip_auteurs SET statut='".$statut . "' WHERE id_auteur=" . $id_auteur);
+
+				if ($GLOBALS['meta']['activer_moteur'] == 'oui') {
+					include_spip("inc/indexation");
+					marquer_indexer('spip_auteurs', $id_auteur);
+				}
+				// Mettre a jour les fichiers .htpasswd et .htpasswd-admin
+				ecrire_acces();
+			}
+		}
+	}
+}
+?>
diff --git a/ecrire/action/supprimer.php b/ecrire/action/supprimer.php
index 643a00dcc305714ee79d8fcd1a44652ba9c52c1d..d3de05d627d851c0d27f6645f5808cf0ed706f23 100644
--- a/ecrire/action/supprimer.php
+++ b/ecrire/action/supprimer.php
@@ -64,14 +64,6 @@ function action_supprimer_rubrique($id_rubrique)
 
 }
 
-// http://doc.spip.org/@action_supprimer_auteur_rubrique
-function action_supprimer_auteur_rubrique($arg)
-{
-	if (preg_match(",^\W*(\d+)\W+(\d+)$,", $arg, $r))
-		spip_query("DELETE FROM spip_auteurs_rubriques WHERE id_auteur=".$r[1]." AND id_rubrique=" . $r[2]);
-	else spip_log("action_supprimer_auteur_rubrique $arg pas compris");
-}
-
 function supprimer_document_et_vignette($arg)
 {
 	$result = spip_query("SELECT id_vignette, fichier FROM spip_documents WHERE id_document=$arg");
diff --git a/ecrire/exec/auteur_infos.php b/ecrire/exec/auteur_infos.php
index e501e16816f4e2fa49f5b0f0c77d844138d3ffe5..c23739a62885bc9c4bba93cb61f03bb22aeed564 100644
--- a/ecrire/exec/auteur_infos.php
+++ b/ecrire/exec/auteur_infos.php
@@ -12,7 +12,6 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 include_spip('inc/presentation');
-include_spip('inc/auteur_voir');
 include_spip('inc/acces');
 include_spip('base/abstract_sql');
 
@@ -51,20 +50,24 @@ global $ajouter_id_article,
 //
 // Recuperer id_auteur ou se preparer a l'inventer
 //
- if ($id_auteur) {
-	$auteur = spip_fetch_array(spip_query("SELECT * FROM spip_auteurs WHERE id_auteur=$id_auteur"));
-	if (!$auteur) exit;
- } else {
-	$auteur['nom'] = filtrer_entites(_T('item_nouvel_auteur'));
-	$onfocus = " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\"";
-	$auteur['statut'] = '1comite'; // statut par defaut a la creation
-	$auteur['source'] = 'spip';
-}
+	if ($id_auteur) {
+		$auteur = spip_fetch_array(spip_query("SELECT * FROM spip_auteurs WHERE id_auteur=$id_auteur"));
+		if (!$auteur) exit;
+	} else {
+		$auteur['nom'] = filtrer_entites(_T('item_nouvel_auteur'));
+		$onfocus = " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\"";
+		$auteur['statut'] = '1comite'; // statut par defaut a la creation
+		$auteur['source'] = 'spip';
+	}
 
-if (!statut_modifiable_auteur($id_auteur, $auteur)) {
-	gros_titre(_T('info_acces_interdit'));
-	exit;
- }
+	// formulaire de changement de statut
+	// (faux chargement pour disposer de la fonction ci-dessous. a revoir)
+	$f = charger_fonction('instituer_auteur', 'inc');
+
+	if (!statut_modifiable_auteur($id_auteur, $auteur)) {
+		gros_titre(_T('info_acces_interdit'));
+		exit;
+	}
 
 //
 // Modification (et creation si besoin)
@@ -80,11 +83,11 @@ if (strval($nom)!='') {
 	if (($new_login<>$old_login) AND $connect_statut == '0minirezo' AND $connect_toutes_rubriques AND $auteur['source'] == 'spip') {
 		if ($new_login) {
 			if (strlen($new_login) < 4)
-				$echec .= "<p>"._T('info_login_trop_court');
+				$echec .= "\n<p>"._T('info_login_trop_court');
 			else {
 			  $n = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM spip_auteurs WHERE login=" . spip_abstract_quote($new_login) . " AND id_auteur!=$id_auteur AND statut!='5poubelle'"));
 			  if ($n['n'])
-				$echec .= "<p>"._T('info_login_existant');
+				$echec .= "\n<p>"._T('info_login_existant');
 			  else if ($new_login != $old_login) {
 				$modif_login = true;
 				$auteur['login'] = $new_login;
@@ -101,9 +104,9 @@ if (strval($nom)!='') {
 	// changement de pass, a securiser en jaja ?
 	if ($new_pass AND ($statut != '5poubelle') AND $auteur['login'] AND $auteur['source'] == 'spip') {
 		if ($new_pass != $new_pass2)
-			$echec .= "<p>"._T('info_passes_identiques');
+			$echec .= "\n<p>"._T('info_passes_identiques');
 		else if ($new_pass AND strlen($new_pass) < 6)
-			$echec .= "<p>"._T('info_passe_trop_court');
+			$echec .= "\n<p>"._T('info_passe_trop_court');
 		else {
 			$modif_login = true;
 			$auteur['new_pass'] = $new_pass;
@@ -124,7 +127,7 @@ if (strval($nom)!='') {
 	  if (isset($email)) {
 		$email = trim($email);	 
 		if ($email !='' AND !email_valide($email)) 
-			$echec .= "<p>"._T('info_email_invalide');
+			$echec .= "\n<p>"._T('info_email_invalide');
 		$auteur['email'] = $email;
 	  }
 	}
@@ -174,9 +177,6 @@ if (strval($nom)!='') {
 	}
  }
 
-// Appliquer des modifications de statut
-modifier_statut_auteur($auteur, $_POST['statut'], $_POST['id_parent']);
-
 
 // Si on modifie la fiche auteur, reindexer et modifier htpasswd
 if ($nom OR $statut) {
@@ -236,9 +236,9 @@ function exec_affiche_auteur_info_dist($id_auteur, $auteur,  $echec, $redirect,
   if ($echec){
 	debut_cadre_relief();
 	echo http_img_pack("warning.gif", _T('info_avertissement'), "width='48' height='48' align='left'");
-	echo "<font color='red'>$echec <p>"._T('info_recommencer')."</font>";
+	echo "<font color='red'>$echec \n<p>"._T('info_recommencer')."</font>";
 	fin_cadre_relief();
-	echo "<p>";
+	echo "\n<p>";
   }
 
   debut_cadre_formulaire();
@@ -262,40 +262,40 @@ function formulaire_auteur_infos($id_auteur, $auteur, $onfocus, $redirect, $ajou
 // Infos personnelles
 //
 
-echo "<div class='serif'>";
+echo "\n<div class='serif'>";
 
 debut_cadre_relief("fiche-perso-24.gif", false, "", _T("icone_informations_personnelles"));
 
 echo _T('titre_cadre_signature_obligatoire');
-echo "("._T('entree_nom_pseudo').")<BR>";
-echo "<INPUT TYPE='text' NAME='nom' CLASS='formo' VALUE=\"".entites_html($auteur['nom'])."\" SIZE='40' $onfocus><P>";
+echo "("._T('entree_nom_pseudo').")<br />\n";
+echo "<INPUT TYPE='text' NAME='nom' CLASS='formo' VALUE=\"".entites_html($auteur['nom'])."\" SIZE='40' $onfocus>\n<p>";
 
 echo "<B>"._T('entree_adresse_email')."</B>";
 
 if ($connect_statut == "0minirezo"
 AND ($connect_toutes_rubriques OR $auteur['statut']<>'0minirezo')) {
-	echo "<br><INPUT TYPE='text' NAME='email' CLASS='formo' VALUE=\"".entites_html($auteur['email'])."\" SIZE='40'><P>\n";
+	echo "<br><INPUT TYPE='text' NAME='email' CLASS='formo' VALUE=\"".entites_html($auteur['email'])."\" SIZE='40'>\n<p>\n";
 }
 else {
 	echo "&nbsp;: <tt>".$auteur['email']."</tt>";
 	echo "<br>("._T('info_reserve_admin').")\n";
-	echo "<P>";
+	echo "\n<p>";
 }
 
-echo "<B>"._T('entree_infos_perso')."</B><BR>";
-echo "("._T('entree_biographie').")<BR>";
+echo "<B>"._T('entree_infos_perso')."</B><br />\n";
+echo "("._T('entree_biographie').")<br />\n";
 echo "<TEXTAREA NAME='bio' CLASS='forml' ROWS='4' COLS='40' wrap=soft>";
 echo entites_html($auteur['bio']);
 echo "</TEXTAREA>\n";
 
 debut_cadre_enfonce("site-24.gif", false, "", _T('info_site_web'));
-echo "<B>"._T('entree_nom_site')."</B><BR>";
+echo "<B>"._T('entree_nom_site')."</B><br />\n";
 echo "<INPUT TYPE='text' NAME='nom_site_auteur' CLASS='forml' VALUE=\"".entites_html($auteur['nom_site'])."\" SIZE='40'><P>\n";
 
-echo "<B>"._T('entree_url')."</B><BR>";
+echo "<B>"._T('entree_url')."</B><br />\n";
 echo "<INPUT TYPE='text' NAME='url_site' CLASS='forml' VALUE=\"".entites_html($auteur['url_site'])."\" SIZE='40'>\n";
 fin_cadre_enfonce();
-	echo "<p>";
+	echo "\n<p>";
 
 if ($options == "avancees") {
 	debut_cadre_enfonce("cadenas-24.gif", false, "", _T('entree_cle_pgp'));
@@ -303,22 +303,18 @@ if ($options == "avancees") {
 	echo entites_html($auteur['pgp']);
 	echo "</TEXTAREA>\n";
 	fin_cadre_enfonce();
-	echo "<p>";
+	echo "\n<p>";
 }
 else {
 	echo "<input type='hidden' name='pgp' value=\"".entites_html($auteur['pgp'])."\">";
 }
 
-echo "<p>";
+echo "\n<p>";
 	if ($champs_extra) {
 		include_spip('inc/extra');
 		extra_saisie($auteur['extra'], 'auteurs', $auteur['statut']);
 	}
 
-fin_cadre_relief();
-echo "<p>";
-
-
 
 //
 // Login et mot de passe :
@@ -350,26 +346,26 @@ if (($edit_login OR $edit_pass) AND $connect_id_auteur == $id_auteur) {
 	echo http_img_pack("warning.gif", _T('info_avertissement'), "width='48' height='48' align='right'");
 	echo "<b>"._T('texte_login_precaution')."</b>\n";
 	fin_cadre_enfonce();
-	echo "<p>";
+	echo "\n<p>";
 }
 
 // Un redacteur n'a pas le droit de modifier son login !
 if ($edit_login) {
 	echo "<B>"._T('item_login')."</B> ";
-	echo "<font color='red'>("._T('texte_plus_trois_car').")</font> :<BR>";
+	echo "<font color='red'>("._T('texte_plus_trois_car').")</font> :<br />\n";
 	echo "<INPUT TYPE='text' NAME='new_login' CLASS='formo' VALUE=\"".entites_html($auteur['login'])."\" SIZE='40'><P>\n";
 }
 else {
-	echo "<fieldset style='padding:5'><legend><B>"._T('item_login')."</B><BR></legend><br><b>".$auteur['login']."</b> ";
-	echo "<i> ("._T('info_non_modifiable').")</i><p>";
+	echo "<fieldset style='padding:5'><legend><B>"._T('item_login')."</B><br />\n</legend><br><b>".$auteur['login']."</b> ";
+	echo "<i> ("._T('info_non_modifiable').")</i>\n<p>";
 }
 
 // On ne peut modifier le mot de passe en cas de source externe (par exemple LDAP)
 if ($edit_pass) {
 	echo "<B>"._T('entree_nouveau_passe')."</B> ";
-	echo "<font color='red'>("._T('info_plus_cinq_car').")</font> :<BR>";
-	echo "<INPUT TYPE='password' NAME='new_pass' CLASS='formo' VALUE=\"\" SIZE='40'><BR>\n";
-	echo _T('info_confirmer_passe')."<BR>";
+	echo "<font color='red'>("._T('info_plus_cinq_car').")</font> :<br />\n";
+	echo "<INPUT TYPE='password' NAME='new_pass' CLASS='formo' VALUE=\"\" SIZE='40'><br />\n";
+	echo _T('info_confirmer_passe')."<br />\n";
 	echo "<INPUT TYPE='password' NAME='new_pass2' CLASS='formo' VALUE=\"\" SIZE='40'><P>\n";
 }
 fin_cadre_relief();
@@ -382,15 +378,11 @@ echo "<p />";
 
  if ($apparait) apparait_auteur_infos($id_auteur, $auteur);
 
-// Afficher le formulaire de changement de statut (cf. inc/acces)
-afficher_formulaire_statut_auteur ($id_auteur, $auteur['statut']);
-
-
 echo "<INPUT NAME='ajouter_id_article' VALUE='$ajouter_id_article' TYPE='hidden'>\n";
 echo "<INPUT NAME='redirect' VALUE='$redirect' TYPE='hidden'>\n";
 echo "<INPUT NAME='redirect_ok' VALUE='oui' TYPE='hidden'>\n";
 
-echo "<DIV align='right'><INPUT TYPE='submit' CLASS='fondo' NAME='Valider' VALUE='"._T('bouton_enregistrer')."'></DIV>";
+echo "\n<div align='right'><INPUT TYPE='submit' CLASS='fondo' NAME='Valider' VALUE='"._T('bouton_enregistrer')."'></DIV>";
 
 echo pipeline('affiche_milieu',
 	array('args' => array(
@@ -400,10 +392,14 @@ echo pipeline('affiche_milieu',
 );
 
 echo "</div>";
-
+fin_cadre_relief();
 echo "</form>";
 
+// Afficher le formulaire de changement de statut (cf. inc_acces)
+ $f = charger_fonction('instituer_auteur', 'inc');
+ echo $f($id_auteur, $auteur['statut'], "auteurs_edit");
 }
+
 //
 // Apparaitre dans la liste des redacteurs connectes
 //
@@ -416,18 +412,18 @@ function apparait_auteur_infos($id_auteur, $auteur)
 
 		debut_cadre_relief("messagerie-24.gif", false, "", _T('info_liste_redacteurs_connectes'));
 		
-		echo "<div>"._T('texte_auteur_messagerie')."</div>";	
+		echo "\n<div>"._T('texte_auteur_messagerie')."</div>";	
 
 		if ($auteur['imessage']=="non"){
 			echo "<INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='oui' id='perso_activer_imessage_on'>";
 			echo " <label for='perso_activer_imessage_on'>"._T('bouton_radio_apparaitre_liste_redacteurs_connectes')."</label> ";
-			echo "<BR><INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='non' CHECKED id='perso_activer_imessage_off'>";
+			echo "<br />\n<INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='non' CHECKED id='perso_activer_imessage_off'>";
 			echo " <B><label for='perso_activer_imessage_off'>"._T('bouton_radio_non_apparaitre_liste_redacteurs_connectes')."</label></B> ";
 		} else {
 			echo "<INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='oui' id='perso_activer_imessage_on' CHECKED>";
 			echo " <B><label for='perso_activer_imessage_on'>"._T('bouton_radio_apparaitre_liste_redacteurs_connectes')."</label></B> ";
 
-			echo "<BR><INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='non' id='perso_activer_imessage_off'>";
+			echo "<br />\n<INPUT TYPE='radio' NAME='perso_activer_imessage' VALUE='non' id='perso_activer_imessage_off'>";
 			echo " <label for='perso_activer_imessage_off'>"._T('bouton_radio_non_apparaitre_liste_redacteurs_connectes')."</label> ";
 		}
 
diff --git a/ecrire/exec/auteurs_edit.php b/ecrire/exec/auteurs_edit.php
index c2142d7cc036754692796a8bfbf708d11c16cd31..0316e95fb70358da949ece84b9cebce2ce49fb02 100644
--- a/ecrire/exec/auteurs_edit.php
+++ b/ecrire/exec/auteurs_edit.php
@@ -33,7 +33,8 @@ function exec_auteurs_edit_dist()
 
 	if (!$auteur = spip_fetch_array($result)) die('erreur');
 
-	modifier_statut_auteur($auteur, $_POST['statut'], $_POST['id_parent']);
+	// Afficher le formulaire de changement de statut (cf. inc_acces)
+	$f = charger_fonction('instituer_auteur', 'inc');
 
 	debut_page($auteur['nom'],  "auteurs",
 		   (($connect_id_auteur == $id_auteur) ? "perso" : "redacteurs"));
@@ -55,7 +56,7 @@ function exec_auteurs_edit_dist()
 			'id_auteur'=>$id_auteur),
 		'data'=>'')
 	);
-	table_auteurs_edit($auteur);
+	table_auteurs_edit($auteur, $f);
 	echo pipeline('affiche_milieu',
 		array('args' => array(
 			'exec'=>'auteurs_edit',
@@ -68,9 +69,9 @@ function exec_auteurs_edit_dist()
 }
 
 // http://doc.spip.org/@table_auteurs_edit
-function table_auteurs_edit($auteur)
+function table_auteurs_edit($auteur, $instituer_auteur)
 {
-	global $connect_statut, $connect_id_auteur, $champs_extra, $options  ;
+  global $connect_toutes_rubriques, $connect_statut, $connect_id_auteur, $champs_extra, $options,$spip_lang_right ;
 
 	$id_auteur=$auteur['id_auteur'];
 	$nom=$auteur['nom'];
@@ -128,11 +129,7 @@ function table_auteurs_edit($auteur)
 		extra_affichage($extra, "auteurs");
 	}
 
-	// Afficher le formulaire de changement de statut (cf. inc_acces)
-	if ($options == 'avancees')
-	  afficher_formulaire_statut_auteur ($id_auteur, $auteur['statut'], "auteurs_edit");
-
-	fin_cadre_relief();
+	echo $instituer_auteur($id_auteur, $auteur['statut'], "auteurs_edit");
 
 	echo "<div>&nbsp;</div>";
 
diff --git a/ecrire/fragments/instituer_auteur.php b/ecrire/fragments/instituer_auteur.php
new file mode 100644
index 0000000000000000000000000000000000000000..805b265f559ea2723c79ca76bf8ebbcaefa14187
--- /dev/null
+++ b/ecrire/fragments/instituer_auteur.php
@@ -0,0 +1,26 @@
+<?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 fragments_instituer_auteur_dist()
+{
+  $script = _request('script');
+  $id_auteur = intval(_request('id_auteur'));
+  if (!preg_match('/^\w+$/', $script)) die("$script !!");
+
+  $r = spip_fetch_array(spip_query("SELECT statut FROM spip_auteurs WHERE id_auteur=$id_auteur"));
+
+  $f = charger_fonction('instituer_auteur', 'inc');
+  return $f(_request('id_auteur'), $r['statut'] , _request('script'));
+}
+?>
diff --git a/ecrire/fragments/selectionner.php b/ecrire/fragments/selectionner.php
index 8da36f45f726c956b55297ccdec7083128059410..fb6d3cf9ed4aa5e5566fec2a0e96cf6fbf10c35a 100644
--- a/ecrire/fragments/selectionner.php
+++ b/ecrire/fragments/selectionner.php
@@ -24,7 +24,7 @@ function fragments_selectionner_dist()
 
 	include_spip('inc/texte');
 	include_spip('inc/mini_nav');
-	return mini_nav ($id, "choix_parent", "this.form.id_rubrique.value=::sel::;this.form.titreparent.value='::sel2::';findObj('selection_rubrique').style.display='none';", $exclus, $rac, $type!='breve');
+	return mini_nav ($id, "choix_parent", "this.form.id_rubrique.value=::sel::;this.form.titreparent.value='::sel2::';findObj_forcer('selection_rubrique').style.display='none';", $exclus, $rac, $type!='breve');
 
 }
 ?>
diff --git a/ecrire/inc/chercher_rubrique.php b/ecrire/inc/chercher_rubrique.php
index 19bb0151c544e722df524238cf80acd9041fef28..90f09a9e29593523fc11583cd4e87077ca8e580c 100644
--- a/ecrire/inc/chercher_rubrique.php
+++ b/ecrire/inc/chercher_rubrique.php
@@ -204,7 +204,7 @@ function selecteur_rubrique_ajax($id_rubrique, $type, $restreint, $idem=0) {
 		$exclus = "&exclus=$idem&rac=oui";
 
 	if ($id_rubrique)
-		list($titre_parent) = spip_fetch_array(spip_query("SELECT titre FROM spip_rubriques WHERE id_rubrique=$id_rubrique"), SPIP_NUM);
+		list($titre_parent) = spip_fetch_array(spip_query("SELECT titr<e FROM spip_rubriques WHERE id_rubrique=$id_rubrique"), SPIP_NUM);
 	else if ($type == 'auteur')
 		$titre_parent = '&nbsp;';
 	else
@@ -212,11 +212,11 @@ function selecteur_rubrique_ajax($id_rubrique, $type, $restreint, $idem=0) {
 
 	return 	"<table width='100%'><tr width='100%'><td width='45'>
 	<a	href=\"#\"
-		onClick=\"if(findObj('selection_rubrique').style.display=='none')
+		onClick=\"if(findObj_forcer('selection_rubrique').style.display=='none')
 			{charger_id_url_si_vide('" .
 	  generer_url_ecrire('selectionner',"id=$id_rubrique$exclus&type=$type", true) ."',
 				'selection_rubrique');}
-			else {findObj('selection_rubrique').style.display='none';}\"
+			else {findObj_forcer('selection_rubrique').style.display='none';}\"
 	><img src='". _DIR_IMG_PACK . "loupe.png' style='vertical-align: middle;'
 	/></a><img src='". _DIR_IMG_PACK . "searching.gif'
 		id='img_selection_rubrique' style='visibility: hidden;'>
diff --git a/ecrire/inc/auteur_voir.php b/ecrire/inc/instituer_auteur.php
similarity index 59%
rename from ecrire/inc/auteur_voir.php
rename to ecrire/inc/instituer_auteur.php
index d34752465b67499822550185eb71f41b1d1cd086..d90cee269fe7b54eb2f0e66b2c84efba9eacbfd1 100644
--- a/ecrire/inc/auteur_voir.php
+++ b/ecrire/inc/instituer_auteur.php
@@ -13,134 +13,124 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_spip('inc/actions');
-
-// http://doc.spip.org/@cadre_auteur_infos
-function cadre_auteur_infos($id_auteur, $auteur)
-{
-  global $connect_statut;
-
-  if ($id_auteur) {
-	debut_boite_info();
-	echo "<CENTER>";
-	echo "<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=1><B>"._T('titre_cadre_numero_auteur')."&nbsp;:</B></FONT>";
-	echo "<BR><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=6><B>$id_auteur</B></FONT>";
-	echo "</CENTER>";
-
-
-// "Voir en ligne" si l'auteur a un article publie
-// seuls les admins peuvent "previsualiser" une page auteur
-	$n = spip_num_rows(spip_query("SELECT lien.id_article FROM spip_auteurs_articles AS lien, spip_articles AS articles WHERE lien.id_auteur=$id_auteur AND lien.id_article=articles.id_article AND articles.statut='publie'"));
-	if ($n)
-		voir_en_ligne ('auteur', $id_auteur, 'publie');
-	else if ($connect_statut == '0minirezo')
-		voir_en_ligne ('auteur', $id_auteur, 'prop');
-
-	fin_boite_info();
-  }
-}
+include_spip('inc/texte');
+include_spip('inc/layer');
+include_spip('inc/auteur_voir');
+include_spip('inc/presentation');
 
 //  affiche le statut de l'auteur dans l'espace prive
+// les admins voient et peuvent modifier les droits d'un auteur
+// les admins restreints les voient mais 
+// ne peuvent les utiliser que pour mettre un auteur a la poubelle
 
-// http://doc.spip.org/@afficher_formulaire_statut_auteur
-function afficher_formulaire_statut_auteur ($id_auteur, $statut, $post='') {
-	global $connect_statut, $connect_toutes_rubriques, $connect_id_auteur;
-	global $spip_lang_right;
-
-
+// http://doc.spip.org/@auteur_voir_rubriques
+function inc_instituer_auteur_dist($id_auteur, $statut, $url_self)
+{
+	global $connect_toutes_rubriques, $connect_id_auteur, $connect_statut, $spip_lang_right;
+					 
 	if ($connect_statut != "0minirezo") return;
 
-	$droit = ( ($connect_toutes_rubriques OR $statut != "0minirezo")
-		   && ($connect_id_auteur != $id_auteur));
+	$result_admin = spip_query("SELECT rubriques.id_rubrique, titre FROM spip_auteurs_rubriques AS lien, spip_rubriques AS rubriques WHERE lien.id_auteur=$id_auteur AND lien.id_rubrique=rubriques.id_rubrique");
 
-	if ($post && $droit) {
-		$url_self = $post;
-		echo "<p />";
-		echo generer_url_post_ecrire($post, "id_auteur=$id_auteur");
-	} else
-		$url_self = "auteur_infos";
+	$restreint = spip_num_rows($result_admin);
 
-	// les admins voient et peuvent modifier les droits
-	// les admins restreints les voient mais 
-	// ne peuvent les utiliser que pour mettre un auteur a la poubelle
+	if (!$restreint) 
+		$res .= _T('info_admin_gere_toutes_rubriques');
+	else {
+		$modif = ($connect_toutes_rubriques AND $connect_id_auteur != $id_auteur) ? "id_auteur=$id_auteur" : '';
 
-	debut_cadre_relief();
+		$lien .= !$modif  ? '' : _T('lien_supprimer_rubrique');
 
-	if ($droit) {
-		  echo "<b>"._T('info_statut_auteur')." </b> ";
-		  echo choix_statut_auteur($statut);
+		$res .=  _T('info_admin_gere_rubriques')
+		. "\n<ul style='list-style-image: url("
+		. _DIR_IMG_PACK
+		. "rubrique-12.gif)'>";
+
+		while ($row_admin = spip_fetch_array($result_admin)) {
+			$id_rubrique = $row_admin["id_rubrique"];
+			
+			$res .= "<li><a href='"
+			. generer_url_ecrire("naviguer","id_rubrique=$id_rubrique")
+			. "'>"
+			. typo($row_admin["titre"])
+			. "</a>"
+			. (!$modif ? '' :
+			   ajax_action_auteur('instituer_auteur', "$id_auteur/-$id_rubrique", $url_self, $modif, array("&nbsp;&nbsp;&nbsp;&nbsp;[<font size='1'>$lien</font>]")))
+			. '</li>';
+		}
+		$res .= "</ul>";
 	}
 
 	// si pas admin au chargement, rien a montrer. 
-	echo "<div id='changer_statut_auteur'",
-		  (($statut == '0minirezo') ? '' : " style='visibility: hidden'"),
-		  '>';
-	$restreint = auteur_voir_rubriques($id_auteur, $url_self);
+	$vis = ($statut == '0minirezo') ? '' : " style='visibility: hidden'";
 
 		// Ajouter une rubrique a un administrateur restreint
 	if ($connect_toutes_rubriques AND $connect_id_auteur != $id_auteur) {
-		echo debut_block_visible("statut$id_auteur");
-		echo "\n<div id='ajax_rubrique' class='arial1'><br />\n";
+		$res .=debut_block_visible("statut$id_auteur");
+		$res .="\n<div id='ajax_rubrique' class='arial1'><br />\n";
 		if (!$restreint)
-			echo "<b>"._T('info_restreindre_rubrique')."</b><br />";
+			$res .="<b>"._T('info_restreindre_rubrique')."</b><br />";
 		else
-			echo "<b>"._T('info_ajouter_rubrique')."</b><br />";
-		echo "\n<input name='id_auteur' value='$id_auteur' type='hidden' />";
+			$res .="<b>"._T('info_ajouter_rubrique')."</b><br />";
+		$res .="\n<input name='id_auteur' value='$id_auteur' type='hidden' />";
 		$selecteur_rubrique = charger_fonction('chercher_rubrique', 'inc');
-		echo $selecteur_rubrique(0, 'auteur', false);
-		echo "</div>\n";
-		echo fin_block();
+		$res .=$selecteur_rubrique(0, 'auteur', false);
+		$res .="</div>\n";
+		$res .=fin_block();
 	}
+		
+	$droit = (($connect_toutes_rubriques OR $statut != "0minirezo")
+		   && ($connect_id_auteur != $id_auteur));
 
-	echo '</div>'; // fin de la balise a visibilite conditionnelle
+	$ancre = "instituer_auteur-" . intval($id_auteur);
 
-	if ($post && $droit) {
-		echo "<div align='",
-		    $spip_lang_right,
-		    "'><input type='submit' class='fondo' value=\"",
-		    _T('bouton_valider'),
-		    "\" /></div>",
-		    "</form>\n";
+	if ($droit) {
+		$res = "<b>"._T('info_statut_auteur')." </b> "
+		. choix_statut_auteur($statut, "$ancre-aff")
+		. "<div id='$ancre-aff'$vis>"
+		. $res
+		. "</div><div align='"
+		.  $spip_lang_right
+		. "'><input type='submit' class='fondo' value=\""
+		. _T('bouton_valider')
+		. "\" /></div>";
+		
+		$res = ajax_action_auteur('instituer_auteur', $id_auteur, $url_self, (!$id_auteur ? "" : "id_auteur=$id_auteur"), $res);
 	}
 
-	fin_cadre_relief();
+	return (_request('var_ajaxcharset'))? $res :
+	  (debut_cadre_relief('',true)
+	. "<div id='"
+	. $ancre
+	. "'>"
+	. $res 
+	. '</div>'
+	. fin_cadre_relief(true));
 }
 
-// http://doc.spip.org/@auteur_voir_rubriques
-function auteur_voir_rubriques($id_auteur, $url_self)
+// http://doc.spip.org/@cadre_auteur_infos
+function cadre_auteur_infos($id_auteur, $auteur)
 {
-	global $connect_toutes_rubriques, $connect_id_auteur;
-					 
-	$result_admin = spip_query("SELECT rubriques.id_rubrique, titre FROM spip_auteurs_rubriques AS lien, spip_rubriques AS rubriques WHERE lien.id_auteur=$id_auteur AND lien.id_rubrique=rubriques.id_rubrique");
+  global $connect_statut;
 
-	$restreint = spip_num_rows($result_admin);
+  if ($id_auteur) {
+	debut_boite_info();
+	echo "<CENTER>";
+	echo "<FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=1><B>"._T('titre_cadre_numero_auteur')."&nbsp;:</B></FONT>";
+	echo "<BR><FONT FACE='Verdana,Arial,Sans,sans-serif' SIZE=6><B>$id_auteur</B></FONT>";
+	echo "</CENTER>";
 
-	if (!$restreint) {
-		echo _T('info_admin_gere_toutes_rubriques');
-	} else {
-		$modif = ($connect_toutes_rubriques AND $connect_id_auteur != $id_auteur) ? "id_auteur=$id_auteur" : '';
 
-		echo _T('info_admin_gere_rubriques'),
-			"\n<ul style='list-style-image: url(",
-			_DIR_IMG_PACK,
-			"rubrique-12.gif)'>";
+// "Voir en ligne" si l'auteur a un article publie
+// seuls les admins peuvent "previsualiser" une page auteur
+	$n = spip_num_rows(spip_query("SELECT lien.id_article FROM spip_auteurs_articles AS lien, spip_articles AS articles WHERE lien.id_auteur=$id_auteur AND lien.id_article=articles.id_article AND articles.statut='publie'"));
+	if ($n)
+		voir_en_ligne ('auteur', $id_auteur, 'publie');
+	else if ($connect_statut == '0minirezo')
+		voir_en_ligne ('auteur', $id_auteur, 'prop');
 
-		while ($row_admin = spip_fetch_array($result_admin)) {
-			$id_rubrique = $row_admin["id_rubrique"];
-			
-			echo "<li><a href='", generer_url_ecrire("naviguer","id_rubrique=$id_rubrique") . "'>",
-			  typo($row_admin["titre"]),
-			  "</a>";
-			
-			if ($modif) {
-			  echo "&nbsp;&nbsp;&nbsp;&nbsp;<font size='1'>[<a href='", redirige_action_auteur('supprimer', "auteur_rubrique-$id_auteur-$id_rubrique", $url_self, $modif), "'>",
-					    _T('lien_supprimer_rubrique'),
-					    "</a>]</font>";
-			}
-			echo '</li>';
-		}
-		echo "</ul>";
-	}
-	return $restreint;
+	fin_boite_info();
+  }
 }
 
 // http://doc.spip.org/@statut_modifiable_auteur
@@ -157,33 +147,13 @@ function statut_modifiable_auteur($id_auteur, $auteur)
 		  ($id_auteur AND ($auteur['statut'] != "0minirezo")))));
 }
 
-// http://doc.spip.org/@modifier_statut_auteur
-function modifier_statut_auteur (&$auteur, $statut, $add_rub='') {
-	global $connect_statut, $connect_toutes_rubriques;
-	// changer le statut ?
-	$id_auteur= intval($auteur['id_auteur']);
-	if (statut_modifiable_auteur($id_auteur, $auteur) &&
-	    ereg("^(0minirezo|1comite|5poubelle|6forum)$",$statut)) {
-			$auteur['statut'] = $statut;
-			spip_query("UPDATE spip_auteurs SET statut='".$statut."' WHERE id_auteur=$id_auteur");
-	}
-
-	// modif auteur restreint, seulement pour les admins
-	if ($connect_toutes_rubriques) {
-		if ($add_rub=intval($add_rub)) {
-			include_spip('base/abstract_sql');
-			spip_abstract_insert('spip_auteurs_rubriques', "(id_auteur,id_rubrique)", "($id_auteur, $add_rub)");
-	  }
-	}
-}
-
 // Menu de choix d'un statut d'auteur
 // http://doc.spip.org/@choix_statut_auteur
-function choix_statut_auteur($statut) {
+function choix_statut_auteur($statut, $ancre) {
 	global $connect_toutes_rubriques;
 
-	$menu = "<select name='statut' size=1 class='fondl'
-		onChange=\"setvisibility('changer_statut_auteur', this.selectedIndex ? 'hidden' : 'visible');\">";
+	$menu = "<select name='statut' size='1' class='fondl'
+		onChange=\"findObj_forcer('$ancre').style.visibility = (this.selectedIndex ? 'hidden' : 'visible');\">";
 
 	// Si on est admin restreint, on n'a pas le droit de modifier un admin
 	if ($connect_toutes_rubriques)
diff --git a/ecrire/inc/mini_nav.php b/ecrire/inc/mini_nav.php
index 09d89dce767f6d701a2cffd46798c66fd852fddb..c4f74d7c9d0a479dbaa76467734e3dbf145e72c8 100644
--- a/ecrire/inc/mini_nav.php
+++ b/ecrire/inc/mini_nav.php
@@ -133,15 +133,15 @@ function mini_nav ($sel, $rac="",$fonction="", $rub_exclus=0, $aff_racine=false,
 	if ($aff_racine) {
 		$onClick = " aff_selection('rubrique','$rac', '0');";
 		# ce lien provoque la selection (directe) de la rubrique cliquee
-		$ondbClick = "findObj('id_parent').value=0;";
+		$ondbClick = "findObj_forcer('id_parent').value=0;";
 		# et l'affichage de son titre dans le bandeau
-		$ondbClick .= "findObj('titreparent').value='"
+		$ondbClick .= "findObj_forcer('titreparent').value='"
 			. strtr(
 				str_replace("'", "&#8217;",
 				str_replace('"', "&#34;",
 					textebrut(_T('info_racine_site')))),
 				"\n\r", "  ")."';";
-		$ondbClick .= "findObj('selection_rubrique').style.display='none';";
+		$ondbClick .= "findObj_forcer('selection_rubrique').style.display='none';";
 	}
 
 	if ($plonger)