Refactor : création de la classe Module.

This commit is contained in:
Georges Dupéron 2010-10-16 00:39:38 +02:00
parent 91206e21cb
commit 5f84ce3848
11 changed files with 315 additions and 276 deletions

View File

@ -8,4 +8,6 @@
- PHP5.3 chez ovh : http://guide.ovh.com/Php5ChezOvh (.htaccess avec "SetEnv PHP_VER 5_TEST")
- Compatibilité free.fr :
soit il faut supprimer le fichier index.php (pour que index.php5 ait la priorité),
soit il faut transférer .htaccess (qui spécifie qu'il faut utiliser php5).
soit il faut transférer .htaccess (qui spécifie qu'il faut utiliser php5).
- Pouvoir ajouter des types plutôt que des widgets. Type = widget affichage + wiget modification (affichage/modification) + sérialisation (stockage) (+ autre chose ?)

View File

@ -1,5 +1,7 @@
<?php
require_once(dirname(__FILE__) . "/module.php5");
// Lors d'une requête, ne renvoyer que les éléments que l'utilisateur a
// le droit de voir. Filtrage après la requête (attention au LIMIT et OFFSET !) ?
// ou y a-t-il moyen d'exprimer ça directement dans la requête ?
@ -60,7 +62,7 @@ class BDD {
. 'nom_module varchar(50) primary key'
. ')');
foreach (mPage::$modules as $nom_module => $m) {
foreach (Module::$modules as $nom_module => $m) {
$table = "create table if not exists " . self::table($nom_module) . " (_uid_page integer";
foreach ($m['attributs'] as $nom => $attr) {
if (!$attr['global']) {
@ -75,7 +77,7 @@ class BDD {
$table = "create table if not exists " . self::table("_pages") . " ("
. "_uid_page integer auto_increment primary key"
. ", _type varchar(50)";
foreach (mPage::$attributs_globaux as $nom => $attr) {
foreach (Module::$attributs_globaux as $nom => $attr) {
$table .= ", $nom varchar(50)";
}
$table .= ")";
@ -173,21 +175,21 @@ class BDD {
}
class BDDCell {
private $uid_page;
private $propriete;
private $page;
private $nom_attribut;
private $type;
private $valeur;
public function __construct($uid_page, $propriete, $type, $valeur) {
$this->uid_page = $uid_page;
$this->propriete = $propriete;
public function __construct($page, $nom_attribut, $type, $valeur) {
$this->page = $page;
$this->nom_attribut = $nom_attribut;
$this->type = $type;
$this->valeur = $valeur;
}
public function uid_page() {
return $this->uid_page;
public function page() {
return $this->page;
}
public function propriete() {
return $this->propriete;
public function nom_attribut() {
return $this->nom_attribut;
}
public function type() {
return $this->type;

View File

@ -1,5 +1,7 @@
<?php
require_once(dirname(__FILE__) . "/module.php5");
// Chaque type d'élément est une sous-classe de ElementDocument, et impléménte uniquement les méthodes de création qui respectent les règles d'imbrication des éléments.
// Pour les éléments dont les enfants possibles dépendent du parent (par ex. <a>), on restreindra les enfants et (parents) possibles à quelque chose de sensé.
// Plutôt que d'avoir plein de sous-classes, ElementDocument a une méthode __call(), qui vérifie ce qu'on peut appeller en fonction du type de l'élément.
@ -31,8 +33,8 @@ class ElementDocument {
);
}
public static function add_widget($nom, $callback) {
self::$widgets["w_" . $nom] = $callback;
public static function add_widget($nom) {
self::$widgets["w_" . $nom] = "fn_w_" . $nom;
}
public function type() {
@ -187,97 +189,115 @@ ElementDocument::add_type("p", $inline_elems);
ElementDocument::add_type("text", "", "text");
function fn_w_titre($d, $cell) {
// renvoie un <h2> ou un <input> selon les droits
$d->header()->title()->text(toString($cell));
// TODO : modification si on a les droits.
$d->article()->hX()->text(toString($cell));
}
ElementDocument::add_widget("titre", create_function('$d, $cell', '
// renvoie un <h2> ou un <input> selon les droits
$d->header()->title()->text(toString($cell));
// TODO : modification si on a les droits.
$d->article()->hX()->text(toString($cell));
'));
function fn_w_en_tete($d, $cell_titre, $cell_description) {
$d->w_titre($cell_titre);
$d->w_description($cell_description);
}
function fn_w_description($d, $cell) {
// TODO : modification si on a les droits.
return $d->article()->p()->text(toString($cell));
}
function fn_w_bouton($d, $texte, $page_callback, $ressource_callback, $action_callback) {
// afficher un input[type=button]
// lors du clic, appeller $action_callback sur $page_callback/?res=$ressource_callback ?
$a = $d->a($page_callback->url($ressource_callback,
"act_" . $page_callback->uid() . "_" . $action_callback));
$a->text($texte);
return $a;
}
function fn_w_liste($d, $liste_pages, $function_formattage_elements) {
$ul = $d->ul();
foreach ($liste_pages as $page) {
$li = $ul->li();
$function_formattage_elements($page, $li);
}
return $ul;
}
function fn_w_tableau($d, $select, $function_formattage_elements) {
$t = $d->table();
$tr = $t->tbody()->tr();
$tr->td()->text("Not Implemented Yet");
return $t;
}
function fn_w_img_file_desc($d, $cell_img, $cell_description) {
// TODO : modification si on a les droits.
$d->w_img_file($cell_img);
$d->w_description($cell_description);
return $img;
}
ElementDocument::add_widget("en_tete", create_function('$d, $cell_titre, $cell_description', '
$d->w_titre($cell_titre);
$d->w_description($cell_description);
'));
function fn_w_field($d, $cell) {
if ($cell->page()->if_perm("w", $cell->nom_attribut())) {
return call_user_func(array($d, "w_w_" . $cell->type()), $cell);
} else {
return call_user_func(array($d, "w_r_" . $cell->type()), $cell);
}
}
function fn_w_r_text_line($d, $cell) {
// TODO : modification si on a les droits.
return $d->text(toString($cell));
}
ElementDocument::add_widget("description", create_function('$d, $cell', '
// TODO : modification si on a les droits.
return $d->article()->p()->text(toString($cell));
'));
function fn_w_r_text_nix($d, $cell) {
// Texte naze (sans espaces etc.) à la *nix.
// TODO : modification si on a les droits.
// TODO : vérifier que ça match [a-zA-Z][-a-zA-Z0-9_]*
return $d->text(toString($cell));
}
function fn_w_r_text_rich($d, $cell) {
// TODO : modification si on a les droits.
// TODO : rendu du texte riche.
return $d->p()->text(toString($cell));
}
ElementDocument::add_widget("field", create_function('$d, $cell', '
return call_user_func(array($d, "w_" . $cell->type()), $cell);
'));
function fn_w_r_bool($d, $cell) {
// checkbox
return $d->text("w_bool(" . toString($cell) . ")");
}
function fn_w_r_img_file($d, $cell) {
// Le widget w_img_file 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.
ElementDocument::add_widget("text_line", create_function('$d, $cell', '
// TODO : modification si on a les droits.
return $d->text(toString($cell));
'));
// TODO : modification si on a les droits.
// input[file] et <img>
return $d->img(toString($cell_description), toString($cell_img));
}
function fn_w_r_date($d, $cell) {
// affichage localisé.
return $d->text("w_date(" . toString($cell) . ")");
}
ElementDocument::add_widget("text_nix", create_function('$d, $cell', '
// Texte naze (sans espaces etc.) à la *nix.
// TODO : modification si on a les droits.
// TODO : vérifier que ça match [a-zA-Z][-a-zA-Z0-9_]*
return $d->text(toString($cell));
'));
ElementDocument::add_widget("titre", "fn_w_titre");
ElementDocument::add_widget("en_tete", "fn_w_en_tete");
ElementDocument::add_widget("description", "fn_w_description");
ElementDocument::add_widget("bouton", "fn_w_bouton");
ElementDocument::add_widget("liste", "fn_w_liste");
ElementDocument::add_widget("tableau", "fn_w_tableau");
ElementDocument::add_widget("img_file_desc", "fn_w_img_file_desc");
ElementDocument::add_widget("text_rich", create_function('$d, $cell', '
// TODO : modification si on a les droits.
// TODO : rendu du texte riche.
return $d->p()->text(toString($cell));
'));
ElementDocument::add_widget("bool", create_function('$d, $cell', '
// checkbox
return $d->text("w_bool(" . toString($cell) . ")");
'));
ElementDocument::add_widget("bouton", create_function('$d, $texte, $page_callback, $ressource_callback, $action_callback', '
// afficher un input[type=button]
// lors du clic, appeller $action_callback sur $page_callback/?res=$ressource_callback ?
return $d->text("Not Implemented Yet : w_bouton($texte, $page_callback, $ressource_callback, $action_callback)");
'));
// Le widget w_img_file 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.
ElementDocument::add_widget("img_file", create_function('$d, $cell_description, $cell_img', '
// TODO : modification si on a les droits.
// input[file] et <img>
$img = $d->img(toString($cell_description), toString($cell_img));
$d->w_description($cell_description);
return $img;
'));
ElementDocument::add_widget("date", create_function('$d, $select', '
// affichage localisé.
return $d->text("Not Implemented Yet : date($select)");
'));
ElementDocument::add_widget("liste", create_function('$d, $list_cells, $function_formattage_elements', '
$ul = $d->ul();
foreach ($list_cells as $cell) {
$li = $ul->li();
$function_formattage_elements($cell, $li);
}
return $ul;
'));
ElementDocument::add_widget("tableau", create_function('$d, $select, $function_formattage_elements', '
$t = $d->table();
$tr = $t->tbody()->tr();
$tr->td()->text("Not Implemented Yet");
return $t;
'));
ElementDocument::add_widget("field");
Module::add_type("text_line");
Module::add_type("text_nix");
Module::add_type("text_rich");
Module::add_type("bool");
Module::add_type("img_file");
Module::add_type("date");
?>

View File

@ -7,7 +7,7 @@ function verifications() {
verifications();
function main() {
initModules();
Module::initModules();
Debug("warn", "BDD::reset() est toujours activé, ne pas le garder en production !");
if (array_key_exists("reset_bdd", $_GET) && $_GET['reset_bdd'] == 'true') {

134
cms2/code/module.php5 Normal file
View File

@ -0,0 +1,134 @@
<?php
class Inherit {
public function __construct($module) {
$this->inherit = $module;
}
}
class Module {
public static $types = array();
public static $modules = array();
public static $attributs_globaux = array();
public static $module_en_cours = null;
public static $limitation_infos_module = true;
public static function is_inherit($i) {
return is_object($i) && get_class($i) == "Inherit";
}
public static function ressources_statiques($res) {
// TODO : factoriser d'ici...
$lim = self::$limitation_infos_module;
$m = self::$module_en_cours;
if ($lim !== true && $lim != "ressources_statiques")
return;
if (self::is_inherit($res)) {
$i = $res->inherit;
self::$limitation_infos_module = "ressources_statiques";
call_user_func(array($i, "info"), $i);
self::$limitation_infos_module = $lim;
} else {
// TODO : ... jusqu'ici (self::$modules[$m]['ressources_statiques'] peut être factorisé aussi. (pas pour attribut))
self::$modules[$m]['ressources_statiques'] = qw(self::$modules[$m]['ressources_statiques'], $res);
}
}
public static function ressources_dynamiques($res) {
// TODO : factoriser d'ici...
$lim = self::$limitation_infos_module;
$m = self::$module_en_cours;
if ($lim !== true && $lim != "ressources_dynamiques")
return;
if (self::is_inherit($res)) {
$i = $res->inherit;
self::$limitation_infos_module = "ressources_dynamiques";
call_user_func(array($i, "info"), $i);
self::$limitation_infos_module = $lim;
} else {
// TODO : ... jusqu'ici (self::$modules[$m]['ressources_dynamiques'] peut être factorisé aussi. (pas pour attribut))
self::$modules[$m]['ressources_dynamiques'] = qw(self::$modules[$m]['ressources_dynamiques'], $res);
}
}
public static function type_liens($groupe, $type = null) {
// TODO : factoriser d'ici...
$lim = self::$limitation_infos_module;
$m = self::$module_en_cours;
if ($lim !== true && $lim != "type_liens")
return;
if (self::is_inherit($groupe)) {
$i = $res->inherit;
self::$limitation_infos_module = "type_liens";
call_user_func(array($i, "info"), $i);
self::$limitation_infos_module = $lim;
} else {
if ($type === null) {
Debug("erreur", 'fonction type_liens() : le paramètres $type est obligatoire.');
}
// TODO : ... jusqu'ici (self::$modules[$m]['types_enfants'] peut être factorisé aussi (pas pour attribut)).
self::$modules[$m]['type_liens'][$groupe] = $type;
}
}
public static function attribut($nom, $type = null, $defaut = null) {
$lim = self::$limitation_infos_module;
$m = self::$module_en_cours;
if ($lim !== true && $lim != "attribut")
return;
if (self::is_inherit($nom)) {
$i = $nom->inherit;
self::$limitation_infos_module = "attribut";
call_user_func(array($i, "info"), $i);
self::$limitation_infos_module = $lim;
} else {
if ($type === null || $defaut === null) {
Debug("erreur", 'fonction attribut() : les paramètres $type et $defaut est obligatoire.');
}
if (!array_key_exists($type, self::$types)) {
Debug("erreur", "L'attribut $nom a le type $type, mais ce type n'existe pas.");
}
self::$modules[$m]['attributs'][$nom] = array("global" => false, "type" => $type, "defaut" => $defaut);
}
}
public static function attribut_global($nom, $type, $defaut) {
self::$attributs_globaux[$nom] = array('type' => $type, 'defaut' => $defaut);
}
public static function add_module($m) {
self::$modules[$m] = array(
'ressources_statiques' => qw(),
'ressources_dynamiques' => qw(),
'type_liens' => array('enfants' => false),
'attributs' => array()
);
}
public static function initModules() {
foreach (self::$modules as $nom_module => $m) {
self::$module_en_cours = $nom_module;
call_user_func(array($nom_module, "info"), $nom_module);
}
self::$module_en_cours = null;
foreach (self::$attributs_globaux as $nom_ag => $ag) {
foreach (self::$modules as &$m) {
if (array_key_exists($nom_ag, $m['attributs'])) {
$m['attributs'][$nom_ag]['global'] = true;
}
}
}
}
public static function add_type($nom) {
ElementDocument::add_widget("r_" . $nom);
ElementDocument::add_widget("w_" . $nom);
self::$types[$nom] = array();
}
}
?>

View File

@ -12,137 +12,17 @@
require_once(dirname(__FILE__) . "/util.php5"); // qw
require_once(dirname(__FILE__) . "/document.php5"); // widgets pour la vérification des types.
function inherit($m) {
return array("inherit" => $m);
}
function is_inherit($i) {
return (is_array($i) && array_key_exists("inherit", $i));
}
function ressources_statiques($res) {
// TODO : factoriser d'ici...
$lim = mPage::$limitation_infos_module;
$m = mPage::$module_en_cours;
if ($lim !== true && $lim != "ressources_statiques")
return;
if (is_inherit($res)) {
$i = $res["inherit"];
mPage::$limitation_infos_module = "ressources_statiques";
call_user_func(array($i, "info"), $i);
mPage::$limitation_infos_module = $lim;
} else {
// TODO : ... jusqu'ici (mPage::$modules[$m]['ressources_statiques'] peut être factorisé aussi. (pas pour attribut))
mPage::$modules[$m]['ressources_statiques'] = qw(mPage::$modules[$m]['ressources_statiques'], $res);
}
}
function ressources_dynamiques($res) {
// TODO : factoriser d'ici...
$lim = mPage::$limitation_infos_module;
$m = mPage::$module_en_cours;
if ($lim !== true && $lim != "ressources_dynamiques")
return;
if (is_inherit($res)) {
$i = $res["inherit"];
mPage::$limitation_infos_module = "ressources_dynamiques";
call_user_func(array($i, "info"), $i);
mPage::$limitation_infos_module = $lim;
} else {
// TODO : ... jusqu'ici (mPage::$modules[$m]['ressources_dynamiques'] peut être factorisé aussi. (pas pour attribut))
mPage::$modules[$m]['ressources_dynamiques'] = qw(mPage::$modules[$m]['ressources_dynamiques'], $res);
}
}
function type_liens($groupe, $type = null) {
// TODO : factoriser d'ici...
$lim = mPage::$limitation_infos_module;
$m = mPage::$module_en_cours;
if ($lim !== true && $lim != "type_liens")
return;
if (is_inherit($groupe)) {
$i = $res["inherit"];
mPage::$limitation_infos_module = "type_liens";
call_user_func(array($i, "info"), $i);
mPage::$limitation_infos_module = $lim;
} else {
if ($type === null) {
Debug("erreur", 'fonction type_liens() : le paramètres $type est obligatoire.');
}
// TODO : ... jusqu'ici (mPage::$modules[$m]['types_enfants'] peut être factorisé aussi (pas pour attribut)).
mPage::$modules[$m]['type_liens'][$groupe] = $type;
}
}
function attribut($nom, $type = null, $defaut = null) {
$lim = mPage::$limitation_infos_module;
$m = mPage::$module_en_cours;
if ($lim !== true && $lim != "attribut")
return;
if (is_inherit($nom)) {
$i = $nom["inherit"];
mPage::$limitation_infos_module = "attribut";
call_user_func(array($i, "info"), $i);
mPage::$limitation_infos_module = $lim;
} else {
if ($type === null || $defaut === null) {
Debug("erreur", 'fonction attribut() : les paramètres $type et $defaut est obligatoire.');
}
if (!Document::has_widget("w_" . $type)) {
Debug("erreur", "L'attribut $nom a le type $type, mais aucun widget w_$type n'existe.");
}
mPage::$modules[$m]['attributs'][$nom] = array("global" => false, "type" => $type, "defaut" => $defaut);
}
}
function attribut_global($nom, $type, $defaut) {
mPage::$attributs_globaux[$nom] = array('type' => $type, 'defaut' => $defaut);
}
function module($m) {
mPage::$modules[$m] = array(
'ressources_statiques' => qw(),
'ressources_dynamiques' => qw(),
'type_liens' => array('enfants' => false),
'attributs' => array()
);
}
function initModules() {
foreach (mPage::$modules as $nom_module => $m) {
mPage::$module_en_cours = $nom_module;
call_user_func(array($nom_module, "info"), $nom_module);
}
mPage::$module_en_cours = null;
foreach (mPage::$attributs_globaux as $nom_ag => $ag) {
foreach (mPage::$modules as &$m) {
if (array_key_exists($nom_ag, $m['attributs'])) {
$m['attributs'][$nom_ag]['global'] = true;
}
}
}
}
class mPage {
public static $modules = array();
public static $attributs_globaux = array();
public static $module_en_cours = null;
public static $limitation_infos_module = true;
public static function info($module) {
attribut_global("date_creation", "date", "0");
attribut_global("date_modification", "date", "0");
attribut_global("publier", "bool", "false");
attribut_global("nom_systeme", "text_nix", "");
attribut_global("composant_url", "text_nix", "page");
Module::attribut_global("date_creation", "date", "0");
Module::attribut_global("date_modification", "date", "0");
Module::attribut_global("publier", "bool", "false");
Module::attribut_global("nom_systeme", "text_nix", "");
Module::attribut_global("composant_url", "text_nix", "page");
}
public static function est_attribut_global($prop) {
return array_key_exists($prop, self::$attributs_globaux);
return array_key_exists($prop, Module::$attributs_globaux);
}
public function nom_module() {
@ -150,7 +30,7 @@ class mPage {
}
public function module() {
return self::$modules[$this->nom_module()];
return Module::$modules[$this->nom_module()];
}
public function type_liens($groupe) {
@ -207,7 +87,7 @@ class mPage {
}
public function has_prop($nom) {
return array_key_exists($nom, self::$attributs_globaux)
return array_key_exists($nom, Module::$attributs_globaux)
|| array_key_exists($nom, $this->module['attributs']);
}
@ -269,13 +149,13 @@ class mPage {
}
public static function créer_page($nom_module) {
$module = self::$modules[$nom_module];
$module = Module::$modules[$nom_module];
// Insert dans la table _pages.
$insert = "insert into " . BDD::table("_pages") . " set ";
$insert .= "_uid_page = null";
$insert .= ", _type = '" . $nom_module . "'";
foreach (self::$attributs_globaux as $nom => $attr) {
foreach (Module::$attributs_globaux as $nom => $attr) {
if (array_key_exists($nom, $module['attributs'])) {
$insert .= ", $nom = '" . BDD::escape($module['attributs'][$nom]['defaut']) . "'";
} else {
@ -343,21 +223,21 @@ class mPage {
public function get_permissions_enfants($groupe) {
niy("get_permissions_enfants");
}
public function if_perm($action, $nom_propriété) {
public function if_perm($action, $nom_attribut) {
niy("if_perm");
return true;
return false;
// @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 la page ($nom_propriété est ignoré)
// R = Read attribut
// W = Write attribut
// L = Lister les enfants ($nom_attribut désigne alors le groupe)
// C = Créer des enfants ($nom_attribut désigne alors le groupe)
// D = Delete la page ($nom_attribut est ignoré)
// @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é));
$permissions_prop = strtolower($this->get_permissions_prop($nom_attribut));
$permissions_enfants = strtolower($this->get_permissions_enfants($nom_attribut));
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; }
@ -381,13 +261,13 @@ class mPage {
// Récupère l'attribut "$nom" depuis la BDD.
if (self::est_attribut_global($nom)) {
$select_table = "_pages";
$type = self::$attributs_globaux[$nom]['type'];
$type = Module::$attributs_globaux[$nom]['type'];
} else {
$select_table = $this->nom_module();
$type = $this->module['attributs'][$nom]['type'];
}
$select = "select $nom from " . BDD::table($select_table) . " where _uid_page = " . BDD::escape_int($this->uid()) . ";";
return new BDDCell($this->uid(), $nom, $type, BDD::select_one($select));
return new BDDCell($this, $nom, $type, BDD::select_one($select));
}
public function __set($nom, $val) {
@ -417,6 +297,6 @@ class mPage {
}
}
module("mPage");
Module::add_module("mPage");
?>

View File

@ -2,9 +2,9 @@
class mAdminListeUtilisateurs extends mPage {
public static function info($module) {
ressources_statiques("i_icône_nouvelle_page c_style");
ressources_dynamiques("h_page h_liste_mots_de_passe");
type_liens("enfants", "mAdminUtilisateur");
Module::ressources_statiques("i_icône_nouvelle_page c_style");
Module::ressources_dynamiques("h_page h_liste_mots_de_passe");
Module::type_liens("enfants", "mAdminUtilisateur");
}
public function res_i_icône_nouvelle_page() {
@ -38,18 +38,18 @@ class mAdminListeUtilisateurs extends mPage {
class mAdminUtilisateur extends mPage {
public static function info($module) {
ressources_statiques("c_style");
Module::ressources_statiques("c_style");
// TODO : h_page = affichage "en grand" de l'utilisateur (~= page perso, par ex. destination d'un lien de la page contacts).
ressources_dynamiques("h_admin");
Module::ressources_dynamiques("h_admin");
// TODO : le couple (nom,prenom) doit être unique.
attribut("nom", "text_line", "Dupondt");
attribut("prenom", "text_line", "Jean");
attribut("equipe", "uid", "null");
attribut("mot_de_passe", "password", "");
Module::attribut("nom", "text_line", "Dupondt");
Module::attribut("prenom", "text_line", "Jean");
Module::attribut("equipe", "uid", "null");
Module::attribut("mot_de_passe", "password", "");
// 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");
Module::attribut("groupe_permissions", "groupe_permissions", "utilisateurs");
Module::attribut("peut_se_connecter", "bool", "false");
}
public function res_c_style() {
@ -84,6 +84,6 @@ class mAdminUtilisateur extends mPage {
}
}
module("mAdminListeUtilisateurs");
Module::add_module("mAdminListeUtilisateurs");
?>

View File

@ -8,14 +8,14 @@ abstract class mGalerieBase extends mPage {
public static function info($module) {
$cvars = get_class_vars($module);
ressources_statiques("i_icone_nouvelle_page c_style");
ressources_dynamiques("h_page h_miniature h_mini_miniature");
type_liens("enfants", $cvars['type_enfants']);
type_liens("liens", "*");
attribut("titre", "text_line", $cvars['texte_titre']);
attribut("description", "text_rich", "");
attribut("publier", "bool", "true");
attribut("apercu", "bool", "false"); // TODO !
Module::ressources_statiques("i_icone_nouvelle_page c_style");
Module::ressources_dynamiques("h_page h_miniature h_mini_miniature");
Module::type_liens("enfants", $cvars['type_enfants']);
Module::type_liens("liens", "*");
Module::attribut("titre", "text_line", $cvars['texte_titre']);
Module::attribut("description", "text_rich", "");
Module::attribut("publier", "bool", "true");
Module::attribut("apercu", "bool", "false"); // TODO !
}
public function res_i_icone_nouvelle_page() {
@ -94,10 +94,10 @@ class mGaleriePhoto extends mGalerieBase {
public static $texte_titre = "Photo";
public static function info($module) {
ressources_statiques("c_style");
ressources_dynamiques(inherit(get_parent_class()), "i_grande i_image i_miniature");
attribut(inherit(get_parent_class()));
attribut("image", "img_file", "");
Module::ressources_statiques("c_style");
Module::ressources_dynamiques(new Inherit(get_parent_class()), "i_grande i_image i_miniature");
Module::attribut(new Inherit(get_parent_class()));
Module::attribut("image", "img_file", "");
}
public function set_titre($titre) {
@ -117,7 +117,7 @@ class mGaleriePhoto extends mGalerieBase {
public function res_h_page($d) {
$d->w_en_tete($this->titre, toString($this->description)); // En-tête standard.
$d->w_img_file($this->description, $this->i_image);
$d->w_img_file_desc($this->image, $this->description);
return $d;
}
@ -167,9 +167,9 @@ class mGaleriePhoto extends mGalerieBase {
}
}
module("mGalerieIndex");
module("mGaleriePeriode");
module("mGalerieEvenement");
module("mGaleriePhoto");
Module::add_module("mGalerieIndex");
Module::add_module("mGaleriePeriode");
Module::add_module("mGalerieEvenement");
Module::add_module("mGaleriePhoto");
?>

View File

@ -1,6 +1,7 @@
<?php
// Dépendance commune à tous les modules :
// Dépendances communes à tous les modules :
require_once(dirname(__FILE__) . "/../code/module.php5");
require_once(dirname(__FILE__) . "/../code/page.php5");
require_once(dirname(__FILE__) . "/galerie/include.php5");

View File

@ -2,12 +2,12 @@
class mNouveautes extends mPage {
public static function info($module) {
ressources_statiques("i_icône_nouvelle_page c_style");
ressources_dynamiques("h_page");
type_liens("sources", "*");
attribut("titre", "text_line", "Nouveautés");
attribut("description", "text_rich", "");
attribut_global("dans_nouveautes", "bool", "true");
Module::ressources_statiques("i_icône_nouvelle_page c_style");
Module::ressources_dynamiques("h_page");
Module::type_liens("sources", "*");
Module::attribut("titre", "text_line", "Nouveautés");
Module::attribut("description", "text_rich", "");
Module::attribut_global("dans_nouveautes", "bool", "true");
}
public function res_i_icône_nouvelle_page() {
@ -34,6 +34,6 @@ class mNouveautes extends mPage {
}
}
module("mNouveautes");
Module::add_module("mNouveautes");
?>

View File

@ -4,7 +4,7 @@ class mSquelette extends mPage {
// Trouver un moyen pour que mSquelette soit appellé après avoir généré la page, pour qu'il puisse l'emballer.
public static function info($module) {
ressources_dynamiques("c_css_principal text/css");
Module::ressources_dynamiques("c_css_principal text/css");
}
public function res_c_css_principal() {
@ -13,6 +13,6 @@ class mSquelette extends mPage {
}
}
module("mSquelette");
Module::add_module("mSquelette");
?>