Corrections dans admin-utilisateurs.

This commit is contained in:
Georges Dupéron 2010-10-06 11:00:29 +02:00
parent 345a4be1ce
commit 777195e69b
5 changed files with 94 additions and 47 deletions

View File

@ -10,18 +10,27 @@ class Debug {
} }
public static function error($msg) { public static function error($msg) {
array_push(self::$errors, "Error : $msg"); array_push(self::$errors, "Error : $msg");
self::afficher(); self::afficher(true, true, false);
echo "\n";
debug_print_backtrace();
self::afficher(false, false, true);
die(); die();
} }
public static function afficher() { public static function afficher($start = true, $print = true, $end = true) {
if ($start) {
echo "<pre>"; echo "<pre>";
echo '<span style="color:red">Erreurs:</span>' . "\n"; echo '<span style="color:red">Erreurs:</span>' . "\n";
}
if ($print) {
foreach (self::$errors as $e) { foreach (self::$errors as $e) {
echo $e . "\n"; echo $e . "\n";
} }
}
if ($end) {
echo '<span style="color:red">Fin erreurs.</span>' . "\n"; echo '<span style="color:red">Fin erreurs.</span>' . "\n";
echo "</pre>"; echo "</pre>";
} }
}
} }
function niy($name) { function niy($name) {

View File

@ -74,6 +74,9 @@ class ElementDocument {
$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) {
if (!isset($args[$i])) {
Debug::error("Argument manquant : $nom pour " . $elem->type);
}
$elem->attr($nom, $args[$i]); $elem->attr($nom, $args[$i]);
} }
@ -85,7 +88,7 @@ class ElementDocument {
array_unshift($a, $this); array_unshift($a, $this);
return call_user_func_array($f, $a); return call_user_func_array($f, $a);
} else { } else {
Debug::error("Impossible d'ajouter un élément $fn"); Debug::error("Impossible d'ajouter un élément $fn à " . $this->type);
return null; return null;
} }
} }
@ -104,7 +107,7 @@ ElementDocument::ajouter_type_élément("header", "title");
ElementDocument::ajouter_type_élément("title", "text"); ElementDocument::ajouter_type_élément("title", "text");
ElementDocument::ajouter_type_élément("footer", ""); ElementDocument::ajouter_type_élément("footer", "");
ElementDocument::ajouter_type_élément("nav", "ul"); ElementDocument::ajouter_type_élément("nav", "ul");
ElementDocument::ajouter_type_élément("article", "ul p form"); ElementDocument::ajouter_type_élément("article", "ul p form span"); // span ?
ElementDocument::ajouter_type_élément("script", "", "src"); ElementDocument::ajouter_type_élément("script", "", "src");
ElementDocument::ajouter_type_élément("style", "", "src"); ElementDocument::ajouter_type_élément("style", "", "src");
ElementDocument::ajouter_type_élément("ul", "li"); ElementDocument::ajouter_type_élément("ul", "li");
@ -138,7 +141,7 @@ ElementDocument::ajouter_widget("description", function($d, $select){
ElementDocument::ajouter_widget("field", function($d, $select){ ElementDocument::ajouter_widget("field", function($d, $select){
$f = $d->span(); $f = $d->span("field");
$f->text("NIY : " . $select); $f->text("NIY : " . $select);
return $f; return $f;
}); });

View File

@ -39,14 +39,18 @@ class Page {
return $this->parent; return $this->parent;
} }
public function rendu() { public function rendu($res = null, $d = null) {
// Renvoie un document (classe ElementDocument). // Renvoie un document (classe ElementDocument).
// L'appel à une fonction statique via $this-> n'est pas propre, mais comment appeller la // L'appel à une fonction statique via $this-> n'est pas propre, mais comment appeller la
// fonction du sous-type et pas celle de Page sinon ? // fonction du sous-type et pas celle de Page sinon ?
if (count($this->ressources_dynamiques()) == 0) if ($res === null) {
return new Document(); $ressources = $this->ressources_dynamiques();
$res = $this->ressources_dynamiques(); $res = $ressources[0];
return call_user_func(array($this, "res_" . $res[0])); }
if ($d === null) {
$d = new Document();
}
return call_user_func(array($this, "res_" . $res), $d);
} }
public function url($ressource = null) { public function url($ressource = null) {
@ -83,6 +87,11 @@ class Page {
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();
// 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"); niy("get $nom");
} }
@ -94,6 +103,11 @@ class Page {
public function __set($nom, $val) { public function __set($nom, $val) {
// s'il y a un setter (trigger), on l'appelle, sinon on appelle set_prop_direct(); // 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(); // 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"); niy("set $name = $val");
} }

View File

@ -5,7 +5,7 @@ class AdminListeUtilisateurs extends Page {
return qw("i_icône_nouvelle_page c_style"); return qw("i_icône_nouvelle_page c_style");
} }
public static function ressources_dynamiques() { public static function ressources_dynamiques() {
return qw("h_page"); return qw("h_page h_liste_mots_de_passe");
} }
public static function types_enfants() { public static function types_enfants() {
return qw("AdminUtilisateur"); return qw("AdminUtilisateur");
@ -22,19 +22,25 @@ class AdminListeUtilisateurs extends Page {
niy("res_c_style"); niy("res_c_style");
} }
public function res_h_page() { public function res_h_page($d) {
$d = new Document();
$d->w_titre("Utilisateurs"); $d->w_titre("Utilisateurs");
$l = $d->article()->w_liste($this->enfants(true, "nom asc prenom asc"), function($e, $li) { $l = $d->article()->w_liste($this->enfants(true, "nom asc prenom asc"), function($e, $li) {
$li->append( $e->rendu("h_admin", $li);
$e->rendu("h_admin")
);
}); });
$nouveau = $l->li(); $nouveau = $l->li();
$nouveau->text("Nouvel utilisateur"); $nouveau->text("Nouvel utilisateur");
return $d; return $d;
} }
public function res_h_liste_mots_de_passe($d) {
$d->w_titre("Liste de mots de passe.");
$l = $d->article()->w_liste($this->enfants("@groupe = utilisateurs", "nom asc prenom asc"), function($e, $li) {
$e->rendu("h_admin_mdp", $li);
});
return $d;
}
} }
class AdminUtilisateur extends Page { class AdminUtilisateur extends Page {
@ -49,24 +55,44 @@ class AdminUtilisateur extends Page {
return qw("AdminUtilisateur"); return qw("AdminUtilisateur");
} }
public static function attributs() { public static function attributs() {
return qw("nom prenom equipe mot_de_passe"); return array(
"nom" => "Dupondt",
"prenom" => "Jean",
"equipe" => null, // TODO
"mot_de_passe" => "",
"groupe" => "utilisateurs",
"peut_se_connecter" => false // TODO : permissions différentes (l'utilisateur ne peut pas modifier ça).
);
} }
public function res_c_style() { public function res_c_style() {
niy("res_c_style"); niy("res_c_style");
} }
public function res_h_admin() { public function res_h_admin($d) {
// Vue de l'utilisateur pour inclusion dans admin/utilisateurs. // Vue de l'utilisateur pour inclusion dans admin/utilisateurs.
$d = new Document(); $a = $d->article();
$d->w_titre("" . $this->nom . $this->prenom); //$d->w_titre("" . $this->nom . $this->prenom);
$d->w_field($this->nom); $a->w_field($this->nom);
$d->w_field($this->prenom); $a->w_field($this->prenom);
$d->w_field($this->equipe); $a->w_field($this->equipe);
$d->w_field($this->mot_de_passe); $a->w_field($this->mot_de_passe);
$a->w_field($this->groupe); // TODO : menu de séléction
$a->w_field($this->peut_se_connecter); // TODO : checkbox
return $d; return $a;
}
public function res_h_admin_mdp($d) {
// Vue de l'utilisateur pour inclusion dans admin/utilisateurs/liste des mots de passe.
$a = $d->article();
$a->w_field($this->nom);
$a->w_field($this->prenom);
$a->w_field($this->mot_de_passe);
return $a;
} }
} }

View File

@ -30,13 +30,11 @@ abstract class GalerieBase extends Page {
niy("res_c_style"); niy("res_c_style");
} }
public function res_h_page() { public function res_h_page($d) {
$d = new Document();
$d->w_en_tete(); // En-tête standard. $d->w_en_tete(); // En-tête standard.
$l = $d->article()->w_liste($this->enfants(true, "date desc"), function($e, $li) { $l = $d->article()->w_liste($this->enfants(true, "date desc"), function($e, $li) {
$li->a($e->uid())->append( $a = $li->a($e->uid());
$e->rendu("h_miniature") $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"));
@ -44,18 +42,17 @@ abstract class GalerieBase extends Page {
return $d; return $d;
} }
public function res_h_miniature() { public function res_h_miniature($d) {
$e = new ElementDocument(); $d->span("miniature")->append($this->res_h_mini_miniature());
$e->span("miniature")->append($this->res_h_mini_miniature()); $d->span("titre")->_field($this->titre);
$e->span("titre")->_field($this->titre); return $d;
return $e;
} }
public function res_h_mini_miniature() { public function res_h_mini_miniature($d) {
$a = $this->enfants("@apercu = true", "date desc", 1); $a = $this->enfants("@apercu = true", "date desc", 1);
if ($a->size() != 1) if ($a->size() != 1)
$a = $this->enfants(true, "date desc", 1); $a = $this->enfants(true, "date desc", 1);
return $a->get(0)->rendu("h_mini_miniature"); return $a->get(0)->rendu("h_mini_miniature", $d);;
} }
} }
@ -110,15 +107,13 @@ class GaleriePhoto {
niy("GaleriePhoto::res_c_style"); niy("GaleriePhoto::res_c_style");
} }
public function res_h_page() { public function res_h_page($d) {
$d = new Document();
$d->w_en_tete($this->titre, "".$this->description); // En-tête standard. $d->w_en_tete($this->titre, "".$this->description); // En-tête standard.
$d->w_img($this->description, $this->i_image); $d->w_img($this->description, $this->i_image);
return $d; return $d;
} }
public function res_h_mini_miniature() { public function res_h_mini_miniature($d) {
$d = new Document();
$d->img($this->description, $this->i_image); $d->img($this->description, $this->i_image);
return $d; return $d;
} }