Bandeau de navigation (breadcrumbs).

This commit is contained in:
Georges Dupéron 2010-09-22 23:05:47 +02:00
parent b2ed8db6d5
commit bcf9c91b1d
26 changed files with 128 additions and 95 deletions

View File

@ -50,6 +50,18 @@ class Chemin {
return ($slash_debut ? '/' : '') . join($this->segments, '/'); return ($slash_debut ? '/' : '') . join($this->segments, '/');
} }
public function hiérarchie() {
$c = new self($this->segments);
$r = new self("/");
$ret = array();
while (! $c->est_racine()) {
array_unshift($ret, $c);
$c = $c->parent();
}
array_unshift($ret, $c);
return $ret;
}
public function get_url($fin = "") { public function get_url($fin = "") {
// Config::get("url_base") DOIT se terminer par '/', tel que spécifié // Config::get("url_base") DOIT se terminer par '/', tel que spécifié
// dans config.php. // dans config.php.
@ -87,6 +99,10 @@ class Chemin {
return end($this->segments); return end($this->segments);
} }
public function est_racine() {
return (count($this->segments) == 0);
}
public static function nettoyer_chemin($chemin, $est_un_motif = false) { public static function nettoyer_chemin($chemin, $est_un_motif = false) {
// SÉCURITÉ : $chemin nettoyé // SÉCURITÉ : $chemin nettoyé

View File

@ -8,8 +8,10 @@ class Page {
public $sendprop_prop = ""; public $sendprop_prop = "";
public $redirect_destination = ""; public $redirect_destination = "";
public $type = "page"; public $type = "page";
public $chemin = null;
public function __construct($a, $b, $type = "page") { public function __construct($chemin, $a, $b, $type = "page") {
$this->chemin = $chemin;
if ($type == "page") { if ($type == "page") {
$this->set_page($a, $b); $this->set_page($a, $b);
} else if ($type == "sendfile") { } else if ($type == "sendfile") {

View File

@ -3,7 +3,7 @@
class AdminApparence { class AdminApparence {
public static function action($chemin, $action, $paramètres) { public static function action($chemin, $action, $paramètres) {
if ($action == "anuler") { if ($action == "anuler") {
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} else { } else {
if (isset($paramètres["Couleur_A"])) { if (isset($paramètres["Couleur_A"])) {
Stockage::set_prop($chemin, "Couleur_A", $paramètres["Couleur_A"]); Stockage::set_prop($chemin, "Couleur_A", $paramètres["Couleur_A"]);
@ -51,7 +51,7 @@ class AdminApparence {
$ret .= '<li>Couleur D : #fff</li>'; $ret .= '<li>Couleur D : #fff</li>';
$ret .= '</ul>'; $ret .= '</ul>';
} }
return new Page($ret, "Apparence"); return new Page($chemin, $ret, "Apparence");
} else if ($vue == "css") { } else if ($vue == "css") {
// TODO : où mettre ce gen_css... ? // TODO : où mettre ce gen_css... ?
return Site::gen_css(array( return Site::gen_css(array(

View File

@ -27,25 +27,25 @@ class AdminConnexion {
// formulaire de connexion, formulaire + "mauvais mdp") // formulaire de connexion, formulaire + "mauvais mdp")
if ($vue == "normal") { if ($vue == "normal") {
$ret = self::formulaire_connexion($chemin); $ret = self::formulaire_connexion($chemin);
return new Page($ret, "Connexion"); return new Page($chemin, $ret, "Connexion");
} else if ($vue == "connexion réussie") { } else if ($vue == "connexion réussie") {
$ret = "<h2>Connexion réussie</h2>"; $ret = "<h2>Connexion réussie</h2>";
$ret .= "<p>Pour vous déconnecter, utilisez le lien «déconnexion» en haut à droite.</p>"; $ret .= "<p>Pour vous déconnecter, utilisez le lien «déconnexion» en haut à droite.</p>";
$ret .= "<p><a href=\"" . Config::get("url_base") . "\">Retour à la page d'accueil</a>.</p>"; $ret .= "<p><a href=\"" . Config::get("url_base") . "\">Retour à la page d'accueil</a>.</p>";
return new Page($ret, "Connexion réussie"); return new Page($chemin, $ret, "Connexion réussie");
}else if ($vue == "connexion échouée") { }else if ($vue == "connexion échouée") {
$msg = "<p><strong>Mauvais mot de passe et/ou nom d'utilisateur. Ré-essayez ou retournez à la "; $msg = "<p><strong>Mauvais mot de passe et/ou nom d'utilisateur. Ré-essayez ou retournez à la ";
$msg .= "<a href=\"" . Config::get("url_base") . "\">page d'accueil</a>"; $msg .= "<a href=\"" . Config::get("url_base") . "\">page d'accueil</a>";
$msg .= ".</strong></p>"; $msg .= ".</strong></p>";
$ret = self::formulaire_connexion($chemin, "Connexion échouée", $msg); $ret = self::formulaire_connexion($chemin, "Connexion échouée", $msg);
return new Page($ret, "Connexion échouée"); return new Page($chemin, $ret, "Connexion échouée");
}else if ($vue == "déconnexion") { }else if ($vue == "déconnexion") {
$ret = "<h2>Déconnexion réussie</h2>"; $ret = "<h2>Déconnexion réussie</h2>";
$ret .= "<p>Vous êtes déconnecté. Vous pouvez à présent retourner à la "; $ret .= "<p>Vous êtes déconnecté. Vous pouvez à présent retourner à la ";
$ret .= "<a href=\"" . Config::get("url_base") . "\">page d'accueil</a>"; $ret .= "<a href=\"" . Config::get("url_base") . "\">page d'accueil</a>";
$ret .= ".</p>"; $ret .= ".</p>";
return new Page($ret, "Déconnexion réussie"); return new Page($chemin, $ret, "Déconnexion réussie");
} }
} }

View File

@ -24,9 +24,9 @@ class AdminIndex {
} }
} }
$ret .= '</ul>'; $ret .= '</ul>';
return new Page($ret, Stockage::get_prop($chemin, "nom_site")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "nom_site"));
} }
return new Page('',''); // TODO : devrait renvoyer une page d'erreur ! return new Page($chemin, '',''); // TODO : devrait renvoyer une page d'erreur !
} }
} }

View File

@ -4,7 +4,7 @@ class AdminPermissions {
public static function action($chemin, $action, $paramètres) { public static function action($chemin, $action, $paramètres) {
$singleton = new Chemin("/admin/permissions/"); $singleton = new Chemin("/admin/permissions/");
if ($action == "anuler") { if ($action == "anuler") {
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} else { } else {
if (isset($paramètres["regles"])) { if (isset($paramètres["regles"])) {
Stockage::set_prop($singleton, "regles", $paramètres["regles"]); Stockage::set_prop($singleton, "regles", $paramètres["regles"]);
@ -30,7 +30,7 @@ class AdminPermissions {
} else { } else {
$ret .= "<pre><code>" . Stockage::get_prop($singleton, "regles") . "</code></pre>"; // TODO : html escape chars etc. $ret .= "<pre><code>" . Stockage::get_prop($singleton, "regles") . "</code></pre>"; // TODO : html escape chars etc.
} }
return new Page($ret, "Permissions"); return new Page($chemin, $ret, "Permissions");
} }
} }
} }

View File

@ -4,7 +4,7 @@ class AdminUtilisateurs {
public static function action($chemin, $action, $paramètres) { public static function action($chemin, $action, $paramètres) {
$singleton = new Chemin("/admin/utilisateurs/"); $singleton = new Chemin("/admin/utilisateurs/");
if ($action == "anuler") { if ($action == "anuler") {
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
// TODO ... // TODO ...
// Solution A (propre) : // Solution A (propre) :
@ -84,7 +84,7 @@ class AdminUtilisateurs {
// $chemin->enfant("$utilisateur") ?action=gen_mdp . // $chemin->enfant("$utilisateur") ?action=gen_mdp .
} }
$ret .= '</tbody></table>'; $ret .= '</tbody></table>';
return new Page($ret, "Utilisateurs"); return new Page($chemin, $ret, "Utilisateurs");
} }
} }
} }

View File

@ -3,10 +3,10 @@
class ArticlesArticle { class ArticlesArticle {
public static function action($chemin, $action, $paramètres) { public static function action($chemin, $action, $paramètres) {
if ($action == "anuler") { if ($action == "anuler") {
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} else if ($action == "supprimer") { } else if ($action == "supprimer") {
Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif
return new Page($chemin->parent(), '', "redirect"); return new Page($chemin, $chemin->parent(), '', "redirect");
} else { } else {
if (isset($paramètres["contenu"])) { if (isset($paramètres["contenu"])) {
Stockage::set_prop($chemin, "contenu", $paramètres["contenu"]); Stockage::set_prop($chemin, "contenu", $paramètres["contenu"]);
@ -18,7 +18,7 @@ class ArticlesArticle {
Stockage::renomer($chemin, $paramètres["titre"]); Stockage::renomer($chemin, $paramètres["titre"]);
$chemin = $chemin->renomer($paramètres["titre"]); $chemin = $chemin->renomer($paramètres["titre"]);
// TODO : transmettre le paramètre "vue" // TODO : transmettre le paramètre "vue"
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} }
if (isset($paramètres["vue"])) { if (isset($paramètres["vue"])) {
@ -47,10 +47,10 @@ class ArticlesArticle {
// TODO : afficher le bouton "Supprimer". // TODO : afficher le bouton "Supprimer".
} }
return new Page($ret, Stockage::get_prop($chemin, "titre")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre"));
} elseif ($vue == "miniature") { } elseif ($vue == "miniature") {
$ret = miniature_texte_enrichi(Stockage::get_prop($chemin, "contenu")); $ret = miniature_texte_enrichi(Stockage::get_prop($chemin, "contenu"));
return new Page($ret, Stockage::get_prop($chemin, "titre")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre"));
} }
} }
} }

View File

@ -3,13 +3,13 @@
class ArticlesIndex { class ArticlesIndex {
public static function action($chemin, $action, $paramètres) { public static function action($chemin, $action, $paramètres) {
if ($action == "anuler") { if ($action == "anuler") {
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} else if ($action == "nouvelle_page") { } else if ($action == "nouvelle_page") {
$np = Stockage::nouvelle_page($chemin, "Nouvel article", "articles-article"); $np = Stockage::nouvelle_page($chemin, "Nouvel article", "articles-article");
Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur());
Stockage::set_prop($np, "titre", "Nouvel article"); Stockage::set_prop($np, "titre", "Nouvel article");
Stockage::set_prop($np, "contenu", "Bla bla bla."); Stockage::set_prop($np, "contenu", "Bla bla bla.");
return new Page($np, '', "redirect"); return new Page($chemin, $np, '', "redirect");
} else { } else {
if (isset($paramètres["description"])) { if (isset($paramètres["description"])) {
Stockage::set_prop($chemin, "description", $paramètres["description"]); Stockage::set_prop($chemin, "description", $paramètres["description"]);
@ -77,7 +77,7 @@ class ArticlesIndex {
$ret .= '</ul>'; $ret .= '</ul>';
return new Page($ret, Stockage::get_prop($chemin, "titre")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre"));
} }
} }
} }

View File

@ -3,10 +3,10 @@
class ContactContact { class ContactContact {
public static function action($chemin, $action, $paramètres) { public static function action($chemin, $action, $paramètres) {
if ($action == "anuler") { if ($action == "anuler") {
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} else if ($action == "supprimer") { } else if ($action == "supprimer") {
Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif
return new Page($chemin->parent(), '', "redirect"); return new Page($chemin, $chemin->parent(), '', "redirect");
} else { } else {
if (isset($paramètres["nom"])) { if (isset($paramètres["nom"])) {
Stockage::set_prop($chemin, "nom", $paramètres["nom"]); Stockage::set_prop($chemin, "nom", $paramètres["nom"]);
@ -18,7 +18,7 @@ class ContactContact {
Stockage::set_prop($chemin, "description", $paramètres["description"]); Stockage::set_prop($chemin, "description", $paramètres["description"]);
} }
return new Page($chemin->parent(), '', "redirect"); return new Page($chemin, $chemin->parent(), '', "redirect");
} }
} }
@ -46,7 +46,7 @@ class ContactContact {
$ret .= '</form>'; $ret .= '</form>';
} }
return new Page($ret, Stockage::get_prop($chemin, "titre")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre"));
} }
} }
} }

View File

@ -3,7 +3,7 @@
class ContactIndex { class ContactIndex {
public static function action($chemin, $action, $paramètres) { public static function action($chemin, $action, $paramètres) {
if ($action == "anuler") { if ($action == "anuler") {
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} else if ($action == "nouvelle_page") { } else if ($action == "nouvelle_page") {
// SECURITE : On ne doit PAS pouvoir modifier dernier_numero arbitrairement // SECURITE : On ne doit PAS pouvoir modifier dernier_numero arbitrairement
// CONCURENCE : Faire un lock quelque part... // CONCURENCE : Faire un lock quelque part...
@ -14,7 +14,7 @@ class ContactIndex {
Stockage::set_prop($np, "nom", "Dupondt"); Stockage::set_prop($np, "nom", "Dupondt");
Stockage::set_prop($np, "prenom", "Jean"); Stockage::set_prop($np, "prenom", "Jean");
Stockage::set_prop($np, "description", ""); Stockage::set_prop($np, "description", "");
return new Page($np, '', "redirect"); return new Page($chemin, $np, '', "redirect");
} else { } else {
if (isset($paramètres["description"])) { if (isset($paramètres["description"])) {
Stockage::set_prop($chemin, "description", $paramètres["description"]); Stockage::set_prop($chemin, "description", $paramètres["description"]);
@ -71,7 +71,7 @@ class ContactIndex {
$ret .= '</ul>'; $ret .= '</ul>';
return new Page($ret, Stockage::get_prop($chemin, "titre")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre"));
} }
} }
} }

View File

@ -3,7 +3,7 @@
class ÉquipesÉquipe { class ÉquipesÉquipe {
public static function action($chemin, $action, $paramètres) { public static function action($chemin, $action, $paramètres) {
if ($action == "anuler") { if ($action == "anuler") {
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} else if ($action == "nouvelle_page") { } else if ($action == "nouvelle_page") {
// SECURITE : On ne doit PAS pouvoir modifier dernier_numero arbitrairement // SECURITE : On ne doit PAS pouvoir modifier dernier_numero arbitrairement
// CONCURENCE : Faire un lock quelque part... // CONCURENCE : Faire un lock quelque part...
@ -15,17 +15,17 @@ class ÉquipesÉquipe {
Stockage::set_prop($np, "prenom", "Jean"); Stockage::set_prop($np, "prenom", "Jean");
Stockage::set_prop($np, "description", ""); Stockage::set_prop($np, "description", "");
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} else if ($action == "supprimer") { } else if ($action == "supprimer") {
Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif
return new Page($chemin->parent(), '', "redirect"); return new Page($chemin, $chemin->parent(), '', "redirect");
} else { } else {
if (isset($paramètres["titre"]) && Stockage::prop_diff($chemin, "titre", $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::set_prop($chemin, "titre", $paramètres["titre"]);
Stockage::renomer($chemin, $paramètres["titre"]); Stockage::renomer($chemin, $paramètres["titre"]);
$chemin = $chemin->renomer($paramètres["titre"]); $chemin = $chemin->renomer($paramètres["titre"]);
// TODO : transmettre le paramètre "vue" // TODO : transmettre le paramètre "vue"
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} }
if (isset($paramètres["vue"])) { if (isset($paramètres["vue"])) {
@ -73,9 +73,9 @@ class ÉquipesÉquipe {
$ret .= '</ul>'; $ret .= '</ul>';
return new Page($ret, Stockage::get_prop($chemin, "titre")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre"));
} else if ($vue == "miniature") { } else if ($vue == "miniature") {
return new Page("Équipe.", Stockage::get_prop($chemin, "titre")); return new Page($chemin, "Équipe.", Stockage::get_prop($chemin, "titre"));
} }
} }
} }

View File

@ -3,13 +3,13 @@
class ÉquipesIndex { class ÉquipesIndex {
public static function action($chemin, $action, $paramètres) { public static function action($chemin, $action, $paramètres) {
if ($action == "anuler") { if ($action == "anuler") {
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} else if ($action == "nouvelle_page") { } else if ($action == "nouvelle_page") {
$np = Stockage::nouvelle_page($chemin, "Nouvelle équipe", "equipes-equipe"); $np = Stockage::nouvelle_page($chemin, "Nouvelle équipe", "equipes-equipe");
Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur());
Stockage::set_prop($np, "titre", "Nouvelle équipe"); Stockage::set_prop($np, "titre", "Nouvelle équipe");
Stockage::set_prop($np, "dernier_numero", 0); Stockage::set_prop($np, "dernier_numero", 0);
return new Page($np, '', "redirect"); return new Page($chemin, $np, '', "redirect");
} else { } else {
if (isset($paramètres["description"])) { if (isset($paramètres["description"])) {
Stockage::set_prop($chemin, "description", $paramètres["description"]); Stockage::set_prop($chemin, "description", $paramètres["description"]);
@ -73,7 +73,7 @@ class ÉquipesIndex {
$ret .= '</ul>'; $ret .= '</ul>';
return new Page($ret, Stockage::get_prop($chemin, "titre")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre"));
} }
} }
} }

View File

@ -3,10 +3,10 @@
class ÉquipesJoueur { class ÉquipesJoueur {
public static function action($chemin, $action, $paramètres) { public static function action($chemin, $action, $paramètres) {
if ($action == "anuler") { if ($action == "anuler") {
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} else if ($action == "supprimer") { } else if ($action == "supprimer") {
Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif
return new Page($chemin->parent(), '', "redirect"); return new Page($chemin, $chemin->parent(), '', "redirect");
} else { } else {
if (isset($paramètres["nom"])) { if (isset($paramètres["nom"])) {
Stockage::set_prop($chemin, "nom", $paramètres["nom"]); Stockage::set_prop($chemin, "nom", $paramètres["nom"]);
@ -18,7 +18,7 @@ class ÉquipesJoueur {
Stockage::set_prop($chemin, "description", $paramètres["description"]); Stockage::set_prop($chemin, "description", $paramètres["description"]);
} }
return new Page($chemin->parent(), '', "redirect"); return new Page($chemin, $chemin->parent(), '', "redirect");
} }
} }
@ -48,7 +48,7 @@ class ÉquipesJoueur {
// Peut-être afficher le bouton "citer" ? 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, "prenom") . " " . Stockage::get_prop($chemin, "nom")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "prenom") . " " . Stockage::get_prop($chemin, "nom"));
} }
} }
} }

View File

@ -3,13 +3,13 @@
class ForumIndex { class ForumIndex {
public static function action($chemin, $action, $paramètres) { public static function action($chemin, $action, $paramètres) {
if ($action == "anuler") { if ($action == "anuler") {
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} else if ($action == "nouvelle_page") { } else if ($action == "nouvelle_page") {
$np = Stockage::nouvelle_page($chemin, "Nouveau sujet", "forum-sujet"); $np = Stockage::nouvelle_page($chemin, "Nouveau sujet", "forum-sujet");
Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur());
Stockage::set_prop($np, "titre", "Nouveau sujet"); Stockage::set_prop($np, "titre", "Nouveau sujet");
Stockage::set_prop($np, "dernier_numero", 0); Stockage::set_prop($np, "dernier_numero", 0);
return new Page($np, '', "redirect"); return new Page($chemin, $np, '', "redirect");
} else { } else {
if (isset($paramètres["description"])) { if (isset($paramètres["description"])) {
Stockage::set_prop($chemin, "description", $paramètres["description"]); Stockage::set_prop($chemin, "description", $paramètres["description"]);
@ -74,7 +74,7 @@ class ForumIndex {
$ret .= '</ul>'; $ret .= '</ul>';
return new Page($ret, Stockage::get_prop($chemin, "titre")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre"));
} }
} }
} }

View File

@ -3,16 +3,16 @@
class ForumMessage { class ForumMessage {
public static function action($chemin, $action, $paramètres) { public static function action($chemin, $action, $paramètres) {
if ($action == "anuler") { if ($action == "anuler") {
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} else if ($action == "supprimer") { } else if ($action == "supprimer") {
Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif
return new Page($chemin->parent(), '', "redirect"); return new Page($chemin, $chemin->parent(), '', "redirect");
} else { } else {
if (isset($paramètres["message"])) { if (isset($paramètres["message"])) {
Stockage::set_prop($chemin, "message", $paramètres["message"]); Stockage::set_prop($chemin, "message", $paramètres["message"]);
} }
return new Page($chemin->parent(), '', "redirect"); return new Page($chemin, $chemin->parent(), '', "redirect");
} }
} }
@ -34,7 +34,7 @@ class ForumMessage {
// Peut-être afficher le bouton "citer" ? 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")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre"));
} }
} }
} }

View File

@ -3,7 +3,7 @@
class ForumSujet { class ForumSujet {
public static function action($chemin, $action, $paramètres) { public static function action($chemin, $action, $paramètres) {
if ($action == "anuler") { if ($action == "anuler") {
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} else if ($action == "nouvelle_page") { } else if ($action == "nouvelle_page") {
// SECURITE : On ne doit PAS pouvoir modifier dernier_numero arbitrairement // SECURITE : On ne doit PAS pouvoir modifier dernier_numero arbitrairement
// CONCURENCE : Faire un lock quelque part... // CONCURENCE : Faire un lock quelque part...
@ -13,17 +13,17 @@ class ForumSujet {
Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur());
Stockage::set_prop($np, "message", ""); Stockage::set_prop($np, "message", "");
return new Page($chemin, "#message" . $numéro_message, "redirect"); return new Page($chemin, $chemin, "#message" . $numéro_message, "redirect");
} else if ($action == "supprimer") { } else if ($action == "supprimer") {
Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif
return new Page($chemin->parent(), '', "redirect"); return new Page($chemin, $chemin->parent(), '', "redirect");
} else { } else {
if (isset($paramètres["titre"]) && Stockage::prop_diff($chemin, "titre", $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::set_prop($chemin, "titre", $paramètres["titre"]);
Stockage::renomer($chemin, $paramètres["titre"]); Stockage::renomer($chemin, $paramètres["titre"]);
$chemin = $chemin->renomer($paramètres["titre"]); $chemin = $chemin->renomer($paramètres["titre"]);
// TODO : transmettre le paramètre "vue" // TODO : transmettre le paramètre "vue"
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} }
if (isset($paramètres["vue"])) { if (isset($paramètres["vue"])) {
@ -71,9 +71,9 @@ class ForumSujet {
$ret .= '</ul>'; $ret .= '</ul>';
return new Page($ret, Stockage::get_prop($chemin, "titre")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre"));
} else if ($vue == "miniature") { } else if ($vue == "miniature") {
return new Page("Sujet.", Stockage::get_prop($chemin, "titre")); return new Page($chemin, "Sujet.", Stockage::get_prop($chemin, "titre"));
} }
} }
} }

View File

@ -3,16 +3,16 @@
class GalerieÉvènement { class GalerieÉvènement {
public static function action($chemin, $action, $paramètres) { public static function action($chemin, $action, $paramètres) {
if ($action == "anuler") { if ($action == "anuler") {
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} else if ($action == "nouvelle_page") { } else if ($action == "nouvelle_page") {
$np = Stockage::nouvelle_page($chemin, "Nouvelle photo", "galerie-photo"); $np = Stockage::nouvelle_page($chemin, "Nouvelle photo", "galerie-photo");
Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur());
Stockage::set_prop($np, "titre", "Nouvelle photo"); Stockage::set_prop($np, "titre", "Nouvelle photo");
Stockage::set_prop($np, "description", ""); Stockage::set_prop($np, "description", "");
return new Page($np, '', "redirect"); return new Page($chemin, $np, '', "redirect");
} else if ($action == "supprimer") { } else if ($action == "supprimer") {
Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif
return new Page($chemin->parent(), '', "redirect"); return new Page($chemin, $chemin->parent(), '', "redirect");
} else { } else {
if (isset($paramètres["description"])) { if (isset($paramètres["description"])) {
Stockage::set_prop($chemin, "description", $paramètres["description"]); Stockage::set_prop($chemin, "description", $paramètres["description"]);
@ -24,7 +24,7 @@ class GalerieÉvènement {
Stockage::renomer($chemin, $paramètres["titre"]); Stockage::renomer($chemin, $paramètres["titre"]);
$chemin = $chemin->renomer($paramètres["titre"]); $chemin = $chemin->renomer($paramètres["titre"]);
// TODO : transmettre le paramètre "vue" // TODO : transmettre le paramètre "vue"
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} }
if (isset($paramètres["vue"])) { if (isset($paramètres["vue"])) {
@ -94,17 +94,17 @@ class GalerieÉvènement {
$ret .= '<input type="submit" value="Supprimer l\'évènement"/>'; $ret .= '<input type="submit" value="Supprimer l\'évènement"/>';
$ret .= '</form>'; $ret .= '</form>';
} }
return new Page($ret, Stockage::get_prop($chemin, "titre")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre"));
} else if ($vue == "miniature") { } else if ($vue == "miniature") {
$ret = "Aucune<br/>photo"; $ret = "Aucune<br/>photo";
$enfants = Stockage::liste_enfants($chemin); $enfants = Stockage::liste_enfants($chemin);
if (isset($enfants[0])) $ret = Modules::vue($enfants[0], 'miniature')->contenu; if (isset($enfants[0])) $ret = Modules::vue($enfants[0], 'miniature')->contenu;
return new Page($ret, Stockage::get_prop($chemin, "titre")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre"));
} else if ($vue == "image_nouvelle_photo") { } else if ($vue == "image_nouvelle_photo") {
// Houlàlà ça sent le hack pas beau ! // Houlàlà ça sent le hack pas beau !
return new Page(Path::combine(Config::get("chemin_base"), "/code/site/nouvelle_photo.jpg"), null, "sendfile"); return new Page($chemin, Path::combine(Config::get("chemin_base"), "/code/site/nouvelle_photo.jpg"), null, "sendfile");
} }
} }
} }

View File

@ -3,13 +3,13 @@
class GalerieIndex { class GalerieIndex {
public static function action($chemin, $action, $paramètres) { public static function action($chemin, $action, $paramètres) {
if ($action == "anuler") { if ($action == "anuler") {
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} else if ($action == "nouvelle_page") { } else if ($action == "nouvelle_page") {
$np = Stockage::nouvelle_page($chemin, "Nouvelle période", "galerie-periode"); $np = Stockage::nouvelle_page($chemin, "Nouvelle période", "galerie-periode");
Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur());
Stockage::set_prop($np, "titre", "Nouvelle période"); Stockage::set_prop($np, "titre", "Nouvelle période");
Stockage::set_prop($np, "description", ""); Stockage::set_prop($np, "description", "");
return new Page($np, '', "redirect"); return new Page($chemin, $np, '', "redirect");
} else { } else {
if (isset($paramètres["description"])) { if (isset($paramètres["description"])) {
Stockage::set_prop($chemin, "description", $paramètres["description"]); Stockage::set_prop($chemin, "description", $paramètres["description"]);
@ -80,10 +80,10 @@ class GalerieIndex {
$ret .= '<div class="clearboth"></div>'; $ret .= '<div class="clearboth"></div>';
$ret .= '</div>'; $ret .= '</div>';
return new Page($ret, Stockage::get_prop($chemin, "titre")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre"));
} else if ($vue == "image_nouvelle_periode") { } else if ($vue == "image_nouvelle_periode") {
// Houlàlà ça sent le hack pas beau ! // Houlàlà ça sent le hack pas beau !
return new Page(Path::combine(Config::get("chemin_base"), "/code/site/nouvelle_image.jpg"), null, "sendfile"); return new Page($chemin, Path::combine(Config::get("chemin_base"), "/code/site/nouvelle_image.jpg"), null, "sendfile");
} }
} }
} }

View File

@ -3,16 +3,16 @@
class GaleriePériode { class GaleriePériode {
public static function action($chemin, $action, $paramètres) { public static function action($chemin, $action, $paramètres) {
if ($action == "anuler") { if ($action == "anuler") {
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} else if ($action == "nouvelle_page") { } else if ($action == "nouvelle_page") {
$np = Stockage::nouvelle_page($chemin, "Nouvel évènement", "galerie-evenement"); $np = Stockage::nouvelle_page($chemin, "Nouvel évènement", "galerie-evenement");
Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur());
Stockage::set_prop($np, "titre", "Nouvel évènement"); Stockage::set_prop($np, "titre", "Nouvel évènement");
Stockage::set_prop($np, "description", ""); Stockage::set_prop($np, "description", "");
return new Page($np, '', "redirect"); return new Page($chemin, $np, '', "redirect");
} else if ($action == "supprimer") { } else if ($action == "supprimer") {
Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif
return new Page($chemin->parent(), '', "redirect"); return new Page($chemin, $chemin->parent(), '', "redirect");
} else { } else {
if (isset($paramètres["description"])) { if (isset($paramètres["description"])) {
Stockage::set_prop($chemin, "description", $paramètres["description"]); Stockage::set_prop($chemin, "description", $paramètres["description"]);
@ -25,7 +25,7 @@ class GaleriePériode {
$chemin = $chemin->renomer($paramètres["titre"]); $chemin = $chemin->renomer($paramètres["titre"]);
// TODO : transmettre le paramètre "vue" // TODO : transmettre le paramètre "vue"
// TODO : ne marche pas. // TODO : ne marche pas.
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} }
if (isset($paramètres["vue"])) { if (isset($paramètres["vue"])) {
@ -95,17 +95,17 @@ class GaleriePériode {
$ret .= '<input type="submit" value="Supprimer la période"/>'; $ret .= '<input type="submit" value="Supprimer la période"/>';
$ret .= '</form>'; $ret .= '</form>';
} }
return new Page($ret, Stockage::get_prop($chemin, "titre")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre"));
} else if ($vue == "miniature") { } else if ($vue == "miniature") {
$ret = "Aucune<br/>photo"; $ret = "Aucune<br/>photo";
$enfants = Stockage::liste_enfants($chemin); $enfants = Stockage::liste_enfants($chemin);
if (isset($enfants[0])) $ret = Modules::vue($enfants[0], 'miniature')->contenu; if (isset($enfants[0])) $ret = Modules::vue($enfants[0], 'miniature')->contenu;
return new Page($ret, Stockage::get_prop($chemin, "titre")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre"));
} else if ($vue == "image_nouvel_evenement") { } else if ($vue == "image_nouvel_evenement") {
// Houlàlà ça sent le hack pas beau ! // Houlàlà ça sent le hack pas beau !
return new Page(Path::combine(Config::get("chemin_base"), "/code/site/nouvel_evenement.jpg"), null, "sendfile"); return new Page($chemin, Path::combine(Config::get("chemin_base"), "/code/site/nouvel_evenement.jpg"), null, "sendfile");
} }
} }
} }

View File

@ -3,10 +3,10 @@
class GaleriePhoto { class GaleriePhoto {
public static function action($chemin, $action, $paramètres) { public static function action($chemin, $action, $paramètres) {
if ($action == "anuler") { if ($action == "anuler") {
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} else if ($action == "supprimer") { } else if ($action == "supprimer") {
Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif
return new Page($chemin->parent(), '', "redirect"); return new Page($chemin, $chemin->parent(), '', "redirect");
} else { } else {
if (isset($paramètres["fichier_image"]) && ($paramètres["fichier_image"]["tmp_name"] != "")) { if (isset($paramètres["fichier_image"]) && ($paramètres["fichier_image"]["tmp_name"] != "")) {
$fichier_image = $paramètres["fichier_image"]["tmp_name"]; $fichier_image = $paramètres["fichier_image"]["tmp_name"];
@ -25,7 +25,7 @@ class GaleriePhoto {
Stockage::renomer($chemin, $paramètres["titre"]); Stockage::renomer($chemin, $paramètres["titre"]);
$chemin = $chemin->renomer($paramètres["titre"]); $chemin = $chemin->renomer($paramètres["titre"]);
// TODO : transmettre le paramètre "vue" // TODO : transmettre le paramètre "vue"
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} }
if (isset($paramètres["vue"])) { if (isset($paramètres["vue"])) {
@ -55,17 +55,17 @@ class GaleriePhoto {
$ret .= '<img alt="' . Stockage::get_prop($chemin, "titre") . '" src="' . $chemin->get_url("?vue=image") . '"/>'; $ret .= '<img alt="' . Stockage::get_prop($chemin, "titre") . '" src="' . $chemin->get_url("?vue=image") . '"/>';
$ret .= affichage_texte_enrichi(Stockage::get_prop($chemin, "description")); $ret .= affichage_texte_enrichi(Stockage::get_prop($chemin, "description"));
} }
return new Page($ret, Stockage::get_prop($chemin, "titre")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre"));
} else if ($vue == "miniature" || $vue == "mini") { } else if ($vue == "miniature" || $vue == "mini") {
$ret = '<img alt="' . Stockage::get_prop($chemin, "titre") . '" src="' . $chemin->get_url("?vue=image_mini") . '"/>'; $ret = '<img alt="' . Stockage::get_prop($chemin, "titre") . '" src="' . $chemin->get_url("?vue=image_mini") . '"/>';
return new Page($ret, Stockage::get_prop($chemin, "titre")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre"));
} else if ($vue == "image") { } else if ($vue == "image") {
return new Page($chemin, "image", "sendprop"); return new Page($chemin, $chemin, "image", "sendprop");
} else if ($vue == "image_mini") { } else if ($vue == "image_mini") {
return new Page($chemin, "image_mini", "sendprop"); return new Page($chemin, $chemin, "image_mini", "sendprop");
} }
return new Page('',''); // TODO : devrait renvoyer une page d'erreur ! return new Page($chemin, '',''); // TODO : devrait renvoyer une page d'erreur !
} }
public static function creer_miniature($chemin_fs, $largeur_max, $hauteur_max) { public static function creer_miniature($chemin_fs, $largeur_max, $hauteur_max) {

View File

@ -3,7 +3,7 @@
class LiensIndex { class LiensIndex {
public static function action($chemin, $action, $paramètres) { public static function action($chemin, $action, $paramètres) {
if ($action == "anuler") { if ($action == "anuler") {
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} else if ($action == "nouvelle_page") { } else if ($action == "nouvelle_page") {
// SECURITE : On ne doit PAS pouvoir modifier dernier_numero arbitrairement // SECURITE : On ne doit PAS pouvoir modifier dernier_numero arbitrairement
// CONCURENCE : Faire un lock quelque part... // CONCURENCE : Faire un lock quelque part...
@ -14,7 +14,7 @@ class LiensIndex {
Stockage::set_prop($np, "texte", "Un lien"); Stockage::set_prop($np, "texte", "Un lien");
Stockage::set_prop($np, "cible", "http://www.example.com/page/"); Stockage::set_prop($np, "cible", "http://www.example.com/page/");
Stockage::set_prop($np, "description", "Un lien d'exemple très utile."); Stockage::set_prop($np, "description", "Un lien d'exemple très utile.");
return new Page($np, '', "redirect"); return new Page($chemin, $np, '', "redirect");
} else { } else {
if (isset($paramètres["description"])) { if (isset($paramètres["description"])) {
Stockage::set_prop($chemin, "description", $paramètres["description"]); Stockage::set_prop($chemin, "description", $paramètres["description"]);
@ -72,7 +72,7 @@ class LiensIndex {
$ret .= '</ul>'; $ret .= '</ul>';
return new Page($ret, Stockage::get_prop($chemin, "titre")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre"));
} }
} }
} }

View File

@ -3,10 +3,10 @@
class LiensLien { class LiensLien {
public static function action($chemin, $action, $paramètres) { public static function action($chemin, $action, $paramètres) {
if ($action == "anuler") { if ($action == "anuler") {
return new Page($chemin, '', "redirect"); return new Page($chemin, $chemin, '', "redirect");
} else if ($action == "supprimer") { } else if ($action == "supprimer") {
Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif
return new Page($chemin->parent(), '', "redirect"); return new Page($chemin, $chemin->parent(), '', "redirect");
} else { } else {
if (isset($paramètres["texte"])) { if (isset($paramètres["texte"])) {
Stockage::set_prop($chemin, "texte", $paramètres["texte"]); Stockage::set_prop($chemin, "texte", $paramètres["texte"]);
@ -18,7 +18,7 @@ class LiensLien {
Stockage::set_prop($chemin, "cible", $paramètres["cible"]); Stockage::set_prop($chemin, "cible", $paramètres["cible"]);
} }
return new Page($chemin->parent(), '', "redirect"); return new Page($chemin, $chemin->parent(), '', "redirect");
} }
} }
@ -44,7 +44,7 @@ class LiensLien {
$ret .= '</form>'; $ret .= '</form>';
} }
return new Page($ret, Stockage::get_prop($chemin, "titre")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "titre"));
} }
} }
} }

View File

@ -55,11 +55,11 @@ class SiteIndex {
$ret .= Stockage::get_prop($chemin, "description"); $ret .= Stockage::get_prop($chemin, "description");
} }
$ret .= '</div>'; $ret .= '</div>';
return new Page($ret, Stockage::get_prop($chemin, "nom_site")); return new Page($chemin, $ret, Stockage::get_prop($chemin, "nom_site"));
} else if ($vue == "css") { } else if ($vue == "css") {
return new Page(get_css(), "text/css", "raw"); return new Page($chemin, get_css(), "text/css", "raw");
} }
return new Page('',''); // TODO : devrait renvoyer une page d'erreur ! return new Page($chemin, '',''); // TODO : devrait renvoyer une page d'erreur !
} }
} }

View File

@ -52,6 +52,20 @@ class Squelette {
$ret .= ' </ul>' . $nl; $ret .= ' </ul>' . $nl;
$ret .= ' </div>' . $nl; $ret .= ' </div>' . $nl;
$ret .= ' <div class="site contenu">' . $nl; $ret .= ' <div class="site contenu">' . $nl;
if (! $page->chemin->est_racine() && ! $page->chemin->parent()->est_racine()) {
$ret .= ' <p class="">' . $nl;
$premier = true;
foreach ($page->chemin->hiérarchie() as $i) {
if (!$i->est_racine()) {
if (!$premier) {
$ret .= ' &gt; ';
}
$ret .= ' <a href="' . $i->get_url() . '">' . $i->dernier() . '</a>' . $nl;
$premier = false;
}
}
$ret .= ' </p>' . $nl;
}
return $ret; return $ret;
} }

View File

@ -1,13 +1,14 @@
// TODO : dans galerie les images ne sont pas centrées verticalement dans leur boîte. // TODO : dans galerie les images ne sont pas centrées verticalement dans leur boîte.
@largeur-contenu: 63em; @largeur-contenu: 53em;
/* Couleurs principales */ /* Couleurs principales */
@base: #ffff00; @base: #ffff00;
@base2: #ba7500; @base2: #ba7500;
@fg: #000000; @fg: #000000;
@bg: #ffffff; @bg: #ffffff;
@couleur-important: #ff0000; @fg-important: #0000ff;
@bg-important: #ff7f00;
/* Couleurs dérivées */ /* Couleurs dérivées */
@softbase: (2*@base + @bg) / 3; @softbase: (2*@base + @bg) / 3;
@ -64,9 +65,9 @@ h2 {
} }
.prochain-evenement { .prochain-evenement {
color: @couleur-important; color: @fg;
background-color: (6*@bg + @couleur-important) / 7; background-color: (2*@bg + @bg-important) / 3;
border: thick solid @couleur-important; border: thick solid @fg-important;
margin: 0 5em 1em; margin: 0 5em 1em;
padding: 1em; padding: 1em;
text-align: center; text-align: center;