Index: extensions/PHP_Optimisateur/config.php
===================================================================
--- extensions/PHP_Optimisateur/config.php	(revision 7988)
+++ 	(revision )
@@ -1,198 +1,0 @@
-<?php
-/***************************************\
-|			PHP OPTIMISATEUR			|
-|		Fichier de configuration		|
-\***************************************/
-
-
-### REPERTOIRES ###
-// Repertoire source (avec slash final)
-$DIRsource = './in/'; 		
-// Repertoire de sortie (avec slash final)
-$DIRsortie = './out/'; 	
-
-
-### OPTIONS ###
-// Mode silencieux, si activé aucune info ne sera affichée et le dossier de sortie sera automatiquement vidé
-$silentORNOT = false; 		
-// Créer le repertoire 'pwg_high'
-$DIRhighORNOT = true; 		
-// Redimensionner les images haute définition
-$DIMhdORNOT = false; 		
-// Renommer les fichiers pour enlever les caractères spéciaux
-$renameORNOT = true; 		
-// Ajouter un fichier 'index.php' dans chaque sous répertoire
-$indexORNOT = true; 		
-// Préfixe des miniatures
-$prefixe_mini = 'TN-'; 		
-
-
-### RESOLUTIONS ###
-// Taille maximale des images HD en pixels
-$DIMhd = 2560; 				
-// Taille maximale des images normales en pixels
-$DIMnormal = 800; 			
-// Taille maximale des miniatures en pixels
-$DIMthumbnail = 120; 		
-// Qualité des images hd en pourcentage
-$Qhd = 100; 				
-// Qualité des images normales en pourcentage
-$Qnormal = 80; 				
-// Qualité des miniatures en pourcentage
-$Qthumbnail = 80; 			
-// Résolution des images (uniquement pour les images HD, les autres sont en 72 dpi - résolution web), ne fonctionne que si DIMhdORNOT est activé
-$DPI = 72;					
-
-
-### COPYRIGHT ###
-// [alt]0169 pour le symbole ©
-$copyright = '© 2010';		
-// Activer le copyright sur les images HD, ne fonctionne que si DIMhdORNOT est activé
-$copyONhd = false; 			
-// Activer le copyright sur les images normales
-$copyONnormal = false; 		
-// Position du copyright : top-left, top-center, top-right, center-left, center, center-right, bottom-left, bottom-center, bottom-right
-$copyPOS = 'bottom-right'; 	
-// Ratio hauteur image/hauteur texte
-$copySIZE = 0.05; 			
-// Couleur au format RGB
-$copyCOLOR = '0 0 0'; 		
-// Police utilisée, elle doit être installée sur votre machine
-$copyFONT = 'Arial'; 		
-
-
-### PLUGINS ###
-// Plugins lancés avant execution
-$PluginsBefore = array( 	
-	'create_folders_alpha' => array(
-		'active' => false
-	),
-	'watermark' => array(
-		'active' => false, 
-		'waterFILE' => 'logo.png', 	// Fichier a incruster
-		'waterALPHA' => 80, 		// Opacité
-	),
-);
-
-// Plugins lancés pendant l'execution
-$PluginsProcess = array( 	
-	'convert_pan' => array(
-		'active' => false, 
-		'DIMpanorama' => 500, 		// Hauteur des images normales pour les panoramas
-		'NAMEpanorama' => '_pan', 	// Suffixe des panoramas
-		'RatioPanThumb' => 1.7, 	// Ratio pour les miniatures
-	),
-	'front2back_support' => array(
-		'active' => false, 
-		'NAMEverso' => '_verso', 	// Suffixe des images alternatives
-		'MOVEverso' => true,		// Déplacer les images originales dans un sous dosssier 'verso'
-	),
-);
-
-// Plugins lancés après execution
-$PluginsAfter = array( 		
-);
-
-
-
-### NE PAS MODIFIER ###
-if (!$silentORNOT) {
-	function bool_to_string($bool) {
-		if (is_bool($bool)) {
-			if ($bool) return 'oui';
-			else return 'non';
-		} else {
-			return $bool;
-		}
-	}
-	
-	echo '<div class="config">
-		<h2>Configuration</h2>
-		<ul>
-			<li>
-				<b>Répertoires</b>
-				<ul>
-					<li><b>Répertoire source :</b> '.$DIRsource.'</li>
-					<li><b>Répertoire de sortie :</b> '.$DIRsortie.'</li>
-				</ul>
-			</li>
-			<li>
-				<b>Options</b>
-				<ul>
-					<li><b>Créer le dossier haute définition :</b> '.bool_to_string($DIRhighORNOT).'</li>
-					<li><b>Redimensionner les images HD :</b> '.bool_to_string($DIMhdORNOT).'</li>
-					<li><b>Renommer les fichiers :</b> '.bool_to_string($renameORNOT).'</li>
-					<li><b>Ajouter les fichiers index.php :</b> '.bool_to_string($indexORNOT).'</li>
-					<li><b>Préfixe des miniatures :</b> '.$prefixe_mini.'</li>
-				</ul>
-			</li>
-			<li>
-				<b>Tailles et qualité</b>
-				<ul>
-					<li><b>Taille maximale des images HD :</b> '.$DIMhd.'</li>
-					<li><b>Taille des images normales :</b> '.$DIMnormal.'</li>
-					<li><b>Taille des miniatures :</b> '.$DIMthumbnail.'</li>
-					<li><b>Qualité des images HD :</b> '.$Qhd.'</li>
-					<li><b>Qualité des images normales :</b> '.$Qnormal.'</li>
-					<li><b>Qualité des miniatures :</b> '.$Qthumbnail.'</li>
-					<li><b>Résolution (HD) :</b> '.$DPI.'</li>
-				</ul>
-			</li>
-			<li>
-				<b>Copyright</b>
-				<ul>
-					<li><b>Texte :</b> '.$copyright.'</li>
-					<li><b>Sur les images HD :</b> '.bool_to_string($copyONhd).'</li>
-					<li><b>Sur les images normales :</b> '.bool_to_string($copyONnormal).'</li>
-					<li><b>Position :</b> '.$copyPOS.'</li>
-					<li><b>Taille (ratio image/texte) :</b> '.$copySIZE.'</li>
-					<li><b>Couleur (RGB) :</b> '.$copyCOLOR.'</li>
-					<li><b>Police :</b> '.$copyFONT.'</li>
-				</ul>
-			</li>
-			<li><b>Plugins pré-processing</b>
-				<ul>';
-					foreach ($PluginsBefore as $name => $config) {
-						echo '<li>
-							<b>'.$name.' :</b>
-							<ul>';
-								foreach ($config as $key => $value) {
-									echo '<li>['.$key.'] => '.bool_to_string($value).'</li>';
-								}
-							echo '</ul>
-						</li>';
-					}
-				echo '</ul>
-			</li>
-			<li><b>Plugins processing</b>
-				<ul>';
-					foreach ($PluginsProcess as $name => $config) {
-						echo '<li>
-							<b>'.$name.' :</b>
-							<ul>';
-								foreach ($config as $key => $value) {
-									echo '<li>['.$key.'] => '.bool_to_string($value).'</li>';
-								}
-							echo '</ul>
-						</li>';
-					}
-				echo '</ul>
-			</li>
-			<li><b>Plugins post-processing</b>
-				<ul>';
-					foreach ($PluginsAfter as $name => $config) {
-						echo '<li>
-							<b>'.$name.' :</b>
-							<ul>';
-								foreach ($config as $key => $value) {
-									echo '<li>['.$key.'] => '.bool_to_string($value).'</li>';
-								}
-							echo '</ul>
-						</li>';
-					}
-				echo '</ul>
-			</li>
-		</ul>
-	</div>';
-}
-?>
Index: extensions/PHP_Optimisateur/config.xml
===================================================================
--- extensions/PHP_Optimisateur/config.xml	(revision 7991)
+++ extensions/PHP_Optimisateur/config.xml	(revision 7991)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<config>
+	<DIRsource>./in/</DIRsource>
+	<DIRsortie>./out/</DIRsortie>
+	<silentORNOT>false</silentORNOT>
+	<DIRhighORNOT>true</DIRhighORNOT> 		
+	<DIMhdORNOT>true</DIMhdORNOT> 		
+	<renameORNOT>true</renameORNOT> 		
+	<indexORNOT>true</indexORNOT> 		
+	<prefixe_mini>TN-</prefixe_mini> 
+	<DIMhd>2560</DIMhd> 				
+	<DIMnormal>800</DIMnormal> 			
+	<DIMthumbnail>120</DIMthumbnail> 	
+	<Qhd>100</Qhd>
+	<Qnormal>80</Qnormal> 				
+	<Qthumbnail>80</Qthumbnail> 			
+	<DPI>72</DPI>	
+	<copyright>© 2010</copyright>		
+	<copyONhd>false</copyONhd> 			
+	<copyONnormal>false</copyONnormal> 		
+	<copyPOS>bottom-right</copyPOS> 	
+	<copySIZE>0.05</copySIZE> 			
+	<copyCOLOR>000 000 000</copyCOLOR> 		
+	<copyFONT>Arial</copyFONT>
+	<PluginsBefore></PluginsBefore>
+	<PluginsProcess></PluginsProcess>
+	<PluginsAfter></PluginsAfter>
+</config>
Index: extensions/PHP_Optimisateur/files/display_config.php
===================================================================
--- extensions/PHP_Optimisateur/files/display_config.php	(revision 7991)
+++ extensions/PHP_Optimisateur/files/display_config.php	(revision 7991)
@@ -0,0 +1,98 @@
+<?php
+/***************************************\
+|			PHP OPTIMISATEUR			|
+|			   Version 1.1				|
+\***************************************/
+
+echo '<div class="config">
+	<h2>Configuration</h2>
+	<ul>
+		<li>
+			<span class="title">Répertoires</span>
+			<ul>
+				<li><b>Répertoire source :</b> '.$DIRsource.'</li>
+				<li><b>Répertoire de sortie :</b> '.$DIRsortie.'</li>
+			</ul>
+		</li>
+		<li>
+			<span class="title">Options</span>
+			<ul>
+				<li><b>Créer le dossier haute définition :</b> '.bool_to_string($DIRhighORNOT).'</li>
+				<li><b>Redimensionner les images HD :</b> '.bool_to_string($DIMhdORNOT).'</li>
+				<li><b>Renommer les fichiers :</b> '.bool_to_string($renameORNOT).'</li>
+				<li><b>Ajouter les fichiers index.php :</b> '.bool_to_string($indexORNOT).'</li>
+				<li><b>Préfixe des miniatures :</b> '.$prefixe_mini.'</li>
+			</ul>
+		</li>
+		<li>
+			<span class="title">Tailles et qualité</span>
+			<ul>
+				<li><b>Taille maximale des images HD :</b> '.$DIMhd.'</li>
+				<li><b>Taille des images normales :</b> '.$DIMnormal.'</li>
+				<li><b>Taille des miniatures :</b> '.$DIMthumbnail.'</li>
+				<li><b>Qualité des images HD :</b> '.$Qhd.'</li>
+				<li><b>Qualité des images normales :</b> '.$Qnormal.'</li>
+				<li><b>Qualité des miniatures :</b> '.$Qthumbnail.'</li>
+				<li><b>Résolution des images HD :</b> '.$DPI.'</li>
+			</ul>
+		</li>
+		<li>
+			<span class="title">Copyright</span>
+			<ul>
+				<li><b>Texte :</b> '.$copyright.'</li>
+				<li><b>Sur les images HD :</b> '.bool_to_string($copyONhd).'</li>
+				<li><b>Sur les images normales :</b> '.bool_to_string($copyONnormal).'</li>
+				<li><b>Position :</b> '.$copyPOS.'</li>
+				<li><b>Taille (ratio image/texte) :</b> '.$copySIZE.'</li>
+				<li><b>Couleur :</b> rgb('.$copyCOLOR.') <span style="vertical-align:middle;border:1px solid #7f7f7f;width:1.5em;height:0.8em;display:inline-block;background:rgb('.str_replace(' ',',',$copyCOLOR).');">&nbsp;</span></li>
+				<li><b>Police :</b> '.$copyFONT.'</li>
+			</ul>
+		</li>
+		<li>
+			<span class="title">Plugins pré-processing</span>
+			<ul>';
+				foreach ($PluginsBefore as $name => $config) {
+					echo '<li>
+						<b>'.$name.' :</b>
+						<ul>';
+							foreach ($config as $key => $value) {
+								echo '<li>'.$key.' &raquo; '.bool_to_string($value).'</li>';
+							}
+						echo '</ul>
+					</li>';
+				}
+			echo '</ul>
+		</li>
+		<li>
+			<span class="title">Plugins processing</span>
+			<ul>';
+				foreach ($PluginsProcess as $name => $config) {
+					echo '<li>
+						<b>'.$name.' :</b>
+						<ul>';
+							foreach ($config as $key => $value) {
+								echo '<li>'.$key.' &raquo; '.bool_to_string($value).'</li>';
+							}
+						echo '</ul>
+					</li>';
+				}
+			echo '</ul>
+		</li>
+		<li>
+			<span class="title">Plugins post-processing</span>
+			<ul>';
+				foreach ($PluginsAfter as $name => $config) {
+					echo '<li>
+						<b>'.$name.' :</b>
+						<ul>';
+							foreach ($config as $key => $value) {
+								echo '<li>'.$key.' &raquo; '.bool_to_string($value).'</li>';
+							}
+						echo '</ul>
+					</li>';
+				}
+			echo '</ul>
+		</li>
+	</ul>
+</div>';
+?>
Index: extensions/PHP_Optimisateur/files/functions.php
===================================================================
--- extensions/PHP_Optimisateur/files/functions.php	(revision 7988)
+++ extensions/PHP_Optimisateur/files/functions.php	(revision 7991)
@@ -2,5 +2,5 @@
 /***************************************\
 |			PHP OPTIMISATEUR			|
-|			   Version 1.0				|
+|			   Version 1.1				|
 \***************************************/
 
@@ -12,9 +12,5 @@
 	$replace = array ('e','E','a','A','i','I','u','U','o','O','c','C',',n','N','y','Y','_','');
 	
-	if ($renameORNOT) {
-		return preg_replace($search, $replace, $string);
-	} else {
-		return $string;
-	}
+	return preg_replace($search, $replace, $string);
 }
 
@@ -49,5 +45,5 @@
 	# si $dirs=true liste les dossiers plutot que les fichiers
 	global ${$array}; // Charge la tableau pour la sortie, déclaré à l'exterieur à cause de l'appel recursif de la fonction
-	$dir = rtrim($dir, '/'); // on vire un eventuel slash mis par l'utilisateur de la fonction a droite du repertoire
+	$dir = rtrim($dir, '/');
 
 	if (is_dir($dir)) {
@@ -56,11 +52,11 @@
 		exit;
 	}
-	while (($file = readdir($dh)) !== false ) { //boucle pour parcourir le repertoire
+	while (($file = readdir($dh)) !== false ) {
 		if ($file !== '.' && $file !== '..') {
 			$path = $dir.'/'.$file;
-			if (is_dir($path)) { //si on tombe sur un sous-repertoire
+			if (is_dir($path)) {
 				if($dirs) ${$array}[] = $path;
-				recursive_readdir($path, $array, $dirs); // appel recursif pour lire a l'interieur de ce sous-repertoire
-			} else { // si il s'agit d'un fichier
+				recursive_readdir($path, $array, $dirs);
+			} else {
 				if(!$dirs) ${$array}[] = $path;
 			}
@@ -69,3 +65,71 @@
 	closedir($dh);
 }
+
+// Parse le fichier de configuration
+function XMLParse($xml) {
+	$content = array();
+	foreach ($xml as $nom => $elem) { 
+		if (trim($elem) == '') { 
+			$content[$nom] = XMLParse($elem->children()); 
+		} else { 
+			$content[$nom] = utf8_encode(utf8_decode($elem));
+		}
+	}
+	return $content;
+}
+
+// Crée le fichier de configuration
+function XMLCreate($array, $level) {
+	$content = null;
+	foreach ($array as $nom => $elem) {
+		if (is_array($elem)) {
+			for($i=0;$i<=$level;$i++) $content .= "\t";
+			$content .= '<'.$nom.'>'."\n";
+			$content .= XMLCreate($elem, $level+1);
+			for($i=0;$i<=$level;$i++) $content .= "\t";
+			$content .= '</'.$nom.'>'."\n";
+		} else {
+			for($i=0;$i<=$level;$i++) $content .= "\t";
+			$content .= '<'.$nom.'>'.$elem.'</'.$nom.'>'."\n";
+		}
+	}
+	return $content;
+}
+
+// Convertit les booléens, entiers et flotants d'un tableau de 'string'
+function array_settype($array) {
+	foreach ($array as $key => $value) {
+		if (is_array($value)) {
+			$array[$key] = array_settype($value);
+		} else {
+			if ($value === 'true') {
+				$array[$key] = true;		
+			} else if ($value === 'false') {
+				$array[$key] = false;		
+			} else if (preg_match('#^([0-9]*)$#', $value)) {
+				settype($array[$key], 'int');		
+			} else if (preg_match('#^([0-9]*)(.|,)([0-9]*)$#', $value)) {
+				settype($array[$key], 'float');		
+			}
+		}
+	}
+		
+	return $array;
+}
+
+// Booléen vers français ou texte
+function bool_to_string($bool, $just_echo=0) {
+	# $just_echo pour pouvoir afficher un booléen tel quel
+	if (is_bool($bool)) {
+		if ($bool) {
+			if ($just_echo) return 'true';
+			else return 'oui';
+		} else {
+			if ($just_echo) return 'false';
+			else return 'non';
+		}
+	} else {
+		return $bool;
+	}
+}
 ?>
Index: extensions/PHP_Optimisateur/files/header.php
===================================================================
--- extensions/PHP_Optimisateur/files/header.php	(revision 7991)
+++ extensions/PHP_Optimisateur/files/header.php	(revision 7991)
@@ -0,0 +1,19 @@
+<?php
+/***************************************\
+|			PHP OPTIMISATEUR			|
+|			   Version 1.1				|
+\***************************************/
+
+$APPversion = '1.1';
+echo '<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+	"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+	<link rel="stylesheet" type="text/css" media="screen" href="files/style.css" />
+	<title>PHP Optimisateur '.$APPversion.'</title>
+</head>
+<body>
+<div class="title">PHP Optimisateur '.$APPversion.'</div>';
+?>
Index: extensions/PHP_Optimisateur/files/style.css
===================================================================
--- extensions/PHP_Optimisateur/files/style.css	(revision 7988)
+++ extensions/PHP_Optimisateur/files/style.css	(revision 7991)
@@ -6,16 +6,31 @@
 
 body {
-	font-size:12px;
-	font-family:Verdanna;
+	font-size:13px;
+	font-family:Calibri,sans-serif;
 	background:#eee;
 	color:#333;
+	width:990px;
+	margin:0 auto;
 }
 
 div {
-	width:40%;
+	width:450px;
 	margin:10px;
 	padding:10px;
 	border:1px dotted #333;
 	float:left;
+}
+
+a {
+	color:#EF9700;
+	text-decoration:none;
+	padding:0 10px;
+	float:right;
+	margin-bottom:1px;
+}
+a:hover {
+	color:#555;
+	border-bottom:1px dotted #555;
+	margin-bottom:0;
 }
 
@@ -34,6 +49,7 @@
 }
 
-.title {
-	width:80%;
+div.title {
+	float:none;
+	width:902px;
 	padding:10px 30px;
 	font-weight:bold;
@@ -59,2 +75,27 @@
 	font-size:1.2em;
 }
+
+input {
+	border:1px solid #888;
+	-moz-border-radius:3px;
+}
+
+b.new:after {
+	content:' New !';
+	color:#0ABF00;
+	font-style:italic;
+}
+
+span.title {
+	font-weight:bold;
+	text-decoration:underline;
+	font-size:1.1em;
+}
+
+td {
+	width:50%;
+}
+tr td:first-child {
+	text-align:right;
+	padding-right:5px;
+}
Index: extensions/PHP_Optimisateur/index.php
===================================================================
--- extensions/PHP_Optimisateur/index.php	(revision 7988)
+++ extensions/PHP_Optimisateur/index.php	(revision 7991)
@@ -2,5 +2,5 @@
 /***************************************\
 |			PHP OPTIMISATEUR			|
-|			   Version 1.0				|
+|			   Version 1.1				|
 \***************************************/
 
@@ -8,184 +8,190 @@
 $TIME_START = microtime(true);
 
-echo '<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
-	"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
-<head>
-	<link rel="stylesheet" type="text/css" media="screen" href="files/style.css" />
-	<title>PHP Optimisateur 1.0</title>
-</head>
-<body>
-<div class="title">PHP Optimisateur 1.0</div>';
-
-include('config.php');
+include('files/header.php');
 include('files/functions.php');
 
 
-### Erreurs fatales ###
-if (!is_int($DIMhd) || !is_int($DIMnormal) || !is_int($DIMthumbnail) || !is_int($Qhd) || !is_int($Qnormal) || !is_int($Qthumbnail) || 
-		!is_bool($silentORNOT) || !is_bool($DIRhighORNOT) || !is_bool($DIMhdORNOT) || !is_bool($renameORNOT) || !is_bool($indexORNOT) || !is_string($prefixe_mini)) {
-	die('<div class="error">Erreur fatale : Configuration incorrecte. <a href="index.php">Retour</a></div>');
-}
-
+
+### DEMARRAGE ###
+// Fichier de configuration
+if (!file_exists('config.xml')) {
+	die('<div class="error">Erreur fatale : Fichier de configuration introuvable. <a href="index.php">Retour</a></div>');
+}
+
+// Configuration
+$config = simplexml_load_file('config.xml');
+$config = XMLParse($config);
+$config = array_settype($config);
+extract($config);
+
+// Afficher la configuration
+if (!$silentORNOT) {
+	include('files/display_config.php');
+}
+
+// Dossiers
+if (!file_exists($DIRsource)) {
+	mkdir($DIRsource);
+}
+if (!file_exists($DIRsortie)) {
+	mkdir($DIRsortie);
+}
 if (is_dir_empty($DIRsource)) {
-	die('<div class="error">Erreur fatale : Dossier source vide. <a href="index.php">Retour</a></div>');
-}
-
+	die('<div class="error">Erreur fatale : Dossier source vide. <a href="index.php">Retour</a> <a href="setup.php">Configurer</a></div>');
+}
 if ($silentORNOT) {
-	rrmdir($DIRsortie);
-	mkdir($DIRsortie);
+	rrmdir($DIRsortie); // Si mode silencieux
+	mkdir($DIRsortie); // vidage automatique du dossier de sortie
 } else if (!is_dir_empty($DIRsortie)) {
-	die('<div class="error">Erreur fatale : Dossier de sortie non vide. <a href="index.php">Retour</a></div>');
-}
-
-
-if (!$silentORNOT AND isset($_GET['Process'])) {
-### Supprimer les caractères spéciaux - dossiers & fichiers ###
-function recursive_delete_special_car($dir) {
-	$dir = rtrim($dir, '/');
-	$dh = opendir($dir);
-	
-	while (($file = readdir($dh)) !== false ) { //boucle pour parcourir le repertoire
-		if ($file !== '.' && $file !== '..') {
-			$path = $dir.'/'.$file;
-			$new_path = $dir.'/'.delete_special_car($file);
-			rename($path, $new_path);
+	die('<div class="error">Erreur fatale : Dossier de sortie non vide. <a href="index.php">Retour</a> <a href="setup.php">Configurer</a></div>');
+}
+
+
+
+### EXECUTION ###
+if (isset($_GET['Process'])) {
+
+	### Supprimer les caractères spéciaux - dossiers & fichiers ###
+	if ($renameORNOT) {
+		function recursive_delete_special_car($dir) {
+			$dir = rtrim($dir, '/');
+			$dh = opendir($dir);
 			
-			if (is_dir($new_path)) { //si on tombe sur un sous-repertoire
-				recursive_delete_special_car($new_path); // appel recursif pour lire a l'interieur de ce sous-repertoire
+			while (($file = readdir($dh)) !== false ) {
+				if ($file !== '.' && $file !== '..') {
+					$path = $dir.'/'.$file;
+					$new_path = $dir.'/'.delete_special_car($file);
+					rename($path, $new_path);
+					
+					if (is_dir($new_path)) {
+						recursive_delete_special_car($new_path);
+					}
+				}
 			}
-		}
-	}
-	closedir($dh);
-}
-
-recursive_delete_special_car($DIRsource);
-
-
-
-### Copyright ###
-if ($copyONhd) {
-	$copyHD = '-text_font "'.$copyFONT.'" '.$DIMnormal*$copySIZE.' -text_color '.$copyCOLOR.' -text_flag '.$copyPOS.' -text_pos 0 0 -text "'.$copyright.'"';
-} else {
-	$copyHD = null;
-}
-if ($copyONnormal) {
-	$copyNormal = '-text_font "'.$copyFONT.'" '.$DIMnormal*$copySIZE.' -text_color '.$copyCOLOR.' -text_flag '.$copyPOS.' -text_pos 0 0 -text "'.$copyright.'"';
-} else {
-	$copyNormal = null;
-}
-
-
-
-### Plugins avant execution ###
-foreach ($PluginsBefore as $name => $config) {
-	if ($config['active']) {
-		include('plugins/'.$name.'.php');
-	}
-}
-
-
-
-### Processus principal ###
-
-// Tableau avec les fichiers source
-$FilesSource = array();
-recursive_readdir($DIRsource, 'FilesSource');
-// Tableau avec les fichiers de sortie
-$FilesSortie = str_replace($DIRsource, $DIRsortie, $FilesSource);
-
-for ($i=0; $i<count($FilesSource); $i++) {
-	// Découpe le nom de fichier : dossier/fichier
-	preg_match('#(.*)/(.*)$#', $FilesSortie[$i], $matches);
-	# matches[1] = dossier sortie
-	# matches[2] = fichier.ext
-		
-	// Crée les sous-dossiers de sortie & 'pwg_high' & 'thumbnail'
-	if (!file_exists($matches[1].'/pwg_high') AND $DIRhighORNOT) {
-		mkdir($matches[1].'/pwg_high', 0777, true);
-	}
-	if (!file_exists($matches[1].'/thumbnail')) {
-		mkdir($matches[1].'/thumbnail', 0777, true);
-	}
-		
-	// Plugins pendant l'execution
-	foreach ($PluginsProcess as $name => $config) {
+			closedir($dh);
+		}
+
+		recursive_delete_special_car($DIRsource);
+	}
+
+
+	### Copyright ###
+	if ($copyONhd) {
+		$copyHD = '-text_font "'.$copyFONT.'" '.$DIMnormal*$copySIZE.' -text_color '.$copyCOLOR.' -text_flag '.$copyPOS.' -text_pos 0 0 -text "'.$copyright.'"';
+	} else {
+		$copyHD = null;
+	}
+	if ($copyONnormal) {
+		$copyNormal = '-text_font "'.$copyFONT.'" '.$DIMnormal*$copySIZE.' -text_color '.$copyCOLOR.' -text_flag '.$copyPOS.' -text_pos 0 0 -text "'.$copyright.'"';
+	} else {
+		$copyNormal = null;
+	}
+
+
+	### Plugins avant execution ###
+	foreach ($PluginsBefore as $name => $config) {
 		if ($config['active']) {
 			include('plugins/'.$name.'.php');
 		}
 	}
+
+
+	### Processus principal ###
+
+	// Tableau avec les fichiers source
+	$FilesSource = array();
+	recursive_readdir($DIRsource, 'FilesSource');
+	// Tableau avec les fichiers de sortie
+	$FilesSortie = str_replace($DIRsource, $DIRsortie, $FilesSource);
+
+	for ($i=0; $i<count($FilesSource); $i++) {
+		// Découpe le nom de fichier : dossier/fichier
+		preg_match('#(.*)/(.*)$#', $FilesSortie[$i], $matches);
+		# matches[1] = dossier sortie
+		# matches[2] = fichier.ext
+			
+		// Crée les sous-dossiers de sortie & 'pwg_high' & 'thumbnail'
+		if (!file_exists($matches[1].'/pwg_high') AND $DIRhighORNOT) {
+			mkdir($matches[1].'/pwg_high', 0777, true);
+		}
+		if (!file_exists($matches[1].'/thumbnail')) {
+			mkdir($matches[1].'/thumbnail', 0777, true);
+		}
+			
+		// Plugins pendant l'execution
+		foreach ($PluginsProcess as $name => $config) {
+			if ($config['active']) {
+				include('plugins/'.$name.'.php');
+			}
+		}
+		
+		// Compresse les fichiers dans le dossier de sortie
+		if (!isset($BlockNormal)) { 
+			exec('nconvert.exe -q '.$Qnormal.' -out jpeg -o "'.$matches[1].'/'.$matches[2].'" -dpi 72 -ratio -rtype lanczos -resize '.$DIMnormal.' '.$DIMnormal.' '.$copyNormal.' "'.$FilesSource[$i].'"');
+		}
+		if (!isset($BlockThumbnail)) { 
+			exec('nconvert.exe -q '.$Qthumbnail.' -out jpeg -o "'.$matches[1].'/thumbnail/'.$prefixe_mini.$matches[2].'" -dpi 72 -ratio -rtype lanczos -rflag decr -resize '.$DIMthumbnail.' '.$DIMthumbnail.' -rmeta -rexifthumb 	"'.$FilesSource[$i].'"');
+		}
+		if ($DIRhighORNOT AND !isset($BlockHigh)) {
+			if ($DIMhdORNOT) {
+				exec('nconvert.exe -q '.$Qhd.' -out jpeg -o "'.$matches[1].'/pwg_high/'.$matches[2].'" -dpi '.$DPI.' -ratio -rtype lanczos -rflag decr -resize '.$DIMhd.' '.$DIMhd.' '.$copyHD.' "'.$FilesSource[$i].'"');
+			} else {
+				copy($FilesSource[$i], $matches[1].'/pwg_high/'.$matches[2]);
+			}
+		}
+		
+		// Réinitialise les bloqueurs
+		unset($BlockNormal);
+		unset($BlockThumbnail);
+		unset($BlockHigh);
+
+	}
+
+	if (!$silentORNOT) {
+		echo '<div class="files">
+			<h2>Fichiers source</h2>
+			<ul>';
+				foreach ($FilesSource as $value) {
+					echo '<li>'.$value.'</li>';
+				}
+			echo '</ul>
+			<i>'.count($FilesSource).' fichiers</i>
+		</div>';
+	}
+
+	unset($FilesSource);
+	unset($FilesSortie);
+
+
+	### Supprime les dossiers vides et copie les fichiers index.php ###
+	// Tableau avec les dossiers de sortie
+	$DirsSortie = array();
+	recursive_readdir($DIRsortie, 'DirsSortie', true);
+
+	foreach($DirsSortie as $dir) {
+		if (is_dir_empty($dir)) {
+			rmdir($dir);
+		} else if ($indexORNOT) {
+			copy('files/index.php', $dir.'/index.php');
+		}
+	}
+
+	unset($DirsSortie);
+
+
+	### Plugins après execution ###
+	foreach ($PluginsAfter as $name => $config) {
+		if ($config['active']) {
+			include('plugins/'.$name.'.php');
+		}
+	}
+
+
+	echo '<div class="finish">Opération terminée : '.intval((microtime(true)-$TIME_START)) .' secondes. <a href="index.php">Retour</a> <a href="setup.php">Configurer</a></div>';
+
 	
-	// Compresse les fichiers dans le dossier de sortie
-	if (!isset($BlockNormal)) { 
-		exec('nconvert.exe -q '.$Qnormal.' -out jpeg -o "'.$matches[1].'/'.$matches[2].'" -dpi 72 -ratio -rtype lanczos -resize '.$DIMnormal.' '.$DIMnormal.' '.$copyNormal.' "'.$FilesSource[$i].'"');
-	}
-	if (!isset($BlockThumbnail)) { 
-		exec('nconvert.exe -q '.$Qthumbnail.' -out jpeg -o "'.$matches[1].'/thumbnail/'.$prefixe_mini.$matches[2].'" -dpi 72 -ratio -rtype lanczos -rflag decr -resize '.$DIMthumbnail.' '.$DIMthumbnail.' -rmeta -rexifthumb 	"'.$FilesSource[$i].'"');
-	}
-	if ($DIRhighORNOT AND !isset($BlockHigh)) {
-		if ($DIMhdORNOT) {
-			exec('nconvert.exe -q '.$Qhd.' -out jpeg -o "'.$matches[1].'/pwg_high/'.$matches[2].'" -dpi '.$DPI.' -ratio -rtype lanczos -rflag decr -resize '.$DIMhd.' '.$DIMhd.' '.$copyHD.' "'.$FilesSource[$i].'"');
-		} else {
-			copy($FilesSource[$i], $matches[1].'/pwg_high/'.$matches[2]);
-		}
-	}
 	
-	// Réinitialise les bloqueurs
-	unset($BlockNormal);
-	unset($BlockThumbnail);
-	unset($BlockHigh);
-
-}
-
-if (!$silentORNOT) {
-	echo '<div class="files">
-		<h2>Fichiers source</h2>
-		<ul>';
-			foreach ($FilesSource as $value) {
-				echo '<li>'.$value.'</li>';
-			}
-		echo '</ul>
-		<i>'.count($FilesSource).' fichiers</i>
-	</div>';
-}
-
-unset($FilesSource);
-unset($FilesSortie);
-
-
-
-### Supprime les dossiers vides et copie les fichiers index.php ###
-// Tableau avec les dossiers de sortie
-$DirsSortie = array();
-recursive_readdir($DIRsortie, 'DirsSortie', true);
-
-foreach($DirsSortie as $dir) {
-	if (is_dir_empty($dir)) {
-		rmdir($dir);
-	} else if ($indexORNOT) {
-		copy('files/index.php', $dir.'/index.php');
-	}
-}
-
-unset($DirsSortie);
-
-
-
-### Plugins après execution ###
-foreach ($PluginsAfter as $name => $config) {
-	if ($config['active']) {
-		include('plugins/'.$name.'.php');
-	}
-}
-
-
-
-echo '<div class="finish">Opération terminée : '.intval((microtime(true)-$TIME_START)) .' secondes. <a href="index.php">Retour</a></div>';
-
 } else {
-
-echo '<div class="finish">Prêt à commencer. <a href="index.php?Process=true">Exécuter</a></div>';
-
+	echo '<div class="finish">Prêt à commencer. <a href="index.php?Process=true">Exécuter</a> <a href="setup.php">Configurer</a></div>';
 }
 
Index: extensions/PHP_Optimisateur/plugins/convert_pan.php
===================================================================
--- extensions/PHP_Optimisateur/plugins/convert_pan.php	(revision 7988)
+++ extensions/PHP_Optimisateur/plugins/convert_pan.php	(revision 7991)
@@ -7,6 +7,4 @@
 ## Crée des images normales plus hautes pour les panoramas (utilisation des paMOOrama par exemple)
 ## Crée des miniatures rognées pour ne pas avoir de minuscules images
-
-# PluginsProcess => 'convert_pan' => array('active' => true, 'DIMpanorama' => 500, 'NAMEpanorama' => '_pan', 'RatioPanThumb' => 1.7)
 
 $NAMEpanorama = $PluginsProcess['convert_pan']['NAMEpanorama']; // Suffixe des panoramas
Index: extensions/PHP_Optimisateur/plugins/convert_pan.xml
===================================================================
--- extensions/PHP_Optimisateur/plugins/convert_pan.xml	(revision 7991)
+++ extensions/PHP_Optimisateur/plugins/convert_pan.xml	(revision 7991)
@@ -0,0 +1,7 @@
+<convert_pan>
+	<mode>PluginsProcess</mode>
+	<active>true</active>
+	<DIMpanorama>500</DIMpanorama>
+	<NAMEpanorama>_pan</NAMEpanorama>
+	<RatioPanThumb>1.7</RatioPanThumb>
+</convert_pan>
Index: extensions/PHP_Optimisateur/plugins/create_folders_alpha.php
===================================================================
--- extensions/PHP_Optimisateur/plugins/create_folders_alpha.php	(revision 7988)
+++ extensions/PHP_Optimisateur/plugins/create_folders_alpha.php	(revision 7991)
@@ -7,6 +7,4 @@
 ## Crée une arborescence alphanumérique dans la dossier source
 ## Ne supporte pas une arborescence pré-existante
-
-# PluginsBefore => 'create_folders_alpha' => array('active' => true)
 
 $handle = opendir($DIRsource);
Index: extensions/PHP_Optimisateur/plugins/create_folders_alpha.xml
===================================================================
--- extensions/PHP_Optimisateur/plugins/create_folders_alpha.xml	(revision 7991)
+++ extensions/PHP_Optimisateur/plugins/create_folders_alpha.xml	(revision 7991)
@@ -0,0 +1,4 @@
+<create_folders_alpha>
+	<mode>PluginsBefore</mode>
+	<active>true</active>
+</create_folders_alpha>
Index: extensions/PHP_Optimisateur/plugins/front2back_support.php
===================================================================
--- extensions/PHP_Optimisateur/plugins/front2back_support.php	(revision 7988)
+++ extensions/PHP_Optimisateur/plugins/front2back_support.php	(revision 7991)
@@ -8,6 +8,4 @@
 ## Crée la version alternative hd dans 'pwg_high/verso'
 ## Supprime le suffixe et déplace aussi les fichiers du repertoire source
-
-# PluginsProcess => 'front2back_support' => array('active' => true, 'NAMEverso' => '_verso')
 
 $NAMEverso = $PluginsProcess['front2back_support']['NAMEverso']; // Suffixe des versions alternatives
Index: extensions/PHP_Optimisateur/plugins/front2back_support.xml
===================================================================
--- extensions/PHP_Optimisateur/plugins/front2back_support.xml	(revision 7991)
+++ extensions/PHP_Optimisateur/plugins/front2back_support.xml	(revision 7991)
@@ -0,0 +1,6 @@
+<front2back_support>
+	<mode>PluginsProcess</mode>
+	<active>true</active>
+	<NAMEverso>_verso</NAMEverso>
+	<MOVEverso>true</MOVEverso>
+</front2back_support>
Index: extensions/PHP_Optimisateur/plugins/watermark.php
===================================================================
--- extensions/PHP_Optimisateur/plugins/watermark.php	(revision 7988)
+++ extensions/PHP_Optimisateur/plugins/watermark.php	(revision 7991)
@@ -7,6 +7,4 @@
 ## Replace le texte de copyright par une image
 ## Dépend des valeurs de $copyONhd, $copyONnormal et $copyPOS
-
-# PluginsBefore => 'watermark' => array('active' => true, 'waterFILE' => 'logo.png', 'waterALPHA' => 50)
 
 $waterFILE = $PluginsBefore['watermark']['waterFILE']; // Fichier à incruster
Index: extensions/PHP_Optimisateur/plugins/watermark.xml
===================================================================
--- extensions/PHP_Optimisateur/plugins/watermark.xml	(revision 7991)
+++ extensions/PHP_Optimisateur/plugins/watermark.xml	(revision 7991)
@@ -0,0 +1,6 @@
+<watermark>
+	<mode>PluginsBefore</mode>
+	<active>true</active>
+	<waterFILE>logo.png</waterFILE>
+	<waterALPHA>80</waterALPHA>
+</watermark>
Index: extensions/PHP_Optimisateur/setup.php
===================================================================
--- extensions/PHP_Optimisateur/setup.php	(revision 7991)
+++ extensions/PHP_Optimisateur/setup.php	(revision 7991)
@@ -0,0 +1,265 @@
+<?php
+/***************************************\
+|			PHP OPTIMISATEUR			|
+|			   Version 1.1				|
+\***************************************/
+
+include('files/functions.php');
+
+### Création de nouveau fichier de configuration ###
+if (isset($_POST['DIRsource'])) {
+	// Quelques traitements avant d'enregistrer
+	$_POST['copyCOLOR'] = implode(' ', $_POST['copyCOLOR']);
+	$_POST['copyPOS'] = implode('-', $_POST['copyPOS']);
+	if(!isset($_POST['PluginsBefore'])) $_POST['PluginsBefore'] = null;
+	if(!isset($_POST['PluginsProcess'])) $_POST['PluginsProcess'] = null;
+	if(!isset($_POST['PluginsAfter'])) $_POST['PluginsAfter'] = null;
+	
+	// Contenu du fichier
+	$content = '<?xml version="1.0" encoding="UTF-8"?>'."\r\n".'<config>'."\r\n";
+	$content .= XMLcreate($_POST, 0);
+	$content .= '</config>';
+	file_put_contents('config.xml', $content);
+	
+	header('Location:index.php');
+}
+
+
+include('files/header.php');
+
+
+// Fichier de configuration
+if (!file_exists('config.xml')) {
+	die('<div class="error">Erreur fatale : Fichier de configuration introuvable. <a href="index.php">Retour</a></div>');
+}
+
+// Configuration
+$config = simplexml_load_file('config.xml');
+$config = XMLParse($config);
+$config = array_settype($config);
+extract($config);
+
+$copyCOLOR = explode(' ', $copyCOLOR);
+$copyPOS = explode('-', $copyPOS);
+
+
+### Gestion des nouveaux plugins ###
+// Ajoute la configuration des plugins non-installés aux tableaux, il faut valider le formulaire pour les installer
+$Plugins = glob('plugins/*.xml');
+$NewPlugins = array();
+
+foreach ($Plugins as $plugin) {
+	// nom du plugin
+	preg_match('#plugins/(.*).xml#', $plugin, $matches);
+	$plugin_name = $matches[1];
+	// configuration du plugin
+	$plugin = XMLparse(simplexml_load_file($plugin));
+	// mode du plugin (effacage pour pas l'inscrire dans la config)
+	$plugin_mode = $plugin['mode'];
+	unset($plugin['mode']);
+	
+	if (!array_key_exists($plugin_name, ${$plugin_mode})) {
+		${$plugin_mode}[$plugin_name] = $plugin;
+		$NewPlugins[$plugin_name] = true;
+	}
+}
+
+
+### Formulaire ###
+echo '
+<script type="text/javascript">
+	function suivant(enCours, suivant, limite) {
+		if (enCours.value.length == limite) {
+			enCours.form.elements[suivant].select();
+		}
+	}
+</script>
+	
+<form action="setup.php" method="post">
+<div class="config">
+	<h2>Configuration</h2>
+	<ul>
+		<li>
+			<span class="title">Répertoires</span>
+			<table>
+				<tr>
+					<td><b>Répertoire source :</b></td>
+					<td><input type="text" name="DIRsource" value="'.$DIRsource.'"/></td>
+				</tr>
+				<tr>
+					<td><b>Répertoire de sortie :</b></td>
+					<td><input type="text" name="DIRsortie" value="'.$DIRsortie.'"/></td>
+				</tr>
+			</table>
+		</li>
+		<li>
+			<span class="title">Options</span>
+			<table>
+				<tr>
+					<td><b>Mode silencieux :</b></td>
+					<td><input type="radio" name="silentORNOT" value="true" '.(($silentORNOT)?'checked':'').'/> oui <input type="radio" name="silentORNOT" value="false" '.((!$silentORNOT)?'checked':'').'/> non</td>
+				</tr>
+				<tr>
+					<td><b>Créer le dossier haute définition :</b></td>
+					<td><input type="radio" name="DIRhighORNOT" value="true" '.(($DIRhighORNOT)?'checked':'').'/> oui <input type="radio" name="DIRhighORNOT" value="false" '.((!$DIRhighORNOT)?'checked':'').'/> non</td>
+				</tr>
+				<tr>
+					<td><b>Redimensionner les images HD :</b></td>
+					<td><input type="radio" name="DIMhdORNOT" value="true" '.(($DIMhdORNOT)?'checked':'').'/> oui <input type="radio" name="DIMhdORNOT" value="false" '.((!$DIMhdORNOT)?'checked':'').'/> non</td>
+				</tr>
+				<tr>
+					<td><b>Renommer les fichiers :</b></td>
+					<td><input type="radio" name="renameORNOT" value="true" '.(($renameORNOT)?'checked':'').'/> oui <input type="radio" name="renameORNOT" value="false" '.((!$renameORNOT)?'checked':'').'/> non</td>
+				</tr>
+				<tr>
+					<td><b>Ajouter les fichiers index.php :</b></td>
+					<td><input type="radio" name="indexORNOT" value="true" '.(($indexORNOT)?'checked':'').'/> oui <input type="radio" name="indexORNOT" value="false" '.((!$indexORNOT)?'checked':'').'/> non</td>
+				</tr>
+				<tr>
+					<td><b>Préfixe des miniatures :</b></td>
+					<td><input type="text" name="prefixe_mini" value="'.$prefixe_mini.'" size="8"/></td>
+				</tr>
+			</table>
+		</li>
+		<li>
+			<span class="title">Tailles et qualité</span>
+			<table>
+				<tr>
+					<td><b>Taille maximale des images HD :</b></td>
+					<td><input type="text" name="DIMhd" value="'.$DIMhd.'" size="4"/></td>
+				</tr>
+				<tr>
+					<td><b>Taille des images normales :</b></td>
+					<td><input type="text" name="DIMnormal" value="'.$DIMnormal.'" size="3"/></td>
+				</tr>
+				<tr>
+					<td><b>Taille des miniatures :</b></td>
+					<td><input type="text" name="DIMthumbnail" value="'.$DIMthumbnail.'" size="3"/></td>
+				</tr>
+				<tr>
+					<td><b>Qualité des images HD :</b></td>
+					<td><input type="text" name="Qhd" value="'.$Qhd.'" size="3"/></td>
+				</tr>
+				<tr>
+					<td><b>Qualité des images normales :</b></td>
+					<td><input type="text" name="Qnormal" value="'.$Qnormal.'" size="3"/></td>
+				</tr>
+				<tr>
+					<td><b>Qualité des miniatures :</b></td>
+					<td><input type="text" name="Qthumbnail" value="'.$Qthumbnail.'" size="3"/></td>
+				</tr>
+				<tr>
+					<td><b>Résolution des images HD :</b></td>
+					<td><input type="text" name="DPI" value="'.$DPI.'" size="3"/></td>
+				</tr>
+			</table>
+		</li>
+		<li>
+			<span class="title">Copyright</span>
+			<table>
+				<tr>
+					<td><b>Texte :</b></td>
+					<td><input type="text" name="copyright" value="'.$copyright.'"/></td>
+				</tr>
+				<tr>
+					<td><b>Sur les images HD :</b></td>
+					<td><input type="radio" name="copyONhd" value="true" '.(($copyONhd)?'checked':'').'/> oui <input type="radio" name="copyONhd" value="false" '.((!$copyONhd)?'checked':'').'/> non</td>
+				</tr>
+				<tr>
+					<td><b>Sur les images normales :</b></td>
+					<td><input type="radio" name="copyONnormal" value="true" '.(($copyONnormal)?'checked':'').'/> oui <input type="radio" name="copyONnormal" value="false" '.((!$copyONnormal)?'checked':'').'/> non</td>
+				</tr>
+				<tr>
+					<td><b>Position verticale :</b></td>
+					<td><input type="radio" name="copyPOS[0]" value="top" '.(($copyPOS[0]=='top')?'checked':'').'/> haut <input type="radio" name="copyPOS[0]" value="center" '.(($copyPOS[0]=='center')?'checked':'').'/> milieu <input type="radio" name="copyPOS[0]" value="bottom" '.(($copyPOS[0]=='bottom')?'checked':'').'/> bas</td>
+				</tr>
+				<tr>
+					<td><b>Position horizontale :</b></td>
+					<td><input type="radio" name="copyPOS[1]" value="left" '.(($copyPOS[1]=='left')?'checked':'').'/> gauche <input type="radio" name="copyPOS[1]" value="center" '.(($copyPOS[1]=='center')?'checked':'').'/> milieu <input type="radio" name="copyPOS[1]" value="right" '.(($copyPOS[1]=='right')?'checked':'').'/> droite</td>
+				</tr>
+				<tr>
+					<td><b>Taille (ratio image/texte) :</b></td>
+					<td><input type="text" name="copySIZE" value="'.$copySIZE.'" size="5"/></td>
+				</tr>
+				<tr>
+					<td><b>Couleur :</b></td>
+					<td>
+						<input type="text" name="copyCOLOR[0]" value="'.$copyCOLOR[0].'" size="3" onFocus="this.select();" onKeyUp="suivant(this,\'copyCOLOR[1]\', 3)"/>
+						<input type="text" name="copyCOLOR[1]" value="'.$copyCOLOR[1].'" size="3" onFocus="this.select();" onKeyUp="suivant(this,\'copyCOLOR[2]\', 3)"/>
+						<input type="text" name="copyCOLOR[2]" value="'.$copyCOLOR[2].'" size="3" onFocus="this.select();" />
+					</td>
+				</tr>
+				<tr>
+					<td><b>Police :</b></td>
+					<td><input type="text" name="copyFONT" value="'.$copyFONT.'"/></td>
+				</tr>
+			</table>
+		</li>
+		</ul>
+</div>
+
+<div class="config">
+	<h2>Plugins</h2>
+	<ul>
+		<li>
+			<span class="title">Plugins pré-processing</span>
+			<ul>';
+				foreach ($PluginsBefore as $name => $config) {
+					echo '<li>
+						<b class="'.((isset($NewPlugins[$name]))?'new':'').'">'.$name.' :</b>
+						<table>';
+							foreach ($config as $key => $value) {
+								echo '<tr>
+									<td>'.$key.' :</td>
+									<td><input type="text" name="PluginsBefore['.$name.']['.$key.']" value="'.bool_to_string($value,1).'" size="7"/></td>
+								</tr>';
+							}
+						echo '</table>
+					</li>';
+				}
+			echo '</ul>
+		</li>
+		<li>
+			<span class="title">Plugins processing</span>
+			<ul>';
+				foreach ($PluginsProcess as $name => $config) {
+					echo '<li>
+						<b class="'.((isset($NewPlugins[$name]))?'new':'').'">'.$name.' :</b>
+						<table>';
+							foreach ($config as $key => $value) {
+								echo '<tr>
+									<td>'.$key.' :</td>
+									<td><input type="text" name="PluginsProcess['.$name.']['.$key.']" value="'.bool_to_string($value,1).'" size="7"/></td>
+								</tr>';
+							}
+						echo '</table>
+					</li>';
+				}
+			echo '</ul>
+		</li>
+		<li>
+			<span class="title">Plugins post-processing</span>
+			<ul>';
+				foreach ($PluginsAfter as $name => $config) {
+					echo '<li>
+						<b class="'.((isset($NewPlugins[$name]))?'new':'').'">'.$name.' :</b>
+						<table>';
+							foreach ($config as $key => $value) {
+								echo '<tr>
+									<td>'.$key.' :</td>
+									<td><input type="text" name="PluginsAfter['.$name.']['.$key.']" value="'.bool_to_string($value,1).'" size="7"/></td>
+								</tr>';
+							}
+						echo '</table>
+					</li>';
+				}
+			echo '</ul>
+		</li>
+	</ul>
+</div>
+
+<div class="finish">	
+	<input type="submit"/> <input type="reset"/> <a href="index.php">Retour</a>
+</div>
+</form>';
+?>
