Comment retirer le code de catégorie des listes déroulantes de GLPI 11

Dans GLPI 11, chaque catégorie dont le champ code est rempli apparaît dans les listes déroulantes avec le code concaténé au nom - un bruit visuel que le technicien déchiffre à chaque ticket. Le module GLPI Bug Fixes de NexTool nettoie le texte au moment du rendu, sans supprimer le code de la base et sans modifier le noyau, en couvrant à la fois les tickets et le nouveau système de formulaires.

Vous ouvrez la liste déroulante de catégorie pour enregistrer un ticket dans GLPI 11 et, au lieu du nom épuré, vous obtenez un bloc comme celui-ci : "Erreur en utilisant l'automatisation - 337.TYPE:INC;Groupe:AUTOMATISATION;Urgence:Très haute". Ce qui devrait être uniquement le nom de la catégorie est devenu une ligne de métadonnées que le technicien doit déchiffrer à chaque fois. Ce n'est pas un défaut de votre environnement : c'est GLPI lui-même qui concatène le champ code de la catégorie dans toutes les listes déroulantes.

Le problème

Chaque catégorie ITIL de GLPI possède un champ facultatif appelé code. Il existe pour de bonnes raisons : numérotation de processus, clé de routage pour les règles métier, paramètre d'intégration avec un ERP ou un système de tickets externe. Le problème n'est pas d'avoir le champ rempli - c'est l'endroit où il apparaît. Quand une catégorie a un code, le noyau de GLPI concatène cette valeur au nom dans toutes les listes déroulantes de l'interface, avec le séparateur - . Une information de coulisses s'affiche à l'écran de celui qui veut juste choisir "Réseau" ou "Imprimante".

En pratique, plus votre code est structuré, pire c'est. Les équipes qui chargent des métadonnées dans le champ (type de ticket, groupe responsable, urgence suggérée) se retrouvent avec des listes déroulantes où le vrai nom de la catégorie est la plus petite partie du texte. L'œil lit de gauche à droite, rencontre le code d'abord et ralentit. Sur les petits écrans, le texte est tronqué au milieu du code - et le nom n'apparaît même pas en entier.

Les deux solutions évidentes ne conviennent pas. Modifier le noyau de GLPI pour retirer la concaténation fonctionne jusqu'à la prochaine mise à jour, quand le fichier est écrasé et que le problème revient. Vider le champ code nettoie l'écran mais casse tout ce qui en dépendait - règles, intégrations, rapports. Vous échangeriez une gêne visuelle contre une panne fonctionnelle.

Comment GLPI Bug Fixes le résout

Le module GLPI Bug Fixes attaque le symptôme au bon endroit : le rendu, pas la donnée. Il ne touche pas à la base de données et ne modifie pas le noyau. À la place, il enveloppe les fonctions globales de gabarit Select2 que GLPI utilise (window.templateResult et window.templateSelection) et nettoie le texte à la source, avant qu'il n'atteigne le DOM. Le champ code reste intact dans la base ; il cesse simplement d'apparaître dans l'interface.

  • Nettoie le nom et l'infobulle - il retire le suffixe - CODE à la fois du texte de l'option et de l'attribut title (la bulle au survol), dans la liste et dans la valeur déjà sélectionnée.
  • Couvre les deux endroits où la catégorie apparaît - la liste déroulante classique de ticket, changement et problème (itilcategories_id) et les questions de sélection de catégorie dans le nouveau système de formulaires de GLPI 11 (Glpi\Form).
  • Ne supprime rien - le code reste disponible pour les règles métier, les intégrations et les rapports. C'est une correction purement visuelle.
  • S'active par fonctionnalité - la correction est un interrupteur individuel dans l'onglet Fonctionnalités ; l'activer ou la désactiver prend effet immédiatement, sans réinstaller le module.
  • Survit aux mises à jour - comme tout passe par le plugin, mettre à jour GLPI ne défait pas la correction.

Le détail qui distingue une correction sûre d'une correction qui casse le reste

C'est là qu'intervient l'expérience de terrain de qui exploite GLPI en production. La première version du correctif faisait l'évident : elle nettoyait le texte de toute liste déroulante Select2 qui correspondait au motif " - quelque chose". Cela paraissait juste jusqu'à ce qu'un client signale que les noms de groupes avaient été coupés - "N1 - Support" devenait "N1", "N2 - Infrastructure" devenait "N2". Le séparateur - est légitime dans beaucoup de noms ; nettoyer par motif de texte est naïf. La correction a été réécrite pour être délimitée par l'identité du champ, pas par l'apparence du texte.

Pour le ticket, c'est direct : elle n'agit que lorsque le <select> s'appelle itilcategories_id. Dans le nouveau système de formulaires, c'est plus subtil, car la question utilise un nom générique comme answers_5[items_id] qui sert pour n'importe quel élément (catégorie, lieu, fournisseur). L'indice est un <input hidden> voisin qui déclare le type. Le module ne nettoie le texte que lorsque ce voisin indique ITILCategory :

<!-- Ticket : le correctif agit car le name est exactement itilcategories_id -->
<select name="itilcategories_id">
  <option value="12"
    title="Erreur en utilisant l'automatisation - 337.TYPE:INC;Groupe:AUTOMATISATION">
    Erreur en utilisant l'automatisation - 337.TYPE:INC;Groupe:AUTOMATISATION
  </option>
</select>

<!-- Formulaire (Glpi\Form) : nettoie UNIQUEMENT si le hidden voisin est ITILCategory -->
<select name="answers_5[items_id]"> ... </select>
<input type="hidden" name="answers_5[itemtype]" value="ITILCategory">

<!-- Groupe : name différent et sans hidden ITILCategory -->
<!-- le " - " légitime est PRÉSERVÉ -->
<select name="groups_id">
  <option>N1 - Support</option>
</select>

C'est le genre de décision qui n'émerge que dans le support quotidien : la solution "rapide" casse un cas limite qu'aucun test synthétique ne couvre, mais qui existe dans presque tout environnement réel où les groupes sont nommés par niveau de service.

Avant et après, par contexte

GLPI natif (avant)Avec GLPI Bug Fixes (après)
Liste déroulante sur le ticketErreur en utilisant l'automatisation - 337.TYPE:INC;...Erreur en utilisant l'automatisation
Question de catégorie dans un formulaireRéseau - NET.02;Groupe:INFRARéseau
Infobulle (title) de l'élémentAffiche le code completAffiche seulement le nom
Liste déroulante de groupe (ex. : N1 - Support)N1 - SupportN1 - Support (inchangé)
Champ code dans la baseRempliRempli (jamais modifié)

Comment l'activer

  1. Installez le plugin NexTool sur votre GLPI 11 (si ce n'est pas déjà fait).
  2. Allez dans Configuration > NexTool > Modules et activez le module GLPI Bug Fixes.
  3. Ouvrez Configurer et allez dans l'onglet Fonctionnalités.
  4. Vérifiez que Masquer le code de catégorie dans les listes déroulantes est activé - il est activé par défaut après l'installation.

La correction prend effet à la prochaine ouverture d'une liste déroulante de catégorie. Pas besoin de redémarrer le service ni de vider le cache : l'asset JS porte une empreinte de version qui change d'elle-même quand vous activez ou désactivez la fonctionnalité, de sorte que le navigateur charge toujours la bonne version.

À qui cela s'adresse (et quand ne pas l'utiliser)

Cela a du sens pour toute équipe qui remplit le champ code des catégories ITIL - que ce soit pour la numérotation interne, le routage par règles ou l'intégration - et dont les techniciens ou utilisateurs finaux choisissent une catégorie au quotidien. Plus il y a de personnes qui ouvrent des tickets, plus le gain de clarté est important.

Cela ne change rien si vos catégories n'ont pas de code rempli : sans code concaténé, il n'y a rien à nettoyer. Et si vous voulez que le code apparaisse à l'écran - certaines équipes s'en servent comme référence rapide au comptoir d'accueil - laissez simplement la fonctionnalité désactivée. C'est précisément pour cela que la correction est optionnelle.

Compatibilité

  • GLPI : 11.0 ou supérieur
  • Module : GLPI Bug Fixes (clé fixes) - plan gratuit (FREE)
  • Plugin : NexTool 4.1.3 ou supérieur
  • Couverture : tickets, changements et problèmes, ainsi que le nouveau système de formulaires (Glpi\Form)

Étape suivante

GLPI Bug Fixes fait partie de NexTool, l'écosystème de modules qui étend GLPI sans personnaliser le noyau. Le module est gratuit et déjà dans le catalogue. Si vous souhaitez de l'aide pour l'installer ou évaluer d'autres correctifs, contactez l'équipe.


Ce contenu a été produit avec l'aide de l'intelligence artificielle et révisé par l'équipe Nextool Solutions.

Questions fréquentes

Chaque catégorie ITIL a un champ facultatif appelé code. Quand il est rempli, GLPI concatène cette valeur au nom dans toutes les listes déroulantes, avec le séparateur " - ". C'est un comportement natif du noyau, pas un bug de votre environnement.

Non. Le module change seulement ce qui est affiché à l'écran, en interceptant le rendu de Select2. Le code reste intact dans la base et disponible pour les règles, intégrations et rapports.

Non. Le nettoyage est délimité par l'identité du champ (le name itilcategories_id ou, dans les formulaires, l'input hidden avec itemtype ITILCategory), jamais par motif de texte. Les noms avec un " - " légitime, comme les groupes par niveau, restent intacts.

Oui. Au-delà des tickets, changements et problèmes, il couvre les questions de sélection de catégorie dans Glpi\Form, en détectant l'input hidden qui déclare l'itemtype ITILCategory à côté de la question.

Non. La correction s'applique dès la prochaine ouverture d'une liste déroulante de catégorie. L'asset JS utilise une empreinte de version qui change quand vous basculez la fonctionnalité, donc le navigateur charge toujours la bonne version.

Oui, il est FREE. Il fait partie du plugin NexTool (4.1.3 ou supérieur) et il est compatible avec GLPI 11.0 ou supérieur.

Besoin d'aide ?