commit 0851e56540d525e70f2b168b6972b1d071e424ae parent 38edbb5851bd2addd36711a6fcea2dea68a170e2 Author: Georges Dupéron <jahvascriptmaniac+github@free.fr> Date: Sat, 28 Aug 2010 00:30:58 +0200 Nouveautés (marche _très_ mal). Diffstat:
27 files changed, 207 insertions(+), 1 deletion(-)
diff --git a/__cms__/code/modules/articles/articles-index.php b/__cms__/code/modules/articles/articles-index.php @@ -9,6 +9,7 @@ class ArticlesIndex { Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); Stockage::set_prop($np, "titre", "Nouvel article"); Stockage::set_prop($np, "contenu", "Bla bla bla."); + enregistrer_nouveaute($np); return new Page($np, '', "redirect"); } else { if (isset($paramètres["description"])) { diff --git a/__cms__/code/modules/forum/forum-index.php b/__cms__/code/modules/forum/forum-index.php @@ -9,6 +9,7 @@ class ForumIndex { Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); Stockage::set_prop($np, "titre", "Nouveau sujet"); Stockage::set_prop($np, "dernier_numero", 0); + enregistrer_nouveaute($np); return new Page($np, '', "redirect"); } else { if (isset($paramètres["description"])) { diff --git a/__cms__/code/modules/forum/forum-sujet.php b/__cms__/code/modules/forum/forum-sujet.php @@ -6,11 +6,13 @@ class ForumSujet { return new Page($chemin, '', "redirect"); } else if ($action == "nouvelle_page") { // SECURITE : On ne doit PAS pouvoir modifier dernier_numero arbitrairement + // CONCURENCE : Faire un lock quelque part... $numéro_message = 1 + Stockage::get_prop($chemin, "dernier_numero"); 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", ""); + enregistrer_nouveaute($np); return new Page($chemin, "#message" . $numéro_message, "redirect"); } else if ($action == "supprimer") { diff --git a/__cms__/code/modules/galerie/galerie-evenement.php b/__cms__/code/modules/galerie/galerie-evenement.php @@ -9,6 +9,7 @@ class GalerieÉvènement { Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); Stockage::set_prop($np, "titre", "Nouvelle photo"); Stockage::set_prop($np, "description", ""); + enregistrer_nouveaute($np); return new Page($np, '', "redirect"); } else if ($action == "supprimer") { Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif diff --git a/__cms__/code/modules/galerie/galerie-index.php b/__cms__/code/modules/galerie/galerie-index.php @@ -9,6 +9,7 @@ class GalerieIndex { Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); Stockage::set_prop($np, "titre", "Nouvelle période"); Stockage::set_prop($np, "description", ""); + enregistrer_nouveaute($np); return new Page($np, '', "redirect"); } else { if (isset($paramètres["description"])) { diff --git a/__cms__/code/modules/galerie/galerie-periode.php b/__cms__/code/modules/galerie/galerie-periode.php @@ -9,6 +9,7 @@ class GaleriePériode { Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); Stockage::set_prop($np, "titre", "Nouvel évènement"); Stockage::set_prop($np, "description", ""); + enregistrer_nouveaute($np); return new Page($np, '', "redirect"); } else if ($action == "supprimer") { Stockage::supprimer($chemin, true); // TODO ! gérer correctement le récursif diff --git a/__cms__/code/modules/include.php b/__cms__/code/modules/include.php @@ -7,5 +7,6 @@ require_once(dirname(__FILE__) . "/admin/include.php"); require_once(dirname(__FILE__) . "/forum/include.php"); require_once(dirname(__FILE__) . "/galerie/include.php"); require_once(dirname(__FILE__) . "/articles/include.php"); +require_once(dirname(__FILE__) . "/nouveautes/include.php"); ?> \ No newline at end of file diff --git a/__cms__/code/modules/nouveautes/include.php b/__cms__/code/modules/nouveautes/include.php @@ -0,0 +1,3 @@ +<?php + require_once(dirname(__FILE__) . "/nouveautes-index.php"); +?> +\ No newline at end of file diff --git a/__cms__/code/modules/nouveautes/nouveautes-index.php b/__cms__/code/modules/nouveautes/nouveautes-index.php @@ -0,0 +1,84 @@ +<?php + +// TODO : accents pour nouveauté. +class NouveautesIndex { + public static function action($chemin, $action, $paramètres) { + if ($action == "anuler") { + return new Page($chemin, '', "redirect"); + } else { + if (isset($paramètres["titre"])) { + Stockage::set_prop($chemin, "titre", $paramètres["titre"]); + } + + 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 = ''; + + if (Permissions::vérifier_permission($chemin, "set_prop", Authentification::get_utilisateur())) { + $ret .= '<form class="articles 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>' . Stockage::get_prop($chemin, "titre") . '</h2>'; + } + + $ret .= '<div class="nouveautes list index">'; + $ret .= '<ul>'; + + /*foreach (Stockage::liste_enfants(new Chemin("/forum")) as $k) { + $date = Stockage::get_prop($k, "date_modif"); + if (Erreur::is_erreur($date)) $date = "0"; + $date = (int)$date; + + var_dump($date); + }*/ + + // TODO : faire dans l'ordre décroissant les 5 dernières nouveautés. + foreach (Stockage::liste_enfants($chemin) as $n) { + $k = new Chemin(Stockage::get_prop($n, "chemin")); + $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 .= '<p class="contenu">'; + $ret .= $mini->contenu; + $ret .= '</p>'; + $ret .= '</li>'; + } + + $ret .= '</ul>'; + + return new Page($ret, Stockage::get_prop($chemin, "titre")); + } + } +} + +// TODO : maintenir la liste à jour lors des renomages, suppressions, ... +function enregistrer_nouveaute($chemin) { + $singleton = new Chemin("/nouveautes"); + Stockage::set_prop($chemin, "date_modif", "".time()); + // SECURITE : On ne doit PAS pouvoir modifier dernier_numero arbitrairement + // CONCURENCE : Faire un lock quelque part... + $numéro_nouveauté = 1 + Stockage::get_prop($singleton, "dernier_numero"); + Stockage::set_prop($singleton, "dernier_numero", $numéro_nouveauté); + + $nouv = Stockage::nouvelle_page($singleton, "" . $numéro_nouveauté, "nouveaute-element-liste"); + Stockage::set_prop($nouv, "chemin", $chemin->get()); +} + +Modules::enregister_module("NouveautesIndex", "nouveautes-index", "vue", "titre"); + +?> diff --git a/__cms__/code/modules/nouveautes/nouveautes-index.php~ b/__cms__/code/modules/nouveautes/nouveautes-index.php~ @@ -0,0 +1,62 @@ +<?php + +class NouveautesIndex { + public static function action($chemin, $action, $paramètres) { + if ($action == "anuler") { + return new Page($chemin, '', "redirect"); + } else { + if (isset($paramètres["titre"])) { + Stockage::set_prop($chemin, "titre", $paramètres["titre"]); + } + + 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 = ''; + + if (Permissions::vérifier_permission($chemin, "set_prop", Authentification::get_utilisateur())) { + $ret .= '<form class="articles 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>' . Stockage::get_prop($chemin, "titre") . '</h2>'; + } + + $ret .= '<div class="nouveautes list index">'; + $ret .= '<ul>'; + + var_dump(Stockage::liste_enfants(new Chemin("/forum"))); + + foreach (Stockage::liste_enfants($chemin) as $k) { + $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 .= '<p class="contenu">'; + $ret .= $mini->contenu; + $ret .= '</p>'; + $ret .= '</li>'; + } + + $ret .= '</ul>'; + + return new Page($ret, Stockage::get_prop($chemin, "titre")); + } + } +} + +Modules::enregister_module("NouveautesIndex", "nouveautes-index", "vue", "titre"); + +?> diff --git a/__cms__/code/site/squelette.php b/__cms__/code/site/squelette.php @@ -41,6 +41,7 @@ class Squelette { $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; $ret .= ' <li><a href="' . $racine->enfant("articles")->get_url() . '">Articles</a></li>' . $nl; + $ret .= ' <li><a href="' . $racine->enfant("nouveautes")->get_url() . '">Nouveautés</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/Nouveau sujet/__prop__date_modif b/__cms__/donnees/forum/Nouveau sujet/__prop__date_modif @@ -0,0 +1 @@ +1282948057 +\ No newline at end of file diff --git a/__cms__/donnees/forum/Nouveau sujet/__prop__dernier_numero b/__cms__/donnees/forum/Nouveau sujet/__prop__dernier_numero @@ -0,0 +1 @@ +0 +\ No newline at end of file diff --git a/__cms__/donnees/forum/Nouveau sujet/__prop__proprietaire b/__cms__/donnees/forum/Nouveau sujet/__prop__proprietaire @@ -0,0 +1 @@ +admin +\ No newline at end of file diff --git a/__cms__/donnees/forum/Nouveau sujet/__prop__titre b/__cms__/donnees/forum/Nouveau sujet/__prop__titre @@ -0,0 +1 @@ +Nouveau sujet +\ No newline at end of file diff --git a/__cms__/donnees/forum/Nouveau sujet/__prop__type b/__cms__/donnees/forum/Nouveau sujet/__prop__type @@ -0,0 +1 @@ +forum-sujet +\ No newline at end of file diff --git a/__cms__/donnees/nouveautes/2/__prop__chemin b/__cms__/donnees/nouveautes/2/__prop__chemin @@ -0,0 +1 @@ +/forum/Nouveau sujet +\ No newline at end of file diff --git a/__cms__/donnees/nouveautes/2/__prop__type b/__cms__/donnees/nouveautes/2/__prop__type @@ -0,0 +1 @@ +nouveaute-element-liste +\ No newline at end of file diff --git a/__cms__/donnees/nouveautes/3/__prop__chemin b/__cms__/donnees/nouveautes/3/__prop__chemin @@ -0,0 +1 @@ +/forum/Nouveau sujet +\ No newline at end of file diff --git a/__cms__/donnees/nouveautes/3/__prop__type b/__cms__/donnees/nouveautes/3/__prop__type @@ -0,0 +1 @@ +nouveaute-element-liste +\ No newline at end of file diff --git a/__cms__/donnees/nouveautes/__prop__dernier_numero b/__cms__/donnees/nouveautes/__prop__dernier_numero @@ -0,0 +1 @@ +3 +\ No newline at end of file diff --git a/__cms__/donnees/nouveautes/__prop__titre b/__cms__/donnees/nouveautes/__prop__titre @@ -0,0 +1 @@ +Nouveautés +\ No newline at end of file diff --git a/__cms__/donnees/nouveautes/__prop__type b/__cms__/donnees/nouveautes/__prop__type @@ -0,0 +1 @@ +nouveautes-index +\ No newline at end of file diff --git a/nouveautes/2/index.php b/nouveautes/2/index.php @@ -0,0 +1,7 @@ +<?php + +require_once(dirname(__FILE__) . "/./../../__cms__/cms.php"); + +CMS::page("/nouveautes/2"); + +?> +\ No newline at end of file diff --git a/nouveautes/3/index.php b/nouveautes/3/index.php @@ -0,0 +1,7 @@ +<?php + +require_once(dirname(__FILE__) . "/./../../__cms__/cms.php"); + +CMS::page("/nouveautes/3"); + +?> +\ No newline at end of file diff --git a/nouveautes/index.php b/nouveautes/index.php @@ -0,0 +1,7 @@ +<?php + +require_once(dirname(__FILE) . "/./../__cms__/cms.php"); + +CMS::page("/nouveautes"); + +?> diff --git a/permissions.sh b/permissions.sh @@ -1,6 +1,6 @@ #!/bin/sh -fichiers="index.php galerie forum articles admin __cms__/donnees" +fichiers="index.php galerie forum articles nouveautes admin __cms__/donnees" chgrp -R www-data $fichiers chmod -R 664 $fichiers