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
// 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 . "» .";
}
}
?>

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
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
}
?>