ajout d`un menu déroulant dans le formulaire de création d`un
Transcription
ajout d`un menu déroulant dans le formulaire de création d`un
GLPI - TUTORIEL ! ! ! ! ! AJOUT D’UN MENU DÉROULANT DANS LE FORMULAIRE DE CRÉATION D’UN TICKET ! Pour ajouter un menu déroulant dans le formulaire de création d’un ticket GLPI, il est nécessaire de modifier le cœur du logiciel. Par conséquence, cette action est à refaire à chaque nouvelle mise à jour de l’outil. Il est alors préférable d’installer la dernière version de GLPI avant de commencer ces modifications. Ce tutoriel concerne la version stable 0.84.5 de GLPI du 26 février 2014, elle est téléchargeable à cet URL. Il est fortement conseillé d’utiliser cette version du logiciel pour effectuer ces modifications ! Pour ce tutoriel, nous allons ajouter un menu déroulant qui s’appellera « Site ». Il contiendra des informations concernant des lieux. Les fichiers qui seront modifiés se trouve essentiellement dans le répertoire inc qui se trouve à ce chemin : glpi/inc Thibault GEOFFROY ! sur 14 1 ! GLPI - TUTORIEL MODIFICATION DE LA BASE DE DONNÉES ! • Se rendre dans la base de données ; • Exécuter la requête ci-dessous en modifiant le champ « site » par le champ que vous voulez créer. ! ! ! MODIFICATION DU FICHIER ! TICKET.CLASS.PHP Chemin : glpi/inc/ticket.class.php Plusieurs fonction sont à modifier dans ce fichier. Les fichiers contenant des milliers de lignes, faites une recherche « find » et entrez le nom de la fonction afin de ne pas perdre de temps. Fonction prepareInputForUpdate ! • Ajouter la ligne suivante. $allowed_fields[] = ‘site’; ! ! Thibault GEOFFROY ! sur 14 2 ! GLPI - TUTORIEL Fonction getSearchOptions ! • Ajouter les lignes suivantes. Analyser et trouver un nombre disponible pour le stockage dans la variable $tab (8 étant disponible, j’ai choisi ce nombre.) $tab[8]['table'] = $this->getTable(); $tab[8]['field'] = 'site'; $tab[8]['name'] = __('Site'); $tab[8]['searchtype'] = 'equals'; $tab[8]['datatype'] = ‘specific'; Fonction getDefaultValues ! • Ajouter la ligne suivante : 'site' => 1, Le nombre « 1 » sert à donner la valeur par défaut de notre menu. Vous verrez plus tard dans la classe « commonITILObject.class.php » qu’on retrouve ce nombre. ! ! ! ! Thibault GEOFFROY ! sur 14 3 ! Fonction showForm ! • Ajouter les lignes suivantes : echo "<tr class='tab_bg_1'>"; echo "<th>".sprintf(__('%1$s'), __('Site'))."</th>"; echo "<td>"; if ($canupdate) { $idsite = parent::dropdownSite(array('value' => $this->fields["site"])); } else { $idsite = "value_site".mt_rand(); echo "<input id='$idsite' type='hidden' name='site' value='".$this->fields["site"]."'>"; echo parent::getSiteName($this->fields["site"]); } echo "</td>"; echo "</tr>"; ! ! ! Thibault GEOFFROY ! sur 14 4 ! Fonction commonListHeader ! • Ajouter la ligne suivante : $items[__('Site')] = "glpi_tickets.site"; ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! Thibault GEOFFROY ! sur 14 5 ! MODIFICATION DU FICHIER ! COMMONITILOBJECT.CLASS.PHP Chemin : glpi/inc/commonITILObject.class.php Plusieurs fonction sont à modifier dans ce fichier. Les fichiers contenant des milliers de lignes, faites une recherche « find » et entrez le nom de la fonction afin de ne pas perdre de temps. Fonction getSiteName ! • Créer une nouvelle fonction « getSiteName ». Elle contient les options que vous voulez voir apparaître dans votre menu déroulant. Le numéro attribué dans la fonction getDefaultValues de la classe ticket.class.php réfère celui de cette fonction. ! ! ! ! ! ! ! ! ! ! ! ! ! ! Thibault GEOFFROY ! sur 14 6 ! Fonction dropdownSite ! • Créer une nouvelle fonction « dropdownSite ». Elle permettra l’affichage du menu déroulant dans le formulaire. ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! Thibault GEOFFROY ! sur 14 7 ! Fonction getUsedSiteBetween ! • Créer une nouvelle fonction « getUsedSiteBetween ». Elle permettra d’effectuer des recherches entre 2 dates. ! ! ! ! ! ! ! ! ! ! ! ! Fonction getSpecificValueToDisplay ! • Ajouter les lignes suivantes : case 'site': return self::getSiteName($values[$field]); ! ! ! ! Thibault GEOFFROY ! sur 14 8 ! Fonction getSpecificValueToSelect ! • Ajouter les lignes suivantes : case 'site' : $options['name'] = $name; $options['value'] = $values[$field]; return self::dropdownSite($options); ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! Thibault GEOFFROY ! sur 14 9 ! MODIFICATION DU FICHIER ! TICKETTEMPLATE.CLASS.PHP Chemin : glpi/inc/tickettemplate.class.php Fonction getAllowedFields ! • Ajouter les lignes suivantes : $ticket->getSearchOptionIDByField('field', 'site', 'glpi_tickets') => ‘site', ! MODIFICATION DU FICHIER ! RULETICKET.CLASS.PHP Chemin : glpi/inc/ruleticket.class.php ! Fonction getCriterias ! • Ajouter les lignes suivantes : $criterias['site']['name'] $criterias['site']['type'] Thibault GEOFFROY = __('Site'); = ‘dropdown_site’; ! sur 14 10 ! MODIFICATION DU FICHIER ! RULEACTION.CLASS.PHP Chemin : glpi/inc/ruleaction.class.php ! Fonction displayActionSelectPattern ! • Ajouter les lignes suivantes : case "dropdown_site" : Ticket::dropdownSite(array('name' => 'value')); $display = true; break; ! ! ! ! ! ! ! ! Thibault GEOFFROY ! sur 14 11 ! MODIFICATION DU FICHIER ! CHANGE.CLASS.PHP Chemin : glpi/inc/change.class.php ! Fonction getSearchOptions ! • Ajouter les lignes suivantes : $tab[8]['table'] = $this->getTable(); $tab[8]['field'] = 'site'; $tab[8]['name'] = __('Site'); $tab[8]['searchtype'] = 'equals'; $tab[8]['datatype'] = 'specific'; ! ! ! ! ! ! ! ! Thibault GEOFFROY ! sur 14 12 ! Fonction showForm ! • Ajouter les lignes suivantes. Attention, elles sont séparées et se trouve à différents endroits de la fonction. 'site' => 1, $options['site'] = $ticket->getField('site'); $options['site'] = $problem->getField('site'); echo "<th>".__('Site')."</th>"; echo "<td>"; $idsite = self::dropdownSite(array('value' => $this->fields["site"])); echo "</td>" ; Thibault GEOFFROY ! sur 14 13 ! CONCLUSION ! Vous pouvez maintenant voir dans votre formulaire votre menu déroulant et vous pouvez l’afficher dans le menu recherche. Thibault GEOFFROY ! sur 14 14 !