L’intérêt de cette balise est qu’elle permet de transmettre des arguments à une url grâce à un pseudo-lien non suivable par un robot (les robots ne « cliquent » pas sur un bouton submit).
C’est particulièrement utile dans le cadre d’une url qui renvoit vers un script d’intervention sur les données en base. Il faut alors protéger le lien vers cette url de tout risque d’être suivi par un robot.
#BOUTON_ACTION
est là pour ça.
La balise est à utiliser ainsi :
#BOUTON_ACTION{libellé, url, class, message de confirmation}
Le 1er argument indique le libellé du bouton.
Le 2e argument, url
, pourra être fourni par la balise #URL_ACTION_AUTEUR
.
Le 3e argument, optionnel, est un nom de classe css ou une suite de classes CSS, qui s’appliquent au bouton ; lui donner la valeur « ajax » permet au bouton de se comporter comme un lien ajax ; avec la classe « noscroll » en plus, l’appel ajax se fait sans que le navigateur ne scrolle au début de la page.
Depuis SPIP 4.0, si cet argument contient ’ajax’, c’est au formulaire qui contient le bouton qu’est affectée la classe ’ajax’. Au besoin, on peut utiliser le filtre |ajouter_class
pour attribuer d’autres classes au formulaire.
Le 4e argument, optionnel, permet de préciser le message de confirmation affiché lors de la validation du bouton.
- Attention :
- si vous désirez préciser un message de confirmation, vous devez aussi renseigner le 3e argument :
#BOUTON_ACTION{libellé, url ,message de confirmation}
ne fonctionnera pas comme vous l’entendez (« message de confirmation » sera passé comme nom de classe css). Pour préciser un message de confirmation sans préciser de classe css, écrire :#BOUTON_ACTION{libellé, url , '', message de confirmation}
- Si vous utilisez des caractères accentués dans votre message de confirmation, vous devez les traduire en référence numérique de caractère (
é
=>é
).
Exemple :
#BOUTON_ACTION{valider, #URL_PAGE{mon_script}|parametre_url{var1, val1}|parametre_url{var2, val2}|parametre_url{var3, val3}, ajax, êtes-vous sûr ?}
produira le source html suivant :
<form class='bouton_action_post ajax' method='post' action='./?page=mon_script&var1=val1&var2=val2&var3=val3'>
<div>
<input name="page" value="mon_script" type="hidden" />
<input name="var1" value="val1" type="hidden" />
<input name="var2" value="val2" type="hidden" />
<input name="var3" value="val3" type="hidden" />
<button type='submit' class='submit' onclick='return confirm("êtes-vous sûr ?");'>valider</button>
</div>
</form>
Le 5eme argument, facultatif, est le title
du bouton
Le 6eme argument, facultatif, est un callback
sur le onclick
de la balise générée. Un exemple figure dans la documentation de ajaxReload.
Voir aussi
La fonction balise_BOUTON_ACTION_dist qui apporte encore quelques précisions sur la balise éponyme.