Pouvoir vérifier les valeurs acceptables au niveau individuel de chaque #173

Closed
maieul wants to merge 1 commits from valeur_acceptable_par_saisie into master
  1. 31
      inc/saisies_verifier.php
  2. 1
      lang/saisies_fr.php
  3. 8
      saisies/_base/verifier_valeurs_acceptables.yaml
  4. 1
      saisies/auteurs.yaml
  5. 1
      saisies/case.yaml
  6. 1
      saisies/checkbox.yaml
  7. 1
      saisies/date.yaml
  8. 1
      saisies/email.yaml
  9. 8
      saisies/hidden.yaml
  10. 1
      saisies/input.yaml
  11. 1
      saisies/oui_non.yaml
  12. 1
      saisies/radio.yaml
  13. 1
      saisies/selection.yaml
  14. 1
      saisies/selection_multiple.yaml
  15. 1
      saisies/textarea.yaml

31
inc/saisies_verifier.php

@ -129,24 +129,27 @@ function saisies_verifier($formulaire, $saisies_masquees_empty_string = true, $e
}
// Vérifier que les valeurs postées sont acceptables, à savoir par exemple que pour un select, ce soit ce qu'on a proposé. On vérifie cela en tout dernier, après le vidage des afficher_si car certainses saisies peuvent avoir des valeurs acceptables qui dépendant des afficher_si (exemple : les saisies calculs). Si jamais on a une valeur innacceptable, c'est que la personne a triché sur le POST en truandant le HTML, donc on s'en fiche si en retour son formulaire d'erreur n'est pas cohérent.
if (isset($formulaire['options']['verifier_valeurs_acceptables'])
and $formulaire['options']['verifier_valeurs_acceptables']
) {
$erreurs = saisies_verifier_valeurs_acceptables($saisies_etape_courante_apres_verification_afficher_si_par_nom, $erreurs);
}
// Vérifier que les valeurs postées sont acceptables, à savoir par exemple que pour un select, ce soit ce qu'on a proposé.
// On vérifie cela en tout dernier, après le vidage des afficher_si car certainses saisies peuvent avoir des valeurs acceptables qui dépendant des afficher_si (exemple : les saisies calculs).
// Si jamais on a une valeur innacceptable, c'est que la personne a triché sur le POST en truandant le HTML, donc on s'en fiche si en retour son formulaire d'erreur n'est pas cohérent.
$erreurs = saisies_verifier_valeurs_acceptables(
$saisies_etape_courante_apres_verification_afficher_si_par_nom,
$erreurs,
$formulaire['options']['verifier_valeurs_acceptables'] ?? false
);
return $erreurs;
}
/**
* Vérifier que les valeurs postées sont acceptables,
* c'est-à-dire qu'elles ont été proposées lors de la conception de la saisie.
* Typiquement pour une saisie radio, vérifier que les gens n'ont pas postée une autre fleur.
* @param $saisies array tableau général des saisies, déjà aplati, classé par nom de champ
* @param $erreurs array tableau des erreurs
* Typiquement pour une saisie radio, vérifier que les gens n'ont pas postée une autre clé.
* @param array $saisies tableau général des saisies, déjà aplati, classé par nom de champ
* @param array $erreurs tableau des erreurs
* @param bool $global si true, vérifie toutes les saisies, sinon vérifie uniquement celle demandé
* @return array table des erreurs modifiés
**/
function saisies_verifier_valeurs_acceptables($saisies, $erreurs) {
function saisies_verifier_valeurs_acceptables(array $saisies, array $erreurs, bool $global = false): array {
foreach ($saisies as $saisie => $description) {
$type = $description['saisie'];
@ -154,10 +157,15 @@ function saisies_verifier_valeurs_acceptables($saisies, $erreurs) {
if (isset($erreurs[$saisie])) {
continue;
}
//Il n'y a rien à vérifier sur une description / fieldset
// Pas la peine non plus de vérifier si on ne le demande pas !
if (!$global and !($description['options']['verifier_valeurs_acceptables'] ?? false)) {
continue;
}
//Ni sur une description ou un fieldset
if (in_array($description['saisie'], array('explication','fieldset'))) {
continue;
}
//
if (include_spip("saisies/$type")) {
$f = $type.'_valeurs_acceptables';
if (function_exists($f)) {
@ -172,6 +180,7 @@ function saisies_verifier_valeurs_acceptables($saisies, $erreurs) {
} else {
spip_log("Pas de fonction de vérification pour la saisie $saisie de type $type", "saisies"._LOG_INFO);
}
}
return $erreurs;
}

1
lang/saisies_fr.php

@ -281,6 +281,7 @@ Vous trouverez la <a href="https://contrib.spip.net/5080" target="_blank" rel="n
'verifier_saisies_option_data_sous_groupes_interdits' => 'Syntaxe incorrecte. Les sous-groupes ne sont pas autorisés.',
'verifier_saisies_option_data_verifier_cles_erreurs' => 'Syntaxe incorrecte. Certaines clés ne répondent pas aux critères.',
'verifier_valeurs_acceptables_explication' => 'Vérifier que la valeur postée se trouve parmi celles autorisées lors de la définition des champs. Ne pas utiliser cette option si vous remplissez dynamiquement des champs dans vos squelettes ou les remplissez grâce à javascript.',
'verifier_valeurs_acceptables_explication_individuelle' => 'Vérifier que la valeur postée se trouve parmi celles autorisées lors de la définition du champ. Ne pas utiliser cette option si vous remplissez dynamiquement le champ dans vos squelettes ou le remplissez grâce à javascript.',
'verifier_valeurs_acceptables_label' => 'Vérifier les valeurs acceptables',
'vue_sans_reponse' => '<i>Sans réponse</i>',

8
saisies/_base/verifier_valeurs_acceptables.yaml

@ -0,0 +1,8 @@
-
saisie: 'case'
options:
nom: 'verifier_valeurs_acceptables'
label_case: '<:saisies:verifier_valeurs_acceptables_label:>'
explication: '<:saisies:verifier_valeurs_acceptables_explication_individuelle:>'
conteneur_class: 'pleine_largeur'

1
saisies/auteurs.yaml

@ -114,6 +114,7 @@ options:
label: '<:saisies:option_groupe_validation:>'
saisies:
- 'inclure:saisies/_base/obligatoire.yaml'
- 'inclure:saisies/_base/verifier_valeurs_acceptables.yaml'
options_dev:
- 'inclure:saisies/_base/options_dev.yaml'
defaut:

1
saisies/case.yaml

@ -124,6 +124,7 @@ options:
label: '<:saisies:option_groupe_validation:>'
saisies:
- 'inclure:saisies/_base/obligatoire.yaml'
- 'inclure:saisies/_base/verifier_valeurs_acceptables.yaml'
options_dev:
- 'inclure:saisies/_base/options_dev.yaml'
defaut:

1
saisies/checkbox.yaml

@ -132,6 +132,7 @@ options:
label: '<:saisies:option_groupe_validation:>'
saisies:
- 'inclure:saisies/_base/obligatoire.yaml'
- 'inclure:saisies/_base/verifier_valeurs_acceptables.yaml'
options_dev:
- 'inclure:saisies/_base/options_dev.yaml'
defaut:

1
saisies/date.yaml

@ -114,6 +114,7 @@ options:
label: '<:saisies:option_groupe_validation:>'
saisies:
- 'inclure:saisies/_base/obligatoire.yaml'
- 'inclure:saisies/_base/verifier_valeurs_acceptables.yaml'
options_dev:
- 'inclure:saisies/_base/options_dev.yaml'
defaut:

1
saisies/email.yaml

@ -133,6 +133,7 @@ options:
label: '<:saisies:option_groupe_validation:>'
saisies:
- 'inclure:saisies/_base/obligatoire.yaml'
- 'inclure:saisies/_base/verifier_valeurs_acceptables.yaml'
options_dev:
- 'inclure:saisies/_base/options_dev.yaml'
defaut:

8
saisies/hidden.yaml

@ -44,6 +44,14 @@ options:
label: '<:saisies:option_groupe_affichage:>'
saisies:
- 'inclure:saisies/_base/afficher_si.yaml'
-
saisie: 'fieldset'
options:
nom: 'validation'
label: '<:saisies:option_groupe_validation:>'
saisies:
- 'inclure:saisies/_base/verifier_valeurs_acceptables.yaml'
options_dev:
- 'inclure:saisies/_base/options_dev.yaml'
defaut:

1
saisies/input.yaml

@ -136,6 +136,7 @@ options:
label: '<:saisies:option_groupe_validation:>'
saisies:
- 'inclure:saisies/_base/obligatoire.yaml'
- 'inclure:saisies/_base/verifier_valeurs_acceptables.yaml'
options_dev:
- 'inclure:saisies/_base/options_dev.yaml'
defaut:

1
saisies/oui_non.yaml

@ -86,6 +86,7 @@ options:
label: '<:saisies:option_groupe_validation:>'
saisies:
- 'inclure:saisies/_base/obligatoire.yaml'
- 'inclure:saisies/_base/verifier_valeurs_acceptables.yaml'
options_dev:
- 'inclure:saisies/_base/options_dev.yaml'
defaut:

1
saisies/radio.yaml

@ -107,6 +107,7 @@ options:
label: '<:saisies:option_groupe_validation:>'
saisies:
- 'inclure:saisies/_base/obligatoire.yaml'
- 'inclure:saisies/_base/verifier_valeurs_acceptables.yaml'
options_dev:
- 'inclure:saisies/_base/options_dev.yaml'
defaut:

1
saisies/selection.yaml

@ -136,6 +136,7 @@ options:
label: '<:saisies:option_groupe_validation:>'
saisies:
- 'inclure:saisies/_base/obligatoire.yaml'
- 'inclure:saisies/_base/verifier_valeurs_acceptables.yaml'
options_dev:
- 'inclure:saisies/_base/options_dev.yaml'
defaut:

1
saisies/selection_multiple.yaml

@ -119,6 +119,7 @@ options:
label: '<:saisies:option_groupe_validation:>'
saisies:
- 'inclure:saisies/_base/obligatoire.yaml'
- 'inclure:saisies/_base/verifier_valeurs_acceptables.yaml'
options_dev:
- 'inclure:saisies/_base/options_dev.yaml'
defaut:

1
saisies/textarea.yaml

@ -137,6 +137,7 @@ options:
label: '<:saisies:option_maxlength_label:>'
explication: '<:saisies:option_maxlength_explication:>'
- 'inclure:saisies/_base/obligatoire.yaml'
- 'inclure:saisies/_base/verifier_valeurs_acceptables.yaml'
options_dev:
- 'inclure:saisies/_base/options_dev.yaml'
defaut:

Loading…
Cancel
Save