Bug #14806
ferméPlusieurs problèmes sur l'ajout d'un abonnement
0%
Description
Exemple: Pour l'abonnement, les 2 paramètres suivant sont utilisés :
Quand on ajoute un abonnement on peut normalement choisir une ou plusieurs valeurs pour chaque critère et un opérateur OU ou ET pour chaque valeur dans la critère :
Cas N°1 : On choisit une ou plusieurs valeurs dans le 1èr critère
Résultat constaté: : erreur
Caused by: org.silverpeas.components.classifieds.model.ClassifiedsRuntimeException: Fail to subscribe to classifieds in application classifieds6183 at deployment.silverpeas.war//org.silverpeas.components.classifieds.service.DefaultClassifiedService.createSubscribe(DefaultClassifiedService.java:470) at deployment.silverpeas.war//org.silverpeas.components.classifieds.service.DefaultClassifiedService$Proxy$_$$_WeldClientProxy.createSubscribe(Unknown Source) at deployment.silverpeas.war//org.silverpeas.components.classifieds.control.ClassifiedsSessionController.createSubscribe(ClassifiedsSessionController.java:465) ... 96 more Caused by: org.postgresql.util.PSQLException: ERROR: null value in column
Cas N°2 : On choisit une valeur dans chaque critère:
Cas N°3 : On choisit plusieurs valeurs dans chaque critère :
Résultat constaté: seule la 1ère valeur de chaque critère est enregistrée et on ne sait pas si l'opérateur est OU ou ET :
Fichiers
Mis à jour par Miguel Moquillon il y a 25 jours
- Statut changé de New à In progress...
- Assigné à mis à Miguel Moquillon
Mis à jour par Miguel Moquillon il y a 24 jours
- Statut changé de In progress... à Feedback
- il y a bien deux bogues :
- les champs du formulaire à partir desquels un abonnement peut se faire ne peuvent être nul dans la base de donnée ; lorsqu'un champs n'est pas valorisé, il faut s'assurer que celui-ci soit enregistré en base sous forme de chaîne de caractères vide
- l'affichage des abonnements sur les champs n'affiche qu'un seul sur les deux même lorsqu'ils sont tous deux valorisés
- et il y a une divergence fonctionnelle entre ce que laisse présager l'IHM et ce qu'il en est dans le code :
Donc que fait on ?
- une seule valeur de chacun des champs peut être valorisée
- il n'y a aucun prise en compte de l'opérateur conditionnel (ET/OU) ; celui-ci n'existe tout simplement pas dans le code. Par défaut, on ne sait pas l'opérateur entre les deux champs parce que ... il n'y a rien de coder pour prendre en compte les abonnements sur champs lorsqu'une annonce est déposée.
- si un abonnement peut être créé ou lister ... aucune fonctionnalité est codée pour leur prise en compte avec les annonces ; par exemple une notification à la publication d'une annonce
Ce que je propose, dans le cadre de cette correction de bogue :
- Virer de l'IHM tout ce qui n'est pas déjà implémenter dans le code. A savoir : les opérateurs conditionnels et la capacité de sélectionner plusieurs valeurs d'un même champs.
- Corriger les bogues
- Implémenter la notification de l'utilisateur lorsqu'une annonce correspond à des critères d'abonnement.
Mis à jour par Miguel Moquillon il y a 24 jours
Après investigation supplémentaire, il s'avère que le décalage entre l'IHM et le fonctionnel codé derrière vient que le formulaire utilisé pour sélectionner les champs sur lesquels l'abonnement doit se faire est celui paramétré dans l'application en vue de la recherche et du filtrage.
Or si tout marche correctement avec le formulaire par défaut de Classifieds, c'est parce que le moteur d'abonnement derrière est basé sur la connaissance de conception de ce formulaire par défaut. Si le formulaire pour les petites annonces sélectionné dans l'application est structuré différemment (par exemple, des critères de recherche multivalués présentés sous forme de checkbox) alors le fonctionnement du mécanisme d'abonnement est cassé.
Pour corriger ce bogue, il est nécessaire alors de casser le lien de dépendance des abonnements d'avec la recherche, et plus exactement d'avec le formulaire de recherche tel que défini dans l'application. L'idée ici est alors de générer programmatiquement en HTML le formulaire de sélection des valeurs des deux champs de filtrage définis dans l'application avec pour contrainte :- Une seule valeur par champs
- L'opérateur conditionnel entre ces deux champs et une conjonction (ET).
Si on veut que le formulaire utilisé pour la recherche soit aussi celui utilisé pour l'abonnement, alors il faut revoir l'implémentation complète du mécanisme d'abonnement dans les Petites Annonces et par conséquent ceci ne peut être qu'une feature et non une correction de bogue.
Mis à jour par Miguel Moquillon il y a 22 jours
- Statut changé de Resolved à Closed
Intégrée dans les branches 6.4.x et master