Project

General

Profile

Anomalie #3712

Config et saisie de type oui/non par défaut à oui

Added by RealET 🔸 over 3 years ago. Updated over 2 years ago.

Status:
Fermé
Priority:
Normal
Assignee:
-
Category:
formulaires
Target version:
Start date:
02/21/2016
Due date:
% Done:

0%

Resolution:
fixed
Navigateur:

Description

Bonjour,

Soit un formulaire de de configuration (en PJ) appelé par ecrire/?exec=configurer_testouinon
Ce formulaire utilise le plugin saisie et contient une saisie oui_non avec comme valeur par défaut oui :
[(#SAISIE{oui_non,testoui,
label=Test défaut oui,
defaut=on}
)]

En affichant la page de configuration dans l'admin de SPIP, on constate que la saisie oui_non est toujours à non, même quand la valeur par défaut indique que ça devrait être oui.
J'ai vérifié en dehors de l'admin/configuration, la même saisie a sa valeur par défaut correctement interprétée.

Après recherches, c'est inc/cvt_configurer.php ligne 262 qui ne renvoit que des chaines vides quand ça n'est pas configuré (pas de valeur dans spip_meta) au lieu de renvoyer NULL

Patch joint

squelettes.7z (764 Bytes) RealET 🔸, 02/21/2016 04:04 PM

cvt_configurer.php.patch View (439 Bytes) RealET 🔸, 02/21/2016 04:10 PM

History

#1 Updated by RealET 🔸 over 3 years ago

Liste des plugins concernés :
  • emballe média
  • porte plume code
  • ppp (Porte plume partout)
  • tickets (de Arno*)
Squelettes :
  • mediaspip_core
  • soyezcreateurs

#2 Updated by RealET 🔸 over 3 years ago

Rastapopoulos nous a expliqué sur IRC que les CVT de SPIP ne permettaient pas de stocker une valeur nulle.

Mais ici, ce n'est pas ça dont il est question : il s'agit de transmettre à l'initialisation qu'il n'y a pas de valeur renseignée.
Dans ce cas, le mécanisme des #SAISIE qui se base pour certains champs sur un is_null pour sélectionner une valeur par défaut est tout à fait exploitable (et le patch joint fonctionne).

À noter : ces formulaires de config fonctionnaient très bien sous SPIP 2.1 avec le plugin CFG. On a donc ici une régression.

#3 Updated by RealET 🔸 over 3 years ago

  • Target version changed from 3.1 to 3.0

Le code étant exactement le même en 3.0, changement de version cible ;-)

#4 Updated by RealET 🔸 over 3 years ago

Suite à suggestion de Cédric sur IRC, j'ai testé de rajouter valeur_non=0:
[(#SAISIE{oui_non,testoui,
label=Test défaut oui,
valeur_non=0,
defaut=on}
)]

Mais dans ce cas, ça ne marche toujours pas : la valeur par défaut est sur non alors que le code de l'appel de la saisie demande oui (on).
Il faudrait mettre à jour la saisie pour qu'elle ne gère le cas is_null que si valeur_non n'est pas défini ?
Rastapopoulos, ton avis ?

#5 Updated by RealET 🔸 over 3 years ago

Sinon, un contournement possible dans le formulaire de config lui-même :

if (is_null(lire_config('testouinon/testoui'))) {
ecrire_config('testouinon/testoui','on');
}
?>
[(#SAISIE{oui_non,testoui,
label=Test défaut oui,
defaut=on}
)]

#6 Updated by RastaPopoulos ♥ over 3 years ago

Bah le test est toujours "is_null" dans la saisie (et dans "case" aussi). Donc ça ne change rien. Aucun squelette de formulaire (saisies ou pas, peu importe) ne peut utiliser de "is_null" sur les valeurs, c'est un test qui ne fonctionne pas, et ne fonctionnera jamais (tant que le "null" est proscrit comme expliqué).

#7 Updated by b b almost 3 years ago

Du coup, on fait quoi de ce ticket ? Le bug est dans saisies ou dans le core ? Si ça concerne saisies, on peut fermer le ticket.

#8 Updated by marcimat 🌈 over 2 years ago

  • Priority changed from Haut to Normal
  • Target version changed from 3.0 to 3.2

Je pense que ce patch a effectivement un sens.
Lorsque que le formulaire de configuration trouve certains champs, la fonction cvtconf_configurer_lire_meta()
est appelée pour récupérer la valeur de ces champs dans les métas. S'il ne les trouve pas il rempli avec une chaîne vide.
Je pense que null serait plus approprié, que cela concerne saisies ou non d'ailleurs.

#9 Updated by marcimat 🌈 over 2 years ago

  • Status changed from Nouveau to Fermé
  • Resolution set to fixed

Appliqué par r23418.

#10 Updated by b b over 2 years ago

(y) marcimat

Also available in: Atom PDF