AJOUT D’UN MENU DÉROULANT DANS LE …thibault.geoffroy.free.fr/tuto.pdf · AJOUT D’UN MENU...

14
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 eectuer 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 14 Thibault GEOFFROY GLPI - TUTORIEL

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

CONCLUSION !Vous pouvez maintenant voir dans votre formulaire votre menu déroulant et vous pouvez l’afficher dans le menu recherche.

! sur !14 14Thibault GEOFFROY