X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Fpublic%2Faiguiller.php;fp=www%2Fecrire%2Fpublic%2Faiguiller.php;h=873b79055259dbaf47d83249503f7bcf06f1e423;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c
diff --git a/www/ecrire/public/aiguiller.php b/www/ecrire/public/aiguiller.php
new file mode 100644
index 0000000..873b790
--- /dev/null
+++ b/www/ecrire/public/aiguiller.php
@@ -0,0 +1,241 @@
+false));
+ $texte = $page;
+ if ($ancre = _request('var_ajax_ancre')){
+ $texte = "anchor".$texte;
+ }
+ }
+ else {
+ include_spip('inc/headers');
+ http_status(403);
+ $texte = _L('signature ajax bloc incorrecte');
+ }
+ ajax_retour($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) {
+ spip_log("signature ajax form incorrecte : $form");
+ return false; // continuons le hit comme si de rien etait
+ } else {
+ include_spip('inc/lang');
+ // sauvegarder la lang en cours
+ $old_lang = $GLOBALS['spip_lang'];
+ // changer la langue avec celle qui a cours dans le formulaire
+ // on la depile de $args car c'est un argument implicite masque
+ changer_langue(array_shift($args));
+
+
+ $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 = "";
+ $retour = "";
+ 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)
+ );
+ // le retour de traiter peut avoir 3 formats
+ // - simple message texte
+ // - tableau a deux entrees ($editable,$message)
+ // - tableau explicite ('editable'=>$editable,'message_ok'=>$message,'redirect'=>$redirect,'id_xx'=>$id_xx)
+ // le dernier format est celui conseille car il permet le pipelinage, en particulier
+ // en y passant l'id de l'objet cree/modifie
+ // si message_erreur est present, on considere que le traitement a echoue
+ // cas du message texte simple
+ if (!is_array($rev)){
+ $post["message_ok_$form"] = $rev;
+ }
+ // cas du tableau deux valeurs simple (ancien format, deconseille)
+ elseif (count($rev)==2
+ AND !array_key_exists('message_ok',$rev)
+ AND !array_key_exists('message_erreur',$rev)
+ AND !array_key_exists('redirect',$rev)) {
+ $post["editable_$form"] = reset($rev);
+ $post["message_ok_$form"] = end($rev);
+ }
+ // cas du tableau explicite (conseille)
+ else {
+ // verifier si traiter n'a pas echoue avec une erreur :
+ if (isset($rev['message_erreur'])) {
+ $post["erreurs_$form"]["message_erreur"] = $rev['message_erreur'];
+
+ }
+ else {
+ // sinon faire ce qu'il faut :
+ if (isset($rev['message_ok']))
+ $post["message_ok_$form"] = $rev['message_ok'];
+ if (isset($rev['editable']))
+ $post["editable_$form"] = $rev['editable'];
+ // si une redirection est demandee, appeler redirigae_formulaire qui choisira
+ // le bon mode de redirection (302 et on ne revient pas ici, ou javascript et on continue)
+ if (isset($rev['redirect']) AND $rev['redirect']){
+ include_spip('inc/headers');
+ list($masque,$message) = redirige_formulaire($rev['redirect'], '','ajaxform');
+ $post["message_ok_$form"] .= $message;
+ $retour .= $masque;
+ }
+ }
+ }
+ }
+ // 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');
+ include_spip('public/assembler');
+ array_unshift($args,$form);
+ $retour .= inclure_balise_dynamique(call_user_func_array('balise_formulaire__dyn',$args),false);
+ // on ajoute un br en display none en tete du retour ajax pour regler un bug dans IE6/7
+ // sans cela le formulaire n'est pas actif apres le hit ajax
+ $retour = "
".$retour;
+ ajax_retour($retour,false);
+ return true; // on a fini le hit
+ }
+ }
+ // restaurer la lang en cours
+ changer_langue($old_lang);
+ }
+ return false; // le hit peut continuer normalement
+}
+
+?>