diff --git a/.gitattributes b/.gitattributes
index 22293f7b434ad4ef1c75dd5f50ea97640c7806ef..a7da6602c7bef2d9dde777c6a9dadd0dc43c62be 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -343,8 +343,7 @@ dist/win_width.htc -text
 ecrire/action/acceder_document.php -text
 ecrire/action/activer_plugins.php -text
 ecrire/action/config.php -text
-ecrire/action/configurer_charset.php -text
-ecrire/action/configurer_langue.php -text
+ecrire/action/configurer.php -text
 ecrire/action/converser.php -text
 ecrire/action/dater.php -text
 ecrire/action/desinstaller_plugin.php -text
@@ -405,6 +404,19 @@ ecrire/charsets/iso-8859-9.php -text
 ecrire/charsets/mathml.php -text
 ecrire/charsets/translit.php -text
 ecrire/charsets/translitcomplexe.php -text
+ecrire/configuration/avertisseur.php -text
+ecrire/configuration/compteur.php -text
+ecrire/configuration/correcteur.php -text
+ecrire/configuration/index.php -text
+ecrire/configuration/indexeur.php -text
+ecrire/configuration/langue.php -text
+ecrire/configuration/locuteur.php -text
+ecrire/configuration/previsualiseur.php -text
+ecrire/configuration/reducteur.php -text
+ecrire/configuration/referenceur.php -text
+ecrire/configuration/relayeur.php -text
+ecrire/configuration/transcodeur.php -text
+ecrire/configuration/versionneur.php -text
 ecrire/exec/accueil.php -text
 ecrire/exec/admin_effacer.php -text
 ecrire/exec/admin_plugin.php -text
@@ -431,8 +443,7 @@ ecrire/exec/config_fonctions.php -text
 ecrire/exec/config_lang.php -text
 ecrire/exec/config_multilang.php -text
 ecrire/exec/configuration.php -text
-ecrire/exec/configurer_charset.php -text
-ecrire/exec/configurer_langue.php -text
+ecrire/exec/configurer.php -text
 ecrire/exec/controle_forum.php -text
 ecrire/exec/controle_petition.php -text
 ecrire/exec/convert_utf8.php -text
@@ -508,8 +519,6 @@ ecrire/inc/chercher_logo.php -text
 ecrire/inc/chercher_rubrique.php -text
 ecrire/inc/commencer_page.php -text
 ecrire/inc/compacte_js.php -text
-ecrire/inc/configurer_charset.php -text
-ecrire/inc/configurer_langue.php -text
 ecrire/inc/cookie.php -text
 ecrire/inc/dater.php -text
 ecrire/inc/discuter.php -text
diff --git a/dist/javascript/layer.js b/dist/javascript/layer.js
index a4538ed0e7296f5b0fcfac89e1b449a7e5e8b608..ce88e8f75e4a1fbddcbd44b9dadd49c74f1b6ece 100644
--- a/dist/javascript/layer.js
+++ b/dist/javascript/layer.js
@@ -310,6 +310,20 @@ function AjaxSqueezeNode(trig, target, f, event)
 	return true; 
 }
 
+// Les Submit avec attribut name ne sont pas transmis par JQuery
+// Cette fonction clone le bouton de soumission en hidden
+// Voir l'utilisation dans ajax_action_post dans inc/actions
+
+function AjaxNamedSubmit(input)
+{
+	x=document.createElement('input');
+	x.setAttribute('type', 'hidden');
+	x.setAttribute('name', input.name);
+	x.setAttribute('value', input.value)
+	input.parentNode.appendChild(x);
+	return true;
+}
+
 function AjaxRet(res,status, target, callback)
 {
 	if (res.aborted) return;
diff --git a/ecrire/action/configurer_charset.php b/ecrire/action/configurer.php
similarity index 57%
rename from ecrire/action/configurer_charset.php
rename to ecrire/action/configurer.php
index 5d0baee67296fbada847e5bc9eeb29b21066afb5..b1b6b19bc6384e079eda1424f99344b34a336e16 100644
--- a/ecrire/action/configurer_charset.php
+++ b/ecrire/action/configurer.php
@@ -12,12 +12,28 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-// http://doc.spip.org/@action_configurer_charset_dist
-function action_configurer_charset_dist() {
+// Mise a jour de l'option de configuration $arg
+// il faudrait limiter a arg plutot que d'executer tout modif_config
+// on traite a part seulement le cas du proxy car c'est indispensable
+// (message d'erreur eventuel a afficher)
+
+include_spip('inc/lang');
+include_spip('inc/config');
+
+function action_configurer_dist() {
 	
 	$securiser_action = charger_fonction('securiser_action', 'inc');
 	$arg = $securiser_action();
-	include_spip('inc/config');
+	$r = rawurldecode(_request('redirect'));
+	$r = parametre_url($r, 'configuration', $arg,"&");
 	appliquer_modifs_config();
+	if ($arg == 'relayeur')
+		$r = parametre_url($r, 'retour_proxy', $GLOBALS['retour_proxy'],"&");
+	else if ($arg == 'langue') {
+	  	include_spip('inc/rubriques');
+		calculer_langues_rubriques();
+	}
+	redirige_par_entete($r);
 }
+
 ?>
\ No newline at end of file
diff --git a/ecrire/action/configurer_langue.php b/ecrire/configuration/avertisseur.php
similarity index 50%
rename from ecrire/action/configurer_langue.php
rename to ecrire/configuration/avertisseur.php
index 4353a785249b69d4777e8949b67ffccd3308357d..d7c511d1661db68b9c5d703db7550c648406c61a 100644
--- a/ecrire/action/configurer_langue.php
+++ b/ecrire/configuration/avertisseur.php
@@ -12,15 +12,26 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-// http://doc.spip.org/@action_configurer_langue_dist
-function action_configurer_langue_dist() {
-	
-	$securiser_action = charger_fonction('securiser_action', 'inc');
-	$arg = $securiser_action();
-	include_spip('inc/config');
-	include_spip('inc/rubriques');
-	include_spip('inc/lang');
-	appliquer_modifs_config();
-	calculer_langues_rubriques();
+include_spip('inc/presentation');
+include_spip('inc/config');
+
+function configuration_avertisseur_dist()
+{
+	global $spip_lang_right;
+
+	$res = "<div class='verdana2'>"
+	. _T('texte_travail_collaboratif')
+	. "</div>"
+	. "<div class='verdana2'>"
+	. afficher_choix('articles_modif',$GLOBALS['meta']["articles_modif"] ,
+		array('oui' => _T('item_activer_messages_avertissement'),
+			'non' => _T('item_non_activer_messages_avertissement')))
+	  . "</div>";
+
+	return ajax_action_greffe("configurer-avertisseur", 
+	  debut_cadre_trait_couleur("article-24.gif", true, "", _T('info_travail_colaboratif').aide("artmodif"))
+	.  ajax_action_post('configurer', 'avertisseur', 'config_fonctions', '', $res)
+	.  fin_cadre_trait_couleur(true)
+	.  "<br />");
 }
-?>
\ No newline at end of file
+?>
diff --git a/ecrire/configuration/compteur.php b/ecrire/configuration/compteur.php
new file mode 100644
index 0000000000000000000000000000000000000000..93d840971e19cd9d09d986d56dddf7c975591309
--- /dev/null
+++ b/ecrire/configuration/compteur.php
@@ -0,0 +1,39 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2007                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('inc/presentation');
+include_spip('inc/config');
+
+function configuration_compteur_dist()
+{
+	global $spip_lang_right;
+
+	$res = "<div class='verdana2'>"
+	. _T('info_question_gerer_statistiques')
+	. "</div>"
+	. "<div class='verdana2'>"
+	.  afficher_choix('activer_statistiques', 
+			  $GLOBALS['meta']["activer_statistiques"],
+			  array('oui' => _T('item_gerer_statistiques'),
+				'non' => _T('item_non_gerer_statistiques')), ' &nbsp; ')
+	  . "</div>";
+
+	return ajax_action_greffe("configurer-compteur", 
+	  debut_cadre_trait_couleur("statistiques-24.gif", true, "", _T('info_forum_statistiques').aide ("confstat"))
+	.  ajax_action_post('configurer', 'compteur', 'config_fonctions', '', $res)
+	.  fin_cadre_trait_couleur(true)
+	.  "<br />");
+}
+
+?>
diff --git a/ecrire/configuration/correcteur.php b/ecrire/configuration/correcteur.php
new file mode 100644
index 0000000000000000000000000000000000000000..0012ab1eaebb6f46f7ad49ef4aa412d4b9e393c8
--- /dev/null
+++ b/ecrire/configuration/correcteur.php
@@ -0,0 +1,40 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2007                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('inc/presentation');
+include_spip('inc/config');
+
+function configuration_correcteur_dist()
+{
+	$res = "<div class='verdana2'>"
+	. _T('ortho_avis_privacy')
+	. "</div>"
+	. "\n<div class='verdana2'>"
+	. "\n<blockquote class='spip'><p>"
+	. _T('ortho_avis_privacy2')
+	. "\n</p></blockquote>"
+	. "\n</div>"
+	. "<div class='verdana2'>"
+	. afficher_choix('articles_ortho', $GLOBALS['meta']["articles_ortho"],
+		array('oui' => _T('info_ortho_activer'),
+			'non' => _T('info_ortho_desactiver')))
+	. "</div>";
+
+ 	return  ajax_action_greffe("configurer-correcteur", 
+	 debut_cadre_trait_couleur("ortho-24.gif", true, "", _T('ortho_orthographe').aide("corrortho"))
+	.  ajax_action_post('configurer', 'correcteur', 'config_fonctions', '', $res)
+	.  fin_cadre_trait_couleur(true)
+	.  "<br />");
+}
+?>
diff --git a/ecrire/configuration/index.php b/ecrire/configuration/index.php
new file mode 100644
index 0000000000000000000000000000000000000000..62d8fe9f6db631bd3a19140699101c9e281c9f9d
--- /dev/null
+++ b/ecrire/configuration/index.php
@@ -0,0 +1 @@
+X
diff --git a/ecrire/configuration/indexeur.php b/ecrire/configuration/indexeur.php
new file mode 100644
index 0000000000000000000000000000000000000000..66fa774820af90b331ee872a74764c3c8f15bca1
--- /dev/null
+++ b/ecrire/configuration/indexeur.php
@@ -0,0 +1,37 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2007                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('inc/presentation');
+include_spip('inc/config');
+
+function configuration_indexeur_dist()
+{
+	global $spip_lang_right;
+
+	$res = "<div class='verdana2'>"
+	.  _T('info_question_utilisation_moteur_recherche')
+	.  "</div>"
+	.  "<div class='verdana2'>"
+	.  afficher_choix('activer_moteur', $GLOBALS['meta']["activer_moteur"],
+		array('oui' => _T('item_utiliser_moteur_recherche'),
+			'non' => _T('item_non_utiliser_moteur_recherche')), ' &nbsp; ')
+	  .  "</div>";
+
+	return ajax_action_greffe("configurer-indexeur", 
+	  debut_cadre_trait_couleur("racine-site-24.gif", true, "", _T('info_moteur_recherche').aide ("confmoteur"))
+	.  ajax_action_post('configurer', 'indexeur', 'config_fonctions', '', $res)
+	.  fin_cadre_trait_couleur(true)
+	.  "<br />");
+}
+?>
diff --git a/ecrire/inc/configurer_langue.php b/ecrire/configuration/langue.php
similarity index 87%
rename from ecrire/inc/configurer_langue.php
rename to ecrire/configuration/langue.php
index 6346020165e5160ed3c3790fe54c646987f49565..0d172067527071f2570e8ec581a72072c147151a 100644
--- a/ecrire/inc/configurer_langue.php
+++ b/ecrire/configuration/langue.php
@@ -17,9 +17,9 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 //
 
 include_spip('inc/lang');
+include_spip('inc/presentation');
 
-// http://doc.spip.org/@inc_configurer_langue_dist
-function inc_configurer_langue_dist()
+function configuration_langue_dist()
 {
  $l_site = $GLOBALS['meta']['langue_site'];
  $langue_site = traduire_nom_langue($l_site);
@@ -31,13 +31,13 @@ function inc_configurer_langue_dist()
 		$res .= "<option value='$l'>".traduire_nom_langue($l)."</option>\n";
  }
 
- $res = ajax_action_post('configurer_langue',
-			 '',
+ $res = ajax_action_post('configurer',
+			 'langue',
 			 'config_lang',
 			 '',
 			 _T('info_langue_principale') .
 			 " : <select name='changer_langue_site' class='fondl'>\n$res</select>\n",
-			 _T('bouton_valider'),
+			 '',
 			 " class='fondo'");
 
  $res =  debut_cadre_couleur("langues-24.gif", true, "", _T('info_langue_principale') . "&nbsp;:&nbsp;" . $langue_site) .
@@ -45,6 +45,6 @@ function inc_configurer_langue_dist()
 	  $res .
 	   fin_cadre_couleur(true);
 
- return ajax_action_greffe("configurer_langue-0", $res);
+ return ajax_action_greffe("configurer-langue", $res);
 }
 ?>
diff --git a/ecrire/configuration/locuteur.php b/ecrire/configuration/locuteur.php
new file mode 100644
index 0000000000000000000000000000000000000000..9f4d2c7307e8b8c9bdb4d71f9b1ca6512842a808
--- /dev/null
+++ b/ecrire/configuration/locuteur.php
@@ -0,0 +1,92 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2007                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('inc/presentation');
+include_spip('inc/config');
+
+function configuration_locuteur_dist()
+{
+	global $spip_lang_right;
+
+	include_spip('inc/lang_liste');
+	$langues = $GLOBALS['codes_langues'];
+	$cesure = floor((count($langues) + 1) / 2);
+
+	$langues_installees = explode(',', $GLOBALS['all_langs']);
+	$langues_autorisees = explode(',', $GLOBALS['meta']['langues_multilingue']);
+
+	while (list(,$l) = each ($langues_installees)) {
+		$langues_trad[$l] = true;
+	}
+
+	while (list(,$l) = each ($langues_autorisees)) {
+		$langues_auth[$l] = true;
+	}
+
+	$l_bloquees_tmp = explode(',',$GLOBALS['meta']['langues_utilisees']);
+	while (list(,$l) = each($l_bloquees_tmp)) {
+		$langues_bloquees[$l] = true;
+	}
+
+	$res = "<p class='verdana2'>"
+	. _T('info_multi_langues_choisies')
+	. '</p>'
+	. "\n<table width='100%' cellspacing='10'><tr><td style='width: 50%'  class='verdana1'>";
+
+	while (list($code_langue) = each($langues_bloquees)) {
+		$i++;
+		$nom_langue = $langues[$code_langue];
+		if ($langues_trad[$code_langue]) $nom_langue = "<span style='text-decoration: underline'>$nom_langue</span>";
+
+		$res .= "\n<div class='ligne_foncee' style='font-weight: bold'>";
+		$res .= "\n<input type='hidden' name='langues_auth[]' value='$code_langue' id='langue_auth_$code_langue' />";
+		$res .= "\n<input type='checkbox' checked='checked' disabled='disabled' />";
+		$res .=  $nom_langue ."\n&nbsp; &nbsp;<span style='color: #777777'>[$code_langue]</span>";
+		$res .= "</div>";
+
+		if ($i == $cesure) $res .= "\n</td><td style='width: 50%' class='verdana1'>";
+	}
+
+	$res .= "\n<div>&nbsp;</div>";
+
+	while (list($code_langue, $nom_langue) = each($langues)) {
+		if ($langues_bloquees[$code_langue]) continue;
+		$i++;
+		$res .= "\n<div>";
+		if ($langues_trad[$code_langue]) $nom_langue = "<span style='text-decoration: underline'>$nom_langue</span>";
+
+		if ($langues_auth[$code_langue]) {
+			$res .= "<input type='checkbox' name='langues_auth[]' value='$code_langue' id='langue_auth_$code_langue' checked='checked' />";
+			$nom_langue = "<b>$nom_langue</b>";
+		}
+		else {
+			$res .= "<input type='checkbox' name='langues_auth[]' value='$code_langue' id='langue_auth_$code_langue' />";
+		}
+		$res .=  "\n<label for='langue_auth_$code_langue'>$nom_langue</label> &nbsp; &nbsp;<span style='color: #777777'>[$code_langue]</span>";
+
+		$res .= "</div>";
+
+		if ($i == $cesure) $res .= "</td><td style='width: 50%' class='verdana1'>";
+	}
+
+	$res .= "</td></tr></table>"
+	  . "<div class='verdana1'>"._T("info_multi_langues_soulignees")."</div>";
+
+	$res = debut_cadre_relief("langues-24.gif", true)
+	. ajax_action_post('configurer', 'locuteur', 'config_multilang', '', $res)
+	. fin_cadre_relief(true);
+
+	return ajax_action_greffe("configurer-locuteur", $res);
+}
+?>
diff --git a/ecrire/configuration/previsualiseur.php b/ecrire/configuration/previsualiseur.php
new file mode 100644
index 0000000000000000000000000000000000000000..9397ee53464ee562d625914eb0f58fc1e010c0fa
--- /dev/null
+++ b/ecrire/configuration/previsualiseur.php
@@ -0,0 +1,43 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2007                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('inc/presentation');
+include_spip('inc/config');
+
+# non = personne n'est autorise a previsualiser (defaut)
+# oui = les admins
+# 1comite = admins et redacteurs
+
+function configuration_previsualiseur_dist()
+{
+	$res = "<div class='verdana2'>"
+	. _T('info_preview_texte')
+	. "</div>"
+	. "<div class='verdana2'>"
+	. afficher_choix('preview', $GLOBALS['meta']["preview"],
+		array('oui' => _T('info_preview_admin'),
+			'1comite' => _T('info_preview_comite'),
+			'non' => _T('info_preview_desactive')
+		      )
+			 )
+	. "</div>";
+
+	return ajax_action_greffe("configurer-previsualiseur", 
+	 debut_cadre_trait_couleur("naviguer-site.png", true, "", _T('previsualisation')
+	. aide("previsu"))
+	. ajax_action_post('configurer', 'previsualiseur', 'config_fonctions', '', $res)
+	. fin_cadre_trait_couleur(true)
+	. "<br />");
+}
+?>
diff --git a/ecrire/configuration/reducteur.php b/ecrire/configuration/reducteur.php
new file mode 100644
index 0000000000000000000000000000000000000000..58356727ea30b82a22297371420461f97a141e6f
--- /dev/null
+++ b/ecrire/configuration/reducteur.php
@@ -0,0 +1,215 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2007                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('inc/presentation');
+include_spip('inc/config');
+
+function configuration_reducteur_dist()
+{
+	global $image_process;
+
+		// application du choix de vignette
+	if ($image_process) {
+			// mettre a jour les formats graphiques lisibles
+		switch ($image_process) {
+				case 'gd1':
+				case 'gd2':
+					$formats_graphiques = $GLOBALS['meta']['gd_formats_read'];
+					break;
+				case 'netpbm':
+					$formats_graphiques = $GLOBALS['meta']['netpbm_formats'];
+					break;
+				case 'convert':
+				case 'imagick':
+					$formats_graphiques = 'gif,jpg,png';
+					break;
+				default: #debug
+					$formats_graphiques = '';
+					$image_process = 'non';
+					break;
+			}
+		ecrire_meta('formats_graphiques', $formats_graphiques);
+		ecrire_meta('image_process', $image_process);
+		ecrire_metas();
+	} else 	$formats_graphiques = $GLOBALS['meta']["formats_graphiques"];
+
+	$nb_process = 0;
+	$res = '';
+
+	// Tester les formats
+	if ( /* GD disponible ? */
+	function_exists('ImageGif')
+	OR function_exists('ImageJpeg')
+	OR function_exists('ImagePng')
+	) {
+		$nb_process ++;
+		$res .= afficher_choix_vignette($p = 'gd1');
+
+		if (function_exists("ImageCreateTrueColor")) {
+			$res .= afficher_choix_vignette($p = 'gd2');
+			$nb_process ++;
+		}
+	}
+
+	if (_PNMSCALE_COMMAND!='') {
+		$res .= afficher_choix_vignette($p = 'netpbm');
+		$nb_process ++;
+	}
+
+	if (function_exists('imagick_readimage')) {
+		$res .=afficher_choix_vignette('imagick');
+		$nb_process ++;
+	}
+
+	if (_CONVERT_COMMAND!='') {
+		$res .= afficher_choix_vignette($p = 'convert');
+		$nb_process ++;
+	}
+
+	$cell = $nb_process%3?(3-$nb_process%3):0;
+	while($cell--)
+		$res .= "\n".'<td>&nbsp;</td>';
+
+	return ajax_action_greffe("configurer-reducteur", 
+	  debut_cadre_trait_couleur("image-24.gif", true)
+	. debut_cadre_relief("", true, "", _T("info_image_process_titre"))
+	.  "<p class='verdana2'>"
+	. _T('info_image_process')
+	. "</p>"
+	. "<table width='100%'><tr>"
+	. $res
+	. "</tr></table>\n"
+	.  "<p class='verdana2'>"
+	. _T('info_image_process2')
+	. "</p>"
+	. fin_cadre_relief(true)
+	. (!$formats_graphiques ? '' : format_choisi())
+	. fin_cadre_trait_couleur(true));
+}
+
+function format_choisi()
+{
+	global $spip_lang_left, $spip_lang_right;
+	
+	$creer_preview = $GLOBALS['meta']["creer_preview"];
+	$taille_preview = $GLOBALS['meta']["taille_preview"];
+	if ($taille_preview < 10) $taille_preview = 120;
+
+	$res .= "<p class='verdana2'>";
+	$res .= _T('info_ajout_image');
+	$res .= "</p>\n";
+	$res .= "<div class='verdana2'>";
+	$res .= bouton_radio("creer_preview", "oui", _T('item_choix_generation_miniature'), $creer_preview == "oui", "changeVisible(this.checked, 'config-preview', 'block', 'none');");
+	$res .= '</div>';
+
+	if ($creer_preview == "oui") $style = "block;"; else $style = "none;";
+	
+	$res .= "<div id='config-preview' class='verdana2' style='display: $style margin-$spip_lang_left: 40px;'>"._T('info_taille_maximale_vignette');
+	$res .= "<br /><input type='text' name='taille_preview' value='$taille_preview' class='fondl' size='5' />";
+	$res .= " "._T('info_pixels');
+		
+	if ($creer_preview == "oui"){
+			// detection de taille maxi d'image manipulable avec GDx pour faire les image_reduire notamment
+		if ($GLOBALS['meta']['image_process']=='gd1' OR $GLOBALS['meta']['image_process']=='gd2') {
+			lire_metas(); // on force une mise a jour des meta avant le test
+			$res .= "<div dir='ltr' id='teste_memory_size_gd' style='text-align:left;float:$spip_lang_right;width:196px;background:url("._DIR_IMG_PACK . "jauge-test-gd.gif) no-repeat top left;'>";
+			$max_size = isset($GLOBALS['meta']['max_taille_vignettes'])?$GLOBALS['meta']['max_taille_vignettes']:(500*500);
+			$max_size_echec = isset($GLOBALS['meta']['max_taille_vignettes_echec'])?$GLOBALS['meta']['max_taille_vignettes_echec']:0;
+			$max_size_test = isset($GLOBALS['meta']['max_taille_vignettes_test'])?$GLOBALS['meta']['max_taille_vignettes_test']:0;
+			if ($max_size_test<$max_size_echec OR  ($max_size_test AND !$max_size_echec)){
+				ecrire_meta('max_taille_vignettes_echec',$max_size_echec = $max_size_test,'non');
+				ecrire_metas();
+			}
+			$maxtest = 1740; // 3MPixels
+			$test = array();
+			$time = time();
+			if ($max_size >= ($maxtest-20)*($maxtest-20)) $maxtest = 2380; // 6MPixels
+			$top = 16;
+			for ($j = 320;$j>=20;$j = $j/2){
+				$res .= "<div style='position:relative;top:{$top}px;$spip_lang_left:0px;'>";
+				$l = round($j/10);
+				$lok = 0; $lbad =0;
+				$margin_left = 0;
+				$top -= 8;
+				for ($i = 480;$i*$i<$max_size && $i<=$maxtest;$i+=$j) $lok += $l;
+				if ($lok-$l+2>0) 
+					$res .= "<img src='"._DIR_IMG_PACK . 'jauge-vert.gif'."' width='".($lok-$l+2)."' style='margin-right:".($l-2)."px;' height='8' alt='' />";
+				for (;(!$max_size_echec OR $i*$i<$max_size_echec) && $i<=$maxtest;$i+=$j){
+					if (!isset($test[$i])){
+						$url = generer_url_action("tester_taille", "arg=$i&time=$time");
+						$res .= "<img src='$url' width='2' style='margin-left:{$margin_left}px;margin-right:".($l-2)."px;' height='8' alt='' />";
+						$test[$i] = 1;
+						$margin_left = 0;
+					}
+					else $margin_left += $l;
+				}
+				for (;$i<=$maxtest;$i+=$j) $lbad += $l;
+				if ($lbad) echo "<img src='"._DIR_IMG_PACK . 'jauge-rouge.gif'."' width='$lbad' height='8' style='margin-left:{$margin_left}px;' alt='' />";
+				$res .= "</div>";
+			}
+			$res .= "</div><br style='clear:both;' />";
+		}
+	} else {
+			effacer_meta('max_taille_vignettes');
+			effacer_meta('max_taille_vignettes_echec');
+			effacer_meta('max_taille_vignettes_test');
+			ecrire_metas();
+	}
+	$res .= '<br /><br />';
+	$res .= "</div>";
+	$res .= bouton_radio("creer_preview", "non", _T('item_choix_non_generation_miniature'), $creer_preview != "oui", "changeVisible(this.checked, 'config-preview', 'none', 'block');");
+
+	return 
+	  debut_cadre_trait_couleur("", true, "", _T('info_generation_miniatures_images'))
+	.  ajax_action_post('configurer', 'reducteur', 'config_fonctions', '', $res)
+	. fin_cadre_trait_couleur(true);
+}
+
+// http://doc.spip.org/@afficher_choix_vignette
+function afficher_choix_vignette($process) {
+	static $cpt_cellule = 0;
+
+	//global $taille_preview;
+	$taille_preview = 120;
+
+	// Ici on va tester les capacites de GD independamment des tests realises
+	// dans les images spip_image -- qui servent neanmoins pour la qualite
+	/* if (function_exists('imageformats')) {
+		
+	} */
+
+	if($cpt_cellule>=3) {
+		$cpt_cellule = 0;
+		$retour .= "\n</tr><tr>\n";
+	}
+	else {
+		$cpt_cellule += 1;
+		$retour = '';
+	}
+
+	if ($process == $GLOBALS['meta']['image_process']) {
+	  $style = " font-weight: bold;";
+	  $class = " class='bordure_foncee_pointillee'";
+	} else $style = $class = '';
+
+	return 	$retour . "\n<td style='text-align: center; vertical-align:center; width: ".($taille_preview+4)."px;$style'$class"
+	. "><a href='"
+	. generer_url_ecrire("config_fonctions", "image_process=$process")
+	. "'><img src='"
+	. generer_url_action("tester", "arg=$process")
+	. "' alt='$process' /></a><br />$process</td>\n";
+
+}
+
+?>
diff --git a/ecrire/configuration/referenceur.php b/ecrire/configuration/referenceur.php
new file mode 100644
index 0000000000000000000000000000000000000000..c6b40bbb34180c1363abd2f3d2ac4f4ef5abf18b
--- /dev/null
+++ b/ecrire/configuration/referenceur.php
@@ -0,0 +1,67 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2007                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('inc/presentation');
+include_spip('inc/config');
+
+function configuration_referenceur_dist()
+{
+  global $spip_lang_right;
+
+	$res =  "<p>"._T('texte_multilinguisme')."</p>"
+	. "<div>"
+	. _T('info_multi_articles')
+	. "<div style='text-align: $spip_lang_right;'>"
+	. afficher_choix('multi_articles', $GLOBALS['meta']['multi_articles'],
+		array('oui' => _T('item_oui'), 'non' => _T('item_non')), " &nbsp; ")
+	. "</div>"
+	. "</div>"
+	. "<div>"
+	. _T('info_multi_rubriques')
+	. "<div style='text-align: $spip_lang_right;'>"
+	. afficher_choix('multi_rubriques', $GLOBALS['meta']['multi_rubriques'],
+		array('oui' => _T('item_oui'), 'non' => _T('item_non')), " &nbsp; ")
+	. "</div>"
+	. "</div>";
+
+	if  ($GLOBALS['meta']['multi_rubriques'] == 'oui') {
+		$res .= "\n<div>"
+		. _T('info_multi_secteurs')
+		. "<div style='text-align: $spip_lang_right;'>"
+		. afficher_choix('multi_secteurs', $GLOBALS['meta']['multi_secteurs'],
+			array('oui' => _T('item_oui'), 'non' => _T('item_non')), " &nbsp; ")
+		. "</div>"
+		. "</div>";
+	} else
+		$res .= "<input type='hidden' name='multi_secteurs' value='".$GLOBALS['meta']['multi_secteurs']."' />";
+
+	if (($GLOBALS['meta']['multi_rubriques'] == 'oui') OR ($GLOBALS['meta']['multi_articles'] == 'oui')) {
+		$res .= "<hr />"
+		. "<p>"._T('texte_multilinguisme_trad')."</p>";
+
+		$res .= _T('info_gerer_trad')
+		. "<div style='text-align: $spip_lang_right;'>"
+		. afficher_choix('gerer_trad', $GLOBALS['meta']['gerer_trad'],
+			array('oui' => _T('item_oui'), 'non' => _T('item_non')), " &nbsp; ")
+		. "</div>";
+	} else
+		$res .= "<input type='hidden' name='gerer_trad' value='".$GLOBALS['meta']['gerer_trad']."' />";
+
+	$res = debut_cadre_couleur("traductions-24.gif", true, "", _T('info_multilinguisme'))
+	. ajax_action_post('configurer', 'referenceur', 'config_multilang', '', $res)
+	. fin_cadre_couleur(true);
+
+	return ajax_action_greffe("configurer-referenceur", $res);
+}
+?>
diff --git a/ecrire/configuration/relayeur.php b/ecrire/configuration/relayeur.php
new file mode 100644
index 0000000000000000000000000000000000000000..2f1197c7b1e34b01c56b5f0003e5d725f27972ca
--- /dev/null
+++ b/ecrire/configuration/relayeur.php
@@ -0,0 +1,61 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2007                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('inc/presentation');
+include_spip('inc/config');
+
+function configuration_relayeur_dist()
+{
+	global $spip_lang_right, $spip_lang_left;
+	global $retour_proxy;
+
+	$res = $submit = '';
+
+	if ($http_proxy = $GLOBALS['meta']["http_proxy"]) {
+		include_spip('inc/distant');
+		// Masquer un eventuel password authentifiant
+		$http_proxy=entites_html(no_password_proxy_url($http_proxy));
+		if ($http_proxy) {
+			$res = "\n<p style='text-align: $spip_lang_left;' class='ligne_noire verdana1 spip_small'>"
+			. _T('texte_test_proxy')
+			. "</p>"
+			. "\n<p>"
+			. "<input type='text' name='test_proxy' value='http://www.spip.net/' size='40' class='forml' />"
+			. "</p>";
+
+			if($retour_proxy) {
+				$res .= debut_boite_info(true)
+				. $retour_proxy
+				. fin_boite_info(true);
+			}
+			$submit = array('valider_proxy' => _T('bouton_valider'),
+					'tester_proxy' => _T('bouton_test_proxy'));
+		}
+	}
+
+	$res = "\n<div class='verdana2'>"
+	. propre(_T('texte_proxy'))
+	. "</div>"
+	. "\n<div class='verdana2'>"
+	. "<input type='text' name='http_proxy' size='40' class='forml' value='$http_proxy' />"
+	. $res
+	. "</div>";
+
+	return ajax_action_greffe("configurer-relayeur", 
+	 debut_cadre_trait_couleur("base-24.gif", true, "", _T('info_sites_proxy').aide ("confhttpproxy"))
+	.  ajax_action_post('configurer', 'relayeur', 'config_fonctions', '', $res, $submit)
+	.  fin_cadre_trait_couleur(true)
+	.  "<br />");
+}
+?>
diff --git a/ecrire/inc/configurer_charset.php b/ecrire/configuration/transcodeur.php
similarity index 83%
rename from ecrire/inc/configurer_charset.php
rename to ecrire/configuration/transcodeur.php
index c9d0cd5d46c82e193fa45b53a6f39f9d5bcb2877..c7234de49482654cbd451b7ec899551434cafb94 100644
--- a/ecrire/inc/configurer_charset.php
+++ b/ecrire/configuration/transcodeur.php
@@ -12,14 +12,11 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-
 include_spip('inc/lang');
+include_spip('inc/presentation');
 
-// http://doc.spip.org/@inc_configurer_charset_dist
-function inc_configurer_charset_dist()
+function configuration_transcodeur_dist()
 {
-	global $spip_lang_right;
-
 	$charset = $GLOBALS['meta']["charset"];
 
 	$res =  _T('texte_jeu_caractere') .
@@ -42,19 +39,16 @@ function inc_configurer_charset_dist()
 			array('url' => generer_url_ecrire('convert_utf8'))
 		);
 
-	$res = ajax_action_post('configurer_charset',
-				'',
+	$res = ajax_action_post('configurer',
+				'transcodeur',
 				'config_lang',
 				'',
-				$res,
-				_T('bouton_valider'),
-				" class='fondo' style='float: $spip_lang_right'");
-
+				$res);
 
 	$res = debut_cadre_relief("breve-24.gif", true, "", _T('info_jeu_caractere')) .
 	  $res .
 	  fin_cadre_relief(true);
 
-	return ajax_action_greffe("configurer_charset-0", $res);
+	return ajax_action_greffe("configurer-transcodeur", $res);
 }
 ?>
diff --git a/ecrire/exec/configurer_langue.php b/ecrire/configuration/versionneur.php
similarity index 53%
rename from ecrire/exec/configurer_langue.php
rename to ecrire/configuration/versionneur.php
index afe805aeb16b17c31cb98f7b2a57094d6a6302e6..34e8de9a068f93927d7c4835a2301098b2ddb724 100644
--- a/ecrire/exec/configurer_langue.php
+++ b/ecrire/configuration/versionneur.php
@@ -13,11 +13,25 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_spip('inc/presentation');
+include_spip('inc/config');
 
-// http://doc.spip.org/@exec_configurer_langue_dist
-function exec_configurer_langue_dist()
+function configuration_versionneur_dist()
 {
-	$configurer_langue = charger_fonction('configurer_langue', 'inc');
-	ajax_retour($configurer_langue());
+	global $spip_lang_right;
+
+	$res =  "<div class='verdana2'>"
+	. _T('info_historique_texte')
+	. "</div>"
+	. "<div class='verdana2'>"
+	. afficher_choix('articles_versions', $GLOBALS['meta']["articles_versions"],
+		array('oui' => _T('info_historique_activer'),
+			'non' => _T('info_historique_desactiver')))
+	. "</div>";
+
+	return ajax_action_greffe("configurer-versionneur", 
+	 debut_cadre_trait_couleur("historique-24.gif", true, "", _T('info_historique_titre').aide("suivimodif"))
+	.  ajax_action_post('configurer', 'versionneur', 'config_fonctions', '', $res)
+	.  fin_cadre_trait_couleur(true)
+	.  "<br />");
 }
 ?>
diff --git a/ecrire/exec/config_contenu.php b/ecrire/exec/config_contenu.php
index 4caf1d7422813c90a31f11cbbdfb1334b37b05f7..3a9195dbf28b4208c4b8fbbced47efb76c736451 100644
--- a/ecrire/exec/config_contenu.php
+++ b/ecrire/exec/config_contenu.php
@@ -204,7 +204,7 @@ if ($options == "avancees") {
 
 	echo "<table border='0' cellspacing='1' cellpadding='3' width=\"100%\">";
 	echo "\n<tr><td class='verdana2'>";
-	echo "<blockquote><i>"._T('info_hebergeur_desactiver_envoi_email')."</i></blockquote>";
+	echo "<blockquote><p><i>"._T('info_hebergeur_desactiver_envoi_email')."</i></p></blockquote>";
 	echo "</td></tr></table>";
 
 	debut_cadre_relief("", false, "", _T('info_envoi_forum'));
@@ -247,11 +247,11 @@ if ($options == "avancees") {
 			else $style = "display: none;";			
 			echo "<div id='config-edito' style='$style'>";
 			echo "<div style='text-align: center;'><input type='text' name='adresse_suivi' value='$adresse_suivi' size='30' class='fondl' /></div>";
-			echo "<blockquote class='spip'>";
+			echo "<blockquote class='spip'><p>";
 			if (!$adresse_suivi) $adresse_suivi = "mailing@monsite.net";
 			echo _T('info_config_suivi', array('adresse_suivi' => $adresse_suivi));
 			echo "<br />\n<input type='text' name='adresse_suivi_inscription' value='$adresse_suivi_inscription' size='50' class='fondl' />";
-			echo "</blockquote>";
+			echo "</p></blockquote>";
 			echo "</div>";
 
 		echo "<br />\n";
diff --git a/ecrire/exec/config_fonctions.php b/ecrire/exec/config_fonctions.php
index 734bd0c06096a628441f9c33e40f1b63355a6bf6..01c0c019967e6f638e000fbf65e53b8eab86a29e 100644
--- a/ecrire/exec/config_fonctions.php
+++ b/ecrire/exec/config_fonctions.php
@@ -43,482 +43,40 @@ function exec_config_fonctions_dist()
 	debut_droite();
 	lire_metas();
 
-	$action = generer_url_ecrire('config_fonctions');
+	$reducteur = charger_fonction('reducteur', 'configuration');
+	$indexeur = charger_fonction('indexeur', 'configuration');
+	$compteur = charger_fonction('compteur', 'configuration');
+	$avertisseur = charger_fonction('avertisseur', 'configuration');
+	$versionneur = charger_fonction('versionneur', 'configuration');
+	$correcteur = charger_fonction('correcteur', 'configuration');
+	$previsualiseur = charger_fonction('previsualiseur', 'configuration');
+	$relayeur = charger_fonction('relayeur', 'configuration');
 
-        echo "<form action='$action' method='post'><div>", form_hidden($action);
-	echo "<input type='hidden' name='changer_config' value='oui' />";
+	echo 
 
-//
-// Activer/desactiver la creation automatique de vignettes
-//
-	vignettes_config();
+	  $reducteur(), // Creation automatique de vignettes
 
-//
-// Indexation pour moteur de recherche
-//
-	moteur_config();
+	  $indexeur(), // Indexation pour moteur de recherche
 
-//
-// Activer les statistiques
-//
-	statistiques_config();
+	  $compteur(), // Gerant de statistique
 
-//
-// Notification de modification des articles
-//
-	notification_config();
+	  $avertisseur(), // Notification de modification des articles
 
-//
-// Gestion des revisions des articles
-//
-	versions_config();
+	  $versionneur(), // Gestion des revisions des articles
 
-//
-// Correcteur d'orthographe
-//
-	correcteur_config();
+	  $correcteur(), // Correcteur d'orthographe
 
-//
-// Previsualisation sur le site public
-//
-	previsu_config();
-
-//
-// Utilisation d'un proxy pour aller lire les sites syndiques
-//
-	proxy_config();
+	  $previsualiseur(), // Previsualisation sur le site public
 
+	  $relayeur(); // Proxy pour lire syndication & doc
 //
 // Choix supplementaires proposees par les plugins
 //
-	echo pipeline('affiche_milieu',array('args'=>array('exec'=>'config_fonctions'),'data'=>''));
-	echo "</div></form>";
+	$res = pipeline('affiche_milieu',array('args'=>array('exec'=>'config_fonctions'),'data'=>''));
+	if ($res)
+		echo ajax_action_post('config_fonctions', '', 'config_fonctions', '', $res);
 
 	echo fin_gauche(), fin_page();
 }
 
-
-// http://doc.spip.org/@afficher_choix_vignette
-function afficher_choix_vignette($process) {
-	static $cpt_cellule = 0;
-
-	//global $taille_preview;
-	$taille_preview = 120;
-
-	// Ici on va tester les capacites de GD independamment des tests realises
-	// dans les images spip_image -- qui servent neanmoins pour la qualite
-	/* if (function_exists('imageformats')) {
-		
-	} */
-
-	if($cpt_cellule>=3) {
-		$cpt_cellule = 0;
-		$retour .= "\n</tr><tr>\n";
-	}
-	else {
-		$cpt_cellule += 1;
-		$retour = '';
-	}
-
-	if ($process == $GLOBALS['meta']['image_process']) {
-	  $style = " font-weight: bold;";
-	  $class = " class='bordure_foncee_pointillee'";
-	} else $style = $class = '';
-
-	return 	$retour . "\n<td  style='text-align: center; vertical-align:center; width: ".($taille_preview+4)."px;$style'$class"
-	. "><a href='"
-	. generer_url_ecrire("config_fonctions", "image_process=$process")
-	. "'><img src='"
-	. generer_url_action("tester", "arg=$process")
-	. "' alt='$process' /></a><br />$process</td>\n";
-
-}
-
-// http://doc.spip.org/@vignettes_config
-function vignettes_config()
-{
-  global $image_process, $spip_lang_left, $spip_lang_right;
-
-	debut_cadre_trait_couleur("image-24.gif");
-
-	debut_cadre_relief("", false, "", _T("info_image_process_titre"));
-
-	echo "<p class='verdana2'>";
-	echo _T('info_image_process');
-	echo "</p>";
-		// application du choix de vignette
-	if ($image_process) {
-			// mettre a jour les formats graphiques lisibles
-		switch ($image_process) {
-				case 'gd1':
-				case 'gd2':
-					$formats_graphiques = $GLOBALS['meta']['gd_formats_read'];
-					break;
-				case 'netpbm':
-					$formats_graphiques = $GLOBALS['meta']['netpbm_formats'];
-					break;
-				case 'convert':
-				case 'imagick':
-					$formats_graphiques = 'gif,jpg,png';
-					break;
-				default: #debug
-					$formats_graphiques = '';
-					$image_process = 'non';
-					break;
-			}
-		ecrire_meta('formats_graphiques', $formats_graphiques);
-		ecrire_meta('image_process', $image_process);
-		ecrire_metas();
-	} else 	$formats_graphiques = $GLOBALS['meta']["formats_graphiques"];
-
-	echo "<table width='100%' align='center'><tr>";
-	$nb_process = 0;
-
-	// Tester les formats
-	if ( /* GD disponible ? */
-	function_exists('ImageGif')
-	OR function_exists('ImageJpeg')
-	OR function_exists('ImagePng')
-	) {
-		$nb_process ++;
-		echo afficher_choix_vignette($p = 'gd1');
-
-		if (function_exists("ImageCreateTrueColor")) {
-			echo afficher_choix_vignette($p = 'gd2');
-			$nb_process ++;
-		}
-	}
-
-	if (_PNMSCALE_COMMAND!='') {
-		echo afficher_choix_vignette($p = 'netpbm');
-		$nb_process ++;
-	}
-
-	if (function_exists('imagick_readimage')) {
-		echo afficher_choix_vignette('imagick');
-		$nb_process ++;
-	}
-
-	if (_CONVERT_COMMAND!='') {
-		echo afficher_choix_vignette($p = 'convert');
-		$nb_process ++;
-	}
-
-	$cell = $nb_process%3?(3-$nb_process%3):0;
-	while($cell--)
-		echo "\n".'<td>&nbsp;</td>';
-
-	echo "</tr></table>\n";
-	
-	echo "<p class='verdana2'>";
-	echo _T('info_image_process2');
-	echo "</p>";
-	
-	fin_cadre_relief();
-
-
-	//
-	// Une fois le process choisi, proposer vignettes
-	//
-	
-	$creer_preview = $GLOBALS['meta']["creer_preview"];
-	$taille_preview = $GLOBALS['meta']["taille_preview"];
-	if ($taille_preview < 10) $taille_preview = 120;
-
-	if (strlen($formats_graphiques) > 0) {
-		debut_cadre_trait_couleur("", false, "", _T('info_generation_miniatures_images'));
-		
-		echo "<p class='verdana2'>";
-		echo _T('info_ajout_image');
-		echo "</p>\n";
-
-
-		$block = "'block', 'none'"; 
-		echo "<div class='verdana2'>";
-		echo bouton_radio("creer_preview", "oui", _T('item_choix_generation_miniature'), $creer_preview == "oui", "changeVisible(this.checked, 'config-preview', $block);");
-		echo '</div>';
-
-		if ($creer_preview == "oui") $style = "display: block;";
-		else $style = "display: none;";
-	
-		echo "<div id='config-preview' class='verdana2' style='$style margin-$spip_lang_left: 40px;'>"._T('info_taille_maximale_vignette');
-		echo "<br /><input type='text' name='taille_preview' value='$taille_preview' class='fondl' size='5' />";
-		echo " "._T('info_pixels');
-		
-		if ($creer_preview == "oui"){
-			// detection de taille maxi d'image manipulable avec GDx pour faire les image_reduire notamment
-			if ($GLOBALS['meta']['image_process']=='gd1' OR $GLOBALS['meta']['image_process']=='gd2') {
-				lire_metas(); // on force une mise a jour des meta avant le test
-				echo "<div dir='ltr' id='teste_memory_size_gd' style='text-align:left;float:$spip_lang_right;width:196px;background:url("._DIR_IMG_PACK . "jauge-test-gd.gif) no-repeat top left;'>";
-				$max_size = isset($GLOBALS['meta']['max_taille_vignettes'])?$GLOBALS['meta']['max_taille_vignettes']:(500*500);
-				$max_size_echec = isset($GLOBALS['meta']['max_taille_vignettes_echec'])?$GLOBALS['meta']['max_taille_vignettes_echec']:0;
-				$max_size_test = isset($GLOBALS['meta']['max_taille_vignettes_test'])?$GLOBALS['meta']['max_taille_vignettes_test']:0;
-				if ($max_size_test<$max_size_echec OR  ($max_size_test AND !$max_size_echec)){
-					ecrire_meta('max_taille_vignettes_echec',$max_size_echec = $max_size_test,'non');
-					ecrire_metas();
-				}
-				$maxtest = 1740; // 3MPixels
-				$test = array();
-				$time = time();
-				if ($max_size >= ($maxtest-20)*($maxtest-20)) $maxtest = 2380; // 6MPixels
-				$top = 16;
-				for ($j = 320;$j>=20;$j = $j/2){
-					echo "<div style='position:relative;top:{$top}px;$spip_lang_left:0px;'>";
-					$l = round($j/10);
-					$lok = 0; $lbad =0;
-					$margin_left = 0;
-					$top -= 8;
-					for ($i = 480;$i*$i<$max_size && $i<=$maxtest;$i+=$j) $lok += $l;
-					if ($lok-$l+2>0) 
-						echo "<img src='"._DIR_IMG_PACK . 'jauge-vert.gif'."' width='".($lok-$l+2)."' style='margin-right:".($l-2)."px;' height='8' alt='' />";
-					for (;(!$max_size_echec OR $i*$i<$max_size_echec) && $i<=$maxtest;$i+=$j){
-						if (!isset($test[$i])){
-							$url = generer_url_action("tester_taille", "arg=$i&time=$time");
-							echo "<img src='$url' width='2' style='margin-left:{$margin_left}px;margin-right:".($l-2)."px;' height='8' alt='' />";
-							$test[$i] = 1;
-							$margin_left = 0;
-						}
-						else
-							$margin_left += $l;
-					}
-					for (;$i<=$maxtest;$i+=$j) $lbad += $l;
-					if ($lbad) echo "<img src='"._DIR_IMG_PACK . 'jauge-rouge.gif'."' width='$lbad' height='8' style='margin-left:{$margin_left}px;' alt='' />";
-					
-					echo "</div>";
-				}
-				echo "</div><br style='clear:both;' />";
-			}
-		}
-		else {
-			effacer_meta('max_taille_vignettes');
-			effacer_meta('max_taille_vignettes_echec');
-			effacer_meta('max_taille_vignettes_test');
-			ecrire_metas();
-		}
-		echo '<br /><br />';
-		echo "</div>";
-					
-		$block= "'none', 'block'";
-		echo bouton_radio("creer_preview", "non", _T('item_choix_non_generation_miniature'), $creer_preview != "oui", "changeVisible(this.checked, 'config-preview', $block);");
-		
-		echo "<div style='text-align:$spip_lang_right'><input type='submit' value='"._T('bouton_valider')."' class='fondo' /></div>";
-		
-		fin_cadre_trait_couleur();
-	}
-
-
-	fin_cadre_trait_couleur();
-
-}
-
-// http://doc.spip.org/@moteur_config
-function moteur_config()
-{
-	global $spip_lang_right;
-
-	debut_cadre_trait_couleur("racine-site-24.gif", false, "", _T('info_moteur_recherche').aide ("confmoteur"));
-
-
-	$activer_moteur = $GLOBALS['meta']["activer_moteur"];
-
-	echo "<div class='verdana2'>";
-		echo _T('info_question_utilisation_moteur_recherche');
-	echo "</div>";
-
-	echo "<div class='verdana2'>";
-	echo afficher_choix('activer_moteur', $activer_moteur,
-		array('oui' => _T('item_utiliser_moteur_recherche'),
-			'non' => _T('item_non_utiliser_moteur_recherche')), ' &nbsp; ');
-	echo "</div>";
-	echo "<div style='text-align:$spip_lang_right'><input type='submit' value='"._T('bouton_valider')."' class='fondo' /></div>";
-
-	fin_cadre_trait_couleur();
-		
-	echo "<br />";
-}
-
-// http://doc.spip.org/@statistiques_config
-function statistiques_config()
-{
-	global $spip_lang_right;
-
-	debut_cadre_trait_couleur("statistiques-24.gif", false, "", _T('info_forum_statistiques').aide ("confstat"));
-
-	$activer_statistiques = $GLOBALS['meta']["activer_statistiques"];
-
-	echo "<div class='verdana2'>";
-	echo _T('info_question_gerer_statistiques');
-	echo "</div>";
-
-	echo "<div class='verdana2'>";
-echo afficher_choix('activer_statistiques', $activer_statistiques,
-	array('oui' => _T('item_gerer_statistiques'),
-		'non' => _T('item_non_gerer_statistiques')), ' &nbsp; ');
-	echo "</div>";
-	echo "<div style='text-align:$spip_lang_right'><input type='submit' value='"._T('bouton_valider')."' class='fondo' /></div>";
-
-	fin_cadre_trait_couleur();
-	
-	echo "<br />";
-}
-
-// http://doc.spip.org/@notification_config
-function notification_config()
-{
-	global $spip_lang_right;
-
-	debut_cadre_trait_couleur("article-24.gif", false, "", _T('info_travail_colaboratif').aide("artmodif"));
-	$articles_modif = $GLOBALS['meta']["articles_modif"];
-
-
-	echo "<div class='verdana2'>";
-	echo _T('texte_travail_collaboratif');
-	echo "</div>";
-
-	echo "<div class='verdana2'>";
-	echo afficher_choix('articles_modif', $articles_modif,
-		array('oui' => _T('item_activer_messages_avertissement'),
-			'non' => _T('item_non_activer_messages_avertissement')));
-	echo "</div>";
-	echo "<div style='text-align:$spip_lang_right'><input type='submit' value='"._T('bouton_valider')."' class='fondo' /></div>";
-
-	fin_cadre_trait_couleur();
-
-	echo "<br />";
-}
-
-// http://doc.spip.org/@versions_config
-function versions_config()
- {
-	global $spip_lang_right;
-
-	debut_cadre_trait_couleur("historique-24.gif", false, "", _T('info_historique_titre').aide("suivimodif"));
-	$articles_versions = $GLOBALS['meta']["articles_versions"];
-
-
-	echo "<div class='verdana2'>";
-	echo _T('info_historique_texte');
-	echo "</div>";
-
-	echo "<div class='verdana2'>";
-	echo afficher_choix('articles_versions', $articles_versions,
-		array('oui' => _T('info_historique_activer'),
-			'non' => _T('info_historique_desactiver')));
-	echo "</div>";
-	echo "<div style='text-align:$spip_lang_right'><input type='submit' value='"._T('bouton_valider')."' class='fondo' /></div>";
-	
-	fin_cadre_trait_couleur();
-
-	echo "<br />";
-}
-
-
-// http://doc.spip.org/@correcteur_config
-function correcteur_config()
-{
-
-	global $spip_lang_right;
-	debut_cadre_trait_couleur("ortho-24.gif", false, "", _T('ortho_orthographe').aide("corrortho"));
-	$articles_ortho = $GLOBALS['meta']["articles_ortho"];
-
-	echo "<div class='verdana2'>";
-	echo _T('ortho_avis_privacy');
-	echo "</div>";
-
-	echo "<div class='verdana2'>";
-	echo "<blockquote class='spip'>";
-	echo _T('ortho_avis_privacy2');
-	echo "</blockquote>\n";
-	echo "</div>";
-
-	echo "<div class='verdana2'>";
-	echo afficher_choix('articles_ortho', $articles_ortho,
-		array('oui' => _T('info_ortho_activer'),
-			'non' => _T('info_ortho_desactiver')));
-	echo "</div>";
-	echo "<div style='text-align:$spip_lang_right'><input type='submit' value='"._T('bouton_valider')."' class='fondo' /></div>";
-	
-	fin_cadre_trait_couleur();
-
-	echo "<br />";
-}
-
-// http://doc.spip.org/@previsu_config
-function previsu_config()
-{
-	global $spip_lang_right;
-
-	debut_cadre_trait_couleur("naviguer-site.png", false, "", _T('previsualisation').aide("previsu"));
-	$preview = $GLOBALS['meta']["preview"];
-	# non = personne n'est autorise a previsualiser (defaut)
-	# oui = les admins
-	# 1comite = admins et redacteurs
-
-	echo "<div class='verdana2'>";
-	echo _T('info_preview_texte');
-	echo "</div>";
-
-	echo "<div class='verdana2'>";
-	echo afficher_choix('preview', $preview,
-		array('oui' => _T('info_preview_admin'),
-			'1comite' => _T('info_preview_comite'),
-			'non' => _T('info_preview_desactive')
-		)
-	);
-	echo "</div>";
-		echo "<div style='text-align:$spip_lang_right'><input type='submit' value='"._T('bouton_valider')."' class='fondo' /></div>";
-	fin_cadre_trait_couleur();
-
-	echo "<br />";
-}
-
-// http://doc.spip.org/@proxy_config
-function proxy_config()
-{
-	global $spip_lang_right, $spip_lang_left;
-	global $retour_proxy;
-
-	debut_cadre_trait_couleur("base-24.gif", false, "", _T('info_sites_proxy').aide ("confhttpproxy"));
-
-	// Masquer un eventuel password authentifiant
-	if ($http_proxy = $GLOBALS['meta']["http_proxy"]) {
-		include_spip('inc/distant');
-		$http_proxy=entites_html(no_password_proxy_url($http_proxy));
-	}
-
-	echo "<div class='verdana2'>";
-	echo propre(_T('texte_proxy'));
-	echo "</div>";
-
-	echo "<div class='verdana2'>";
-	echo "<input type='text' name='http_proxy' value='$http_proxy' size='40' class='forml' />";
-
-	if ($http_proxy) {
-		echo "<p align='$spip_lang_left' style='color: #000000;' class='verdana1 spip_small'>"
-			. _T('texte_test_proxy');
-		echo "</p>";
-
-		echo "<p>";
-		echo "<input type='text' name='test_proxy' value='http://www.spip.net/' size='40' class='forml' />";
-		echo "</p>";
-
-		if($retour_proxy) {
-			echo debut_boite_info(true);
-			echo $retour_proxy;
-			echo fin_boite_info(true);
-		}
-
-		echo "<div style='text-align: $spip_lang_right;'><input type='submit' name='tester_proxy' value='"._T('bouton_test_proxy')."' class='fondo' /></div>";
-
-	}
-
-
-	echo "</div>";
-	echo "<div style='text-align:$spip_lang_right'><input type='submit' value='"._T('bouton_valider')."' class='fondo' /></div>";
-	
-	fin_cadre_trait_couleur();
-	echo "<br />";
-}
-
-
 ?>
diff --git a/ecrire/exec/config_lang.php b/ecrire/exec/config_lang.php
index 06a41b136d16037988b5446adb800a9955304c49..df9706fd97fe508baad8bf19955e84e25159683e 100644
--- a/ecrire/exec/config_lang.php
+++ b/ecrire/exec/config_lang.php
@@ -42,11 +42,11 @@ function exec_config_lang_dist()
 	  barre_onglets("config_lang", "langues"),
 	  '<br />';
  
-	$configurer_langue = charger_fonction('configurer_langue', 'inc');
-	echo $configurer_langue();
+	$langue = charger_fonction('langue', 'configuration');
+	echo $langue();
 
-	$configurer_charset = charger_fonction('configurer_charset', 'inc');
-	echo $configurer_charset();
+	$transcodeur = charger_fonction('transcodeur', 'configuration');
+	echo $transcodeur();
 
 	echo fin_gauche(), fin_page();
 }
diff --git a/ecrire/exec/config_multilang.php b/ecrire/exec/config_multilang.php
index aca11f7be9101d377d7f48a8d44450f4e3dde3f0..af76654e62d9944465d2ac269cc019926b8dbf89 100644
--- a/ecrire/exec/config_multilang.php
+++ b/ecrire/exec/config_multilang.php
@@ -46,136 +46,18 @@ function exec_config_multilang_dist()
 	echo pipeline('affiche_droite',array('args'=>array('exec'=>'config_multilang'),'data'=>''));
 debut_droite();
 
-	$action = generer_action_auteur('configurer_langue', '', generer_url_ecrire('config_multilang'));
-
-	$res = "<form action='$action' method='post'><div>"
-	.  form_hidden($action)
-	. "<input type='hidden' name='changer_config' value='oui' />"
-	. debut_cadre_couleur("traductions-24.gif", true, "", _T('info_multilinguisme'))
-	. "<p>"._T('texte_multilinguisme')."</p>"
-	. "<div>"
-	. _T('info_multi_articles')
-	. "<div style='text-align: $spip_lang_right;'>"
-	. afficher_choix('multi_articles', $GLOBALS['meta']['multi_articles'],
-		array('oui' => _T('item_oui'), 'non' => _T('item_non')), " &nbsp; ")
-	. "</div>"
-	. "</div>"
-	. "<div>"
-	. _T('info_multi_rubriques')
-	. "<div style='text-align: $spip_lang_right;'>"
-	. afficher_choix('multi_rubriques', $GLOBALS['meta']['multi_rubriques'],
-		array('oui' => _T('item_oui'), 'non' => _T('item_non')), " &nbsp; ")
-	. "</div>"
-	. "</div>";
-
-	if  ($GLOBALS['meta']['multi_rubriques'] == 'oui') {
-		$res .= "\n<div>"
-		. _T('info_multi_secteurs')
-		. "<div style='text-align: $spip_lang_right;'>"
-		. afficher_choix('multi_secteurs', $GLOBALS['meta']['multi_secteurs'],
-			array('oui' => _T('item_oui'), 'non' => _T('item_non')), " &nbsp; ")
-		. "</div>"
-		. "</div>";
-	} else
-		$res .= "<input type='hidden' name='multi_secteurs' value='".$GLOBALS['meta']['multi_secteurs']."' />";
-
-	if (($GLOBALS['meta']['multi_rubriques'] == 'oui') OR ($GLOBALS['meta']['multi_articles'] == 'oui')) {
-		$res .= "<hr />"
-		. "<p>"._T('texte_multilinguisme_trad')."</p>";
-
-		$res .= _T('info_gerer_trad')
-		. "<div style='text-align: $spip_lang_right;'>"
-		. afficher_choix('gerer_trad', $GLOBALS['meta']['gerer_trad'],
-			array('oui' => _T('item_oui'), 'non' => _T('item_non')), " &nbsp; ")
-		. "</div>";
-	} else
-		$res .= "<input type='hidden' name='gerer_trad' value='".$GLOBALS['meta']['gerer_trad']."' />";
-
-
-	$res .= "\n<div style='text-align: $spip_lang_right;'><input type='submit' value='"._T('bouton_valider')."' class='fondo' /></div>";
-
-	$res .= fin_cadre_couleur(true);
-
+	$referenceur = charger_fonction('referenceur', 'configuration');
+	echo $referenceur();
 
 	calculer_langues_utilisees();
 
 	if ($GLOBALS['meta']['multi_articles'] == "oui"
 	OR $GLOBALS['meta']['multi_rubriques'] == "oui"
 	OR count(explode(',',$GLOBALS['meta']['langues_utilisees'])) > 1) {
-
-		$res .= debut_cadre_relief("langues-24.gif", true)
-		. "<p class='verdana2'>"
-		. _T('info_multi_langues_choisies')
-		. '</p>';
-
-		include_spip('inc/lang_liste');
-		$langues = $GLOBALS['codes_langues'];
-		$cesure = floor((count($langues) + 1) / 2);
-
-		$langues_installees = explode(',', $GLOBALS['all_langs']);
-		$langues_autorisees = explode(',', $GLOBALS['meta']['langues_multilingue']);
-
-		while (list(,$l) = each ($langues_installees)) {
-			$langues_trad[$l] = true;
-		}
-
-		while (list(,$l) = each ($langues_autorisees)) {
-			$langues_auth[$l] = true;
-		}
-
-		$l_bloquees_tmp = explode(',',$GLOBALS['meta']['langues_utilisees']);
-		while (list(,$l) = each($l_bloquees_tmp)) {
-			$langues_bloquees[$l] = true;
-		}
-
-		$res .= "\n<table width='100%' cellspacing='10'><tr><td style='width: 50%'  class='verdana1'>";
-
-		while (list($code_langue) = each($langues_bloquees)) {
-			$i++;
-			$nom_langue = $langues[$code_langue];
-			if ($langues_trad[$code_langue]) $nom_langue = "<span style='text-decoration: underline'>$nom_langue</span>";
-
-			$res .= "\n<div class='ligne_foncee' style='font-weight: bold'>";
-			$res .= "\n<input type='hidden' name='langues_auth[]' value='$code_langue' id='langue_auth_$code_langue' />";
-			$res .= "\n<input type='checkbox' checked='checked' disabled='disabled' />";
-			$res .=  $nom_langue ."\n&nbsp; &nbsp;<span style='color: #777777'>[$code_langue]</span>";
-			$res .= "</div>";
-
-			if ($i == $cesure) $res .= "\n</td><td style='width: 50%' class='verdana1'>";
-		}
-
-		$res .= "\n<div>&nbsp;</div>";
-
-		while (list($code_langue, $nom_langue) = each($langues)) {
-			if ($langues_bloquees[$code_langue]) continue;
-			$i++;
-			$res .= "\n<div>";
-			if ($langues_trad[$code_langue]) $nom_langue = "<span style='text-decoration: underline'>$nom_langue</span>";
-	
-			if ($langues_auth[$code_langue]) {
-				$res .= "<input type='checkbox' name='langues_auth[]' value='$code_langue' id='langue_auth_$code_langue' checked='checked' />";
-				$nom_langue = "<b>$nom_langue</b>";
-			}
-			else {
-				$res .= "<input type='checkbox' name='langues_auth[]' value='$code_langue' id='langue_auth_$code_langue' />";
-			}
-			$res .=  "\n<label for='langue_auth_$code_langue'>$nom_langue</label> &nbsp; &nbsp;<span style='color: #777777'>[$code_langue]</span>";
-
-			$res .= "</div>";
-
-			if ($i == $cesure) $res .= "</td><td style='width: 50%' class='verdana1'>";
-		}
-
-		$res .= "</td></tr>"
-		. "<tr><td style='text-align:$spip_lang_right;' colspan='2'>"
-		. "<input type='submit' value='"._T('bouton_valider')."' class='fondo' />"
-		. "</td></tr></table>"
-		. "<div class='verdana1'>"._T("info_multi_langues_soulignees")."</div>"
-		. fin_cadre_relief(true);
+		$locuteur = charger_fonction('locuteur', 'configuration');
+		echo $locuteur();
 	}
 
-	$res .= "</div></form>";
-
-	echo $res, fin_gauche(), fin_page();
+	echo fin_gauche(), fin_page();
 }
 ?>
diff --git a/ecrire/exec/configuration.php b/ecrire/exec/configuration.php
index 48de42a0454ff273836fd39e043f15778c270da6..3276221fc1e124e32924f0a7d6db3a2d6be7265a 100644
--- a/ecrire/exec/configuration.php
+++ b/ecrire/exec/configuration.php
@@ -137,6 +137,8 @@ function configuration_bloc_votre_site($bouton = true){
 //
 // http://doc.spip.org/@configuration_bloc_les_articles
 function configuration_bloc_les_articles(){
+	global $spip_lang_left, $spip_lang_right;
+
 	debut_cadre_trait_couleur("article-24.gif", false, "", _T('titre_les_articles'));
 	//
 	// Champs optionnels des articles
@@ -262,6 +264,7 @@ function configuration_bloc_les_articles(){
 //
 // http://doc.spip.org/@configuration_bloc_les_breves
 function configuration_bloc_les_breves(){
+	global $spip_lang_left, $spip_lang_right;
 	debut_cadre_trait_couleur("breve-24.gif", false, "", _T('titre_breves').aide ("confbreves"));
 
 	$activer_breves = $GLOBALS['meta']["activer_breves"];
@@ -291,6 +294,7 @@ function configuration_bloc_les_breves(){
 //
 // http://doc.spip.org/@configuration_bloc_mots_cles
 function configuration_bloc_mots_cles(){
+	global $spip_lang_left, $spip_lang_right;
 	debut_cadre_trait_couleur("mot-cle-24.gif", false, "", _T('info_mots_cles'));
 
 	$articles_mots = $GLOBALS['meta']["articles_mots"];
@@ -370,7 +374,9 @@ function configuration_bloc_mots_cles(){
 // Actives/desactiver systeme de syndication
 //
 // http://doc.spip.org/@configuration_bloc_syndication
+
 function configuration_bloc_syndication(){
+	global $spip_lang_left, $spip_lang_right;
 	debut_cadre_trait_couleur("site-24.gif", false, "", _T('titre_referencement_sites').aide ("reference"));
 	
 	$activer_sites = $GLOBALS['meta']['activer_sites'];
@@ -433,7 +439,7 @@ function configuration_bloc_syndication(){
 	echo "<div id='config-syndic' style='$style'>";
 		
 	// Moderation par defaut des sites syndiques
-	echo "<hr /><p align='$spip_lang_left'>";
+	echo "<hr /><p style='text-align: $spip_lang_left'>";
 	echo _T('texte_liens_sites_syndiques')."</p>";
 
 	echo afficher_choix('moderation_sites', $moderation_sites,
@@ -444,9 +450,9 @@ function configuration_bloc_syndication(){
 
 	$activer_moteur = $GLOBALS['meta']["activer_moteur"];
 	if ($activer_moteur == "oui") {
-		echo "<hr /><p align='$spip_lang_left'>";
+		echo "<hr /><p style='text-align: $spip_lang_left'>";
 		echo _T('texte_utilisation_moteur_syndiques')." ";
-		echo "</p><blockquote><i>"._T('texte_utilisation_moteur_syndiques_2')."</i></blockquote>";
+		echo "</p><blockquote><p><i>"._T('texte_utilisation_moteur_syndiques_2')."</i></p></blockquote>";
 
 		echo afficher_choix('visiter_sites', $visiter_sites,
 			array('non' => _T('item_limiter_recherche'),
@@ -503,6 +509,7 @@ function configuration_bloc_syndication(){
 //
 // http://doc.spip.org/@configuration_bloc_documents_joints
 function configuration_bloc_documents_joints(){
+	global $spip_lang_left, $spip_lang_right;
 	debut_cadre_trait_couleur("doc-24.gif", false, "", _T('titre_documents_joints'));
 	
 	$documents_rubrique = $GLOBALS['meta']["documents_rubrique"];
diff --git a/ecrire/exec/configurer_charset.php b/ecrire/exec/configurer.php
similarity index 72%
rename from ecrire/exec/configurer_charset.php
rename to ecrire/exec/configurer.php
index aeec376fd2a818c151927d87b5f44378e238ef16..8b2a6b643e31ea786ce849908912391f25a88c91 100644
--- a/ecrire/exec/configurer_charset.php
+++ b/ecrire/exec/configurer.php
@@ -12,12 +12,13 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
-include_spip('inc/presentation');
+// reaffichage du formulaire d'une option de configuration 
+// apres sa modification par appel du script action/configurer 
+// redirigeant ici.
 
-// http://doc.spip.org/@exec_configurer_charset_dist
-function exec_configurer_charset_dist()
+function exec_configurer_dist()
 {
-	$configurer_charset = charger_fonction('configurer_charset', 'inc');
-	ajax_retour($configurer_charset());
+	$configuration = charger_fonction(_request('configuration'), 'configuration');
+	ajax_retour($configuration());
 }
 ?>
diff --git a/ecrire/inc/actions.php b/ecrire/inc/actions.php
index ee4d460d1ad13a7cda536d2f22be1763a8515a97..fe489e90ce21d165cdda54210b5aa767c9f06873 100644
--- a/ecrire/inc/actions.php
+++ b/ecrire/inc/actions.php
@@ -101,47 +101,58 @@ function ajax_action_auteur($action, $id, $script, $args='', $corps=false, $args
 	}
 }
 
-
+// Comme ci-dessus, mais reduit au cas POST et on fournit le bouton Submit.
+// 
 // http://doc.spip.org/@ajax_action_post
-function ajax_action_post($action, $arg, $retour, $gra, $corps, $clic, $atts_bouton, $atts_span = "", $args_ajax='')
+function ajax_action_post($action, $arg, $retour, $gra, $corps, $clic='', $atts_i='', $atts_span = "", $args_ajax='')
 {
-	if (strpos($gra,"#")===FALSE)
-		$ancre = "$action-" . intval($arg);
-	else {
+	global $spip_lang_right;
+
+	if (strpos($gra,"#")===FALSE) {
+	  // A etudier: prendre systematiquement arg en trancodant les \W
+		$n = intval($arg);
+		$ancre = "$action-" . ($n ? $n : $arg);
+	} else {
 		$ancre = explode("#",$gra);
 		$args = $ancre[0];
 		$ancre = $ancre[1];
 	}
 
-	if (_SPIP_AJAX !== 1) {
-	  return redirige_action_auteur($action, $arg, $retour,
-					($gra . '#' . $ancre),
-				      ("<div>"
-				       . $corps 
-				       . "<span"
-				       . $atts_span
-				       . "><input type='submit' class='fondo' value='"
-				       . $clic
-				       ."' $atts_bouton/></span></div>"),
-				      "\nmethod='post'");
-  } else { 
-
-	if ($gra AND !$args_ajax) $args_ajax = "&$gra";
+	if (!$atts_i) 
+		$atts_i = " class='fondo' style='float: $spip_lang_right'";
+
+	if (is_array($clic)) {
+		$submit = "";
+		$atts_i .= "\nonclick='AjaxNamedSubmit(this)'";
+		foreach($clic as $n => $c)
+		  $submit .= "\n<input type='submit' name='$n' value='$c' $atts_i />";
+	} else {
+		if (!$clic)  $clic =  _T('bouton_valider');
+		$submit = "\n<input type='submit' value='$clic' $atts_i />";
+	}
 	$corps = "<div>"
 	  . $corps 
 	  . "<span"
 	  . $atts_span
-	  . "><input type='submit' value='"
-	  . $clic
-	  . "' $atts_bouton/></span></div>";
-
-	return redirige_action_auteur($action,
-				      $arg,
-				      $action,
-				"var_ajaxcharset=utf-8&script=$retour$args_ajax",
-				      $corps ,
-				      " method='post' onsubmit="
-				      . ajax_action_declencheur('this', $ancre));
+	  . ">"
+	  . $submit
+	  . "</span></div>";
+
+	if (_SPIP_AJAX !== 1) {
+	  return redirige_action_auteur($action, $arg, $retour,
+					($gra . '#' . $ancre),
+				        $corps ,
+					"\nmethod='post'");
+	} else { 
+
+		if ($gra AND !$args_ajax) $args_ajax = "&$gra";
+
+		return redirige_action_auteur($action,
+			$arg,
+			$action,
+			"var_ajaxcharset=utf-8&script=$retour$args_ajax",
+			$corps ,
+			" method='post' onsubmit=" . ajax_action_declencheur('this', $ancre));
 	}
 
 }
diff --git a/ecrire/inc/config.php b/ecrire/inc/config.php
index c1fd9fbc29833abfffcb896f415fb4d75caa2cd2..60a55a423dc5a87b36adc4658ee72627ebd5ce6e 100644
--- a/ecrire/inc/config.php
+++ b/ecrire/inc/config.php
@@ -181,13 +181,20 @@ function appliquer_modifs_config() {
 	if (preg_match(',:\*\*\*\*@,', $http_proxy))
 		$http_proxy = $GLOBALS['meta']['http_proxy'];
 
+	spip_log("$http_proxy '$tester_proxy' '$test_proxy'");
+
 	$retour_proxy = '';
 	if ($tester_proxy) {
 		if (!$test_proxy) {
 			$retour_proxy = _T('info_adresse_non_indiquee');
 		} else {
-			include_spip('inc/distant');
-			$page = recuperer_page($test_proxy, true);
+			include_spip('inc/minipres');
+			if (strncmp("http://", $http_proxy,7)!=0)
+			  $page = '';
+			else {
+			  include_spip('inc/distant');
+			  $page = recuperer_page($test_proxy, true);
+			}
 			if ($page)
 				$retour_proxy = "<p>"._T('info_proxy_ok')."</p>\n<tt>".couper(entites_html($page),300)."</tt>";
 			else
diff --git a/ecrire/inc/distant.php b/ecrire/inc/distant.php
index 24fad465c6e7055a6626010a714eea774ad72d03..3ad35ad0a3b79ee83cc53f6ff20eff9c4364a29c 100644
--- a/ecrire/inc/distant.php
+++ b/ecrire/inc/distant.php
@@ -175,15 +175,15 @@ function recuperer_page($url, $munge_charset=false, $get_headers=false,
 		} else {
 			// Fin des entetes envoyees par SPIP
 			if($get == 'POST') {
-				fputs($f, $content_type);
-				fputs($f, 'Content-Length: '.strlen($postdata)."\r\n");
-				fputs($f, "\r\n".$postdata);
+				@fputs($f, $content_type);
+				@fputs($f, 'Content-Length: '.strlen($postdata)."\r\n");
+				@fputs($f, "\r\n".$postdata);
 			} else {
-				fputs($f,"\r\n");
+				@fputs($f,"\r\n");
 			}
 
 			// Reponse du serveur distant
-			$s = trim(fgets($f, 16384));
+			$s = @trim(fgets($f, 16384));
 			if (preg_match(',^HTTP/[0-9]+\.[0-9]+ ([0-9]+),', $s, $r)) {
 				$status = $r[1];
 			}