diff --git a/__cms__/TODO b/__cms__/TODO
index 4af3eae..341ab2d 100644
--- a/__cms__/TODO
+++ b/__cms__/TODO
@@ -7,3 +7,32 @@ Mettre le css dans une page (dossier) qui s'appelle "style.css", comme ça ça d
    c'est le index.php de cette page qui le génère).
 Si on ne peut lire la propriété __prop_type, afficher un "Access Denied" au lieu de dire qu'on n'a pas pu lire la propriété.
 Ajouter une petite horloge sur nouvel_evenement.jpg et un petit calendrier sur nouvelle_periode.jpg
+Pour les "Nouveau xx", mettre un numéro pour éviter que deux personnes créent la même page mais l'éditent différemment.
+
+Pour la gestion d'erreurs :
+public static function foo() {
+	enter("Création d'un fou :-p .");
+	if (!Permission::vérifier_truc()) { return fail("Accès interdit"); }
+	$x = nofail(Stockage::créer_foo()); // Si Stockage::créer_foo() fait un fail, nous aussi.
+	$y = fatal_fail(truc_machin($x)); // Si truc_machin fait un fail, on affiche une erreur et on quite.
+	leave();
+}
+
+
+= API =
+L'API fournie aux modules est trop verbeuse et n'a pas tout à fait les bonnes abstractions. Il faudrait refactoriser tout ça un de ces
+   jours. Nottemment, il faut pouvoir indiquer les éléments de la page de manière plus déclarative. Leur partie éditable et leur partie
+   affichage et la modification des propriétés associées et les valeurs par défaut doivent être gérées plus ou moins automatiquement. Ex :
+
+// Crée un <textarea> ou un <p>, dont la source / destination est le champ "description", et dont la valeur par défaut lors de la création
+// de la page est "Description de la page." .
+champ("description", "Description de la page.", "texte-long");
+
+// Crée un bouton Appliquer, qui soumet le formulaire en cours.
+// À étudier...
+action("Appliquer", "submit");
+
+// Crée un champ titre avec les trucs spéciaux du titre (renomage de la page + redirect).
+// champ-special-titre est une fonction de rappel ?
+// À étudier.
+champ("titre", "Nouvelle page", "texte-court", "champ-special-titre");
\ No newline at end of file
diff --git a/__cms__/code/cms/cms.php b/__cms__/code/cms/cms.php
index 5c66724..2f761be 100644
--- a/__cms__/code/cms/cms.php
+++ b/__cms__/code/cms/cms.php
@@ -33,7 +33,7 @@ class CMS {
 		$ret = Modules::action($chemin, $action, $paramètres);
 		
 		if (!Page::is_page($ret)) {
-			Erreur::fatale("Le module de " . $chemin->get() . " n'a pas renvoyé une page mais à la place : " . var_export($ret, true));
+			Erreur::fatale("Le module de " . htmlspecialchars($chemin->get()) . " n'a pas renvoyé une page mais à la place : <pre><code>" . htmlspecialchars(var_export($ret, true)) . "</code></pre>", true);
 		} else {
 			$ret->envoyer();
 		}
diff --git a/__cms__/code/cms/page.php b/__cms__/code/cms/page.php
index 9d1ef46..c5f848b 100644
--- a/__cms__/code/cms/page.php
+++ b/__cms__/code/cms/page.php
@@ -73,7 +73,7 @@ class Page {
 	}
 	
 	public static function is_page($obj) {
-		return get_class($obj) === __CLASS__;
+		return is_object($obj) && get_class($obj) === __CLASS__;
 	}
 }
 
diff --git a/__cms__/code/modules/forum/forum-index.php b/__cms__/code/modules/forum/forum-index.php
index 0c5a0d3..1fa2513 100644
--- a/__cms__/code/modules/forum/forum-index.php
+++ b/__cms__/code/modules/forum/forum-index.php
@@ -5,37 +5,80 @@ class ForumIndex {
 		if ($action == "anuler") {
 			return new Page($chemin, '', "redirect");
 		} else if ($action == "nouvelle_page") {
-			// TODO : faut-il demander à avoir directement le nom du nouveau sujet ?
-			// TODO : quel est le propriétaire du nouveau sujet ?
 			$np = Stockage::nouvelle_page($chemin, "Nouveau sujet", "forum-sujet");
 			Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur());
+			Stockage::set_prop($np, "titre", "Nouveau sujet");
+			Stockage::set_prop($np, "dernier_numero", 0);
 			return new Page($np, '', "redirect");
 		} else {
+			if (isset($paramètres["description"])) {
+				Stockage::set_prop($chemin, "description", $paramètres["description"]);
+			}
+			
+			if (isset($paramètres["titre"])) {
+				Stockage::set_prop($chemin, "titre", $paramètres["titre"]);
+			}
+			
 			if (isset($paramètres["vue"])) {
-				self::vue($chemin, $paramètres["vue"]);
+				return self::vue($chemin, $paramètres["vue"]);
 			} else {
-				self::vue($chemin);
+				return self::vue($chemin);
 			}
 		}
 	}
 	
 	public static function vue($chemin, $vue = "normal") {
 		if ($vue == "normal") {
-	        $ret = '';
-			$ret .= "<h2>Forum</h2>";
-			if (Permissions::vérifier_permission($chemin, "nouvelle_page", Authentification::get_utilisateur())) {
-				// afficher le lien "Nouveau sujet"
+			$ret = '';
+			
+			if (Permissions::vérifier_permission($chemin, "set_prop", Authentification::get_utilisateur())) {
+				$ret .= '<form class="forum infos" method="post" action="' . $chemin->get_url() . '">';
+				$ret .= '<h2><input type="text" name="titre" value="' . Stockage::get_prop($chemin, "titre") . '" /></h2>';
+				$ret .= formulaire_édition_texte_enrichi(Stockage::get_prop($chemin, "description"), "description");
+				$ret .= '<p><input type="submit" value="appliquer" /></p>';
+				$ret .= '</form>';
+			} else {
+				$ret .= '<h2>' . Stockage::get_prop($chemin, "titre") . '</h2>';
+				$ret .= '<p class="forum index description affichage">' . Stockage::get_prop($chemin, "description") . '</p>';
 			}
-	        $ret .= '<ul class="forum index">';
-	        foreach (stockage::liste_enfants($chemin) as $k) {
-	            $ret .= '<li><a href="' . chemin::vers_url($k) . '">' . modules::vue($k, 'miniature') . '</a></li>'; // TODO : escape l'url !
-	        }
-	        $ret .= '</ul>';
-			return $ret;
+			
+			$ret .= '<div class="forum sujets index">';
+			$ret .= '<ul>';
+			
+			if (Permissions::vérifier_permission($chemin, "nouvelle_page", Authentification::get_utilisateur())) {
+				$ret .= '<li>';
+				$ret .= '<div class="titre">';
+				
+				$ret .= '<form class="galerie nouvelle_page" method="post" action="' . $chemin->get_url() . '">';
+				$ret .= '<p>';
+				$ret .= '<input type="hidden" name="action" value="nouvelle_page"/>';
+				$ret .= '<input type="submit" value="Nouveau sujet de discussion"/>';
+				$ret .= '</p>';
+				$ret .= '</form>';
+				
+				$ret .= '</div>';
+				$ret .= '</li>';
+			}
+			
+			foreach (Stockage::liste_enfants($chemin) as $k) { // TODO : trier par numéro !
+				$mini = Modules::vue($k, 'miniature');
+				$ret .= '<li>';
+				// TODO : mettre une ancre "#message<numéro>"
+				$ret .= '<a href="' . $k->get_url() . '">'; // TODO : escape l'url !
+				$ret .= '<span class="titre">';
+				$ret .= $mini->titre;
+				$ret .= '</span>';
+				$ret .= '</a>';
+				$ret .= '</li>';
+			}
+			
+			$ret .= '</ul>';
+			
+			return new Page($ret, Stockage::get_prop($chemin, "titre"));
 		}
 	}
 }
 
-Modules::enregister_module("ForumIndex", "forum-index", "vue");
+Modules::enregister_module("ForumIndex", "forum-index", "vue", "titre description");
 
-?>
\ No newline at end of file
+?>
diff --git a/__cms__/code/modules/forum/forum-message.php b/__cms__/code/modules/forum/forum-message.php
index fa29b71..c967db6 100644
--- a/__cms__/code/modules/forum/forum-message.php
+++ b/__cms__/code/modules/forum/forum-message.php
@@ -1,38 +1,41 @@
 <?php
 
-function action($chemin, $action, $paramètres) {
-	if ($action == "anuler") {
-		return new Page($chemin, '', "redirect");
-	} else if ($action == "supprimer") {
-		Stockage::supprimer($chemin);
-		return new Page($chemin->parent(), '', "redirect");
-	} else {
-		if (isset($paramètres["message"])) {
-			Stockage::set_prop($chemin, "message", $paramètres["message"]);
-		}
-		
-		// TODO ... Quelles sont les interactions entre l'utilisateur et le message, dans quel ordre, ...
-		if (isset($paramètres["vue"])) {
-			Modules::vue($chemin->parent(), $paramètres["vue"]);
+class ForumMessage {
+	public static function action($chemin, $action, $paramètres) {
+		if ($action == "anuler") {
+			return new Page($chemin, '', "redirect");
+		} else if ($action == "supprimer") {
+			Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif
+			return new Page($chemin->parent(), '', "redirect");
 		} else {
-			Modules::vue($chemin->parent());
+			if (isset($paramètres["message"])) {
+				Stockage::set_prop($chemin, "message", $paramètres["message"]);
+			}
+			
+			return new Page($chemin->parent(), '', "redirect");
 		}
 	}
-}
-
-function vue($chemin, $vue = "normal") {
-	if ($vue == "normal") {
-        $ret = '';
-		if (Permissions::vérifier_permission($chemin, "set_prop", Authentification::get_utilisateur())) {
-			$ret .= formulaire_édition_texte_enrichi(Stockage::get_prop($chemin, "message"), "message");
-		} else {
-			$ret .= affichage_texte_enrichi(Stockage::get_prop($chemin, "message"));
+	
+	public static function vue($chemin, $vue = "normal") {
+		if ($vue == "normal") {
+			$ret = '';
+			
+			if (Permissions::vérifier_permission($chemin, "set_prop", Authentification::get_utilisateur())) {
+				$ret .= '<form class="forum message edition" enctype="multipart/form-data" method="post" action="' . $chemin->get_url() . '">';
+				$ret .= formulaire_édition_texte_enrichi(Stockage::get_prop($chemin, "message"), "message");
+				$ret .= '<p><input type="submit" value="appliquer" /></p>';
+				$ret .= '</form>';
+			} else {
+				$ret .= affichage_texte_enrichi(Stockage::get_prop($chemin, "message"));
+			}
+			if (Permissions::vérifier_permission($chemin, "supprimer", Authentification::get_utilisateur())) {
+				// peut-être afficher le bouton "Supprimer" ??? ou est-ce trop d'options ?
+			}
+			
+			// Peut-être afficher le bouton "citer" ? ou est-ce trop d'options ?
+			
+			return new Page($ret, Stockage::get_prop($chemin, "titre"));
 		}
-		if (Permissions::vérifier_permission($chemin, "supprimer", Authentification::get_utilisateur())) {
-			// peut-être afficher le bouton "Supprimer" ??? ou est-ce trop d'options ?
-		}
-		// Peut-être afficher le bouton "citer" ? ou est-ce trop d'options ?
-		return $ret;
 	}
 }
 
diff --git a/__cms__/code/modules/forum/forum-sujet.php b/__cms__/code/modules/forum/forum-sujet.php
index 60012d6..d8c78ab 100644
--- a/__cms__/code/modules/forum/forum-sujet.php
+++ b/__cms__/code/modules/forum/forum-sujet.php
@@ -10,33 +10,37 @@ class ForumSujet {
 			Stockage::set_prop($chemin, "dernier_numero", $numéro_message);
 			$np = Stockage::nouvelle_page($chemin, "" . $numéro_message, "forum-message");
 			Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur());
-	
+			Stockage::set_prop($np, "message", "");
+			
 			return new Page($chemin, "#message" . $numéro_message, "redirect");
 		} else if ($action == "supprimer") {
-			Stockage::supprimer($chemin);
+			Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif
 			return new Page($chemin->parent(), '', "redirect");
 		} else {
-			if (isset($paramètres["titre"])) {
+			if (isset($paramètres["titre"]) && Stockage::prop_diff($chemin, "titre", $paramètres["titre"])) {
+				Stockage::set_prop($chemin, "titre", $paramètres["titre"]);
 				Stockage::renomer($chemin, $paramètres["titre"]);
 				$chemin = $chemin->renomer($paramètres["titre"]);
-				// TODO : peut-être new Page($chemin, '', "redirect") ?
+				// TODO : transmettre le paramètre "vue"
+				return new Page($chemin, '', "redirect");
 			}
 			
 			if (isset($paramètres["vue"])) {
-				self::vue($chemin, $paramètres["vue"]);
+				return self::vue($chemin, $paramètres["vue"]);
 			} else {
-				self::vue($chemin);
+				return self::vue($chemin);
 			}
 		}
 	}
 	
 	public static function vue($chemin, $vue = "normal") {
 		if ($vue == "normal") {
-	        $ret = '';
+			$ret = '';
+			
 			if (Permissions::vérifier_permission($chemin, "set_prop", Authentification::get_utilisateur())) {
-				$ret .= '<form action="' . $chemin->get_url() . '">';
-				$ret .= '<input type="text" name="titre" class="forum sujet titre edition" value="' . Stockage::get_prop($chemin, "titre") . '"/>';
-				$ret .= '<input type="submit" value="renomer" />';
+				$ret .= '<form class="forum sujet infos" method="post" action="' . $chemin->get_url() . '">';
+				$ret .= '<h2><input type="text" name="titre" value="' . Stockage::get_prop($chemin, "titre") . '" /></h2>';
+				$ret .= '<p><input type="submit" value="appliquer" /></p>';
 				$ret .= '</form>';
 			} else {
 				$ret .= '<h2 class="forum sujet titre affichage">' . Stockage::get_prop($chemin, "titre") . '</h2>';
@@ -44,23 +48,31 @@ class ForumSujet {
 			if (Permissions::vérifier_permission($chemin, "supprimer", Authentification::get_utilisateur())) {
 				$ret .= '<form action="' . $chemin->get_url() . '">';
 				$ret .= '<input type="hidden" name="action" value="supprimer"/>';
-				$ret .= '<input type="submit" value="Supprimer"/>';
+				$ret .= '<input type="submit" value="Supprimer le sujet"/>';
 				$ret .= '</form>';
 			}
 	        $ret .= '<ul class="forum sujet">';
+			
 	        foreach (stockage::liste_enfants($chemin) as $k) {
-	            $ret .= '<li>' . Modules::vue($k) . '</li>';
+	            $ret .= '<li>' . Modules::vue($k)->contenu . '</li>';
 	        }
-	        $ret .= '</ul>';
+			
 			if (Permissions::vérifier_permission($chemin, "nouvelle_page", Authentification::get_utilisateur())) {
-				$ret .= '<form action="' . $chemin->get_url() . '">';
+				$ret .= '<li>';
+				$ret .= '<form class="forum sujet nouvelle_page" method="post" action="' . $chemin->get_url() . '">';
+				$ret .= '<p>';
 				$ret .= '<input type="hidden" name="action" value="nouvelle_page"/>';
-				$ret .= '<input type="submit" value="Nouvelle page"/>';
+				$ret .= '<input type="submit" value="Nouveau message"/>';
+				$ret .= '</p>';
 				$ret .= '</form>';
+				$ret .= '</li>';
 			}
-			return $ret;
+			
+	        $ret .= '</ul>';
+			
+			return new Page($ret, Stockage::get_prop($chemin, "titre"));
 		} else if ($vue == "miniature") {
-			return Stockage::get_prop($chemin, "titre");
+			return new Page("Sujet.", Stockage::get_prop($chemin, "titre"));
 		}
 	}
 }
diff --git a/__cms__/code/modules/galerie/galerie-evenement.php b/__cms__/code/modules/galerie/galerie-evenement.php
index 4cc0b71..1af0fac 100644
--- a/__cms__/code/modules/galerie/galerie-evenement.php
+++ b/__cms__/code/modules/galerie/galerie-evenement.php
@@ -46,7 +46,7 @@ class GalerieÉvènement {
 				$ret .= '<p><input type="submit" value="appliquer" /></p>';
 				$ret .= '</form>';
 			} else {
-				$ret .= '<h2>' . Stockage::get_prop($chemin, "titre") . '</h2>';
+				$ret .= '<h2 class="galerie evenement titre affichage">' . Stockage::get_prop($chemin, "titre") . '</h2>';
 				$ret .= '<p class="galerie evenement description affichage">' . Stockage::get_prop($chemin, "description") . '</p>';
 			}
 			
diff --git a/__cms__/code/securite/erreur.php b/__cms__/code/securite/erreur.php
index a5498f0..2da0ab8 100644
--- a/__cms__/code/securite/erreur.php
+++ b/__cms__/code/securite/erreur.php
@@ -5,7 +5,7 @@ class Erreur {
 	public $message = "erreur";
 	public $string = "";
 	
-	public static function fatale($message) {
+	public static function fatale($message, $html = false) {
 		echo '<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
@@ -20,7 +20,7 @@ class Erreur {
 		. htmlspecialchars(rawurlencode("Code de l'erreur : " . $message)) . '">'
 		. htmlspecialchars(Config::get('courriel_admin'))
 		. '</a>. Indiquez l\'erreur ci-dessous dans votre courriel.</p>
-		<p><strong>' . htmlspecialchars($message) . '</strong></p>
+		<p><strong>' . ($html ? $message : htmlspecialchars($message)) . '</strong></p>
 	</body>
 </html>';
 		//echo "\n"; debug_print_backtrace();
diff --git a/__cms__/code/site/squelette.php b/__cms__/code/site/squelette.php
index b549de7..b14259c 100644
--- a/__cms__/code/site/squelette.php
+++ b/__cms__/code/site/squelette.php
@@ -39,6 +39,7 @@ class Squelette {
 		$ret .= '			<ul>' . $nl;
 		$ret .= '				<li><a href="' . $racine->get_url() . '">Accueil</a></li>' . $nl;
 		$ret .= '				<li><a href="' . $racine->enfant("galerie")->get_url() . '">Galerie</a></li>' . $nl;
+		$ret .= '				<li><a href="' . $racine->enfant("forum")->get_url() . '">Forum</a></li>' . $nl;
 		if (Permissions::vérifier_permission($racine->enfant("admin"), "set_prop", Authentification::get_utilisateur())) {
 			$ret .= '<li><a href="' . $racine->enfant("admin")->get_url() . '">Administration</a></li>' . $nl;
 		}
diff --git a/__cms__/donnees/forum/Un sujet de discussion/1/__prop__message b/__cms__/donnees/forum/Un sujet de discussion/1/__prop__message
new file mode 100644
index 0000000..c9d3a27
--- /dev/null
+++ b/__cms__/donnees/forum/Un sujet de discussion/1/__prop__message	
@@ -0,0 +1 @@
+Un ptit message !
\ No newline at end of file
diff --git a/__cms__/donnees/forum/Un sujet de discussion/1/__prop__proprietaire b/__cms__/donnees/forum/Un sujet de discussion/1/__prop__proprietaire
new file mode 100644
index 0000000..f77b004
--- /dev/null
+++ b/__cms__/donnees/forum/Un sujet de discussion/1/__prop__proprietaire	
@@ -0,0 +1 @@
+admin
\ No newline at end of file
diff --git a/__cms__/donnees/forum/Un sujet de discussion/1/__prop__type b/__cms__/donnees/forum/Un sujet de discussion/1/__prop__type
new file mode 100644
index 0000000..7f45162
--- /dev/null
+++ b/__cms__/donnees/forum/Un sujet de discussion/1/__prop__type	
@@ -0,0 +1 @@
+forum-message
\ No newline at end of file
diff --git a/__cms__/donnees/forum/Un sujet de discussion/__prop__dernier_numero b/__cms__/donnees/forum/Un sujet de discussion/__prop__dernier_numero
new file mode 100644
index 0000000..56a6051
--- /dev/null
+++ b/__cms__/donnees/forum/Un sujet de discussion/__prop__dernier_numero	
@@ -0,0 +1 @@
+1
\ No newline at end of file
diff --git a/__cms__/donnees/forum/Un sujet de discussion/__prop__proprietaire b/__cms__/donnees/forum/Un sujet de discussion/__prop__proprietaire
new file mode 100644
index 0000000..f77b004
--- /dev/null
+++ b/__cms__/donnees/forum/Un sujet de discussion/__prop__proprietaire	
@@ -0,0 +1 @@
+admin
\ No newline at end of file
diff --git a/__cms__/donnees/forum/Un sujet de discussion/__prop__titre b/__cms__/donnees/forum/Un sujet de discussion/__prop__titre
new file mode 100644
index 0000000..618d894
--- /dev/null
+++ b/__cms__/donnees/forum/Un sujet de discussion/__prop__titre	
@@ -0,0 +1 @@
+Un sujet de discussion
\ No newline at end of file
diff --git a/__cms__/donnees/forum/Un sujet de discussion/__prop__type b/__cms__/donnees/forum/Un sujet de discussion/__prop__type
new file mode 100644
index 0000000..2901a6c
--- /dev/null
+++ b/__cms__/donnees/forum/Un sujet de discussion/__prop__type	
@@ -0,0 +1 @@
+forum-sujet
\ No newline at end of file
diff --git a/__cms__/donnees/forum/Une autre discussion/1/__prop__message b/__cms__/donnees/forum/Une autre discussion/1/__prop__message
new file mode 100644
index 0000000..5cf1d44
--- /dev/null
+++ b/__cms__/donnees/forum/Une autre discussion/1/__prop__message	
@@ -0,0 +1 @@
+Bla bla bla...
\ No newline at end of file
diff --git a/__cms__/donnees/forum/Une autre discussion/1/__prop__proprietaire b/__cms__/donnees/forum/Une autre discussion/1/__prop__proprietaire
new file mode 100644
index 0000000..f77b004
--- /dev/null
+++ b/__cms__/donnees/forum/Une autre discussion/1/__prop__proprietaire	
@@ -0,0 +1 @@
+admin
\ No newline at end of file
diff --git a/__cms__/donnees/forum/Une autre discussion/1/__prop__type b/__cms__/donnees/forum/Une autre discussion/1/__prop__type
new file mode 100644
index 0000000..7f45162
--- /dev/null
+++ b/__cms__/donnees/forum/Une autre discussion/1/__prop__type	
@@ -0,0 +1 @@
+forum-message
\ No newline at end of file
diff --git a/__cms__/donnees/forum/Une autre discussion/2/__prop__message b/__cms__/donnees/forum/Une autre discussion/2/__prop__message
new file mode 100644
index 0000000..a51aca6
--- /dev/null
+++ b/__cms__/donnees/forum/Une autre discussion/2/__prop__message	
@@ -0,0 +1 @@
+Plop
\ No newline at end of file
diff --git a/__cms__/donnees/forum/Une autre discussion/2/__prop__proprietaire b/__cms__/donnees/forum/Une autre discussion/2/__prop__proprietaire
new file mode 100644
index 0000000..f77b004
--- /dev/null
+++ b/__cms__/donnees/forum/Une autre discussion/2/__prop__proprietaire	
@@ -0,0 +1 @@
+admin
\ No newline at end of file
diff --git a/__cms__/donnees/forum/Une autre discussion/2/__prop__type b/__cms__/donnees/forum/Une autre discussion/2/__prop__type
new file mode 100644
index 0000000..7f45162
--- /dev/null
+++ b/__cms__/donnees/forum/Une autre discussion/2/__prop__type	
@@ -0,0 +1 @@
+forum-message
\ No newline at end of file
diff --git a/__cms__/donnees/forum/Une autre discussion/3/__prop__message b/__cms__/donnees/forum/Une autre discussion/3/__prop__message
new file mode 100644
index 0000000..43a62ae
--- /dev/null
+++ b/__cms__/donnees/forum/Une autre discussion/3/__prop__message	
@@ -0,0 +1 @@
+Truc
\ No newline at end of file
diff --git a/__cms__/donnees/forum/Une autre discussion/3/__prop__proprietaire b/__cms__/donnees/forum/Une autre discussion/3/__prop__proprietaire
new file mode 100644
index 0000000..f77b004
--- /dev/null
+++ b/__cms__/donnees/forum/Une autre discussion/3/__prop__proprietaire	
@@ -0,0 +1 @@
+admin
\ No newline at end of file
diff --git a/__cms__/donnees/forum/Une autre discussion/3/__prop__type b/__cms__/donnees/forum/Une autre discussion/3/__prop__type
new file mode 100644
index 0000000..7f45162
--- /dev/null
+++ b/__cms__/donnees/forum/Une autre discussion/3/__prop__type	
@@ -0,0 +1 @@
+forum-message
\ No newline at end of file
diff --git a/__cms__/donnees/forum/Une autre discussion/__prop__dernier_numero b/__cms__/donnees/forum/Une autre discussion/__prop__dernier_numero
new file mode 100644
index 0000000..e440e5c
--- /dev/null
+++ b/__cms__/donnees/forum/Une autre discussion/__prop__dernier_numero	
@@ -0,0 +1 @@
+3
\ No newline at end of file
diff --git a/__cms__/donnees/forum/Une autre discussion/__prop__proprietaire b/__cms__/donnees/forum/Une autre discussion/__prop__proprietaire
new file mode 100644
index 0000000..f77b004
--- /dev/null
+++ b/__cms__/donnees/forum/Une autre discussion/__prop__proprietaire	
@@ -0,0 +1 @@
+admin
\ No newline at end of file
diff --git a/__cms__/donnees/forum/Une autre discussion/__prop__titre b/__cms__/donnees/forum/Une autre discussion/__prop__titre
new file mode 100644
index 0000000..bda4227
--- /dev/null
+++ b/__cms__/donnees/forum/Une autre discussion/__prop__titre	
@@ -0,0 +1 @@
+Une autre discussion
\ No newline at end of file
diff --git a/__cms__/donnees/forum/Une autre discussion/__prop__type b/__cms__/donnees/forum/Une autre discussion/__prop__type
new file mode 100644
index 0000000..2901a6c
--- /dev/null
+++ b/__cms__/donnees/forum/Une autre discussion/__prop__type	
@@ -0,0 +1 @@
+forum-sujet
\ No newline at end of file
diff --git a/__cms__/donnees/forum/__prop__description b/__cms__/donnees/forum/__prop__description
new file mode 100644
index 0000000..321eedd
--- /dev/null
+++ b/__cms__/donnees/forum/__prop__description
@@ -0,0 +1 @@
+Description du forum.
\ No newline at end of file
diff --git a/__cms__/donnees/forum/__prop__titre b/__cms__/donnees/forum/__prop__titre
new file mode 100644
index 0000000..f50eaff
--- /dev/null
+++ b/__cms__/donnees/forum/__prop__titre
@@ -0,0 +1 @@
+Forum
\ No newline at end of file
diff --git a/__cms__/donnees/forum/__prop__type b/__cms__/donnees/forum/__prop__type
new file mode 100644
index 0000000..5ff82de
--- /dev/null
+++ b/__cms__/donnees/forum/__prop__type
@@ -0,0 +1 @@
+forum-index
\ No newline at end of file
diff --git a/forum/Nouveau sujet/1/index.php b/forum/Nouveau sujet/1/index.php
new file mode 100644
index 0000000..3d0b852
--- /dev/null
+++ b/forum/Nouveau sujet/1/index.php	
@@ -0,0 +1,7 @@
+<?php
+
+require_once(dirname(__FILE__) . "/./../../../__cms__/cms.php");
+
+CMS::page("/forum/Nouveau sujet/1");
+
+?>
\ No newline at end of file
diff --git a/forum/Nouveau sujet/index.php b/forum/Nouveau sujet/index.php
new file mode 100644
index 0000000..252d514
--- /dev/null
+++ b/forum/Nouveau sujet/index.php	
@@ -0,0 +1,7 @@
+<?php
+
+require_once(dirname(__FILE__) . "/./../../__cms__/cms.php");
+
+CMS::page("/forum/Nouveau sujet");
+
+?>
\ No newline at end of file
diff --git a/forum/Un sujet de discussion/index.php b/forum/Un sujet de discussion/index.php
new file mode 100644
index 0000000..1b23ec4
--- /dev/null
+++ b/forum/Un sujet de discussion/index.php	
@@ -0,0 +1,7 @@
+<?php
+
+require_once(dirname(__FILE__) . "/./../../__cms__/cms.php");
+
+CMS::page("/forum/Un sujet de discussion");
+
+?>
\ No newline at end of file
diff --git a/forum/Une autre discussion/1/index.php b/forum/Une autre discussion/1/index.php
new file mode 100644
index 0000000..60e365d
--- /dev/null
+++ b/forum/Une autre discussion/1/index.php	
@@ -0,0 +1,7 @@
+<?php
+
+require_once(dirname(__FILE__) . "/./../../../__cms__/cms.php");
+
+CMS::page("/forum/Une autre discussion/1");
+
+?>
\ No newline at end of file
diff --git a/forum/Une autre discussion/2/index.php b/forum/Une autre discussion/2/index.php
new file mode 100644
index 0000000..5fa1f61
--- /dev/null
+++ b/forum/Une autre discussion/2/index.php	
@@ -0,0 +1,7 @@
+<?php
+
+require_once(dirname(__FILE__) . "/./../../../__cms__/cms.php");
+
+CMS::page("/forum/Une autre discussion/2");
+
+?>
\ No newline at end of file
diff --git a/forum/Une autre discussion/3/index.php b/forum/Une autre discussion/3/index.php
new file mode 100644
index 0000000..cfdfcb7
--- /dev/null
+++ b/forum/Une autre discussion/3/index.php	
@@ -0,0 +1,7 @@
+<?php
+
+require_once(dirname(__FILE__) . "/./../../../__cms__/cms.php");
+
+CMS::page("/forum/Une autre discussion/3");
+
+?>
\ No newline at end of file
diff --git a/forum/Une autre discussion/index.php b/forum/Une autre discussion/index.php
new file mode 100644
index 0000000..016d14d
--- /dev/null
+++ b/forum/Une autre discussion/index.php	
@@ -0,0 +1,7 @@
+<?php
+
+require_once(dirname(__FILE__) . "/./../../__cms__/cms.php");
+
+CMS::page("/forum/Une autre discussion");
+
+?>
\ No newline at end of file
diff --git a/forum/index.php b/forum/index.php
new file mode 100644
index 0000000..ec4e7ab
--- /dev/null
+++ b/forum/index.php
@@ -0,0 +1,7 @@
+<?php
+
+require_once(dirname(__FILE) . "/./../__cms__/cms.php");
+
+CMS::page("/forum");
+
+?>
diff --git a/permissions.sh b/permissions.sh
index e982dd2..9d9ef23 100644
--- a/permissions.sh
+++ b/permissions.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-fichiers="index.php galerie admin __cms__/donnees"
+fichiers="index.php galerie forum admin __cms__/donnees"
 
 chgrp -R www-data $fichiers
 chmod -R 664 $fichiers