formcreator icon indicating copy to clipboard operation
formcreator copied to clipboard

BUG / Gestion entité / intitulé

Open EC2311 opened this issue 4 years ago • 17 comments

Formulaire à la racine (visible sous entité) et utilisant des intitulés de sous entité.

Creation d'un libellé entité (champs supplémentaire) : OK Utilisation de ce libellé via Formulaire (type d'objet intitulé) : ok Je vois toutes les valeurs de ce libellé (via valeurs par defaut de la question) : ok

Lorsque je prévisualise le formulaire, je ne vois que 2 valeurs de ce libellé.

j'ai créé des valeurs d'intitulés à la racine avec visiblité sous-entité : meme probleme... : elles n'apparaissent pas en choix, mais elles apparaissent dans les valeurs par defaut...

EC2311 avatar Dec 09 '21 15:12 EC2311

Bonjour

La restriction par entité dans la dropdown permettant de choisir la valeur par défaut n'est pas implémentée. C'est à vous de choisir une valeur respectant cette contrainte.

Il n'est en effet pas possible d'appliquer la restriction car il y a de nombreux paramètres à prendre en compte et certains sont impossible à déterminer au moment de concevoir le formulaire

  • quel utilisateur va utiliser le formulaire ?
  • dans quelle entité sera-t-il positionné ?
  • utilisera-t-il la récursion ?

Cela se complexifie si on prend en compte la configuration de restriction : formulaire, utilisateur ou les deux.

Je ne suis pas convaincu qu'il y ait une solution.

btry avatar Dec 09 '21 15:12 btry

Je me suis peut etre mal exprimé : Je ne veux pas filtrer du tout. En fait dans le formulaire, en mode creation, et dans les valeurs par défaut, je vois bien TOUTES les valeurs de l'intitulé : pas de souci, et je n'en sélectionne AUCUNE. QUand je passe en prévisualisation, voire meme en execution du formulaire, le champs "selection" de la valeur intitulé ne présente que 2 valeurs, je ne vois pas les autres (soit à la racine, ou sous racine) et c'est la que j'ai le probleme : je ne comprends pas pourquoi seules 2 valeurs (sur 5 meme entité) et 4 (autre entité) sont visibles...

EC2311 avatar Dec 09 '21 16:12 EC2311

Comment est configurée la restriction par entité dans la question ?

image

btry avatar Dec 09 '21 16:12 btry

Je n'ai pas de question sur l'entité image Edit : A priori la notion "d'entité" s'affiche mais disparait quand on selectionne un type d'intitulé.... etrange image image

Voici ce que je vois dans les valeurs par defaut (dans le formulaire en création) : image -> on voit bien toutes les valeurs de l'intitulé : ok

et quand je lance le formulaire en previsualisation : image j'ai essaye de jouer sur la notion d'arbre, mais je pense que c'est pour les 'enfants de'

Le contenu de la table intitulé image

Je ne comprends donc pas pourquoi "au moins l'ensemble" des intitulés n'est pas affiché.

Version plugin : 2.12.3

EC2311 avatar Dec 09 '21 17:12 EC2311

Il me semble que l'absence de cette option est une régression que j'ai corrigé récemment. Vous devriez trouver une PR fermée à ce sujet. Sinon vous pouvez essayer la dernière révision de la branche support/2.12.0 (attention, composer et yarn requis pour assembler les dépendances).

btry avatar Dec 09 '21 18:12 btry

Il y a plusieurs correctifs dans le ticket ci dessous. Appliquez les, ils devraient faire réapparaître l'option manquante.

https://github.com/pluginsGLPI/formcreator/issues/2342

btry avatar Dec 09 '21 18:12 btry

J'ai vérifié ce point : https://github.com/pluginsGLPI/formcreator/commit/3c2c79cfbc2954e4be8f192e0b451d8ed09fc408 : ils y sont.

Dans la table formcreator_question, pour la question spécifiée je vois ceci notamment {"itemtype":"PluginFieldsNumerosemainefieldDropdown","show_tree_depth":"0","show_tree_root":"0","selectable_tree_root":"0","entity_restrict":"2"} ce qui semblerait dire que la gestion de l'entité est bien lié au formulaire, qui lui meme est 'root' mais recursif. Il existe des intitulés à la racine mais aussi en sous entités, comme on le voit dans les valeurs par defaut...

A priori, le numéro de l'id de l'intitulé semble intervenir : si des trous existent dans les intitulés, ils ne semblent pas tous affichés.

EC2311 avatar Dec 13 '21 11:12 EC2311

Y aurait-il moyen de voir la requete qui est lancée lors de l'affichage du dropdown ?

EC2311 avatar Dec 16 '21 08:12 EC2311

Dans inc/fields/dropdownfield.class.php il y a une méthode nommée buildParams().

La récursion n'est pas activée car une ligne de code est mise en commentaire.

Il faudra peut être réactiver et étoffer la récursion pour fonctionner avec les 3 modes de restriction possible. A mon avis, la restriction sur le formulaire et l'utilsiateur en même temps ne sera pas possible sans reflexion approfondie.

https://github.com/pluginsGLPI/formcreator/blob/support/2.12.0/inc/field/dropdownfield.class.php#L225

btry avatar Dec 16 '21 09:12 btry

c'est plutot inc/field/dropdownfield.class

Par contre je ne vois pas trop le lien avec les entités, car j'ai d'autres intitulés (via fields) qui sont multi entités, et dans le meme formulaire, l'affichage est correct... donc a y rien comprendre...

J'ai essayé de passer en mode debug, mais hormis les tables qui sont accédées...

je ne sais pas ou peut se trouver le bug... J'ai recréé un autre intitulé, doublon, meme structure et l'affichage COMPLET est ok... Contenu de la table avec affichage partiel: image

Contenu de la table avec affichage Complet image

J'ai refait ensuite un autre intitulé. Jour de la semaine...Je vois de DImanche (ID=1) jusque Jeudi (Id=5). Les enregistrements ont TOUS la meme structure image

EC2311 avatar Dec 16 '21 11:12 EC2311

Bonjour

J'ai trouvé un cas semblable à votre problème; la cause venait de la mise en cache des relations parent / enfant entre les intitulés. Le cache n'était pas à jour.

Le patch suivant désactive le cache pour les objets arborescents. Il est à appliquer sur GLPI 9.5. Appliquez le pour voir si cela change quelque chose, puis retirez le.

diff --git a/inc/dbutils.class.php b/inc/dbutils.class.php
index 1d8656fe3d..928f5ded7c 100644
--- a/inc/dbutils.class.php
+++ b/inc/dbutils.class.php
@@ -713,7 +713,7 @@ final class DbUtils {
       $ckey = 'sons_cache_' . $table . '_' . $IDf;
       $sons = false;
 
-      if (Toolbox::useCache()) {
+      if (false && Toolbox::useCache()) {
          if ($GLPI_CACHE->has($ckey)) {
             $sons = $GLPI_CACHE->get($ckey);
             if ($sons !== null) {

btry avatar Jan 14 '22 09:01 btry

Bonjour, J'ai le même problème sur mon instance qui tourne sur glpi 9.5.7 et avec FormCreator en version 2.12.5. Il semblerait que le patch ci-dessus ne corrige pas le problème.

tonydecastro avatar Mar 21 '22 16:03 tonydecastro

Bonjour

Essayez ce patch : https://github.com/pluginsGLPI/formcreator/commit/ac36272d1cd3ebdffc467425b154cc4cbfe952ad

btry avatar Mar 21 '22 16:03 btry

Bonjour, Effectivement cela règle le souci sur l'ensemble de mes formulaires. Merci pour votre intervention.

tonydecastro avatar Mar 22 '22 07:03 tonydecastro

Bonjour

Merci pour votre retour

@EC2311 est ce que le patch fonctionne également pour vous ?

btry avatar Mar 22 '22 09:03 btry

petites remarques :

  • en 2.12.4 cela semble fonctionner de maniere native.
  • en 2.12.3 : je ne trouve pas dans inc/field/dropdownfield.class.php la ligne 146 apres laquelle il faudrait inserer le break. cette ligne semble etre en ligne 250, mais néanmoins cette correction n'apporte pas de modification sur la visualisation du contenu des intitulés.

EC2311 avatar Mar 22 '22 16:03 EC2311

Bonjour @EC2311 : essayez de monter à la dernière version 2.12.5 et appliquez le patch. Le code bouge et les numéros de ligne ne sont pas une indication à prendre seules pour localiser où patcher. Préférez d'ailleurs l'outil patch qui fera toutes les vérifications nécessaires avant de faire des modifications de code.

btry avatar Jun 22 '22 09:06 btry