www

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

commit 140a44ee91657e9d042b5cf7b2514c03306c7cd8
parent 921beb8e27f25799d321148691a783e80213a57f
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date:   Fri, 27 Aug 2010 05:42:26 +0200

Articles.

Diffstat:
A__cms__/code/modules/articles/articles-article.php | 61+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A__cms__/code/modules/articles/articles-article.php~ | 54++++++++++++++++++++++++++++++++++++++++++++++++++++++
A__cms__/code/modules/articles/articles-index.php | 87+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A__cms__/code/modules/articles/articles-index.php~ | 83+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A__cms__/code/modules/articles/include.php | 5+++++
A__cms__/code/modules/articles/include.php~ | 6++++++
M__cms__/code/modules/forum/forum-index.php | 2+-
M__cms__/code/modules/include.php | 1+
M__cms__/code/site/squelette.php | 1+
M__cms__/code/texte-enrichi/texte-enrichi.php | 4++++
A__cms__/donnees/articles/Nouvel article/__prop__contenu | 2++
A__cms__/donnees/articles/Nouvel article/__prop__proprietaire | 2++
A__cms__/donnees/articles/Nouvel article/__prop__titre | 2++
A__cms__/donnees/articles/Nouvel article/__prop__type | 2++
A__cms__/donnees/articles/__prop__description | 3+++
A__cms__/donnees/articles/__prop__description~ | 1+
A__cms__/donnees/articles/__prop__titre | 2++
A__cms__/donnees/articles/__prop__titre~ | 1+
A__cms__/donnees/articles/__prop__type | 2++
A__cms__/donnees/articles/__prop__type~ | 1+
Aarticles/Nouvel article/index.php | 8++++++++
Aarticles/index.php | 7+++++++
Mpermissions.sh | 2+-
23 files changed, 337 insertions(+), 2 deletions(-)

diff --git a/__cms__/code/modules/articles/articles-article.php b/__cms__/code/modules/articles/articles-article.php @@ -0,0 +1,60 @@ +<?php + +class ArticlesArticle { + 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 { + if (isset($paramètres["contenu"])) { + Stockage::set_prop($chemin, "contenu", $paramètres["contenu"]); + } + + // titre après les autres paramètres car il peut générer un redirect. + 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 : transmettre le paramètre "vue" + return new Page($chemin, '', "redirect"); + } + + 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 article edition" enctype="multipart/form-data" 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, "contenu"), "contenu"); + $ret .= '<p><input type="submit" value="appliquer" /></p>'; + $ret .= '</form>'; + } else { + $ret .= '<h2>' . Stockage::get_prop($chemin, "titre") . '</h2>'; + $ret .= affichage_texte_enrichi(Stockage::get_prop($chemin, "contenu")); + } + if (Permissions::vérifier_permission($chemin, "supprimer", Authentification::get_utilisateur())) { + // TODO : afficher le bouton "Supprimer". + } + + return new Page($ret, Stockage::get_prop($chemin, "titre")); + } elseif ($vue == "miniature") { + $ret = miniature_texte_enrichi(Stockage::get_prop($chemin, "contenu")); + return new Page($ret, Stockage::get_prop($chemin, "titre")); + } + } +} + +Modules::enregister_module("ArticlesArticle", "articles-article", "vue", "titre contenu"); + +?> +\ No newline at end of file diff --git a/__cms__/code/modules/articles/articles-article.php~ b/__cms__/code/modules/articles/articles-article.php~ @@ -0,0 +1,53 @@ +<?php + +class ArticlesArticle { + 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 { + if (isset($paramètres["contenu"])) { + Stockage::set_prop($chemin, "contenu", $paramètres["contenu"]); + } + + // titre après les autres paramètres car il peut générer un redirect. + 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 : transmettre le paramètre "vue" + return new Page($chemin, '', "redirect"); + } + + return new Page($chemin->parent(), '', "redirect"); + } + } + + 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 article edition" enctype="multipart/form-data" 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, "contenu"), "contenu"); + $ret .= '<p><input type="submit" value="appliquer" /></p>'; + $ret .= '</form>'; + } else { + $ret .= '<h2>' . Stockage::get_prop($chemin, "titre") . '</h2>'; + $ret .= affichage_texte_enrichi(Stockage::get_prop($chemin, "contenu")); + } + if (Permissions::vérifier_permission($chemin, "supprimer", Authentification::get_utilisateur())) { + // TODO : afficher le bouton "Supprimer". + } + + return new Page($ret, Stockage::get_prop($chemin, "titre")); + } + } +} + +Modules::enregister_module("ArticlesArticle", "articles-article", "vue", "titre contenu"); + +?> +\ No newline at end of file diff --git a/__cms__/code/modules/articles/articles-index.php b/__cms__/code/modules/articles/articles-index.php @@ -0,0 +1,87 @@ +<?php + +class ArticlesIndex { + public static function action($chemin, $action, $paramètres) { + if ($action == "anuler") { + return new Page($chemin, '', "redirect"); + } else if ($action == "nouvelle_page") { + $np = Stockage::nouvelle_page($chemin, "Nouvel article", "articles-article"); + Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); + Stockage::set_prop($np, "titre", "Nouvel article"); + Stockage::set_prop($np, "contenu", "Bla bla bla."); + 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"])) { + 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 .= 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="articles index description affichage">' . Stockage::get_prop($chemin, "description") . '</p>'; + } + + $ret .= '<div class="articles liste-articles index">'; + $ret .= '<ul>'; + + if (Permissions::vérifier_permission($chemin, "nouvelle_page", Authentification::get_utilisateur())) { + $ret .= '<li>'; + $ret .= '<div class="titre">'; + + $ret .= '<form class="articles nouvelle_page" method="post" action="' . $chemin->get_url() . '">'; + $ret .= '<p>'; + $ret .= '<input type="hidden" name="action" value="nouvelle_page"/>'; + $ret .= '<input type="submit" value="Nouvel article"/>'; + $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 .= '<p class="contenu">'; + $ret .= $mini->contenu; + $ret .= '</p>'; + $ret .= '</a>'; + $ret .= '</li>'; + } + + $ret .= '</ul>'; + + return new Page($ret, Stockage::get_prop($chemin, "titre")); + } + } +} + +Modules::enregister_module("ArticlesIndex", "articles-index", "vue", "titre description"); + +?> diff --git a/__cms__/code/modules/articles/articles-index.php~ b/__cms__/code/modules/articles/articles-index.php~ @@ -0,0 +1,83 @@ +<?php + +class ArticlesIndex { + public static function action($chemin, $action, $paramètres) { + if ($action == "anuler") { + return new Page($chemin, '', "redirect"); + } else if ($action == "nouvelle_page") { + $np = Stockage::nouvelle_page($chemin, "Nouvel article", "articles-article"); + Stockage::set_prop($np, "proprietaire", Authentification::get_utilisateur()); + Stockage::set_prop($np, "titre", "Nouvel article"); + 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"])) { + 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 .= 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="articles index description affichage">' . Stockage::get_prop($chemin, "description") . '</p>'; + } + + $ret .= '<div class="articles liste-articles index">'; + $ret .= '<ul>'; + + if (Permissions::vérifier_permission($chemin, "nouvelle_page", Authentification::get_utilisateur())) { + $ret .= '<li>'; + $ret .= '<div class="titre">'; + + $ret .= '<form class="articles nouvelle_page" method="post" action="' . $chemin->get_url() . '">'; + $ret .= '<p>'; + $ret .= '<input type="hidden" name="action" value="nouvelle_page"/>'; + $ret .= '<input type="submit" value="Nouvel article"/>'; + $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("ArticlesIndex", "articles-index", "vue", "titre description"); + +?> diff --git a/__cms__/code/modules/articles/include.php b/__cms__/code/modules/articles/include.php @@ -0,0 +1,4 @@ +<?php + require_once(dirname(__FILE__) . "/articles-index.php"); + require_once(dirname(__FILE__) . "/articles-article.php"); +?> +\ No newline at end of file diff --git a/__cms__/code/modules/articles/include.php~ b/__cms__/code/modules/articles/include.php~ @@ -0,0 +1,5 @@ +<?php + require_once(dirname(__FILE__) . "/forum-index.php"); + require_once(dirname(__FILE__) . "/forum-sujet.php"); + require_once(dirname(__FILE__) . "/forum-message.php"); +?> +\ No newline at end of file diff --git a/__cms__/code/modules/forum/forum-index.php b/__cms__/code/modules/forum/forum-index.php @@ -49,7 +49,7 @@ class ForumIndex { $ret .= '<li>'; $ret .= '<div class="titre">'; - $ret .= '<form class="galerie nouvelle_page" method="post" action="' . $chemin->get_url() . '">'; + $ret .= '<form class="forum 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"/>'; diff --git a/__cms__/code/modules/include.php b/__cms__/code/modules/include.php @@ -6,5 +6,6 @@ require_once(dirname(__FILE__) . "/site/include.php"); 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"); ?> \ No newline at end of file diff --git a/__cms__/code/site/squelette.php b/__cms__/code/site/squelette.php @@ -40,6 +40,7 @@ class Squelette { $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; + $ret .= ' <li><a href="' . $racine->enfant("articles")->get_url() . '">Articles</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__/code/texte-enrichi/texte-enrichi.php b/__cms__/code/texte-enrichi/texte-enrichi.php @@ -24,4 +24,8 @@ function affichage_texte_enrichi($données) { return "<p>" . $données . "</p>"; // escape html chars & co. } +function miniature_texte_enrichi($données) { + return substr($données, 0, 50) . "..."; // escape html chars & co. +} + ?> \ No newline at end of file diff --git a/__cms__/donnees/articles/Nouvel article/__prop__contenu b/__cms__/donnees/articles/Nouvel article/__prop__contenu @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. +\ No newline at end of file diff --git a/__cms__/donnees/articles/Nouvel article/__prop__proprietaire b/__cms__/donnees/articles/Nouvel article/__prop__proprietaire @@ -0,0 +1 @@ +admin +\ No newline at end of file diff --git a/__cms__/donnees/articles/Nouvel article/__prop__titre b/__cms__/donnees/articles/Nouvel article/__prop__titre @@ -0,0 +1 @@ +Nouvel article +\ No newline at end of file diff --git a/__cms__/donnees/articles/Nouvel article/__prop__type b/__cms__/donnees/articles/Nouvel article/__prop__type @@ -0,0 +1 @@ +articles-article +\ No newline at end of file diff --git a/__cms__/donnees/articles/__prop__description b/__cms__/donnees/articles/__prop__description @@ -0,0 +1,2 @@ +Description des articles. +FooBar +\ No newline at end of file diff --git a/__cms__/donnees/articles/__prop__description~ b/__cms__/donnees/articles/__prop__description~ @@ -0,0 +1 @@ +Description des articles. diff --git a/__cms__/donnees/articles/__prop__titre b/__cms__/donnees/articles/__prop__titre @@ -0,0 +1 @@ +Articles test +\ No newline at end of file diff --git a/__cms__/donnees/articles/__prop__titre~ b/__cms__/donnees/articles/__prop__titre~ @@ -0,0 +1 @@ +Articles diff --git a/__cms__/donnees/articles/__prop__type b/__cms__/donnees/articles/__prop__type @@ -0,0 +1 @@ +articles-index +\ No newline at end of file diff --git a/__cms__/donnees/articles/__prop__type~ b/__cms__/donnees/articles/__prop__type~ @@ -0,0 +1 @@ +articles-index diff --git a/articles/Nouvel article/index.php b/articles/Nouvel article/index.php @@ -0,0 +1,7 @@ +<?php + +require_once(dirname(__FILE__) . "/./../../__cms__/cms.php"); + +CMS::page("/articles/Nouvel article"); + +?> +\ No newline at end of file diff --git a/articles/index.php b/articles/index.php @@ -0,0 +1,7 @@ +<?php + +require_once(dirname(__FILE) . "/./../__cms__/cms.php"); + +CMS::page("/articles"); + +?> diff --git a/permissions.sh b/permissions.sh @@ -1,6 +1,6 @@ #!/bin/sh -fichiers="index.php galerie forum admin __cms__/donnees" +fichiers="index.php galerie forum articles admin __cms__/donnees" chgrp -R www-data $fichiers chmod -R 664 $fichiers