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,17 +10,26 @@ class Debug {
}
public static function 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();
}
public static function afficher() {
echo "<pre>";
echo '<span style="color:red">Erreurs:</span>' . "\n";
foreach (self::$errors as $e) {
echo $e . "\n";
public static function afficher($start = true, $print = true, $end = true) {
if ($start) {
echo "<pre>";
echo '<span style="color:red">Erreurs:</span>' . "\n";
}
if ($print) {
foreach (self::$errors as $e) {
echo $e . "\n";
}
}
if ($end) {
echo '<span style="color:red">Fin erreurs.</span>' . "\n";
echo "</pre>";
}
echo '<span style="color:red">Fin erreurs.</span>' . "\n";
echo "</pre>";
}
}

View File

@ -74,6 +74,9 @@ class ElementDocument {
$elem = new self($fn);
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]);
}
@ -85,7 +88,7 @@ class ElementDocument {
array_unshift($a, $this);
return call_user_func_array($f, $a);
} else {
Debug::error("Impossible d'ajouter un élément $fn");
Debug::error("Impossible d'ajouter un élément $fn à " . $this->type);
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("footer", "");
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("style", "", "src");
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){
$f = $d->span();
$f = $d->span("field");
$f->text("NIY : " . $select);
return $f;
});

View File

@ -39,14 +39,18 @@ class Page {
return $this->parent;
}
public function rendu() {
public function rendu($res = null, $d = null) {
// Renvoie un document (classe ElementDocument).
// 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 ?
if (count($this->ressources_dynamiques()) == 0)
return new Document();
$res = $this->ressources_dynamiques();
return call_user_func(array($this, "res_" . $res[0]));
if ($res === null) {
$ressources = $this->ressources_dynamiques();
$res = $ressources[0];
}
if ($d === null) {
$d = new Document();
}
return call_user_func(array($this, "res_" . $res), $d);
}
public function url($ressource = null) {
@ -83,6 +87,11 @@ 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");
}
@ -94,6 +103,11 @@ class Page {
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");
}

View File

@ -5,7 +5,7 @@ class AdminListeUtilisateurs extends Page {
return qw("i_icône_nouvelle_page c_style");
}
public static function ressources_dynamiques() {
return qw("h_page");
return qw("h_page h_liste_mots_de_passe");
}
public static function types_enfants() {
return qw("AdminUtilisateur");
@ -22,19 +22,25 @@ class AdminListeUtilisateurs extends Page {
niy("res_c_style");
}
public function res_h_page() {
$d = new Document();
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) {
$li->append(
$e->rendu("h_admin")
);
$e->rendu("h_admin", $li);
});
$nouveau = $l->li();
$nouveau->text("Nouvel utilisateur");
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 {
@ -49,24 +55,44 @@ class AdminUtilisateur extends Page {
return qw("AdminUtilisateur");
}
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() {
niy("res_c_style");
}
public function res_h_admin() {
public function res_h_admin($d) {
// Vue de l'utilisateur pour inclusion dans admin/utilisateurs.
$d = new Document();
$d->w_titre("" . $this->nom . $this->prenom);
$a = $d->article();
//$d->w_titre("" . $this->nom . $this->prenom);
$d->w_field($this->nom);
$d->w_field($this->prenom);
$d->w_field($this->equipe);
$d->w_field($this->mot_de_passe);
$a->w_field($this->nom);
$a->w_field($this->prenom);
$a->w_field($this->equipe);
$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");
}
public function res_h_page() {
$d = new Document();
public function res_h_page($d) {
$d->w_en_tete(); // En-tête standard.
$l = $d->article()->w_liste($this->enfants(true, "date desc"), function($e, $li) {
$li->a($e->uid())->append(
$e->rendu("h_miniature")
);
$a = $li->a($e->uid());
$e->rendu("h_miniature", $a);
});
$nouveau = $l->li();
$nouveau->span("miniature")->img("", $this->url("i_icône_nouvelle_page"));
@ -44,18 +42,17 @@ abstract class GalerieBase extends Page {
return $d;
}
public function res_h_miniature() {
$e = new ElementDocument();
$e->span("miniature")->append($this->res_h_mini_miniature());
$e->span("titre")->_field($this->titre);
return $e;
public function res_h_miniature($d) {
$d->span("miniature")->append($this->res_h_mini_miniature());
$d->span("titre")->_field($this->titre);
return $d;
}
public function res_h_mini_miniature() {
public function res_h_mini_miniature($d) {
$a = $this->enfants("@apercu = true", "date desc", 1);
if ($a->size() != 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");
}
public function res_h_page() {
$d = new Document();
public function res_h_page($d) {
$d->w_en_tete($this->titre, "".$this->description); // En-tête standard.
$d->w_img($this->description, $this->i_image);
return $d;
}
public function res_h_mini_miniature() {
$d = new Document();
public function res_h_mini_miniature($d) {
$d->img($this->description, $this->i_image);
return $d;
}