diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 7449a06c6c59d1c2e35927aa4215c572e6e84cc3..88d7e89aba610cf7fc00f60579bebeb3a0cad802 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 1b89eb6ce22455fd376907ba13ce8ef43cce5edc..daa1b83df61c2addc828d1c3601fc43ba0ea6cc3 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 e64b26213463410f2e041267657a71b5ba243d45..3c0e5f3358805d7d9403eb08ec3af952dc262f98 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 1d706e5f2156610165a1f1a0537f2139df5cc26e..7348652ba66c1e62d60499a43efad497056f94cc 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')