Compatibilité free.fr : suite et fin. Pas de clôtures (fonctions anonymes), pas de __callStatic, ... :( *haine profonde*

This commit is contained in:
Georges Dupéron 2010-10-15 12:30:26 +02:00
parent fc654bde1c
commit 91de3f81c9
13 changed files with 122 additions and 93 deletions

1
cms2/.htaccess Normal file
View File

@ -0,0 +1 @@
php 5

View File

@ -1,8 +1,11 @@
- Debug : grouper les erreurs, améliorer l'affichage.
- Valeur de retour des res_t_xxx ? - Valeur de retour des res_t_xxx ?
Lorsqu'on appelle GalerieIndex::res_i_icône_nouvelle_page(), ça fait un sendfile alors que GalerieIndex::res_h_page() renvoie un objet Lorsqu'on appelle GalerieIndex::res_i_icône_nouvelle_page(), ça fait un sendfile alors que GalerieIndex::res_h_page() renvoie un objet
ElementDocument, et GalerieIndex::res_c_style() renvoie du texte (CSS) pour inclusion dans le CSS principal... alors que 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... res_c_style_supplémentaire() fait je-sais-pas-quoi...
Comment gérer tout ça ? Selon le type de ressource on envoie direct ou on récupère (html,css => récup, img => envoi). Comment gérer tout ça ? Selon le type de ressource on envoie direct ou on récupère (html,css => récup, img => envoi).
- PHP5.3 chez ovh : http://guide.ovh.com/Php5ChezOvh (.htaccess avec "SetEnv PHP_VER 5_TEST")
- Compatibilité free.fr :
soit il faut supprimer le fichier index.php (pour que index.php5 ait la priorité),
soit il faut transférer .htaccess (qui spécifie qu'il faut utiliser php5).

View File

@ -15,7 +15,7 @@ class BDD {
Config::get('db_mot_de_passe') Config::get('db_mot_de_passe')
); );
if (!is_resource(self::$handle)) { if (!is_resource(self::$handle)) {
Debug::erreur("Échec à la connexion à la base de données"); Debug("erreur", "Échec à la connexion à la base de données");
} }
// TODO : begin transaction à la 1ere écriture. // TODO : begin transaction à la 1ere écriture.
self::begin_transaction(); self::begin_transaction();
@ -42,10 +42,10 @@ class BDD {
public static function init() { public static function init() {
self::unbuf_query("create database if not exists " . Config::get('db_base')); self::unbuf_query("create database if not exists " . Config::get('db_base'));
mysql_select_db(Config::get('db_base'), self::$handle) or Debug::erreur_sql(); mysql_select_db(Config::get('db_base'), self::$handle) or Debug("erreur_sql");
if (count(self::select("show tables like '" . self::table("_pages") . "'")) == 1) { if (count(self::select("show tables like '" . self::table("_pages") . "'")) == 1) {
Debug::info("La base de données est déjà initialisée, on continue..."); Debug("info", "La base de données est déjà initialisée, on continue...");
return; return;
} }
@ -113,13 +113,13 @@ class BDD {
} }
public static function unbuf_query($q) { public static function unbuf_query($q) {
debug::sql($q . ";"); Debug("sql", $q . ";");
mysql_unbuffered_query($q . ";", self::get()) or Debug::erreur_sql(); mysql_unbuffered_query($q . ";", self::get()) or Debug("erreur_sql");
} }
public static function select($q) { public static function select($q) {
debug::sql($q); Debug("sql", $q);
$qres = mysql_query($q, BDD::get()) or Debug::erreur_sql(); $qres = mysql_query($q, BDD::get()) or Debug("erreur_sql");
$ret = array(); $ret = array();
while ($row = mysql_fetch_array($qres)) { while ($row = mysql_fetch_array($qres)) {
$ret[] = $row; $ret[] = $row;
@ -131,18 +131,18 @@ class BDD {
public static function select_one($q, $strict = true) { public static function select_one($q, $strict = true) {
$res = self::select($q); $res = self::select($q);
if ($strict && count($res) != 1) { if ($strict && count($res) != 1) {
Debug::erreur("Un rang de la base de données a été demmandé, mais, soit aucun rang correspondant aux critères n'a été trouvé, soit plusieurs ont été trouvés."); Debug("erreur", "Un rang de la base de données a été demmandé, mais, soit aucun rang correspondant aux critères n'a été trouvé, soit plusieurs ont été trouvés.");
return null; return null;
} }
if (count($res) == 0) { if (count($res) == 0) {
Debug::erreur("Un rang de la base de données a été demmandé, mais, aucun rang correspondant aux critères n'a été trouvé."); Debug("erreur", "Un rang de la base de données a été demmandé, mais, aucun rang correspondant aux critères n'a été trouvé.");
} }
return $res[0][0]; return $res[0][0];
} }
public static function modify($q) { public static function modify($q) {
debug::sql($q . ";"); Debug("sql", $q . ";");
mysql_unbuffered_query($q . ";", self::get()) or Debug::erreur_sql(); mysql_unbuffered_query($q . ";", self::get()) or Debug("erreur_sql");
// http://stackoverflow.com/questions/621369/sql-insert-and-catch-the-id-auto-increment-value // http://stackoverflow.com/questions/621369/sql-insert-and-catch-the-id-auto-increment-value
return mysql_insert_id(self::get()); return mysql_insert_id(self::get());
} }
@ -154,7 +154,7 @@ class BDD {
public static function close() { public static function close() {
if (is_resource(self::$handle)) { if (is_resource(self::$handle)) {
self::commit(); self::commit();
mysql_close(self::get()) or Debug::erreur_sql(); mysql_close(self::get()) or Debug("erreur_sql");
self::$handle = null; self::$handle = null;
} }
} }
@ -178,8 +178,8 @@ class BDDCell {
public function valeur() { public function valeur() {
return $this->valeur; return $this->valeur;
} }
public function __toString() { public function toString() {
return "".$this->valeur; return toString($this->valeur);
} }
} }

View File

@ -10,7 +10,7 @@ class Config {
public static function get($nom) { public static function get($nom) {
if (!isset(self::$config[$nom])) { if (!isset(self::$config[$nom])) {
// Utilisation de die() plutôt que de Debug::erreur car Debug n'est peut-être pas encore chargé. // Utilisation de die() plutôt que de $Debug->erreur car Debug n'est peut-être pas encore chargé.
echo "Variable de configuration manquante : $nom"; echo "Variable de configuration manquante : $nom";
die(); die();
} }

View File

@ -1,6 +1,6 @@
<?php <?php
class Debug { class _Debug {
public static $types_erreur = array( public static $types_erreur = array(
"erreur" => '<span style="color:red">Erreur</span>', "erreur" => '<span style="color:red">Erreur</span>',
"niy" => '<span style="color:brown">Pas encore implémenté</span>', "niy" => '<span style="color:brown">Pas encore implémenté</span>',
@ -20,11 +20,11 @@ class Debug {
public static $toutes_erreurs = false; // true <=> ignorer le filtre. public static $toutes_erreurs = false; // true <=> ignorer le filtre.
public static $erreurs = array(); public static $erreurs = array();
public static function __callStatic($nom, $args) { public function __call($nom, $args) {
if (!array_key_exists($nom, self::$types_erreur)) { if (!array_key_exists($nom, self::$types_erreur)) {
self::erreur("Type d'erreur inconnu : " . $nom . "\nArguments de Debug::$nom() : " . var_export($args, true)); self::erreur("Type d'erreur inconnu : " . $nom . "\nArguments de Debug->$nom : " . var_export($args, true));
} elseif (count($args) != 1) { } elseif (count($args) != 1) {
self::erreur("Mauvais nombre d'arguments pour Debug::$nom().\nArguments : " . var_export($args, true)); self::erreur("Mauvais nombre d'arguments pour Debug->$nom.\nArguments : " . var_export($args, true));
} else { } else {
self::push($nom, $args[0]); self::push($nom, $args[0]);
} }
@ -67,8 +67,15 @@ class Debug {
} }
} }
function Debug($fn) {
$args = func_get_args();
array_shift($args);
$d = new _Debug();
call_user_func_array(array($d, $fn), $args);
}
function niy($name) { function niy($name) {
Debug::niy($name); Debug("niy", $name);
} }
?> ?>

View File

@ -112,7 +112,7 @@ class ElementDocument {
$max = 0; $max = 0;
foreach (self::$types[$type]["attributs_oblig"] as $i => $nom) { foreach (self::$types[$type]["attributs_oblig"] as $i => $nom) {
if (!isset($args[$i])) { if (!isset($args[$i])) {
Debug::erreur("Argument manquant : $nom pour " . $elem->type); Debug("erreur", "Argument manquant : $nom pour " . $elem->type);
} }
$elem->attr($nom, $args[$i]); $elem->attr($nom, $args[$i]);
$max = $i; $max = $i;
@ -142,7 +142,7 @@ class ElementDocument {
} elseif (self::has_widget($fn)) { } elseif (self::has_widget($fn)) {
return $this->créer_widget($fn, $args); return $this->créer_widget($fn, $args);
} else { } else {
Debug::erreur("Impossible d'ajouter un élément $fn à " . $this->type); Debug("erreur", "Impossible d'ajouter un élément $fn à " . $this->type);
return null; return null;
} }
} }
@ -188,98 +188,98 @@ ElementDocument::add_type("text", "", "text");
ElementDocument::add_widget("titre", function($d, $cell){ ElementDocument::add_widget("titre", create_function('$d, $cell', '
// renvoie un <h2> ou un <input> selon les droits // renvoie un <h2> ou un <input> selon les droits
$d->header()->title()->text("".$cell); $d->header()->title()->text(toString($cell));
// TODO : modification si on a les droits. // TODO : modification si on a les droits.
$d->article()->hX()->text("".$cell); $d->article()->hX()->text(toString($cell));
}); '));
ElementDocument::add_widget("en_tete", function($d, $cell_titre, $cell_description){ ElementDocument::add_widget("en_tete", create_function('$d, $cell_titre, $cell_description', '
$d->w_titre($cell_titre); $d->w_titre($cell_titre);
$d->w_description($cell_description); $d->w_description($cell_description);
}); '));
ElementDocument::add_widget("description", function($d, $cell){ ElementDocument::add_widget("description", create_function('$d, $cell', '
// TODO : modification si on a les droits. // TODO : modification si on a les droits.
return $d->article()->p()->text("".$cell); return $d->article()->p()->text(toString($cell));
}); '));
ElementDocument::add_widget("field", function($d, $cell){ ElementDocument::add_widget("field", create_function('$d, $cell', '
$f = $d->span("field"); $f = $d->span("field");
$f->text("NIY : " . $cell); $f->text("NIY : " . toString($cell));
return $f; return $f;
}); '));
ElementDocument::add_widget("text_line", function($d, $cell){ ElementDocument::add_widget("text_line", create_function('$d, $cell', '
// TODO : modification si on a les droits. // TODO : modification si on a les droits.
return $d->text("".$cell); return $d->text(toString($cell));
}); '));
ElementDocument::add_widget("text_nix", function($d, $cell){ ElementDocument::add_widget("text_nix", create_function('$d, $cell', '
// Texte naze (sans espaces etc.) à la *nix. // Texte naze (sans espaces etc.) à la *nix.
// TODO : modification si on a les droits. // TODO : modification si on a les droits.
// TODO : vérifier que ça match [a-zA-Z][-a-zA-Z0-9_]* // TODO : vérifier que ça match [a-zA-Z][-a-zA-Z0-9_]*
return $d->text("".$cell); return $d->text(toString($cell));
}); '));
ElementDocument::add_widget("text_rich", function($d, $cell){ ElementDocument::add_widget("text_rich", create_function('$d, $cell', '
// TODO : modification si on a les droits. // TODO : modification si on a les droits.
// TODO : rendu du texte riche. // TODO : rendu du texte riche.
return $d->p()->text("".$cell); return $d->p()->text(toString($cell));
}); '));
ElementDocument::add_widget("bool", function($d, $cell){ ElementDocument::add_widget("bool", create_function('$d, $cell', '
// checkbox // checkbox
return $d->text("Not Implemented Yet : w_bool($cell)"); return $d->text("Not Implemented Yet : w_bool($cell)");
}); '));
ElementDocument::add_widget("bouton", function($d, $texte, $page_callback, $ressource_callback, $action_callback){ ElementDocument::add_widget("bouton", create_function('$d, $texte, $page_callback, $ressource_callback, $action_callback', '
// afficher un input[type=button] // afficher un input[type=button]
// lors du clic, appeller $action_callback sur $page_callback/?res=$ressource_callback ? // lors du clic, appeller $action_callback sur $page_callback/?res=$ressource_callback ?
return $d->text("Not Implemented Yet : w_bouton($texte, $page_callback, $ressource_callback, $action_callback)"); return $d->text("Not Implemented Yet : w_bouton($texte, $page_callback, $ressource_callback, $action_callback)");
}); '));
// Le widget w_img_file doit gérer le stockage de l'image dans un dossier, // Le widget w_img_file doit gérer le stockage de l'image dans un dossier,
// la création de la miniature et le stockage dans la BDD du chemin vers l'image. // la création de la miniature et le stockage dans la BDD du chemin vers l'image.
ElementDocument::add_widget("img_file", function($d, $cell_description, $cell_img){ ElementDocument::add_widget("img_file", create_function('$d, $cell_description, $cell_img', '
// TODO : modification si on a les droits. // TODO : modification si on a les droits.
// input[file] et <img> // input[file] et <img>
$img = $d->img("".$cell_description, "".$cell_img); $img = $d->img(toString($cell_description), toString($cell_img));
$d->w_description($cell_description); $d->w_description($cell_description);
return $img; return $img;
}); '));
ElementDocument::add_widget("date", function($d, $select){ ElementDocument::add_widget("date", create_function('$d, $select', '
// affichage localisé. // affichage localisé.
return $d->text("Not Implemented Yet : date($select)"); return $d->text("Not Implemented Yet : date($select)");
}); '));
ElementDocument::add_widget("liste", function($d, $list_cells, $function_formattage_elements) { ElementDocument::add_widget("liste", create_function('$d, $list_cells, $function_formattage_elements', '
$ul = $d->ul(); $ul = $d->ul();
foreach ($list_cells as $cell) { foreach ($list_cells as $cell) {
$li = $ul->li(); $li = $ul->li();
$function_formattage_elements($cell, $li); $function_formattage_elements($cell, $li);
} }
return $ul; return $ul;
}); '));
ElementDocument::add_widget("tableau", function($d, $select, $function_formattage_elements) { ElementDocument::add_widget("tableau", create_function('$d, $select, $function_formattage_elements', '
$t = $d->table(); $t = $d->table();
$tr = $t->tbody()->tr(); $tr = $t->tbody()->tr();
$tr->td()->text("Not Implemented Yet"); $tr->td()->text("Not Implemented Yet");
return $t; return $t;
}); '));
?> ?>

View File

@ -22,7 +22,7 @@ function main() {
$rendu = $page->rendu($res); $rendu = $page->rendu($res);
BDD::close(); BDD::close();
$rendu->erreurs()->litteral(Debug::afficher()); $rendu->erreurs()->litteral(_Debug::afficher());
$rendu = $rendu->to_XHTML_5(); $rendu = $rendu->to_XHTML_5();
echo $rendu; echo $rendu;

View File

@ -70,7 +70,7 @@ function type_liens($groupe, $type = null) {
mPage::$limitation_infos_module = $lim; mPage::$limitation_infos_module = $lim;
} else { } else {
if ($type === null) { if ($type === null) {
Debug::erreur('fonction type_liens() : le paramètres $type est obligatoire.'); Debug("erreur", 'fonction type_liens() : le paramètres $type est obligatoire.');
} }
// TODO : ... jusqu'ici (mPage::$modules[$m]['types_enfants'] peut être factorisé aussi (pas pour attribut)). // TODO : ... jusqu'ici (mPage::$modules[$m]['types_enfants'] peut être factorisé aussi (pas pour attribut)).
mPage::$modules[$m]['type_liens'][$groupe] = $type; mPage::$modules[$m]['type_liens'][$groupe] = $type;
@ -90,10 +90,10 @@ function attribut($nom, $type = null, $defaut = null) {
mPage::$limitation_infos_module = $lim; mPage::$limitation_infos_module = $lim;
} else { } else {
if ($type === null || $defaut === null) { if ($type === null || $defaut === null) {
Debug::erreur('fonction attribut() : les paramètres $type et $defaut est obligatoire.'); Debug("erreur", 'fonction attribut() : les paramètres $type et $defaut est obligatoire.');
} }
if (!Document::has_widget("w_" . $type)) { if (!Document::has_widget("w_" . $type)) {
Debug::erreur("L'attribut $nom a le type $type, mais aucun widget w_$type n'existe."); Debug("erreur", "L'attribut $nom a le type $type, mais aucun widget w_$type n'existe.");
} }
mPage::$modules[$m]['attributs'][$nom] = array("global" => false, "type" => $type, "defaut" => $defaut); mPage::$modules[$m]['attributs'][$nom] = array("global" => false, "type" => $type, "defaut" => $defaut);
} }
@ -392,7 +392,7 @@ class mPage {
public function set_prop_direct($nom, $val) { public function set_prop_direct($nom, $val) {
// Modifie l'attribut "$nom" dans la BDD. // Modifie l'attribut "$nom" dans la BDD.
$update_table = (self::est_propriete_globale($nom)) ? "_pages" : $this->nom_module(); $update_table = (self::est_propriete_globale($nom)) ? "_pages" : $this->nom_module();
$update = "update " . BDD::table($update_table) . " set $nom = '" . mysql_real_escape_string("".$val) . "' where _uid_page = " . $this->uid(); $update = "update " . BDD::table($update_table) . " set $nom = '" . mysql_real_escape_string(toString($val)) . "' where _uid_page = " . $this->uid();
BDD::unbuf_query($update); BDD::unbuf_query($update);
if ($nom != "date_modification") { if ($nom != "date_modification") {
$this->date_modification = time(); $this->date_modification = time();

View File

@ -37,6 +37,14 @@ function applyXSLT($xml, $xslt_file) {
return $xslt->transformToXML($dom); return $xslt->transformToXML($dom);
} }
function toString($obj) {
if (is_object($obj) && method_exists($obj, "toString")) {
return $obj->toString();
} else {
return "".$obj;
}
}
/**** Début PATH ****/ /**** Début PATH ****/
// http://www.liranuna.com/php-path-resolution-class-relative-paths-made-easy/ // http://www.liranuna.com/php-path-resolution-class-relative-paths-made-easy/

1
cms2/index.php Normal file
View File

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

View File

@ -18,9 +18,9 @@ class mAdminListeUtilisateurs extends mPage {
public function res_h_page($d) { public function res_h_page($d) {
$d->w_titre("Utilisateurs"); $d->w_titre("Utilisateurs");
$l = $d->article()->w_tableau($this->enfants(true, "+nom +prenom"), function($e, $tr) { $l = $d->article()->w_tableau($this->enfants(true, "+nom +prenom"), create_function('$e, $tr', '
$e->rendu("h_admin", $tr); $e->rendu("h_admin", $tr);
}); '));
$nouveau = $l->tbody(0)->tr()->td(6); $nouveau = $l->tbody(0)->tr()->td(6);
$nouveau->text("Nouvel utilisateur"); $nouveau->text("Nouvel utilisateur");
return $d; return $d;
@ -29,9 +29,9 @@ class mAdminListeUtilisateurs extends mPage {
public function res_h_liste_mots_de_passe($d) { public function res_h_liste_mots_de_passe($d) {
$d->w_titre("Liste de mots de passe."); $d->w_titre("Liste de mots de passe.");
$l = $d->article()->w_liste($this->enfants("groupe_permissions = 'utilisateurs'", "+nom +prenom"), function($e, $li) { $l = $d->article()->w_liste($this->enfants("groupe_permissions = 'utilisateurs'", "+nom +prenom"), create_function('$e, $li', '
$e->rendu("h_admin_mdp", $li); $e->rendu("h_admin_mdp", $li);
}); '));
return $d; return $d;
} }
} }

View File

@ -1,17 +1,26 @@
<?php <?php
abstract class mGalerieBase extends mPage { abstract class mGalerieBase extends mPage {
protected static $texte_titre = "Galerie"; public static $texte_titre = "Galerie";
protected static $texte_nouvelle_page = "Nouvel élément"; public static $texte_nouvelle_page = "Nouvel élément";
protected static $icone_nouvelle_page = "nouvelle_periode.png"; public static $icone_nouvelle_page = "nouvelle_periode.png";
protected static $type_enfants = "mGaleriePeriode"; public static $type_enfants = "mGaleriePeriode";
public static function info($module) { public static function info($module) {
$cvars = get_class_vars($module);
/* echo "<pre>";
var_dump($module);
var_dump($cvars);
echo "\n\n\n";
$cvars = get_class_vars("mGalerieBase");
var_dump($cvars);
echo "</pre>";
exit;*/
ressources_statiques("i_icone_nouvelle_page c_style"); ressources_statiques("i_icone_nouvelle_page c_style");
ressources_dynamiques("h_page h_miniature h_mini_miniature"); ressources_dynamiques("h_page h_miniature h_mini_miniature");
type_liens("enfants", $module::$type_enfants); type_liens("enfants", $cvars['type_enfants']);
type_liens("liens", "*"); type_liens("liens", "*");
attribut("titre", "text_line", $module::$texte_titre); attribut("titre", "text_line", $cvars['texte_titre']);
attribut("description", "text_rich", ""); attribut("description", "text_rich", "");
attribut("publier", "bool", "true"); attribut("publier", "bool", "true");
attribut("apercu", "bool", "false"); // TODO ! attribut("apercu", "bool", "false"); // TODO !
@ -27,10 +36,10 @@ abstract class mGalerieBase extends mPage {
public function res_h_page($d) { public function res_h_page($d) {
$d->w_en_tete($this->titre, $this->description); // En-tête standard. $d->w_en_tete($this->titre, $this->description); // En-tête standard.
$l = $d->article()->w_liste($this->enfants(true, "-date_creation"), function($e, $li) { $l = $d->article()->w_liste($this->enfants(true, "-date_creation"), create_function('$e, $li', '
$a = $li->a($e->url()); $a = $li->a($e->url());
$e->rendu("h_miniature", $a); $e->rendu("h_miniature", $a);
}); '));
$nouveau = $l->li(); $nouveau = $l->li();
// TODO : nouveau devrait être un lien, bouton, ... // TODO : nouveau devrait être un lien, bouton, ...
$nouveau->span("miniature")->img("", $this->url("i_icone_nouvelle_page")); $nouveau->span("miniature")->img("", $this->url("i_icone_nouvelle_page"));
@ -69,28 +78,28 @@ abstract class mGalerieBase extends mPage {
} }
class mGalerieIndex extends mGalerieBase { class mGalerieIndex extends mGalerieBase {
protected static $texte_titre = "Galerie"; public static $texte_titre = "Galerie";
protected static $texte_nouvelle_page = "Nouvelle période"; public static $texte_nouvelle_page = "Nouvelle période";
protected static $icone_nouvelle_page = "nouvelle_periode.png"; public static $icone_nouvelle_page = "nouvelle_periode.png";
protected static $type_enfants = "mGaleriePeriode"; public static $type_enfants = "mGaleriePeriode";
} }
class mGaleriePeriode extends mGalerieBase { class mGaleriePeriode extends mGalerieBase {
protected static $texte_titre = "Période"; public static $texte_titre = "Période";
protected static $texte_nouvelle_page = "Nouvel événement"; public static $texte_nouvelle_page = "Nouvel événement";
protected static $icone_nouvelle_page = "nouvel_evenement.png"; public static $icone_nouvelle_page = "nouvel_evenement.png";
protected static $type_enfants = "mGalerieEvenement"; public static $type_enfants = "mGalerieEvenement";
} }
class mGalerieEvenement extends mGalerieBase { class mGalerieEvenement extends mGalerieBase {
protected static $texte_titre = "Événement"; public static $texte_titre = "Événement";
protected static $texte_nouvelle_page = "Nouvelle photo"; public static $texte_nouvelle_page = "Nouvelle photo";
protected static $icone_nouvelle_page = "nouvelle_photo.png"; public static $icone_nouvelle_page = "nouvelle_photo.png";
protected static $type_enfants = "mGaleriePhoto"; public static $type_enfants = "mGaleriePhoto";
} }
class mGaleriePhoto extends mGalerieBase { class mGaleriePhoto extends mGalerieBase {
protected static $texte_titre = "Photo"; public static $texte_titre = "Photo";
public static function info($module) { public static function info($module) {
ressources_statiques("c_style"); ressources_statiques("c_style");
@ -115,7 +124,7 @@ class mGaleriePhoto extends mGalerieBase {
} }
public function res_h_page($d) { public function res_h_page($d) {
$d->w_en_tete($this->titre, "".$this->description); // En-tête standard. $d->w_en_tete($this->titre, toString($this->description)); // En-tête standard.
$d->w_img_file($this->description, $this->i_image); $d->w_img_file($this->description, $this->i_image);
return $d; return $d;
} }

View File

@ -21,12 +21,12 @@ class mNouveautes extends mPage {
public function res_h_page($d) { public function res_h_page($d) {
$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_creation", 10), function($e, $li) { $l = $d->article()->w_liste($this->enfants(true, "-date_creation", 10), create_function('$e, $li', '
$a = $li->a($e->uid()); $a = $li->a($e->uid());
// TODO : h_miniature_nouveautes s'il existe sinon h_miniature sinon juste un lien. // TODO : h_miniature_nouveautes s\'il existe sinon h_miniature sinon juste un lien.
// Comme ça le h_miniature_nouveautes d'une période de la galerie, c'est 3 ou 4 images alors que normalement c'en est juste une seule. // Comme ça le h_miniature_nouveautes d\'une période de la galerie, c\'est 3 ou 4 images alors que normalement c\'en est juste une seule.
$e->rendu("h_miniature", $a); $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"));
$nouveau->span("action")->text("Ajouter un article aux nouveautés."); $nouveau->span("action")->text("Ajouter un article aux nouveautés.");