AJOUT D’UN MENU DÉROULANT DANS LE …thibault.geoffroy.free.fr/tuto.pdf · AJOUT D’UN MENU...
Transcript of AJOUT D’UN MENU DÉROULANT DANS LE …thibault.geoffroy.free.fr/tuto.pdf · AJOUT D’UN MENU...
!!!!!
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
! sur !1 14Thibault GEOFFROY
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’;
!!
! sur !2 14Thibault GEOFFROY
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.
!!!!
! sur !3 14Thibault GEOFFROY
GLPI - TUTORIEL
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>";
!!!
! sur !4 14Thibault GEOFFROY
Fonction commonListHeader !• Ajouter la ligne suivante :
$items[__('Site')] = "glpi_tickets.site";
!!!!!!!!!!!!!!!!!
! sur !5 14Thibault GEOFFROY
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.
!!!!!!!!!!!!!!
! sur !6 14Thibault GEOFFROY
Fonction dropdownSite !• Créer une nouvelle fonction « dropdownSite ». Elle permettra l’affichage du menu
déroulant dans le formulaire.
!!!!!!!!!!!!!!!!!!!!
! sur !7 14Thibault GEOFFROY
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]);
!!!!
! sur !8 14Thibault GEOFFROY
Fonction getSpecificValueToSelect !• Ajouter les lignes suivantes :case 'site' :$options['name'] = $name; $options['value'] = $values[$field]; return self::dropdownSite($options);
!!!!!!!!!!!!!!!!!!!!
! sur !9 14Thibault GEOFFROY
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'] = __('Site'); $criterias['site']['type'] = ‘dropdown_site’;
! sur !10 14Thibault GEOFFROY
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;
!!!!!!!!
! sur !11 14Thibault GEOFFROY
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';
!!!!!!!!
! sur !12 14Thibault GEOFFROY
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>" ;
! sur !13 14Thibault GEOFFROY