formcreator icon indicating copy to clipboard operation
formcreator copied to clipboard

GLPI formcreator 2.13.0

Open GHBSuser opened this issue 2 years ago • 3 comments

Bonjour,

Si possible, je souhaiterai modifier le script du plugin formcreator pour ajouter une fonctionnalité. Lorsque nous utilisons le Mode d'assistance -> Catalogue de service Simplifié avec le profil Self-Service. On aimerait qu'il soit possible :

  • D'utiliser l'arborescence des formulaires dans le sens inverse. Ex : Aucun affichage au départ et affichage des formulaires selon les catégories.
  • Cacher le bouton SeeAll (Voir tous) dans notre cas.

De notre côté nous adaptons le script à chaque mise à jour pour utiliser ce fonctionnement. Je peux vous fournir le script modifié en incorporant des balises et en expliquant l'utilité de cette modification.

Merci,

MP GHBS Lorient

image image

GHBSuser avatar Jul 19 '22 07:07 GHBSuser

Bonjour

La version 2.13.0 contient plusieurs nouvelles options qui devraient répondre au moins en partie à votre besoin. De mémoire j'ai ajouté ces options dans la documentation du plugin (sur Read The Docs). Essayez ces options, comparez-les avec vos besoins.

Si vous souhaitez contribuer, je vous invite à décrire ici les modifications exactes que vous comptes faire, puis commencer une PR. Basez vous sur la branche develop car la version 2.13.0 ne peut plus recevoir de feature, si près de la version finale. la branche develop ayant encore peu divergé, votre patch devrait être portable d'une branche à l'autre.

btry avatar Jul 19 '22 07:07 btry

Très bien, je vais essayer de vous expliquer au mieux les modifications.

  • Fichier form.class.php Pour cacher le bouton voir tous, j'ai passé en commentaire la ligne suivante. (Fonction showWizard()) //echo '
    ' . __('See all', 'formcreator') . '
    ';

Je sors l'id de la catégorie active pour filtrer l'arborescence. (function getFormList()) ///////////////Balise ajout plugin_formcreator_categories_id /////////////////////////// $table_form => ['id', 'name', 'icon', 'icon_color', 'background_color', 'description', 'usage_count','is_default','plugin_formcreator_categories_id'],]; ///////////////Balise ajout plugin_formcreator_categories_id /////////////////////////// $formList['GROUPBY'] = [ "$table_form.id", "$table_form.name", "$table_form.description", "$table_form.usage_count", "$table_form.is_default", "$table_form.plugin_formcreator_categories_id" ]; ///////////////Balise ajout plugin_formcreator_categories_id /////////////////////////// $formList[] = [ 'id' => $form['id'], 'name' => __($form['name'], $domain), 'icon' => $form['icon'], 'icon_color' => $form['icon_color'], 'background_color' => $form['background_color'], 'description' => __($form['description'], $domain), 'type' => 'form', 'usage_count' => $form['usage_count'], 'is_default' => $form['is_default'] ? "true" : "false", 'tile_template' => $display_format, 'plugin_formcreator_categories_id' => $form['plugin_formcreator_categories_id'] ]; ///////////////Balise ajout plugin_formcreator_categories_id /////////////////////////// $formList[] = [ 'id' => $faq['id'], 'name' => $faq['name'], 'icon' => '', 'icon_color' => '', 'background_color' => '', 'description' => '', 'type' => 'faq', 'usage_count' => $faq['view'], 'is_default' => false, 'tile_template' => PluginFormcreatorEntityConfig::CONFIG_UI_FORM_MASONRY, 'plugin_formcreator_categories_id' => '' ]; ///////////////Balise ajout plugin_formcreator_categories_id /////////////////////////// foreach ($result_forms as $form) { $formList[] = [ 'id' => $form['id'], 'name' => $form['name'], 'icon' => $form['icon'], 'icon_color' => $form['icon_color'], 'background_color' => $form['background_color'], 'description' => $form['description'], 'type' => 'form', 'usage_count' => $form['usage_count'], 'is_default' => true, 'tile_template' => $display_format, 'plugin_formcreator_categories_id' => $form['plugin_formcreator_categories_id'] ];

  • Fichier scripts.js Ajout d'une variable pour debug //Balise ajout de la variable var currentCategory = 0;

Retour à 0 lors d'un appui sur le bouton voir tous $('#plugin_formcreator_wizard_categories #wizard_seeall').on('click', function (event) { slinkyCategories.home(); //Balise retour à 0 currentCategory=0; updateWizardFormsView(0);

Retour à 0 lors d'un appui sur le bouton voir tous $('#plugin_formcreator_kb_categories #wizard_seeall').on('click', function (event) { slinkyCategories.home(); //Balise retour à 0 updateKbitemsView(0);

Récupérer l'ID de la catégorie active lors d'un retour arrière dans l'arborescence $('#plugin_formcreator_wizard_categories a.back').on('click', function(event) { ///////Balise récupérer l'id de la catégorie active lors d'un retour arrière////////////////// var parentItem = $(event.target).parentsUntil('#plugin_formcreator_wizard_categories .slinky-menu > ul', 'li')[1]; var parentAnchor = $(parentItem).children('a')[0]; currentCategory=0; currentCategory=parseInt(parentAnchor.getAttribute('data-parent-category-id'));

Récupérer l'ID de la catégorie active dans l'arborescnce Affichage des formulaires $('#plugin_formcreator_wizard_categories a[data-category-id]').on('click', function (event) { currentCategory=0; ///////////Balise récupérer l'id de la catégorie active à chaque clic///////////////// var parentItem = $(event.target).parentsUntil('#plugin_formcreator_wizard_categories .slinky-menu > ul', 'li')[0]; var parentAnchor = $(parentItem).children('a')[0]; currentCategory=parseInt(parentAnchor.getAttribute('data-category-id'));

function buildKbCategoryList(tree) /** Balise **/ if(tree.id==0 && Object.keys(tree.subcategories).length != 0){ html = html + '


'; }

function buildCategoryList(tree) /** Balise **/ if(tree.id!=0 ){ html = html + '


'; }

////// Balise affiche des categories ///// function buildTiles(list) var $Id_Category =''; $Id_Category=item.plugin_formcreator_categories_id; ///// Categories de chaque formulaire ////

  var $Id_Test = false;
  var searchInput = $('#plugin_formcreator_searchBar input:first');
  var searchBar = searchInput.val();
	
  // Build a HTML tile
  var url = formcreatorRootDoc + '/front/formdisplay.php?id=' + item.id;
  
  ///// Si la catégorie du formulaire correspond à la catégorie active ou que la barre de recherche est non vide ///
  if($Id_Category==currentCategory || searchBar!=''){
		$Id_Test = true;

C'est assez compliqué d'expliquer par écrit mes modifications. Si vous avez besoin de plus d'explications, n'hésitez pas à revenir vers moi. Je vous joins les fichiers PHP modifié. formcreator_modif.zip

Concernant le Read The Docs, il s'agit de ce lien là ? https://glpi-plugins.readthedocs.io/en/latest/formcreator/index.html

MP GHBS Lorient

GHBSuser avatar Jul 19 '22 09:07 GHBSuser

Le lien Read the docs est bon.

Pour votre contribution, vous devez créer un fork du projet via Github. Ensuite créez une branche, appliquez vos modifications et créez une PR. Sans cela je devrais passer trop de temps à appliquer vos modifications à la main alors que Git fournit tous les outils pour patcher et comparer du code.

Vous avez des exemples de PR ici: https://github.com/pluginsGLPI/formcreator/pulls

btry avatar Jul 19 '22 09:07 btry