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
!