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 "$clic";
}
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
$clic
";
return "$clic";
}
}
+//
+// 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 "$clic";
}
}
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 .= "[$i-$y] ";
}
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 .= "$i |\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 .= "$i |\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... |";
}
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 = "$clic";
}
$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)