diff --git a/cms2/code/page.php b/cms2/code/page.php index e2402c3..1bb680d 100644 --- a/cms2/code/page.php +++ b/cms2/code/page.php @@ -1,6 +1,8 @@ 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); } diff --git a/cms2/modules/galerie/galerie.php b/cms2/modules/galerie/galerie.php index f1e79f9..b255bed 100644 --- a/cms2/modules/galerie/galerie.php +++ b/cms2/modules/galerie/galerie.php @@ -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 { diff --git a/cms2/modules/nouveautes/include.php b/cms2/modules/nouveautes/include.php new file mode 100644 index 0000000..5f297d2 --- /dev/null +++ b/cms2/modules/nouveautes/include.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/cms2/modules/nouveautes/nouveautes.php b/cms2/modules/nouveautes/nouveautes.php new file mode 100644 index 0000000..eaf7c89 --- /dev/null +++ b/cms2/modules/nouveautes/nouveautes.php @@ -0,0 +1,49 @@ + 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"); + + +?> \ No newline at end of file diff --git a/cms2/modules/nouveautes/nouvelle_source.png b/cms2/modules/nouveautes/nouvelle_source.png new file mode 100644 index 0000000..b894dec Binary files /dev/null and b/cms2/modules/nouveautes/nouvelle_source.png differ