formcreator
formcreator copied to clipboard
GLPI formcreator 2.13.0
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
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.
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
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