Skip to content
Extraits de code Groupes Projets
Valider 42889694 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

support d'ajax avec les ecritures

#MODELE{truc,ajax}
<truc|ajax>
Au passage, les parametres a valeur implicite sont acceptes dans les modeles :
par exemple :
<embxx|autostart> est equivalent a <embxx|autostart=autostart>
parent ee4880ed
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -658,6 +658,8 @@ function creer_contexte_de_modele($args) {
$args = explode('=', $val);
if (count($args)>=2) // Flashvars=arg1=machin&arg2=truc genere plus de deux args
$contexte[trim($args[0])] = substr($val,strlen($args[0])+1);
else // notation abregee
$contexte[trim($val)] = trim($val);
}
}
else
......@@ -682,7 +684,7 @@ function inclure_modele($type, $id, $params, $lien, $connect='') {
list(,$soustype) = each($params);
$soustype = strtolower($soustype);
if (in_array($soustype,
array('left', 'right', 'center'))) {
array('left', 'right', 'center', 'ajax'))) {
list(,$soustype) = each($params);
$soustype = strtolower($soustype);
}
......@@ -693,6 +695,8 @@ function inclure_modele($type, $id, $params, $lien, $connect='') {
$fond = 'modeles/'.$type;
$class = $soustype;
}
// enlever le sous type des params
$params = array_diff($params,array($soustype));
}
}
......@@ -739,6 +743,11 @@ function inclure_modele($type, $id, $params, $lien, $connect='') {
// Traiter les parametres
// par exemple : <img1|center>, <emb12|autostart=true> ou <doc1|lang=en>
$arg_list = creer_contexte_de_modele($params);
if (isset($arg_list['ajax']) && $arg_list['ajax']=='ajax'){
$contexte['fond_ajax']=$contexte['fond'];
$contexte['fond']='fond/ajax';
unset($arg_list['ajax']);
}
$contexte['args'] = $arg_list; // on passe la liste des arguments du modeles dans une variable args
$contexte = array_merge($contexte,$arg_list);
......@@ -752,7 +761,7 @@ function inclure_modele($type, $id, $params, $lien, $connect='') {
$GLOBALS['compt_note'] = 0;
// Appliquer le modele avec le contexte
$page = evaluer_fond($fond, $contexte, array(), $connect);
$page = evaluer_fond($contexte['fond'], $contexte, array(), $connect);
$retour = trim($page['texte']);
// Lever un drapeau (global) si le modele utilise #SESSION
......
......@@ -1127,12 +1127,19 @@ function balise_MODELE_dist($p) {
if (!$nom)
die("erreur de compilation #MODELE{nom du modele}");
$nom = "modeles/".$nom;
$champ = phraser_arguments_inclure($p, true);
// a priori true
// si false, le compilo va bloquer sur des syntaxes avec un filtre sans argument qui suit la balise
// si true, les arguments simples (sans truc=chose) vont degager
$code_contexte = argumenter_inclure($champ, $p->descr, $p->boucles, $p->id_boucle, false);
// Gerer ajax
if (isset($code_contexte['ajax'])){
$code_contexte['fond_ajax'] = "'fond_ajax' => '$nom'";
$nom = 'fond/ajax_stat';
unset($_contexte['ajax']);
}
// Si le champ existe dans la pile, on le met dans le contexte
// (a priori c'est du code mort ; il servait pour #LESAUTEURS dans
......@@ -1150,7 +1157,7 @@ function balise_MODELE_dist($p) {
$connect = $p->boucles[$p->id_boucle]->sql_serveur;
$p->code = "( ((\$recurs=(isset(\$Pile[0]['recurs'])?\$Pile[0]['recurs']:0))<5)?
recuperer_fond('modeles/".$nom."',
recuperer_fond('$nom',
creer_contexte_de_modele(array(".join(',', $code_contexte).",'recurs='.(++\$recurs), \$GLOBALS['spip_lang'])), true, " . sql_quote($connect) . "):'')";
$p->interdire_scripts = false; // securite assuree par le squelette
......
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