www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 783cab6b16c27f05e24330bd98e2c897a2ab1acf
parent 78d4da8dfbd55b04573934b99ac4d952cc4f5040
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date:   Thu,  5 Aug 2010 07:45:50 +0200

Structure des fichiers & dossiers pour Admin + un peu de code.

Diffstat:
M__cms__/TODO | 6++++--
A__cms__/code/modules/admin/admin-apparence.php | 51+++++++++++++++++++++++++++++++++++++++++++++++++++
R__cms__/code/modules/admin/connexion.php -> __cms__/code/modules/admin/admin-connexion.php | 0
A__cms__/code/modules/admin/admin-index.php | 36++++++++++++++++++++++++++++++++++++
A__cms__/code/modules/admin/admin-permissions.php | 40++++++++++++++++++++++++++++++++++++++++
R__cms__/code/modules/admin/utilisateurs.php -> __cms__/code/modules/admin/admin-utilisateurs.php | 0
D__cms__/code/modules/admin/couleurs.php | 51---------------------------------------------------
M__cms__/code/modules/admin/include.php | 9+++++----
D__cms__/code/modules/admin/permissions.php | 40----------------------------------------
M__cms__/code/modules/modules.php | 6++++--
A__cms__/donnees/admin/__prop__type | 2++
A__cms__/donnees/admin/apparence/__prop__inclure_administration | 2++
A__cms__/donnees/admin/apparence/__prop__titre | 2++
A__cms__/donnees/admin/apparence/__prop__type | 2++
A__cms__/donnees/admin/connexion/__prop__inclure_administration | 2++
A__cms__/donnees/admin/connexion/__prop__titre | 2++
A__cms__/donnees/admin/permissions/__prop__inclure_administration | 2++
A__cms__/donnees/admin/permissions/__prop__titre | 2++
A__cms__/donnees/admin/permissions/__prop__type | 2++
A__cms__/donnees/admin/utilisateurs/__prop__inclure_administration | 2++
A__cms__/donnees/admin/utilisateurs/__prop__titre | 2++
A__cms__/donnees/admin/utilisateurs/__prop_type | 2++
Aadmin/apparence/index.php | 8++++++++
Aadmin/index.php | 8++++++++
Aadmin/permissions/index.php | 8++++++++
Aadmin/utilisateurs/index.php | 8++++++++
26 files changed, 196 insertions(+), 99 deletions(-)

diff --git a/__cms__/TODO b/__cms__/TODO @@ -2,4 +2,6 @@ Sécurité : les noms de propriétés passés à stockage ne doivent pas contenir de '/' (doivent valider "nettoyer_segment()". Les actions ne devraient être que des POST... ça pose problème sur certains liens (connexion, ...). Les titres devraient renomer _+_ set_prop (sachant que le renomage peut déteriorer le texte du titre (sécurité sur le chemin)). -Gérer ces saletées de magic quotes dans les biscuits aux brisures de chocolat (cookies). -\ No newline at end of file +Gérer ces saletées de magic quotes dans les biscuits aux brisures de chocolat (cookies). +Mettre le css dans une page (dossier) qui s'appelle "style.css", comme ça ça donne l'impression que c'est un fichier (même si en réalité + c'est le index.php de cette page qui le génère). +\ No newline at end of file diff --git a/__cms__/code/modules/admin/admin-apparence.php b/__cms__/code/modules/admin/admin-apparence.php @@ -0,0 +1,50 @@ +<?php + +class AdminApparence { + public static function action($chemin, $action, $paramètres) { + if ($action == "anuler") { + return new Page($chemin, '', "redirect"); + } else { + if (isset($paramètres["Couleur_A"])) { + // Stocker couleur A + } + if (isset($paramètres["Couleur_B"])) { + // Stocker couleur B + } + if (isset($paramètres["Couleur_C"])) { + // Stocker couleur C + } + // ... + + if (isset($paramètres["vue"])) { + self::vue($chemin, $paramètres["vue"]); + } else { + self::vue($chemin); + } + } + } + + public static function vue($chemin, $vue = "normal") { + if ($vue == "normal") { + // Si l'utilisateur a l'autorisation de modifier les propriétés, + // on affiche la version modifiable plutôt que la "vue". + $ret = ""; + $ret .= "<input ... Couleur A />"; + $ret .= "<input ... Couleur B />"; + $ret .= "<input ... Couleur C />"; + // $ret .= ... + return new Page($ret, "Apparence"); + } else if ($vue == "css") { + // TODO : où mettre ce gen_css... ? + return Site::gen_css(array( + "Couleur_A" => Stockage::get_prop($chemin, "Coucleur_A"), + "Couleur_B" => Stockage::get_prop($chemin, "Coucleur_B"), + "Couleur_C" => Stockage::get_prop($chemin, "Coucleur_C") + )); + } + } +} + +Modules::enregister_module("AdminApparence", "admin-apparence", "vue", "Couleur_A Couleur_B Couleur_C"); + +?> +\ No newline at end of file diff --git a/__cms__/code/modules/admin/connexion.php b/__cms__/code/modules/admin/admin-connexion.php diff --git a/__cms__/code/modules/admin/admin-index.php b/__cms__/code/modules/admin/admin-index.php @@ -0,0 +1,35 @@ +<?php + +class AdminIndex { + public static function action($chemin, $action, $paramètres) { + if (isset($paramètres["vue"])) { + return self::vue($chemin, $paramètres["vue"]); + } else { + return self::vue($chemin); + } + } + + public static function vue($chemin, $vue = "normal") { + if ($vue == "normal") { + $ret = ''; + $ret .= '<h2>Administration</h2>'; + $ret .= '<ul>'; + foreach (Stockage::liste_enfants($chemin) as $k) { + if (Stockage::get_prop($k, "inclure_administration") == "oui") { + $ret .= '<li>'; + $ret .= '<a href="' . $k->get_url() . '">'; // TODO : escape l'url ! + $ret .= Stockage::get_prop($k, "titre"); + $ret .= '</a>'; + $ret .= '</li>'; + } + } + $ret .= '</ul>'; + return new Page($ret, Stockage::get_prop($chemin, "nom_site")); + } + return new Page('',''); // TODO : devrait renvoyer une page d'erreur ! + } +} + +Modules::enregister_module("AdminIndex", "admin-index", "vue"); + +?> +\ No newline at end of file diff --git a/__cms__/code/modules/admin/admin-permissions.php b/__cms__/code/modules/admin/admin-permissions.php @@ -0,0 +1,39 @@ +<?php + +class AdminPermissions { + public static function action($chemin, $action, $paramètres) { + $singleton = new Chemin("/admin/permissions/"); + if ($action == "anuler") { + return new Page($chemin, '', "redirect"); + } else { + if (isset($paramètres["regles"])) { + Stockage::set_prop($singleton, "regles", $paramètres["regles"]); + } + + if (isset($paramètres["vue"])) { + self::vue($chemin, $paramètres["vue"]); + } else { + self::vue($chemin); + } + } + } + + public static function vue($chemin, $vue = "normal") { + $singleton = new Chemin("/admin/permissions/"); + if ($vue == "normal") { + $ret = ""; + $ret .= "<h2>Règles de sécurité</h2>"; + $ret .= "<p>La première règle correspondant à une action de l'utilisateur est appliquée. Bla-bla blabla sur le fonctionnement.</p>"; + if (Permissions::vérifier_permission($singleton, "set_prop", Authentification::get_utilisateur())) { + $ret .= "<textarea ...>" . Stockage::get_prop($singleton, "regles") . "</textarea>"; // TODO : html escape chars etc. + } else { + $ret .= "<pre><code>" . Stockage::get_prop($singleton, "regles") . "</code></pre>"; // TODO : html escape chars etc. + } + return new Page($ret, "Permissions"); + } + } +} + +Modules::enregister_module("AdminPermissions", "admin-permissions", "vue", "regles"); + +?> +\ No newline at end of file diff --git a/__cms__/code/modules/admin/utilisateurs.php b/__cms__/code/modules/admin/admin-utilisateurs.php diff --git a/__cms__/code/modules/admin/couleurs.php b/__cms__/code/modules/admin/couleurs.php @@ -1,50 +0,0 @@ -<?php - -class AdminCouleurs { - public static function action($chemin, $action, $paramètres) { - if ($action == "anuler") { - return new Page($chemin, '', "redirect"); - } else { - if (isset($paramètres["Couleur_A"])) { - // Stocker couleur A - } - if (isset($paramètres["Couleur_B"])) { - // Stocker couleur B - } - if (isset($paramètres["Couleur_C"])) { - // Stocker couleur C - } - // ... - - if (isset($paramètres["vue"])) { - self::vue($chemin, $paramètres["vue"]); - } else { - self::vue($chemin); - } - } - } - - public static function vue($chemin, $vue = "normal") { - if ($vue == "normal") { - // Si l'utilisateur a l'autorisation de modifier les propriétés, - // on affiche la version modifiable plutôt que la "vue". - $ret = ""; - $ret .= "<input ... Couleur A />"; - $ret .= "<input ... Couleur B />"; - $ret .= "<input ... Couleur C />"; - // $ret .= ... - return "Vue normale de la page."; - } else if ($vue == "css") { - // TODO : où mettre ce gen_css... ? - return Site::gen_css(array( - "Couleur_A" => Stockage::get_prop($chemin, "Coucleur_A"), - "Couleur_B" => Stockage::get_prop($chemin, "Coucleur_B"), - "Couleur_C" => Stockage::get_prop($chemin, "Coucleur_C") - )); - } - } -} - -Modules::enregister_module("AdminCouleurs", "admin-couleurs", "vue", "Couleur_A Couleur_B Couleur_C"); - -?> -\ No newline at end of file diff --git a/__cms__/code/modules/admin/include.php b/__cms__/code/modules/admin/include.php @@ -1,6 +1,7 @@ <?php - require_once(dirname(__FILE__) . "/connexion.php"); - require_once(dirname(__FILE__) . "/permissions.php"); - require_once(dirname(__FILE__) . "/utilisateurs.php"); - require_once(dirname(__FILE__) . "/couleurs.php"); + require_once(dirname(__FILE__) . "/admin-connexion.php"); + require_once(dirname(__FILE__) . "/admin-permissions.php"); + require_once(dirname(__FILE__) . "/admin-utilisateurs.php"); + require_once(dirname(__FILE__) . "/admin-apparence.php"); + require_once(dirname(__FILE__) . "/admin-index.php"); ?> \ No newline at end of file diff --git a/__cms__/code/modules/admin/permissions.php b/__cms__/code/modules/admin/permissions.php @@ -1,39 +0,0 @@ -<?php - -class AdminPermissions { - function action($chemin, $action, $paramètres) { - $singleton = new Chemin("/admin/permissions/"); - if ($action == "anuler") { - return new Page($chemin, '', "redirect"); - } else { - if (isset($paramètres["regles"])) { - Stockage::set_prop($singleton, "regles", $paramètres["regles"]); - } - - if (isset($paramètres["vue"])) { - self::vue($chemin, $paramètres["vue"]); - } else { - self::vue($chemin); - } - } - } - - function vue($chemin, $vue = "normal") { - $singleton = new Chemin("/admin/permissions/"); - if ($vue == "normal") { - $ret = ""; - $ret .= "<h2>Règles de sécurité</h2>"; - $ret .= "<p>La première règle correspondant à une action de l'utilisateur est appliquée. Bla-bla blabla sur le fonctionnement.</p>"; - if (Permissions::vérifier_permission($singleton, "set_prop", Authentification::get_utilisateur())) { - $ret .= "<textarea ...>" . Stockage::get_prop($singleton, "regles") . "</textarea>"; // TODO : html escape chars etc. - } else { - $ret .= "<pre><code>" . Stockage::get_prop($singleton, "regles") . "</code></pre>"; // TODO : html escape chars etc. - } - return $ret; - } - } -} - -Modules::enregister_module("AdminPermissions", "admin-permissions", "vue", "regles"); - -?> -\ No newline at end of file diff --git a/__cms__/code/modules/modules.php b/__cms__/code/modules/modules.php @@ -15,9 +15,11 @@ class Modules { public static function get_module($chemin) { $type = Stockage::get_prop($chemin, "type"); - if (Erreur::is_erreur($type) || !isset(self::$liste_modules[$type])) { + if (Erreur::is_erreur($type)) { + // TODO : permettre l'empilement des erreurs. Quelle syntaxe utiliser ? + Erreur::fatale($type, "Erreur lors de la lecture du type de la page " . $chemin->get() . "."); + } else if (!isset(self::$liste_modules[$type])) { Erreur::fatale("Type inconnu (" . var_export($type, true) . ") pour la page " . $chemin->get() . "."); - // return false; } return self::$liste_modules[$type]; } diff --git a/__cms__/donnees/admin/__prop__type b/__cms__/donnees/admin/__prop__type @@ -0,0 +1 @@ +admin-index +\ No newline at end of file diff --git a/__cms__/donnees/admin/apparence/__prop__inclure_administration b/__cms__/donnees/admin/apparence/__prop__inclure_administration @@ -0,0 +1 @@ +oui +\ No newline at end of file diff --git a/__cms__/donnees/admin/apparence/__prop__titre b/__cms__/donnees/admin/apparence/__prop__titre @@ -0,0 +1 @@ +Apparence +\ No newline at end of file diff --git a/__cms__/donnees/admin/apparence/__prop__type b/__cms__/donnees/admin/apparence/__prop__type @@ -0,0 +1 @@ +admin-apparence +\ No newline at end of file diff --git a/__cms__/donnees/admin/connexion/__prop__inclure_administration b/__cms__/donnees/admin/connexion/__prop__inclure_administration @@ -0,0 +1 @@ +non +\ No newline at end of file diff --git a/__cms__/donnees/admin/connexion/__prop__titre b/__cms__/donnees/admin/connexion/__prop__titre @@ -0,0 +1 @@ +Connexion +\ No newline at end of file diff --git a/__cms__/donnees/admin/permissions/__prop__inclure_administration b/__cms__/donnees/admin/permissions/__prop__inclure_administration @@ -0,0 +1 @@ +oui +\ No newline at end of file diff --git a/__cms__/donnees/admin/permissions/__prop__titre b/__cms__/donnees/admin/permissions/__prop__titre @@ -0,0 +1 @@ +Permissions +\ No newline at end of file diff --git a/__cms__/donnees/admin/permissions/__prop__type b/__cms__/donnees/admin/permissions/__prop__type @@ -0,0 +1 @@ +admin-permissions +\ No newline at end of file diff --git a/__cms__/donnees/admin/utilisateurs/__prop__inclure_administration b/__cms__/donnees/admin/utilisateurs/__prop__inclure_administration @@ -0,0 +1 @@ +oui +\ No newline at end of file diff --git a/__cms__/donnees/admin/utilisateurs/__prop__titre b/__cms__/donnees/admin/utilisateurs/__prop__titre @@ -0,0 +1 @@ +Utilisateurs +\ No newline at end of file diff --git a/__cms__/donnees/admin/utilisateurs/__prop_type b/__cms__/donnees/admin/utilisateurs/__prop_type @@ -0,0 +1 @@ +admin-utilisateurs +\ No newline at end of file diff --git a/admin/apparence/index.php b/admin/apparence/index.php @@ -0,0 +1,7 @@ +<?php + +require_once(dirname(__FILE) . "/./../../__cms__/cms.php"); + +CMS::page("/admin/apparence"); + +?> +\ No newline at end of file diff --git a/admin/index.php b/admin/index.php @@ -0,0 +1,7 @@ +<?php + +require_once(dirname(__FILE) . "/./../__cms__/cms.php"); + +CMS::page("/admin"); + +?> +\ No newline at end of file diff --git a/admin/permissions/index.php b/admin/permissions/index.php @@ -0,0 +1,7 @@ +<?php + +require_once(dirname(__FILE) . "/./../../__cms__/cms.php"); + +CMS::page("/admin/permissions"); + +?> +\ No newline at end of file diff --git a/admin/utilisateurs/index.php b/admin/utilisateurs/index.php @@ -0,0 +1,7 @@ +<?php + +require_once(dirname(__FILE) . "/./../../__cms__/cms.php"); + +CMS::page("/admin/utilisateurs"); + +?> +\ No newline at end of file