commit 4645b692ccbb73f95e2347631a5ed611db36a9cf
parent 496a41e532988efc6b982df0260046cd5d2316bb
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date: Wed, 23 Jun 2010 14:41:03 +0200
Code d'une partie du contrôleur : liste_enfants et constructeur.
Permet presque d'afficher de manière schématique la page principale de la galerie
Diffstat:
4 files changed, 69 insertions(+), 29 deletions(-)
diff --git a/config.php b/config.php
@@ -0,0 +1,5 @@
+<?php
+
+$config_url_base = "http://127.0.0.1/2010-moteur-site-simple/";
+
+?>
+\ No newline at end of file
diff --git a/controleur/page.php b/controleur/page.php
@@ -1,8 +1,10 @@
<?php
- // Protocole : http://site/actualités/?nouveau=Le%20titre
+require_once("config.php");
- // TODO : Constructeur.
+// Protocole : http://site/actualités/?nouveau=Le%20titre
+
+// TODO : Constructeur.
class Page {
// article/prop_article
@@ -12,15 +14,25 @@ class Page {
// /prop_lieu
// /article_1 // Sous article
// /article_2 // Sous article
-
+
+ public function __construct($chemin) {
+ // SECURITE : chemin doit être un sous-dossier de .../modele/
+ $this->chemin = $chemin;
+ }
+
public function liste_enfants() {
- // Ouvrir le dossier (fopen).
- // Lister les dossiers.
- // Construire un objet Page pour chacun (code commun avec Page::enfant(nom)).
- // renvoyer la liste.
+ $lst = scandir($this->chemin);
+ $lst_enfants = Array();
+ if ($lst !== false) {
+ foreach ($lst as $k => $v) {
+ // Construire un objet Page pour chacun (code commun avec Page::enfant(nom)).
+ $lst_enfants[] = new Page($this->chemin . '/' . $v); // TODO : . '/' . n'est pas portable !
+ }
+ }
+ return $lst_enfants;
}
- public function enfant(nom) {
+ public function enfant($nom) {
// Récupéere le sous-dossier "nom"
// Construire un objet Page (code commun avec Page::liste_enfants()).
}
@@ -30,30 +42,36 @@ class Page {
// Construire un objet Page (code commun avec Page::enfant(nom)).
}
- public function nouveau(nom) {
+ public function nouveau($nom) {
// Si nom est null, utiliser "Article" + numéro
// Créer un sous-dossier "nom"
// L'initialiser avec le modèle donné dans prop_modele_enfants
// Construire un objet Page (code commun avec Page::enfant(nom)).
}
- public function supprimer(récursif) {
+ public function supprimer($récursif) {
// Si récursif || il n'y a pas de sous-dossiers
// alors supprimer récursivement le dossier courant
// sinon renvoyer FAUX
}
- public function get_prop(nom_propriété) {
+ public function get_prop($nom_propriété) {
// lire le contenu du fichier prop_nom_propriété
}
- public function set_prop(nom_propriété, valeur) {
+ public function set_prop($nom_propriété, $valeur) {
// écrire le contenu du fichier prop_nom_propriété
}
public function url() {
// calculer l'url de cette page en fonction de son chemin et de l'url de base
+ global $config_url_base;
+ return $config_url_base . $this->chemin;
+ }
+
+ public function vue() {
+ return "Aucune vue pour «" . $this->chemin . "» .";
}
- }
+}
?>
\ No newline at end of file
diff --git a/index.php b/index.php
@@ -0,0 +1,10 @@
+<h1>Test</h1>
+<?php
+
+require_once("types/galerie.php");
+
+$p = new Galerie(".");
+
+print_r($p->vue());
+
+?>
+\ No newline at end of file
diff --git a/types/galerie.php b/types/galerie.php
@@ -1,24 +1,29 @@
<?php
-class Gallerie extends Page {
- public vue($nom_vue) {
- $ret = '';
+require_once("controleur/page.php");
+
+class Galerie extends Page {
+ public function vue($nom_vue = "normal") {
+ $ret = '';
- $ret += '<ul>';
- foreach ($this->liste_sous_articles() as $k) {
- $ret += '<li><a href="' + url_avec_parametres($k) + '">' + afficher($k, 'miniature') + '</a></li>';
- }
- $ret += '</ul>';
+ $ret .= '<ul>';
+ foreach ($this->liste_enfants() as $k) {
+ $ret .= '<li><a href="' . $k->url() . '">' . $k->vue('miniature') . '</a></li>';
+ }
+ $ret .= '</ul>';
+
+ if ($edition) {
+ $ret .= '<a href="' . $this->url('nouveau') . '">Nouvelle période.</a>';
+ }
- if ($edition) {
- $ret += '<a href="' + $this->url('nouveau') + '">Nouvelle période.</a>';
+ return $ret;
}
- }
-// TODO :
-// Chaque page est un objet PHP, avec les méthodes suivantes :
-// $page->vue(nom_vue, nom_vue_fallback_1, nom_vue_fallback_2, …); // nom_vue = normal, edition, miniature, …
-//
-// + Méthodes définies dans modele/page.php
+ // TODO :
+ // Chaque page est un objet PHP, avec les méthodes suivantes :
+ // $page->vue(nom_vue, nom_vue_fallback_1, nom_vue_fallback_2, …); // nom_vue = normal, edition, miniature, …
+ //
+ // + Méthodes définies dans modele/page.php
+}
?>