From 62d9185ef3ae4f46156e3bdddfd931e19cd6a7a0 Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Thu, 8 May 2008 16:45:03 +0000 Subject: [PATCH] les actions sont appelees depuis le repertoire en cours : a la racine depuis le public dans ecrire/ dans l'espace prive les parametres d'environnement ajax sont propagees automatiquement au redirect si besoin --- ecrire/inc/utils.php | 15 +++++++++++++-- ecrire/index.php | 2 +- ecrire/public.php | 18 ++---------------- ecrire/public/assembler.php | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 51 insertions(+), 19 deletions(-) diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 7449a06c6c..88d7e89aba 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -919,9 +919,20 @@ function generer_form_public($script, $corps, $atts='') { // http://doc.spip.org/@generer_url_action function generer_url_action($script, $args="", $no_entities=false ,$rel = false) { - return generer_url_public('', + $url = './'; + $url = parametre_url($url,'action',$script); + if ($args) $url .= '&'.$args; + if ($redirect = parametre_url($url,'redirect')){ + if (test_espace_prive() + AND substr($redirect,0,strlen(_DIR_RESTREINT_ABS))==_DIR_RESTREINT_ABS) + $redirect = './'.substr($redirect,strlen(_DIR_RESTREINT_ABS)); + $url = parametre_url($url,'redirect',$redirect); + } + if ($no_entities) $url = str_replace('&','&',$url); + /*return generer_url_public('', "action=$script" .($args ? "&$args" : ''), - $no_entities,$rel); + $no_entities,$rel);*/ + return $url; } diff --git a/ecrire/index.php b/ecrire/index.php index 1b89eb6ce2..daa1b83df6 100644 --- a/ecrire/index.php +++ b/ecrire/index.php @@ -169,7 +169,7 @@ AND $l = @unserialize($l)) { } } -if (_request('var_ajax') OR _request('formulaire_action')){ +if (_request('action') OR _request('var_ajax') OR _request('formulaire_action')){ include_spip('public/assembler'); traiter_formulaires_dynamiques(); } diff --git a/ecrire/public.php b/ecrire/public.php index e64b262134..3c0e5f3358 100644 --- a/ecrire/public.php +++ b/ecrire/public.php @@ -55,22 +55,8 @@ if ($GLOBALS['_INC_PUBLIC']>0) { // Est-ce une action ? - if ($action = _request('action')) { - define('_ESPACE_PRIVE', true); - include_spip('base/abstract_sql'); // chargement systematique pour les actions - include_spip('inc/autoriser'); // chargement systematique pour les actions - include_spip('inc/headers'); - $var_f = charger_fonction($action, 'action'); - $var_f(); - if ($GLOBALS['redirect'] - OR $GLOBALS['redirect'] = _request('redirect')) - redirige_par_entete(urldecode($GLOBALS['redirect'])); - - if (!headers_sent() - AND !ob_get_length()) - http_status(204); // No Content - exit; - } + // les action sont gerees dans public/assembler/traiter_formulaires_dynamiques + // de maniere unifiees public/prive /* // Code experimental pour faire marcher ecrire/ a partir de spip.php // pour tester decommenter et indiquer dans mes_options : diff --git a/ecrire/public/assembler.php b/ecrire/public/assembler.php index 1d706e5f21..7348652ba6 100644 --- a/ecrire/public/assembler.php +++ b/ecrire/public/assembler.php @@ -78,6 +78,41 @@ function init_var_mode(){ function traiter_formulaires_dynamiques(){ static $done = false; if (!$done) { + if ($action = _request('action')) { + define('_ESPACE_PRIVE', true); + include_spip('base/abstract_sql'); // chargement systematique pour les actions + include_spip('inc/autoriser'); // chargement systematique pour les actions + include_spip('inc/headers'); + if (($v=_request('var_ajax')) + AND ($v!=='form') + AND ($args = _request('var_ajax_env')) + AND ($cle = _request('var_ajax_cle')) + AND ($url = _request('redirect'))){ + $url = parametre_url($url,'var_ajax',$v,'&'); + $url = parametre_url($url,'var_ajax_env',$args,'&'); + $url = parametre_url($url,'var_ajax_cle',$cle,'&'); + set_request('redirect',$url); + } + $var_f = charger_fonction($action, 'action'); + $var_f(); + if ($GLOBALS['redirect'] + OR $GLOBALS['redirect'] = _request('redirect')){ + $url = urldecode($GLOBALS['redirect']); + if (($v=_request('var_ajax')) + AND ($v!=='form') + AND ($args = _request('var_ajax_env')) + AND ($cle = _request('var_ajax_cle')) ){ + $url = parametre_url($url,'var_ajax',$v,'&'); + $url = parametre_url($url,'var_ajax_env',$args,'&'); + $url = parametre_url($url,'var_ajax_cle',$cle,'&'); + } + redirige_par_entete($url); + } + if (!headers_sent() + AND !ob_get_length()) + http_status(204); // No Content + exit; + } // traiter les appels de bloc ajax if (($v=_request('var_ajax')) AND ($v!=='form') -- GitLab