Formidable et l'unicité des réponses

Re bonjour

Avec formidable, le test d'unicité d'un champ cohabite mal avec la modification d'une réponse. Toute modification est refusée avec le message d'erreur quand le champ n'est pas unique. Il faudrait exclure la réponse courante quand le test est fait.

Le patch suivant semble fonctionner :

--- plugins/auto/formidable/v3.19.0//formulaires/formidable.php.orig 2018-10-02 18:05:38.000000000 +0200
+++ plugins/auto/formidable/v3.19.0//formulaires/formidable.php 2018-10-02 18:07:33.000000000 +0200
@@ -249,8 +249,9 @@
              ON R.id_formulaire=F.id_formulaire
              LEFT JOIN spip_formulaires_reponses_champs AS C
              ON R.id_formulaires_reponse=C.id_formulaires_reponse',
            'R.id_formulaire = ' . $id_formulaire . '
+ AND R.id_formulaires_reponse != '.$id_formulaires_reponse.'
              AND C.nom='.sql_quote($formulaire['unicite']).'
              AND C.valeur='.sql_quote(_request($formulaire['unicite'])).'
              AND R.statut = "publie"'
          );

--
Florence HENRY
LESIA - CNRS / Observatoire de Paris

Le 02/10/2018 à 18:09, Florence HENRY a écrit :

Re bonjour

Avec formidable, le test d'unicité d'un champ cohabite mal avec la modification d'une réponse. Toute modification est refusée avec le message d'erreur quand le champ n'est pas unique. Il faudrait exclure la réponse courante quand le test est fait.

Le patch suivant semble fonctionner :

--- plugins/auto/formidable/v3.19.0//formulaires/formidable.php.orig 2018-10-02 18:05:38.000000000 +0200
+++ plugins/auto/formidable/v3.19.0//formulaires/formidable.php 2018-10-02 18:07:33.000000000 +0200
@@ -249,8 +249,9 @@
ON R.id_formulaire=F.id_formulaire
LEFT JOIN spip_formulaires_reponses_champs AS C
ON R.id_formulaires_reponse=C.id_formulaires_reponse',
'R.id_formulaire = ' . $id_formulaire . '
+ AND R.id_formulaires_reponse != '.$id_formulaires_reponse.'
AND C.nom='.sql_quote($formulaire['unicite']).'
AND C.valeur='.sql_quote(_request($formulaire['unicite'])).'
AND R.statut = "publie"'
);

salut,
je te suggère de poster cela sur spip-zone@rezo.net, voir même encore mieux de demander un accès svn à la zone pour faire directement la modif.

Par contre... je ne comprend pas ce qu'est le champ unicité, et où cela se configure?

Le 02/10/2018 à 18:20, Maïeul a écrit :

Le 02/10/2018 à 18:09, Florence HENRY a écrit :

Re bonjour

Avec formidable, le test d'unicité d'un champ cohabite mal avec la modification d'une réponse. Toute modification est refusée avec le message d'erreur quand le champ n'est pas unique. Il faudrait exclure la réponse courante quand le test est fait.

Le patch suivant semble fonctionner :

--- plugins/auto/formidable/v3.19.0//formulaires/formidable.php.orig 2018-10-02 18:05:38.000000000 +0200
+++ plugins/auto/formidable/v3.19.0//formulaires/formidable.php 2018-10-02 18:07:33.000000000 +0200
@@ -249,8 +249,9 @@
ON R.id_formulaire=F.id_formulaire
LEFT JOIN spip_formulaires_reponses_champs AS C
ON R.id_formulaires_reponse=C.id_formulaires_reponse',
'R.id_formulaire = ' . $id_formulaire . '
+ AND R.id_formulaires_reponse != '.$id_formulaires_reponse.'
AND C.nom='.sql_quote($formulaire['unicite']).'
AND C.valeur='.sql_quote(_request($formulaire['unicite'])).'
AND R.statut = "publie"'
);

salut,
je te suggère de poster cela sur spip-zone@rezo.net, voir même encore mieux de demander un accès svn à la zone pour faire directement la modif.

Ok . je poste. je préfère que quelqu'un d'autre vérifie un éventuel effet de bord

Par contre... je ne comprend pas ce qu'est le champ unicité, et où cela se configure?

Dans la page "Configurer le formulaire", il y a :

Vérifier l’unicité d’un champ :
Enregistrer le formulaire seulement si un champ est unique
et un sélecteur où on choisit le champ qui doit être unique et le message d'erreur à afficher en cas de non unicité

--
Florence HENRY
LESIA - CNRS / Observatoire de Paris

Le mardi 02 octobre 2018 à 18:24 +0200, Florence HENRY a écrit :

Le 02/10/2018 à 18:20, Maïeul a écrit :
> Le 02/10/2018 à 18:09, Florence HENRY a écrit :
> > Re bonjour
> >
> > Avec formidable, le test d'unicité d'un champ cohabite mal avec
> > la
> > modification d'une réponse. Toute modification est refusée avec
> > le
> > message d'erreur quand le champ n'est pas unique. Il faudrait
> > exclure
> > la réponse courante quand le test est fait.
> >
> > Le patch suivant semble fonctionner :
> >
> > ---
> > plugins/auto/formidable/v3.19.0//formulaires/formidable.php.orig
> > 2018-10-02 18:05:38.000000000 +0200
> > +++ plugins/auto/formidable/v3.19.0//formulaires/formidable.php
> > 2018-10-02 18:07:33.000000000 +0200
> > @@ -249,8 +249,9 @@
> > ON R.id_formulaire=F.id_formulaire
> > LEFT JOIN
> > spip_formulaires_reponses_champs AS C
> > ON
> > R.id_formulaires_reponse=C.id_formulaires_reponse',
> > 'R.id_formulaire = ' . $id_formulaire . '
> > + AND R.id_formulaires_reponse !=
> > '.$id_formulaires_reponse.'
> > AND
> > C.nom='.sql_quote($formulaire['unicite']).'
> > AND
> > C.valeur='.sql_quote(_request($formulaire['unicite'])).'
> > AND R.statut = "publie"'
> > );
> >
>
> salut,
> je te suggère de poster cela sur spip-zone@rezo.net, voir même
> encore
> mieux de demander un accès svn à la zone pour faire directement la
> modif.

Ok . je poste. je préfère que quelqu'un d'autre vérifie un éventuel
effet de bord

> Par contre... je ne comprend pas ce qu'est le champ unicité, et où
> cela
> se configure?

Dans la page "Configurer le formulaire", il y a :

Vérifier l’unicité d’un champ :
Enregistrer le formulaire seulement si un champ est unique
et un sélecteur où on choisit le champ qui doit être unique et le
message d'erreur à afficher en cas de non unicité

oui, je viens de voir. Je ne connaissais pas cette option. Et je trouve
la formulation pas hyper éclairante.
Deja en terme ergonomique peux tu me confirmer
1. Qu'il s'agit bien d'une option concernant l'enregistrement des
réponses, et donc que cela devrait se trouver au moment de la
configuration du traitement "enregistrer"
2. Que la phrase explicative serait "Enregistrer le formulaire
uniquement si la valeur du champ ci-dessous est unique" ?

Le 02/10/2018 à 18:24, Florence HENRY a écrit :

Ok . je poste. je préfère que quelqu'un d'autre vérifie un éventuel
effet de bord

Attention, tu l'as posté sur spip-dev, qui parle uniquement du
développement du noyau, et pas sur spip-zone qui sert à discuter des
plugins :slight_smile:

--
RastaPopoulos