Nouveautés (squelette)

This commit is contained in:
Georges Dupéron 2010-10-09 17:22:47 +02:00
parent 8242faeab8
commit e2093ed37a
5 changed files with 87 additions and 7 deletions

View File

@ -1,6 +1,8 @@
<?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 {
public static $types = array();
@ -27,6 +29,7 @@ class Page {
"publier" => false,
"nom_systeme" => "",
"composant_url" => "page",
"groupe" => "main"
);
}
@ -74,15 +77,26 @@ class Page {
niy("select");
}*/
public function enfants($condition = true, $ordre = "date desc", $limit = 0, $offset = 0) {
public function enfants($condition = true, $ordre = "date_creation desc", $limit = 0, $offset = 0) {
// Renvoie un objet de la classe CollectionPages.
// Si $condition === true, il n'y a pas de condition
// ex: $condition = "@apercu = true"
// ordre = null => ordre = "date desc"
// ordre = null => ordre = "date_creation desc"
// limit = null || limit = 0 => pas de limite
// offset = null => offset = 0
niy("enfants");
}
public function ajouter_enfant() {
// ajouter l'enfant
// renvoyer un pointeur sur cet enfant
niy("ajouter_enfant");
}
public function lier_page($page_source, $groupe = "main") {
// ajouter un enfant contenant "@lien = page_source" et "@groupe = groupe"
niy("lier_page");
}
public function __get($nom) {
// s'il y a un getter (trigger), on l'appelle, sinon on appelle get_prop_direct();
@ -103,7 +117,7 @@ class Page {
// 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);
return call_user_func(array($this,"set_".$nom), $val);
} else {
return $this->set_prop_direct($nom, $val);
}

View File

@ -19,7 +19,8 @@ abstract class GalerieBase extends Page {
return array(
"titre" => self::$texte_titre,
"description" => "",
"personnes" => LIENS // TODO
"personnes" => LIENS, // TODO
"dans_nouveautes" => "true"
);
}
@ -33,13 +34,18 @@ abstract class GalerieBase extends Page {
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) {
$l = $d->article()->w_liste($this->enfants(true, "date_creation desc"), function($e, $li) {
$a = $li->a($e->uid());
$e->rendu("h_miniature", $a);
});
$nouveau = $l->li();
$nouveau->span("miniature")->img("", $this->url("i_icône_nouvelle_page"));
$nouveau->span("titre")->text(self::$texte_nouvelle_page);
if ($this->if_perm("W", "dans_nouveautes")) {
$d->p()->w_form($this->dans_nouveautes);
}
return $d;
}
@ -50,11 +56,17 @@ abstract class GalerieBase extends Page {
}
public function res_h_mini_miniature($d) {
$a = $this->enfants("@apercu = true", "date desc", 1);
$a = $this->enfants("@apercu = true", "date_creation desc", 1);
if ($a->size() != 1)
$a = $this->enfants(true, "date desc", 1);
$a = $this->enfants(true, "date_creation desc", 1);
return $a->get(0)->rendu("h_mini_miniature", $d);;
}
public function set_dans_nouveautes($val) {
//TODO : ajouter $this en tant qu'enfant de /nouveautes
$this->page_systeme("nouveautes")->lier_page("$this");
$this->set_prop_direct("dans_nouveautes", $val);
}
}
class GalerieIndex extends GalerieBase {

View File

@ -0,0 +1,5 @@
<?php
require_once(dirname(__FILE__) . "/nouveautes.php");
?>

View File

@ -0,0 +1,49 @@
<?php
abstract 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() {
return qw("i_icône_nouvelle_page c_style");
}
public static function ressources_dynamiques() {
return qw("h_page");
}
public static function types_enfants() {
return qw("NouveautesSource");
}
public static function attributs() {
return array(
"titre" => self::$texte_titre,
"description" => "",
);
}
public function res_i_icône_nouvelle_page() {
return StockageFichiers::envoyer_fichier_statique(Path::combine(dirname(__FILE__), self::$icône_nouvelle_page));
}
public function res_c_style() {
niy("res_c_style");
}
public function res_h_page($d) {
$d->w_en_tete(); // En-tête standard.
$l = $d->article()->w_liste($this->enfants(true, "date_creation desc", 10), function($e, $li) {
$a = $li->a($e->uid());
$e->rendu("h_miniature", $a);
});
$nouveau = $l->li();
$nouveau->span("miniature")->img("", $this->url("i_icône_nouvelle_page"));
$nouveau->span("titre")->text(self::$texte_nouvelle_page);
return $d;
}
}
Page::ajouter_type("Nouveautes");
?>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB