Skip to content
Extraits de code Groupes Projets
Valider 2a29a056 rédigé par Fil's avatar Fil
Parcourir les fichiers

toujours plus de modeles

parent 1aa1af37
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -387,4 +387,21 @@ function recuperer_fond($fond, $contexte=array()) { ...@@ -387,4 +387,21 @@ function recuperer_fond($fond, $contexte=array()) {
return $page['texte']; return $page['texte'];
} }
// temporairement ici : a mettre dans le futur inc/modeles
// creer_contexte_de_modele('left', 'autostart=true', ...) renvoie un array()
function creer_contexte_de_modele($args = array()) {
$contexte = array();
$params = array();
foreach ($args as $arg) {
if (in_array($arg, array('left', 'right', 'center')))
$arg = 'align='.$arg;
list($var, $val) = split('=', $arg);
$contexte[$var] = $val;
$params[] = "$var=$val";
}
$contexte['params'] = join('|', $params);
return $contexte;
}
?> ?>
...@@ -158,7 +158,7 @@ function balise_URL_ARTICLE_dist($p) { ...@@ -158,7 +158,7 @@ function balise_URL_ARTICLE_dist($p) {
else { else {
$_id_article = ''; $_id_article = '';
if ($p->param && !$p->param[0][0]){ if ($p->param && !$p->param[0][0]){
$_id_article = calculer_liste($p->param[0][1], $_id_article = calculer_liste($p->param[0][1],
$p->descr, $p->descr,
$p->boucles, $p->boucles,
$p->id_boucle); $p->id_boucle);
...@@ -543,35 +543,6 @@ function balise_RANG_dist ($p) { ...@@ -543,35 +543,6 @@ function balise_RANG_dist ($p) {
} }
// #MODELE
// fonction speciale d'appel a un modele modeles/truc.html pour la balise #TRUC
// exemples : #LESAUTEURS, #TRADUCTIONS, #DOC, #IMG...
// http://doc.spip.org/@balise_MODELE_dist
function balise_MODELE_dist($p){
$nom = strtolower($p->nom_champ);
$contexte = array();
// Si le champ existe dans la pile, on le met dans le contexte
// (exemple : #LESAUTEURS dans spip_syndic_articles)
$contexte[$nom] = champ_sql($nom, $p);
// Reserver la cle primaire de la boucle courante
if ($primary = $p->boucles[$p->id_boucle]->primary) {
$id = champ_sql($primary, $p);
$contexte[$primary] = $id;
}
// Preparer le code du contexte (id + champ)
foreach($contexte as $var=>$code)
$contexte[$var] = "'$var' => $code";
$p->code = "recuperer_fond('modeles/".$nom."',
array(".join(',', $contexte)."))";
$p->interdire_scripts = false; // securite assuree par le squelette
return $p;
}
// #PETITION // #PETITION
// retourne '' si l'article courant n'a pas de petition // retourne '' si l'article courant n'a pas de petition
// le texte de celle-ci sinon (et ' ' si il est vide) // le texte de celle-ci sinon (et ' ' si il est vide)
...@@ -682,12 +653,14 @@ function balise_GRAND_TOTAL_dist($p) { ...@@ -682,12 +653,14 @@ function balise_GRAND_TOTAL_dist($p) {
return $p; return $p;
} }
// //
// Fonction commune aux balises #LOGO_XXXX // Fonction commune aux balises #LOGO_XXXX
// (les balises portant ce type de nom sont traitees en bloc ici) // (les balises portant ce type de nom sont traitees en bloc ici)
// //
// http://doc.spip.org/@calculer_balise_logo // http://doc.spip.org/@calculer_balise_logo_dist
function calculer_balise_logo ($p) { function calculer_balise_logo_dist ($p) {
eregi("^LOGO_([A-Z]+)(_.*)?$", $p->nom_champ, $regs); eregi("^LOGO_([A-Z]+)(_.*)?$", $p->nom_champ, $regs);
$type_objet = $regs[1]; $type_objet = $regs[1];
......
...@@ -199,16 +199,24 @@ function calculer_champ($p) { ...@@ -199,16 +199,24 @@ function calculer_champ($p) {
function calculer_balise($nom, $p) { function calculer_balise($nom, $p) {
// S'agit-t-il d'une balise_XXXX[_dist]() ? // S'agit-t-il d'une balise_XXXX[_dist]() ?
if ($f = charger_fonction($nom, 'balise', true)) if ($f = charger_fonction($nom, 'balise', true)) {
return $f($p); $res = $f($p);
if ($res !== NULL)
return $res;
}
// S'agit-t-il d'un modele ? // S'agit-t-il d'un modele ?
if (find_in_path('modeles/'.strtolower($nom).'.html')) if (find_in_path('modeles/'.strtolower($nom).'.html')) {
return balise_MODELE_dist($p); if (!function_exists($f = 'calculer_balise_modele')) $f .= '_dist';
$res = $f($p);
if ($res !== NULL)
return $res;
}
// S'agit-il d'un logo ? Une fonction speciale les traite tous // S'agit-il d'un logo ? Une fonction speciale les traite tous
if (ereg('^LOGO_', $nom)) { if (ereg('^LOGO_', $nom)) {
$res = calculer_balise_logo($p); if (!function_exists($f = 'calculer_balise_logo')) $f .= '_dist';
$res = $f($p);
if ($res !== NULL) if ($res !== NULL)
return $res; return $res;
} }
...@@ -243,6 +251,41 @@ function calculer_balise($nom, $p) { ...@@ -243,6 +251,41 @@ function calculer_balise($nom, $p) {
return $p; return $p;
} }
// fonction speciale d'appel a un modele modeles/truc.html pour la balise #TRUC
// exemples : #LESAUTEURS, #TRADUCTIONS, #DOC, #IMG...
// http://doc.spip.org/@calculer_balise_modele_dist
function calculer_balise_modele_dist($p){
$nom = strtolower($p->nom_champ);
$contexte = array();
// Si le champ existe dans la pile, on le met dans le contexte
// (exemple : #LESAUTEURS dans spip_syndic_articles)
$code_contexte[] = "'$nom='.".champ_sql($nom, $p);
// Reserver la cle primaire de la boucle courante
if ($primary = $p->boucles[$p->id_boucle]->primary) {
$id = champ_sql($primary, $p);
$code_contexte[] = "'$primary='.".$id;
}
// Preparer le code du contexte (id + champ + params)
foreach ($p->param as $param)
foreach ($param as $elem)
if (strlen($elem)) {
$code_contexte[] = calculer_liste($elem,
$p->descr,
$p->boucles,
$p->id_boucle);
}
$p->code = "recuperer_fond('modeles/".$nom."',
creer_contexte_de_modele(array(".join(',', $code_contexte).")))";
$p->interdire_scripts = false; // securite assuree par le squelette
return $p;
}
// //
// Traduction des balises dynamiques, notamment les "formulaire_*" // Traduction des balises dynamiques, notamment les "formulaire_*"
// Inclusion du fichier associe a son nom. // Inclusion du fichier associe a son nom.
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter