Réduction du nombre de TODOs.
This commit is contained in:
parent
f69ce46d60
commit
70c662e164
|
@ -1,9 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
// TODO : Comment pseudo-insérer des images dans la BDD ? Est-ce la classe de la page qui décide de les déplacer dans /data et de mettre juste le nom dans la BDD ?
|
// Le widget w_img doit gérer le stockage de l'image dans un dossier, la création de la miniature et le stockage dans la BDD du chemin vers l'image.
|
||||||
// (Et c'est à ce moment-là que la miniature est faite). Ou bien, un "trigger" (get et set) pour faire la même chose ?
|
|
||||||
|
|
||||||
// TODO : Pouvoir stocker des collections de propriétés avec le même nom... Par ex. une photo peut avoir une collection de personnes.
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Base de données :
|
Base de données :
|
||||||
|
|
|
@ -42,7 +42,7 @@ class ElementDocument {
|
||||||
$ret = "";
|
$ret = "";
|
||||||
$ret .= "$indent<" . $this->type;
|
$ret .= "$indent<" . $this->type;
|
||||||
foreach ($this->attr as $k => $v) {
|
foreach ($this->attr as $k => $v) {
|
||||||
$ret .= " " . $k . '="' . htmlspecialchars($v) . '"'; // TODO : htmlspecialchars ne suffit pas !
|
$ret .= " " . htmlspecialchars($k) . '="' . htmlspecialchars($v) . '"';
|
||||||
}
|
}
|
||||||
if (count($this->enfants) == 0) {
|
if (count($this->enfants) == 0) {
|
||||||
$ret .= "/>\n";
|
$ret .= "/>\n";
|
||||||
|
@ -72,10 +72,21 @@ class ElementDocument {
|
||||||
$this->type = $type;
|
$this->type = $type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function has_widget($w) {
|
||||||
|
return array_key_exists($w, self::$widgets);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function has_type_élément($t) {
|
||||||
|
return array_key_exists($t, self::$enfantsÉléments);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function type_élément_autorisé($t) {
|
||||||
|
return self::has_type_élément($t)
|
||||||
|
&& in_array($t, self::$enfantsÉléments[$this->type]);
|
||||||
|
}
|
||||||
|
|
||||||
public function __call($fn, $args) {
|
public function __call($fn, $args) {
|
||||||
// TODO (peut-être ?): si on ne peut pas ajouter directement un élément, chercher un chemin qui permette de l'ajouter (p.ex. un strong directement à la racine d'un document, on ajoutera un p).
|
if (self::type_élément_autorisé($fn)) {
|
||||||
if (array_key_exists($this->type, self::$enfantsÉléments)
|
|
||||||
&& in_array($fn, self::$enfantsÉléments[$this->type])) {
|
|
||||||
$elem = new self($fn);
|
$elem = new self($fn);
|
||||||
|
|
||||||
foreach (self::$attributsÉléments[$fn] as $i => $nom) {
|
foreach (self::$attributsÉléments[$fn] as $i => $nom) {
|
||||||
|
@ -87,7 +98,7 @@ class ElementDocument {
|
||||||
|
|
||||||
$this->enfants[] = $elem;
|
$this->enfants[] = $elem;
|
||||||
return $elem;
|
return $elem;
|
||||||
} else if (array_key_exists($fn, self::$widgets)) {
|
} else if (self::has_widget($fn)) {
|
||||||
$f = self::$widgets[$fn];
|
$f = self::$widgets[$fn];
|
||||||
$a = $args;
|
$a = $args;
|
||||||
array_unshift($a, $this);
|
array_unshift($a, $this);
|
||||||
|
@ -102,10 +113,7 @@ class ElementDocument {
|
||||||
class Document extends ElementDocument {
|
class Document extends ElementDocument {
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****
|
// TODO: Comment s'assurer que le header, footer, nav soit unique ?
|
||||||
TODO
|
|
||||||
Comment s'assurer que le header, footer, nav soit unique ?
|
|
||||||
******/
|
|
||||||
$inline_elems = "span text a strong em img";
|
$inline_elems = "span text a strong em img";
|
||||||
ElementDocument::ajouter_type_élément("document", "header footer nav article script style");
|
ElementDocument::ajouter_type_élément("document", "header footer nav article script style");
|
||||||
ElementDocument::ajouter_type_élément("header", "title");
|
ElementDocument::ajouter_type_élément("header", "title");
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
// TODO : gestion du renomage (pseudo-réécriture d'URL).
|
|
||||||
// TODO : méthode if_perm("R" ou "W", nom_propriété)
|
|
||||||
// TODO : méthode if_perm("List" ou "Create" ou "Delete", enfant)
|
|
||||||
|
|
||||||
class Page {
|
class Page {
|
||||||
public static $types = array();
|
public static $types = array();
|
||||||
|
|
||||||
|
@ -20,8 +16,6 @@ class Page {
|
||||||
// null ou false => aucun type.
|
// null ou false => aucun type.
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// TODO !! TODO !! TODO
|
|
||||||
// Comment spécifier que telle valeur référence telle autre (si on le spécifie, sinon c'est juste le widget qui fait la translation) ?
|
|
||||||
public static function attributs() {
|
public static function attributs() {
|
||||||
return array(
|
return array(
|
||||||
attribut("date_creation", "date", "0"),
|
attribut("date_creation", "date", "0"),
|
||||||
|
@ -87,23 +81,45 @@ class Page {
|
||||||
niy("enfants");
|
niy("enfants");
|
||||||
}
|
}
|
||||||
|
|
||||||
public function ajouter_enfant() {
|
public function ajouter_enfant($type, $groupe = "main") {
|
||||||
// ajouter l'enfant
|
// ajouter l'enfant
|
||||||
// renvoyer un pointeur sur cet enfant
|
// renvoyer une instance de la sous-classe de Page correspondant à $type.
|
||||||
niy("ajouter_enfant");
|
niy("ajouter_enfant");
|
||||||
}
|
}
|
||||||
|
|
||||||
public function lier_page($page_source, $groupe = "main") {
|
public function lier_page($page_source, $groupe = "main") {
|
||||||
// ajouter un enfant de type "Lien" (TODO: faire la classe Lien)
|
$l = ajouter_enfant("Lien", "$groupe");
|
||||||
// contenant "@lien = $page_source" et "@groupe = $groupe"
|
$l->lien = $page_source;
|
||||||
niy("lier_page");
|
niy("lier_page");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function page_systeme("$nom") {
|
public static function page_systeme($nom) {
|
||||||
// select from pages where nomSysteme = $nom limit 1
|
// select from pages where nomSysteme = $nom limit 1
|
||||||
niy("page_systeme");
|
niy("page_systeme");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function if_perm($action, $nom_propriété) {
|
||||||
|
// @param $action = suite de lettre parmi les suivantes :
|
||||||
|
// R = Read prop
|
||||||
|
// W = Write prop
|
||||||
|
// L = Lister les enfants ($nom_propriété désigne alors le groupe)
|
||||||
|
// C = Créer des enfants ($nom_propriété désigne alors le groupe)
|
||||||
|
// D = Delete des enfants ($nom_propriété désigne alors le groupe)
|
||||||
|
// @return true si on a l'autorisation pour TOUTES les actions demandées, false sinon.
|
||||||
|
|
||||||
|
// Squelette du code :
|
||||||
|
$action = strtolower($action);
|
||||||
|
$permissions_prop = strtolower($this->get_permissions_prop($nom_propriété));
|
||||||
|
$permissions_enfants = strtolower($this->get_permissions_enfants($nom_propriété));
|
||||||
|
if (str_contains($action, "r") && !str_contains($permissions_prop, "r")) { return false; }
|
||||||
|
if (str_contains($action, "w") && !str_contains($permissions_prop, "w")) { return false; }
|
||||||
|
if (str_contains($action, "l") && !str_contains($permissions_enfants, "l")) { return false; }
|
||||||
|
if (str_contains($action, "c") && !str_contains($permissions_enfants, "c")) { return false; }
|
||||||
|
if (str_contains($action, "d") && !str_contains($permissions_enfants, "d")) { return false; }
|
||||||
|
return true;
|
||||||
|
niy("if_perm");
|
||||||
|
}
|
||||||
|
|
||||||
public function __get($nom) {
|
public function __get($nom) {
|
||||||
// s'il y a un getter (trigger), on l'appelle, sinon on appelle get_prop_direct();
|
// s'il y a un getter (trigger), on l'appelle, sinon on appelle get_prop_direct();
|
||||||
// le getter fait ce qu'il veut, puis appelle set_prop_direct();
|
// le getter fait ce qu'il veut, puis appelle set_prop_direct();
|
||||||
|
@ -133,11 +149,18 @@ class Page {
|
||||||
// Modifie l'attribut "$nom" dans la BDD.
|
// Modifie l'attribut "$nom" dans la BDD.
|
||||||
niy("set direct $nom = $val");
|
niy("set direct $nom = $val");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function set_composant_url() {
|
||||||
|
// pseudo-réécriture d'URL.
|
||||||
|
niy("pseudo-réécriture d'URL dans set_composant_url().");
|
||||||
|
return $this->set_prop_direct("composant_url", $val);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function attribut($nom, $type, $defaut) {
|
function attribut($nom, $type, $defaut) {
|
||||||
// TODO : si le type est inconnu, afficher une erreur.
|
if (!Document::has_widget($type)) {
|
||||||
// Un type <=> un widget.
|
Debug::error("L'attribut $nom a le type $type, mais aucun widget w_$type n'existe.");
|
||||||
|
}
|
||||||
return array($nom, $type, $defaut);
|
return array($nom, $type, $defaut);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -56,12 +56,15 @@ class AdminUtilisateur extends Page {
|
||||||
}
|
}
|
||||||
public static function attributs() {
|
public static function attributs() {
|
||||||
return array(
|
return array(
|
||||||
"nom" => "Dupondt",
|
// TODO : le couple (nom,prenom) doit être unique.
|
||||||
"prenom" => "Jean",
|
attribut("nom", "text_line", "Dupondt"),
|
||||||
"equipe" => null, // TODO
|
attribut("prenom", "text_line", "Jean"),
|
||||||
"mot_de_passe" => "",
|
attribut("equipe", "uid", "null"),
|
||||||
"groupe" => "utilisateurs",
|
attribut("mot_de_passe", "password", ""),
|
||||||
"peut_se_connecter" => false // TODO : permissions différentes (l'utilisateur ne peut pas modifier ça).
|
// TODO : permissions différentes pour les propriétés peut_se_connecter et groupe_permissions.
|
||||||
|
// L'utilisateur ne doit pas pouvoir les modifier.
|
||||||
|
attribut("groupe_permissions", "groupe_permissions", "utilisateurs"),
|
||||||
|
attribut("peut_se_connecter", "bool", "false")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@ abstract class GalerieBase extends Page {
|
||||||
$e->rendu("h_miniature", $a);
|
$e->rendu("h_miniature", $a);
|
||||||
});
|
});
|
||||||
$nouveau = $l->li();
|
$nouveau = $l->li();
|
||||||
|
// TODO : nouveau devrait être un lien, bouton, ...
|
||||||
$nouveau->span("miniature")->img("", $this->url("i_icône_nouvelle_page"));
|
$nouveau->span("miniature")->img("", $this->url("i_icône_nouvelle_page"));
|
||||||
$nouveau->span("titre")->text(self::$texte_nouvelle_page);
|
$nouveau->span("titre")->text(self::$texte_nouvelle_page);
|
||||||
|
|
||||||
|
@ -45,6 +46,8 @@ abstract class GalerieBase extends Page {
|
||||||
$d->p()->w_form($this->dans_nouveautes);
|
$d->p()->w_form($this->dans_nouveautes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO : lister les liens et pouvoir en ajouter (personne, lieu etc.).
|
||||||
|
|
||||||
return $d;
|
return $d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,9 +65,8 @@ abstract class GalerieBase extends Page {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function set_dans_nouveautes($val) {
|
public function set_dans_nouveautes($val) {
|
||||||
//TODO : ajouter $this en tant qu'enfant de /nouveautes
|
|
||||||
$this->page_systeme("nouveautes")->lier_page("$this");
|
$this->page_systeme("nouveautes")->lier_page("$this");
|
||||||
$this->set_prop_direct("dans_nouveautes", $val);
|
return $this->set_prop_direct("dans_nouveautes", $val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +107,7 @@ class GaleriePhoto {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function set_titre($titre) {
|
public function set_titre($titre) {
|
||||||
// TODO : set url quand on set titre !
|
// set url quand on set titre !
|
||||||
// TODO : valeur initiale pour l'url !
|
// TODO : valeur initiale pour l'url !
|
||||||
niy("GaleriePhoto::set_titre($titre)");
|
niy("GaleriePhoto::set_titre($titre)");
|
||||||
}
|
}
|
||||||
|
|
5
cms2/modules/lien/include.php
Normal file
5
cms2/modules/lien/include.php
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
require_once(dirname(__FILE__) . "/lien.php");
|
||||||
|
|
||||||
|
?>
|
22
cms2/modules/lien/lien.php
Normal file
22
cms2/modules/lien/lien.php
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
class Lien extends Page {
|
||||||
|
public static function ressources_statiques() {
|
||||||
|
return qw();
|
||||||
|
}
|
||||||
|
public static function ressources_dynamiques() {
|
||||||
|
return qw();
|
||||||
|
}
|
||||||
|
public static function types_enfants() {
|
||||||
|
return qw();
|
||||||
|
}
|
||||||
|
public static function attributs() {
|
||||||
|
return array(
|
||||||
|
attribut("lien", "uid", "0")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Page::ajouter_type("Lien");
|
||||||
|
|
||||||
|
?>
|
|
@ -1,10 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
class Nouveautes extends Page {
|
class Nouveautes extends Page {
|
||||||
protected static $texte_titre = "Nouveautés";
|
|
||||||
protected static $texte_nouvelle_page = "Ajouter un article aux nouveautés";
|
|
||||||
protected static $icône_nouvelle_page = "nouvelle_source.png";
|
|
||||||
|
|
||||||
public static function ressources_statiques() {
|
public static function ressources_statiques() {
|
||||||
return qw("i_icône_nouvelle_page c_style");
|
return qw("i_icône_nouvelle_page c_style");
|
||||||
}
|
}
|
||||||
|
@ -16,13 +12,13 @@ class Nouveautes extends Page {
|
||||||
}
|
}
|
||||||
public static function attributs() {
|
public static function attributs() {
|
||||||
return array(
|
return array(
|
||||||
attribut("titre", "text_line", self::$texte_titre),
|
attribut("titre", "text_line", "Nouveautés"),
|
||||||
attribut("description", "text_rich", "")
|
attribut("description", "text_rich", "")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function res_i_icône_nouvelle_page() {
|
public function res_i_icône_nouvelle_page() {
|
||||||
return StockageFichiers::envoyer_fichier_statique(Path::combine(dirname(__FILE__), self::$icône_nouvelle_page));
|
return StockageFichiers::envoyer_fichier_statique(Path::combine(dirname(__FILE__), "nouvelle_source.png"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function res_c_style() {
|
public function res_c_style() {
|
||||||
|
@ -34,16 +30,17 @@ class Nouveautes extends Page {
|
||||||
|
|
||||||
$l = $d->article()->w_liste($this->enfants(true, "date_creation desc", 10), function($e, $li) {
|
$l = $d->article()->w_liste($this->enfants(true, "date_creation desc", 10), function($e, $li) {
|
||||||
$a = $li->a($e->uid());
|
$a = $li->a($e->uid());
|
||||||
|
// TODO : h_miniature_nouveautes s'il existe sinon h_miniature sinon juste un lien.
|
||||||
|
// Comme ça le h_miniature_nouveautes d'une période de la galerie, c'est 3 ou 4 images alors que normalement c'en est juste une seule.
|
||||||
$e->rendu("h_miniature", $a);
|
$e->rendu("h_miniature", $a);
|
||||||
});
|
});
|
||||||
$nouveau = $l->li();
|
$nouveau = $l->li();
|
||||||
$nouveau->span("miniature")->img("", $this->url("i_icône_nouvelle_page"));
|
$nouveau->span("miniature")->img("", $this->url("i_icône_nouvelle_page"));
|
||||||
$nouveau->span("titre")->text(self::$texte_nouvelle_page);
|
$nouveau->span("titre")->text("Ajouter un article aux nouveautés.");
|
||||||
return $d;
|
return $d;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Page::ajouter_type("Nouveautes");
|
Page::ajouter_type("Nouveautes");
|
||||||
|
|
||||||
|
|
||||||
?>
|
?>
|
Loading…
Reference in New Issue
Block a user