pluginsGLPI / formcreator

GLPI Plugin Formcreator (DOWNLOAD : https://github.com/pluginsGLPI/formcreator/releases)
http://www.teclib-edition.com
GNU General Public License v3.0
172 stars 125 forks source link

BUG / Gestion entité / intitulé #2492

Open EC2311 opened 2 years ago

EC2311 commented 2 years ago

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...

btry commented 2 years ago

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

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.

EC2311 commented 2 years ago

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...

btry commented 2 years ago

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

image

EC2311 commented 2 years ago

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

btry commented 2 years ago

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 commented 2 years ago

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

EC2311 commented 2 years ago

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 commented 2 years ago

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

btry commented 2 years ago

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

EC2311 commented 2 years ago

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

btry commented 2 years ago

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) {
tonydecastro commented 2 years ago

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.

btry commented 2 years ago

Bonjour

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

tonydecastro commented 2 years ago

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

btry commented 2 years ago

Bonjour

Merci pour votre retour

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

EC2311 commented 2 years ago

petites remarques :

btry commented 2 years ago

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.