assert(type = tr) pour les lignes "utilisateur" dans admin-utilisateur.

This commit is contained in:
Georges Dupéron 2010-10-06 11:28:38 +02:00
parent 777195e69b
commit fed9e432da
5 changed files with 40 additions and 26 deletions

View File

@ -4,6 +4,4 @@
ElementDocument, et GalerieIndex::res_c_style() renvoie du texte (CSS) pour inclusion dans le CSS principal... alors que
res_c_style_supplémentaire() fait je-sais-pas-quoi...
Comment gérer tout ça ? Tout le monde envoie directement et on intercepte avec un ob_start() / ob_end() ? Selon le type d'image on envoie
direct ou on récupère (html,css => récup, img => envoi) ? Une option à chaque fois (bêrk) ? Selon la valeur de retour (Direct => envoyé
directement, autre => récupéré), mais ça pose des pbs (la fonction X appelle un envoi direct alors qu'elle voulait une récup) ?
Comment gérer tout ça ? Selon le type de ressource on envoie direct ou on récupère (html,css => récup, img => envoi).

View File

@ -14,7 +14,7 @@ class ElementDocument {
private $type = null;
private $enfants = array();
private $attr = array();
public static function ajouter_type_élément($type, $typesEnfants, $attributs = "") {
self::$enfantsÉléments[$type] = qw($typesEnfants);
self::$attributsÉléments[$type] = qw($attributs);
@ -24,10 +24,15 @@ class ElementDocument {
self::$widgets["w_" . $nom] = $callback;
}
public function inclure($elem) {
// Tente de fusionner $elem avec $this
niy("inclure");
public function type() {
return $this->type;
}
/* public function inclure($elem) {
// Tente de fusionner $elem avec $this
// Très mauvaise fonction car l'inclusion peut planter bien après la définition des deux parties.
niy("inclure");
}*/
public function attr($nom, $valeur) {
$this->attr[$nom] = $valeur;
@ -107,10 +112,15 @@ ElementDocument::ajouter_type_élément("header", "title");
ElementDocument::ajouter_type_élément("title", "text");
ElementDocument::ajouter_type_élément("footer", "");
ElementDocument::ajouter_type_élément("nav", "ul");
ElementDocument::ajouter_type_élément("article", "ul p form span"); // span ?
ElementDocument::ajouter_type_élément("article", "ul table p form span"); // span ?
ElementDocument::ajouter_type_élément("script", "", "src");
ElementDocument::ajouter_type_élément("style", "", "src");
ElementDocument::ajouter_type_élément("ul", "li");
ElementDocument::ajouter_type_élément("table", "thead tbody tfoot");
ElementDocument::ajouter_type_élément("tbody", "tr");
ElementDocument::ajouter_type_élément("tr", "td th");
ElementDocument::ajouter_type_élément("td", $inline_elems);
ElementDocument::ajouter_type_élément("th", $inline_elems);
ElementDocument::ajouter_type_élément("li", $inline_elems);
ElementDocument::ajouter_type_élément("form", "input_text_line input_text_multi input_text_rich input_file");
ElementDocument::ajouter_type_élément("a", $inline_elems, "href");
@ -160,6 +170,13 @@ ElementDocument::ajouter_widget("liste", function($d, $select, $function_formatt
return $l;
});
ElementDocument::ajouter_widget("tableau", function($d, $select, $function_formattage_elements) {
$t = $d->table();
$tr = $t->tbody()->tr();
$tr->td()->text("Not Implemented Yet");
return $t;
});
/* Widgets :
function liste($elts, $format) {
$d = new Document();

View File

@ -1,7 +1,7 @@
<?php
function main() {
$g = new AdminUtilisateur();
$g = new AdminListeUtilisateurs();
$p = $g->rendu();
echo "<pre>";

View File

@ -87,33 +87,31 @@ class Page {
public function __get($nom) {
// 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();
// if (is_callable(array($this,"get_".$nom)) {
// return call_user_func(array($this,"get_".$nom));
// } else {
// return $this->get_prop_direct($nom);
// }
niy("get $nom");
if (is_callable(array($this,"get_".$nom))) {
return call_user_func(array($this,"get_".$nom));
} else {
return $this->get_prop_direct($nom);
}
}
private function get_prop_direct($nom) {
// Récupère l'attribut "$nom" depuis la BDD.
niy("get direct $name");
niy("get direct $nom");
}
public function __set($nom, $val) {
// s'il y a un setter (trigger), on l'appelle, sinon on appelle set_prop_direct();
// le setter fait ce qu'il veut, puis appelle set_prop_direct();
// if (is_callable(array($this,"get_".$nom)) {
// return call_user_func(array($this,"get_".$nom), $val);
// } else {
// return $this->set_prop_direct($nom, $val);
// }
niy("set $name = $val");
if (is_callable(array($this,"get_".$nom))) {
return call_user_func(array($this,"get_".$nom), $val);
} else {
return $this->set_prop_direct($nom, $val);
}
}
public function set_prop_direct($nom, $val) {
// Modifie l'attribut "$nom" dans la BDD.
niy("set direct $name = $val");
niy("set direct $nom = $val");
}
}

View File

@ -25,10 +25,10 @@ class AdminListeUtilisateurs extends Page {
public function res_h_page($d) {
$d->w_titre("Utilisateurs");
$l = $d->article()->w_liste($this->enfants(true, "nom asc prenom asc"), function($e, $li) {
$e->rendu("h_admin", $li);
$l = $d->article()->w_tableau($this->enfants(true, "nom asc prenom asc"), function($e, $tr) {
$e->rendu("h_admin", $tr);
});
$nouveau = $l->li();
$nouveau = $l->tbody(0)->tr()->td(); // TODO : colspan
$nouveau->text("Nouvel utilisateur");
return $d;
}
@ -71,6 +71,7 @@ class AdminUtilisateur extends Page {
public function res_h_admin($d) {
// Vue de l'utilisateur pour inclusion dans admin/utilisateurs.
assert('$d->type() == "tr"');
$a = $d->article();
//$d->w_titre("" . $this->nom . $this->prenom);