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
This commit is contained in:
Georges Dupéron 2010-06-23 14:41:03 +02:00
parent 496a41e532
commit 4645b692cc
4 changed files with 67 additions and 29 deletions

5
config.php Normal file
View File

@ -0,0 +1,5 @@
<?php
$config_url_base = "http://127.0.0.1/2010-moteur-site-simple/";
?>

View File

@ -1,8 +1,10 @@
<?php <?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 { class Page {
// article/prop_article // article/prop_article
@ -12,15 +14,25 @@ class Page {
// /prop_lieu // /prop_lieu
// /article_1 // Sous article // /article_1 // Sous article
// /article_2 // 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() { public function liste_enfants() {
// Ouvrir le dossier (fopen). $lst = scandir($this->chemin);
// Lister les dossiers. $lst_enfants = Array();
// Construire un objet Page pour chacun (code commun avec Page::enfant(nom)). if ($lst !== false) {
// renvoyer la liste. 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" // Récupéere le sous-dossier "nom"
// Construire un objet Page (code commun avec Page::liste_enfants()). // 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)). // 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 // Si nom est null, utiliser "Article" + numéro
// Créer un sous-dossier "nom" // Créer un sous-dossier "nom"
// L'initialiser avec le modèle donné dans prop_modele_enfants // L'initialiser avec le modèle donné dans prop_modele_enfants
// Construire un objet Page (code commun avec Page::enfant(nom)). // 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 // Si récursif || il n'y a pas de sous-dossiers
// alors supprimer récursivement le dossier courant // alors supprimer récursivement le dossier courant
// sinon renvoyer FAUX // 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é // 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é // écrire le contenu du fichier prop_nom_propriété
} }
public function url() { public function url() {
// calculer l'url de cette page en fonction de son chemin et de l'url de base // 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 . "» .";
}
}
?> ?>

10
index.php Normal file
View File

@ -0,0 +1,10 @@
<h1>Test</h1>
<?php
require_once("types/galerie.php");
$p = new Galerie(".");
print_r($p->vue());
?>

View File

@ -1,24 +1,29 @@
<?php <?php
class Gallerie extends Page { require_once("controleur/page.php");
public vue($nom_vue) {
$ret = ''; class Galerie extends Page {
public function vue($nom_vue = "normal") {
$ret = '';
$ret += '<ul>'; $ret .= '<ul>';
foreach ($this->liste_sous_articles() as $k) { foreach ($this->liste_enfants() as $k) {
$ret += '<li><a href="' + url_avec_parametres($k) + '">' + afficher($k, 'miniature') + '</a></li>'; $ret .= '<li><a href="' . $k->url() . '">' . $k->vue('miniature') . '</a></li>';
} }
$ret += '</ul>'; $ret .= '</ul>';
if ($edition) { if ($edition) {
$ret += '<a href="' + $this->url('nouveau') + '">Nouvelle période.</a>'; $ret .= '<a href="' . $this->url('nouveau') . '">Nouvelle période.</a>';
}
return $ret;
} }
}
// TODO : // TODO :
// Chaque page est un objet PHP, avec les méthodes suivantes : // 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, … // $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 // + Méthodes définies dans modele/page.php
}
?> ?>