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

retablir les bloc ajax inclus et le support des actions dans le prive (meme si...

retablir les bloc ajax inclus et le support des actions dans le prive (meme si les urls generees sont par defaut toujorus dans le public)
code mort autour du traitement des actions qui etait reste du debut de la mise en CVT de l'espace prive
les traitements derogatoires sont regroupes dans public/aiguiller appeles identiquement par le public et le prive
parent b95db7c6
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -428,6 +428,7 @@ ecrire/maj/vieille_base/1927/typedoc.php -text ...@@ -428,6 +428,7 @@ ecrire/maj/vieille_base/1927/typedoc.php -text
ecrire/maj/vieille_base/charger.php -text ecrire/maj/vieille_base/charger.php -text
ecrire/maj/vieille_base/create.php -text ecrire/maj/vieille_base/create.php -text
ecrire/prive.php -text ecrire/prive.php -text
ecrire/public/aiguiller.php -text
ecrire/public/index.php -text ecrire/public/index.php -text
ecrire/public/jointures.php -text ecrire/public/jointures.php -text
ecrire/public/quete.php -text ecrire/public/quete.php -text
......
...@@ -166,11 +166,21 @@ AND $l = @unserialize($l)) { ...@@ -166,11 +166,21 @@ AND $l = @unserialize($l)) {
} }
} }
if (_request('formulaire_action') AND _request('formulaire_action_args')) { if (_request('action') OR _request('var_ajax') OR _request('formulaire_action')){
include_spip('public/assembler'); // Charger l'aiguilleur qui va mettre sur la bonne voie les traitements derogatoires
if (traiter_formulaires_dynamiques()) exit; include_spip('public/aiguiller');
} if (
// cas des appels actions ?action=xxx qui peuvent etre executees dans ecrire/
// les urls crees par generer_url_action sont par defaut toujours dans le public
traiter_appels_actions()
OR
// cas des hits ajax sur les inclusions ajax
traiter_appels_inclusions_ajax()
OR
// cas des formulaires charger/verifier/traiter
traiter_formulaires_dynamiques())
exit; // le hit est fini !
}
// Passer la main aux outils XML a la demande (meme les redac s'ils veulent). // Passer la main aux outils XML a la demande (meme les redac s'ils veulent).
if ($var_f = _request('transformer_xml')) { if ($var_f = _request('transformer_xml')) {
......
...@@ -106,65 +106,21 @@ else { ...@@ -106,65 +106,21 @@ else {
$lang = !isset($_GET['lang']) ? '' : lang_select($_GET['lang']); $lang = !isset($_GET['lang']) ? '' : lang_select($_GET['lang']);
if ($ajax = _request('var_ajax')) // Charger l'aiguilleur qui va mettre sur la bonne voie les traitements derogatoires
$ajax_env = ($ajax==='form') ? '' : _request('var_ajax_env'); include_spip('public/aiguiller');
else $ajax_env = ''; if (
// cas des appels actions ?action=xxx
// cas de l'appel qui renvoie une redirection (302) ou rien (204) traiter_appels_actions()
OR
if ($action = _request('action')) { // cas des hits ajax sur les inclusions ajax
include_spip('inc/autoriser'); traiter_appels_inclusions_ajax()
include_spip('inc/headers'); OR
$url = _request('redirect'); // cas des formulaires charger/verifier/traiter
// pas de urldecode: traiter_formulaires_dynamiques())
// - en GET, PHP le fait automatiquement exit; // le hit est fini !
// - en POST, SPIP n'a pas fait d'urlencode
if ($ajax_env AND $url) {
$url = parametre_url($url,'var_ajax',$ajax,'&');
$url = parametre_url($url,'var_ajax_env',$ajax_env,'&');
set_request('redirect', $url);
}
$var_f = charger_fonction($action, 'action');
$var_f();
if (isset($GLOBALS['redirect'])
OR $GLOBALS['redirect'] = _request('redirect')) {
// pour les Ajax qui refabriquent le redirect
// (il y en a ?)
if ($ajax_env AND ($GLOBALS['redirect'] !== $url)) {
$GLOBALS['redirect'] = parametre_url($GLOBALS['redirect'],'var_ajax',$ajax,'&');
$GLOBALS['redirect'] = parametre_url($url,'var_ajax_env',$ajax_env,'&');
}
redirige_par_entete($GLOBALS['redirect']);
}
if (!headers_sent()
AND !ob_get_length())
http_status(204); // No Content
exit;
}
// Il y a du texte a produire, charger le metteur en page // Il y a du texte a produire, charger le metteur en page
include_spip('public/assembler'); include_spip('public/assembler');
// traiter les appels de bloc ajax (ex: pagination)
if ($ajax_env) {
include_spip('inc/filtres');
include_spip('inc/actions');
if ($args = decoder_contexte_ajax($ajax_env)
AND $fond = $args['fond']) {
$contexte = calculer_contexte();
$contexte = array_merge($args, $contexte);
$page = evaluer_fond($fond,$contexte);
$texte = $page['texte'];
} else $texte = _L('signature ajax bloc incorrecte');
ajax_retour($texte);
exit;
}
// cas des formulaires charger/verifier/traiter
if (traiter_formulaires_dynamiques()) exit;
$page = assembler($fond, _request('connect'), $lang); $page = assembler($fond, _request('connect'), $lang);
if (isset($page['status'])) { if (isset($page['status'])) {
......
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2008 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
function traiter_appels_actions(){
// cas de l'appel qui renvoie une redirection (302) ou rien (204)
if ($action = _request('action')) {
include_spip('inc/autoriser');
include_spip('inc/headers');
$url = _request('redirect');
$var_f = charger_fonction($action, 'action');
$var_f();
if (isset($GLOBALS['redirect'])
OR $GLOBALS['redirect'] = _request('redirect')) {
redirige_par_entete($GLOBALS['redirect']);
}
if (!headers_sent()
AND !ob_get_length())
http_status(204); // No Content
return true;
}
return false;
}
// http://doc.spip.org/@refuser_traiter_formulaire_ajax
function refuser_traiter_formulaire_ajax(){
if ($v=_request('var_ajax')
AND $v=='form'
AND $form = _request('formulaire_action')
AND $args = _request('formulaire_action_args')
AND decoder_contexte_ajax($args,$form)!==false) {
// on est bien dans le contexte de traitement d'un formulaire en ajax
// mais traiter ne veut pas
// on le dit a la page qui va resumbit
// sans ajax
include_spip('inc/actions');
ajax_retour('noajax',false);
exit;
}
}
function traiter_appels_inclusions_ajax(){
// traiter les appels de bloc ajax (ex: pagination)
if ($v = _request('var_ajax')
AND $v !== 'form'
AND $args = _request('var_ajax_env')) {
include_spip('inc/filtres');
include_spip('inc/actions');
if ($args = decoder_contexte_ajax($args)
AND $fond = $args['fond']) {
include_spip('public/parametrer');
$contexte = calculer_contexte();
$contexte = array_merge($args, $contexte);
$page = evaluer_fond($fond,$contexte);
$texte = $page['texte'];
}
else
$texte = _L('signature ajax bloc incorrecte');
ajax_retour($page['texte']);
return true; // on a fini le hit
}
return false;
}
// au 1er appel, traite les formulaires dynamiques charger/verifier/traiter
// au 2e se sachant 2e, retourne les messages et erreurs stockes au 1er
// Le 1er renvoie True si il faut faire exit a la sortie
// http://doc.spip.org/@traiter_formulaires_dynamiques
function traiter_formulaires_dynamiques($get=false){
static $post = array();
static $done = false;
if ($get) return $post;
if ($done) return false;
$done = true;
if (!($form = _request('formulaire_action')
AND $args = _request('formulaire_action_args')))
return false; // le hit peut continuer normalement
include_spip('inc/filtres');
if (($args = decoder_contexte_ajax($args,$form))===false) {
include_spip('inc/actions');
spip_log("signature ajax form incorrecte : $form");
return false; // continuons le hit comme si de rien etait
} else {
$verifier = charger_fonction("verifier","formulaires/$form/",true);
$post["erreurs_$form"] = pipeline(
'formulaire_verifier',
array(
'args'=>array('form'=>$form,'args'=>$args),
'data'=>$verifier?call_user_func_array($verifier,$args):array())
);
if ((count($post["erreurs_$form"])==0)){
$rev = "";
if ($traiter = charger_fonction("traiter","formulaires/$form/",true))
$rev = call_user_func_array($traiter,$args);
$rev = pipeline(
'formulaire_traiter',
array(
'args'=>array('form'=>$form,'args'=>$args),
'data'=>$rev)
);
// traiter peut retourner soit un message, soit un array(editable,message)
if (is_array($rev)) {
$post["editable_$form"] = reset($rev);
$post["message_ok_$form"] = end($rev);
} else
$post["message_ok_$form"] = $rev;
}
// si le formulaire a ete soumis en ajax, on le renvoie direct !
if (_request('var_ajax')){
if (find_in_path('formulaire_.php','balise/',true)) {
include_spip('inc/actions');
array_unshift($args,$form);
ajax_retour(inclure_balise_dynamique(call_user_func_array('balise_formulaire__dyn',$args),false),false);
return true; // on a fini le hit
}
}
}
return false; // le hit peut continuer normalement
}
?>
\ No newline at end of file
...@@ -74,83 +74,6 @@ function init_var_mode(){ ...@@ -74,83 +74,6 @@ function init_var_mode(){
} }
} }
// http://doc.spip.org/@refuser_traiter_formulaire_ajax
function refuser_traiter_formulaire_ajax(){
if ($v=_request('var_ajax')
AND $v=='form'
AND $form = _request('formulaire_action')
AND $args = _request('formulaire_action_args')
AND decoder_contexte_ajax($args,$form)!==false) {
// on est bien dans le contexte de traitement d'un formulaire en ajax
// mais traiter ne veut pas
// on le dit a la page qui va resumbit
// sans ajax
include_spip('inc/actions');
ajax_retour('noajax',false);
exit;
}
}
// au 1er appel, traite les formulaires dynamiques charger/verifier/traiter
// au 2e se sachant 2e, retourne les messages et erreurs stockes au 1er
// Le 1er renvoie True si il faut faire exit a la sortie
// http://doc.spip.org/@traiter_formulaires_dynamiques
function traiter_formulaires_dynamiques($get=false){
static $post = array();
static $done = false;
if ($get) return $post;
if ($done) return false;
$done = true;
if (!($form = _request('formulaire_action')
AND $args = _request('formulaire_action_args')))
return false;
include_spip('inc/filtres');
if (($args = decoder_contexte_ajax($args,$form))===false) {
include_spip('inc/actions');
ajax_retour('signature ajax form incorrecte');
return true;
} else {
$verifier = charger_fonction("verifier","formulaires/$form/",true);
$post["erreurs_$form"] = pipeline(
'formulaire_verifier',
array(
'args'=>array('form'=>$form,'args'=>$args),
'data'=>$verifier?call_user_func_array($verifier,$args):array())
);
if ((count($post["erreurs_$form"])==0)){
$rev = "";
if ($traiter = charger_fonction("traiter","formulaires/$form/",true))
$rev = call_user_func_array($traiter,$args);
$rev = pipeline(
'formulaire_traiter',
array(
'args'=>array('form'=>$form,'args'=>$args),
'data'=>$rev)
);
// traiter peut retourner soit un message, soit un array(editable,message)
if (is_array($rev)) {
$post["editable_$form"] = reset($rev);
$post["message_ok_$form"] = end($rev);
} else
$post["message_ok_$form"] = $rev;
}
// si le formulaire a ete soumis en ajax, on le renvoie direct !
if (_request('var_ajax')){
if (find_in_path('formulaire_.php','balise/',true)) {
include_spip('inc/actions');
array_unshift($args,$form);
ajax_retour(inclure_balise_dynamique(call_user_func_array('balise_formulaire__dyn',$args),false),false);
return true;
}
}
}
}
// fonction pour l'envoi de fichier // fonction pour l'envoi de fichier
// http://doc.spip.org/@envoyer_page // http://doc.spip.org/@envoyer_page
function envoyer_page($fond, $contexte) function envoyer_page($fond, $contexte)
......
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