pluginsGLPI / formcreator

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

Formulaire : Champs plugins Objets GLPI #1189

Closed EC2311 closed 3 years ago

EC2311 commented 6 years ago

Pourquoi ne pas présenter les champs/valeurs des plugins supplémentaires en tant qu'objet GLPI ?

btry commented 6 years ago

Bonjour

Il y a un ticket concernant ce besoin pour le plugin Generic Object (il y a probablemetn plus d'un an maintenant). J'ai eu un peu de temps pour faire des investigations qui sont partagées dans ledit ticket. Je me souviens que Generic Object a besoin d'améliorations pour être interopérable avec Fotrmcreator.

Cela pourrait ête plus facile à réaliser avec des plugins plus simples. Dans tous les cas il faut définir comment l'API de GLPI peut nous aider et compléter les éventuelles fonctions manquantes en contribuant dans GLPI ou en définisant une API dédiée dans Formcreator que d'autres plugins consommeront.

EC2311 commented 6 years ago

Vous parlez de Generic objet : ok. De mon cote je parlais par exemple des plugin database ou web-application etc pour lesquels on pourrait poser des questions sur les databases ou web-applications que l'on a pu enregistrées en les utilisant. Faut-il aussi que leur createur intervienne ?

btry commented 6 years ago

Bonjour,

Il est probable qu'il faille apporter des modifications à ces plugins. Je ne pourrai être affirmatif qu'après avoir fait une étude de faisabilité sur Formcreator et les plugins concernés.

Si il faut modifier les autres plugins, tout contributeur peut soumettre des modifications. Les mainteneurs sont requis au minimum pour faire une revue de code.

EC2311 commented 6 years ago

Bonjour j'ai regardé le fonctionnement de formcreator. A priori il faudrait creer une classe dans le repertoire INC/Fields, un peu comme 'objet glpi' et 'glpiselectfield.class'. je connais les tables que j'aimerais lister pour les différents plugins (database, web-application etc...) mais je ne vois pas comment les lire :( dans le php, ni comment coder cela... Comment sont listés les tables 'objetGLPI' qui sont présentées dans le formulaire ? d'avance merci

btry commented 6 years ago

Bonjour

j'ai fait un rapide coup d'oeil aux deux plugins qui vous intéressent.

Ils créent deux assets tout à fait normaux, liables à des tickets quand on configure les profils utilsiateur correctement.

(profil > onglet Assistance) image

image

Ca fait partie de ce que j'ai collecté comme renseignemetns pour faore fonctioner Formcreator et Generic Object.

La liste des assets liables à un ticket est dans $CFG_GLPI['ticket_types']. Je pense donc qu'il faut exploiter cette liste (un array) pour étoffer les assets utilsiable dans le champ de type Objet GLPI

image

Dans PluginFormcreatorQuestion::showForm() il y a un array définissant les types pris en charge par un champ de type Objet GLPI. Il faut composer cette array avec le contenu de $CFG_GLPI['ticket_types'], et la majorité du travail sera fait, peut être que ce sera même suffisant.

EDIT: de nouveaux assets sont entrés dans GLPI depuis ces 2 dernioères années, c'est l'occasion de les prendre en charge dans Formcreator dans la même PR : ça ne devrait couter que zéro ligne de code supplémentaire.

EC2311 commented 5 years ago

Merci pour votre reponse. Je ne connais pas du tout le php... j'ai recherché la chaine de caractere pluginFormCreatorQuestion::showform dans le repertoire formcreator : aucun resultat. La chains pluginformcreatorquestion : 86 hits, et showform : 16.

EC2311 commented 5 years ago

C'est bon j'ai trouvé il suffit en effet d'ajouter les lignes ci-dessous en ligne 735 du script inc/question.class.php

ceci dit, le plugin appliances fait une erreur , d'ou le commentaiare sur la ligne.

     __("Plugins") => [
         PluginDatabasesDatabase::class         => PluginDatabasesDatabase::getTypeName(2),

/ PluginAppliancesApppliance::class => PluginAppliancesApppliance::getTypeName(2), / PluginWebapplicationsWebapplication::class => PluginWebapplicationsWebapplication::getTypeName(2)],

btry commented 5 years ago

Bonjour,

oui c'est une solution mais si les autres plugins ne sont pas installés Formcreator va planter. Il est facile d'avoir un mécanisme pour vérifier la présence d'un autre plugin. Mais il faut faire quelque chose de plus souple, idéalement qui ne se base pas sur la détection d'un plugin ou une liste arbitraire. Il faut retrouver les itemtypes apportés par les autres plugins dans les variables de GLPI (et seulment les itemtypes pertinents)

EC2311 commented 5 years ago
    __("Plugins") => [
         PluginDatabasesDatabase::class         => PluginDatabasesDatabase::getTypeName(2),
         PluginAppliancesAppliance::class       => PluginAppliancesAppliance::getTypeName(2), 
         PluginWebapplicationsWebapplication::class         => PluginWebapplicationsWebapplication::getTypeName(2)], 

j'avais mis un 'p' en trop

Par contre ne connaissant pas du tout le php : je vais avoir du mal ! Je comprends tout a fait votre remarque, pas de souci...

btry commented 5 years ago

Je sais que ce sera dificile d'arrvier à quelque chose sans connaitre php. C'est l'occasion d'apprendre mais la barre va être un peu élevée car vous devrez aussi apprendre des choses sur GLPI, Formcreator et les plugins en general.

Soit vous persévérez, soit vous déléguez. l'un vous donne l'autuonomie et peut vous transformer en contributeur, l'autre est plus rapide.

radiaips commented 4 years ago

Bonjour , SVP ace que vous savez s'il est possible d'effectuer des traitements(validation ) sur les formulaires glpi en modifiant le code source php?

btry commented 4 years ago

Bonjour

Tout dépend de ce que vois voulez implémenter. C'est impossible de répondre sans savoir ce que vous voulez réaliser.

radiaips commented 4 years ago

Bonjour, Je vous bien rendre quelques champs de formulaire (dropdown) obligatoires, d'une façon que le formulaire ne se valide pas si la liste de ce champ est vide.

btry commented 4 years ago

Bonjour

Votre demande n'est pas en lien avec ce ticket.

Vous pouvez rendre un champ dropdown obligatoire. Voyez la documentation du plugin. Un lien vers cette documentation est dans README.md sur la branche develop. Bien que pas tout à fait à jour, vous devriez y trouverez votre réponse. Sinon, ouvrez un ticket sur le projet github de la documentation ou ici.

radiaips commented 4 years ago

Je vous remercie pour votre retour :)