From 71740502e4d4066e03026ccc3ce1a74af54466f6 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Mon, 16 Oct 2006 21:08:38 +0000 Subject: [PATCH] revision des ajax_action_declencheur() a cause d'un bug debile de Safari... j'espere que ca ne casse rien, mais ca permet de contourner un truc bizarre dans le plugin async_upload/, ou l'operation de recopie des noeuds correspondants aux documents ajoutes cassait le onsubmit. --- ecrire/exec/auteurs.php | 2 +- ecrire/inc/actions.php | 21 ++++++++++++++------- ecrire/inc/agenda.php | 2 +- ecrire/inc/discuter.php | 2 +- ecrire/inc/forum.php | 4 ++-- ecrire/inc/legender_auteur.php | 2 +- ecrire/inc/utils.php | 2 +- 7 files changed, 21 insertions(+), 14 deletions(-) diff --git a/ecrire/exec/auteurs.php b/ecrire/exec/auteurs.php index b5d540ee7d..ba87c481b0 100644 --- a/ecrire/exec/auteurs.php +++ b/ecrire/exec/auteurs.php @@ -230,7 +230,7 @@ function auteurs_href($clic, $args='', $att='') $h = generer_url_ecrire('auteurs', $args); $a = 'auteurs'; if ($_COOKIE['spip_accepte_ajax'] == 1 ) - $att .= ("\nonclick=" . ajax_action_declencheur("\"$h\"",$a)); + $att .= ("\nonclick=" . ajax_action_declencheur($h,$a)); return "<a href='$h#$a'$att>$clic</a>"; } diff --git a/ecrire/inc/actions.php b/ecrire/inc/actions.php index 41926642fa..2d15a5b005 100644 --- a/ecrire/inc/actions.php +++ b/ecrire/inc/actions.php @@ -179,21 +179,28 @@ function ajax_action_auteur($action, $id, $script, $args='', $corps=false, $args if ($att) $clic = "\n<div$att>$clic</div>"; return "<a href='$href'\nonclick=" - . ajax_action_declencheur("\"$ajax\"", $ancre, $fct_ajax) + . ajax_action_declencheur($ajax, $ancre, $fct_ajax) . ">$clic</a>"; } } +// +// Attention pour que Safari puisse manipuler cet evenement +// il faut onsubmit="return AjaxSqueeze(x,'truc',...)" +// et non pas onsubmit='return AjaxSqueeze(x,"truc",...)' +// // http://doc.spip.org/@ajax_action_declencheur -function ajax_action_declencheur($request, $noeud, $fct_ajax='') -{ - return "'return AjaxSqueeze(" +function ajax_action_declencheur($request, $noeud, $fct_ajax='') { + if ($request != 'this') + $request = "'".$request."'"; + + return '"return AjaxSqueeze(' . $request - . ',"' + . ",'" . $noeud - . '"' + . "'" . (!$fct_ajax ? '' : ",$fct_ajax") - . ")'"; + . ')"'; } // http://doc.spip.org/@ajax_action_greffe diff --git a/ecrire/inc/agenda.php b/ecrire/inc/agenda.php index d11738ce39..8857f4a7c5 100644 --- a/ecrire/inc/agenda.php +++ b/ecrire/inc/agenda.php @@ -91,7 +91,7 @@ function calendrier_href($script, $annee, $mois, $jour, $type, $fin, $ancre, $im return http_href("$h$a", $clic, $titre, $style, $class, $evt); else { - $evt .= "\nonclick=" . ajax_action_declencheur("\"$h\"",$ancre); + $evt .= "\nonclick=" . ajax_action_declencheur($h,$ancre); return "<a$c$s\nhref='$h$a'$evt>$clic</a>"; } } diff --git a/ecrire/inc/discuter.php b/ecrire/inc/discuter.php index 3c0dd6f5e0..5f436e12ac 100644 --- a/ecrire/inc/discuter.php +++ b/ecrire/inc/discuter.php @@ -32,7 +32,7 @@ function formulaire_discuter($query, $total, $debut, $total_afficher, $script, $ $h = generer_url_ecrire($script, $a); } else { $h = generer_url_ecrire('discuter', $a); - $evt = "\nonclick=" . ajax_action_declencheur("\"$h\"",'forum'); + $evt = "\nonclick=" . ajax_action_declencheur($h,'forum'); } $nav .= "[<a href='$h#forum'$evt>$i-$y</a>] "; } diff --git a/ecrire/inc/forum.php b/ecrire/inc/forum.php index ea3f66517e..134f4d509c 100644 --- a/ecrire/inc/forum.php +++ b/ecrire/inc/forum.php @@ -29,7 +29,7 @@ function affiche_navigation_forum($script, $args, $debut, $i, $pack, $ancre, $qu $nav .= "<font size=3><b>$i</b></font> |\n"; else { $h = generer_url_ecrire($script, $args . "&debut=$i", $e); - if ($e) $e = "\nonclick=" . ajax_action_declencheur("\"$h\"",$ancre); + if ($e) $e = "\nonclick=" . ajax_action_declencheur($h,$ancre); $nav .= "<a href='$h'$e>$i</a> |\n"; } } @@ -38,7 +38,7 @@ function affiche_navigation_forum($script, $args, $debut, $i, $pack, $ancre, $qu $h = generer_url_ecrire($script, $args . "&debut=$i"); - if ($e) $e = "\nonclick=" . ajax_action_declencheur("\"$h\"",$ancre); + if ($e) $e = "\nonclick=" . ajax_action_declencheur($h,$ancre); return "$nav<a href='$h'$e>...</a> |"; } diff --git a/ecrire/inc/legender_auteur.php b/ecrire/inc/legender_auteur.php index c17a2072be..f414786bc8 100644 --- a/ecrire/inc/legender_auteur.php +++ b/ecrire/inc/legender_auteur.php @@ -264,7 +264,7 @@ function legender_auteur_voir($auteur, $redirect) $clic = _T("admin_modifier_auteur"); $h = generer_url_ecrire("auteur_infos","id_auteur=$id_auteur&initial=0"); if (($_COOKIE['spip_accepte_ajax'] == 1 ) AND !$redirect) { - $evt .= "\nonclick=" . ajax_action_declencheur("\"$h\"",$ancre); + $evt .= "\nonclick=" . ajax_action_declencheur($h,$ancre); $h = "<a\nhref='$h$a'$evt>$clic</a>"; } $res .= icone($clic, $h, "redacteurs-24.gif", "edit.gif", '', '',true); diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php index 2e4dea3ea8..1d9f23c712 100644 --- a/ecrire/inc/utils.php +++ b/ecrire/inc/utils.php @@ -30,7 +30,7 @@ function charger_fonction($nom, $dossier='exec', $continue=false) { // Securite de base if (!preg_match(',^\w+$,', $nom)) - redirige_par_entete('./'); + die(htmlspecialchars($nom)." pas autorise"); if (substr($dossier,-1) != '/') $dossier .= '/'; // Si la fonction existe deja (definie par mes_options, par exemple) -- GitLab