Interdire le html
Besoin
Suite à 2f148c1d, et sur suggestion de @cerdic la question se pose d'interdire le HTML avec message d'avertissement lors de la soumission de formidable, sauf exception.
Proposition 1
@rastapopoulos écrivait ceci dans une conversation privée
Pour le HTML ça serait pas mal comme disait Cédric, un nettoyage par défaut dans verifier() mais qui poste pas directement et montre l'erreur + une option "autoriser le HTML" pour les cas explicites où un user voudrait. Mais du coup ça voudrait dire rajouter l'option par pipeline depuis Formidable dans toutes les saisies qui permettent de saisir du texte (liste en dur ?…). Du genre
verifier(…) {
foreach ($saisies_de_texte as $saisie) {
if (!$saisie['options']['autoriser_html']) {
$valeur = _request($saisie['options']['nom']);
$sans_html = striptags($valeur);
if ($valeur != $sans_html) {
set_request($saisie['options']['nom'], $sans_html);
$erreurs[$saisie['options']['nom']] = 'Le HTML est interdit dans ce champ, veuillez vérifier votre saisie.';
}
}
}
return $erreurs;
}
Proposition 2
Pour ma part je pense qu'il faut faire les choses un peu plus intelligement, pour mieux séparer les choses
- Deja, pour le teste de la présence de HTML, faudrait que ce soit dans le plugin
verifier
, une vérification supplémentaire, comme cela ca profiterait à d'autres - Ensuite, on pourrait décider qu'à la création d'une nouvelle saisie dans formidable, on ajoute automatiquement cette vérification
a. soit par le pipeline
saisies_verifier_lister_disponibles
qui permet de dire qu'une saisie est obligatoire (mais je pense pas que cela soit pertinent) b. Soit par un autre mécanisme à la création de la saisie (par ex une fonctionconstruire_formulaire_formidable_ajouter_saisie()
qui serait appelée automatiquement, soit via le pipelinesaisies_lister_disponibles
, mais ce dernier ne reçoit pas d'argument, donc bof c. Concernant la question de "toute les saisies permettant de saisir du texte", je pense que saisie pourrait fournir un API du sytlesaisies_est_textuelle()
qui renvoie false si la saisie peut avoir data ou la saisie n'est pas champ
Reste la question d'appliquer cela retroactivement aux formulaires existants. Il me semble qu'on pourrait
- Soit décider de ne pas le faire, histoire de ne pas surprendre les gens
- Soit faire un petit script de migration