So entfernen Sie den Kategoriecode aus den Dropdowns von GLPI 11

In GLPI 11 erscheint jede Kategorie mit ausgefülltem Feld code in den Dropdowns mit dem an den Namen angehängten Code - visuelle Unordnung, die der Techniker bei jedem Ticket entziffern muss. Essentials von NexTool bereinigt den Text beim Rendern, ohne code aus der Datenbank zu löschen und ohne den Core zu bearbeiten, und deckt sowohl Tickets als auch neue Formulare ab.

In diesem Artikel8 Abschnitte

Sie öffnen in GLPI 11 beim Erfassen eines Tickets die Kategorie-Dropdownliste und sehen statt eines sauberen Namens einen Block wie diesen: „Fehler bei der Automatisierung - 337.TYP:INC;Gruppe:AUTOMATISIERUNG;Dringlichkeit:Sehr hoch“. Was nur der Name der Kategorie sein sollte, ist zu einer Zeile voller Metadaten geworden, die der Techniker jedes Mal entziffern muss. Es ist kein Fehler Ihrer Umgebung: GLPI selbst hängt in allen Dropdowns den Wert aus dem Feld code der Kategorie an.

Die Herausforderung

Jede ITIL-Kategorie in GLPI hat ein optionales Feld namens code. Es existiert aus guten Gründen: Prozessnummerierung, Routing-Schlüssel für Geschäftsregeln, Integrationsparameter für ein ERP oder ein externes Ticketsystem. Schwierig ist nicht, dass dieses Feld ausgefüllt ist - sondern wo es erscheint. Hat eine Kategorie einen code, hängt der GLPI-Kern diesen Wert in allen Dropdowns der Oberfläche an den Namen an, mit dem Trennzeichen - . Eine Hintergrundinformation gelangt so auf den Bildschirm von jemandem, der nur „Netzwerk“ oder „Drucker“ auswählen will.

In der Praxis gilt: Je strukturierter Ihr code, desto schlimmer. Teams, die Metadaten im Feld ablegen (Tickettyp, zuständige Gruppe, empfohlene Dringlichkeit), haben am Ende Dropdowns, in denen der eigentliche Kategoriename der kleinste Teil des Textes ist. Man liest von links nach rechts, stößt zuerst auf den Code und wird langsamer. Auf kleineren Bildschirmen wird der Text mitten im Code abgeschnitten - und dann erscheint nicht einmal der Name vollständig.

Die beiden naheliegenden Auswege taugen nicht. Den GLPI-Core zu bearbeiten, um die Verkettung zu entfernen, funktioniert bis zum nächsten Update, wenn die Datei überschrieben wird und die Störung zurückkehrt. Ein Löschen des Feldes code bereinigt zwar die Anzeige, zerstört aber alles, was davon abhing - Regeln, Integrationen, Berichte. Sie würden ein optisches Ärgernis gegen einen funktionalen Fehler tauschen.

Wie Essentials es löst

Das Modul Essentials packt dieses Symptom an der richtigen Stelle an: beim Rendern, nicht bei den Daten. Es berührt weder die Datenbank noch bearbeitet es den Core. Stattdessen umhüllt es die globalen Template-Funktionen von Select2, die GLPI verwendet (window.templateResult und window.templateSelection), und bereinigt den Text an der Quelle, bevor er im DOM ankommt. Das Feld code bleibt in der Datenbank unverändert; es erscheint lediglich nicht mehr in der Oberfläche.

  • Bereinigt Name und Tooltip - entfernt den Zusatz - CÓDIGO sowohl aus dem Optionstext als auch aus dem Attribut title (der Hinweis, der beim Überfahren mit der Maus erscheint), in der Liste und im bereits ausgewählten Wert.
  • Deckt beide Stellen ab, an denen die Kategorie erscheint - die klassische Dropdownliste in Ticket, Änderung und Problem (itilcategories_id) und die Fragen zur Kategorieauswahl im neuen Formularsystem von GLPI 11 (Glpi\Form).
  • Löscht nichts - code bleibt für Geschäftsregeln, Integrationen und Berichte verfügbar. Es ist eine rein visuelle Korrektur.
  • Ein- und ausschaltbar pro Funktion - die Korrektur ist ein eigener Schalter im Reiter Funktionen; Aktivieren oder Deaktivieren wirkt sofort, ohne Neuinstallation.
  • Übersteht Updates - da alles über ein Plugin läuft, macht ein GLPI-Update die Korrektur nicht rückgängig.

Ein Detail, welches eine sichere Korrektur von einer unterscheidet, die alles andere kaputt macht

Hier kommt die Erfahrung aus dem Produktivbetrieb von GLPI ins Spiel. Die erste Version des Fixes tat das Naheliegende: Sie bereinigte den Text jeder Select2-Dropdownliste mit dem Muster „ - irgendetwas“. Dies schien korrekt, bis ein Kunde meldete, dass Gruppennamen abgeschnitten worden waren - „N1 - Support“ wurde zu „N1“, „N2 - Infrastruktur“ zu „N2“. Ein Trennzeichen - ist in vielen Namen legitim; nach Textmuster zu bereinigen ist naiv. Seitdem ist die Korrektur auf die Identität des Feldes beschränkt, nicht auf die Erscheinung des Textes.

Beim Ticket ist dies einfach: Sie greift nur, wenn ein <select> den Namen itilcategories_id trägt. Im neuen Formularsystem ist es subtiler, denn die Frage verwendet einen generischen Namen wie answers_5[items_id], der für jedes Element dient (Kategorie, Standort, Lieferant). Der Hinweis steckt in einem benachbarten <input hidden>, welches den Typ angibt. Essentials bereinigt den Text nur, wenn dieses Nachbarelement ITILCategory angibt:

<!-- Ticket: the fix runs because the name is exactly itilcategories_id -->
<select name="itilcategories_id">
  <option value="12"
    title="Error using automation - 337.TYPE:INC;Group:AUTOMATION">
    Error using automation - 337.TYPE:INC;Group:AUTOMATION
  </option>
</select>

<!-- Form (Glpi\Form): only cleans if the sibling hidden is ITILCategory -->
<select name="answers_5[items_id]"> ... </select>
<input type="hidden" name="answers_5[itemtype]" value="ITILCategory">

<!-- Group: different name and no ITILCategory hidden -->
<!-- the legitimate " - " is PRESERVED -->
<select name="groups_id">
  <option>N1 - Support</option>
</select>

Genau solche Entscheidungen zeigen sich erst im laufenden Betrieb: Eine „schnelle“ Lösung zerstört einen Randfall, den kein synthetischer Test abdeckt, der aber in fast jeder realen Umgebung mit nach Supportstufe benannten Gruppen existiert.

Vorher und nachher, nach Kontext

WoGLPI nativ (vorher)Mit Essentials (nachher)
Dropdownliste im TicketFehler bei der Automatisierung - 337.TYP:INC;...Fehler bei der Automatisierung
Kategoriefrage im FormularNetzwerk - NET.02;Gruppe:INFRANetzwerk
Tooltip (title) des ElementsZeigt den vollständigen CodeZeigt nur den Namen
Gruppen-Dropdown (z. B. N1 - Support)N1 - SupportN1 - Support (unverändert)
Feld code in der DatenbankAusgefülltAusgefüllt (wird nie verändert)

So aktivieren Sie es

  1. Installieren Sie das Plugin NexTool in Ihrem GLPI 11 (falls noch nicht vorhanden).
  2. Öffnen Sie Einrichtung > NexTool > Module und aktivieren Sie Essentials.
  3. Öffnen Sie Konfigurieren und gehen Sie zum Reiter Funktionen.
  4. Stellen Sie sicher, dass Kategoriecode in Dropdowns ausblenden eingeschaltet ist - nach der Installation ist es standardmäßig aktiviert.

Die Korrektur gilt ab dem nächsten Öffnen einer Kategorie-Dropdownliste. Sie müssen weder einen Dienst neu starten noch einen Cache leeren: Das JS-Asset trägt eine Versionsmarke, die sich automatisch ändert, wenn Sie die Funktion ein- oder ausschalten, sodass der Browser immer die richtige Version lädt.

Für wen es sich eignet (und wann nicht)

Sinnvoll ist es für jedes Team, welches das Feld code der ITIL-Kategorien ausfüllt - ob für interne Nummerierung, Routing per Regeln oder Integration - und dessen Techniker oder Endbenutzer im Alltag Kategorien auswählen. Je mehr Personen Tickets erstellen, desto größer der Gewinn an Klarheit.

Keinen Unterschied macht es, wenn Ihre Kategorien keinen ausgefüllten code haben: Ohne angehängten Code gibt es nichts zu bereinigen. Und wenn Sie wollen, dass der Code auf dem Bildschirm erscheint - manche Teams nutzen ihn als schnelle Referenz am Servicecounter -, lassen Sie die Funktion einfach ausgeschaltet. Genau deshalb ist die Korrektur optional.

Kompatibilität

  • GLPI: 11.0 oder höher
  • Modul: Essentials (Schlüssel essentials) - kostenloser Tarif (FREE)
  • Plugin: NexTool 6.3.0 oder höher
  • Abdeckung: Tickets, Änderungen und Probleme sowie das neue Formularsystem (Glpi\Form)

Nächster Schritt

Essentials ist Teil von NexTool, einem Modul-Ökosystem, welches GLPI ohne Core-Anpassungen erweitert. Essentials ist kostenlos und bereits im Katalog. Wenn Sie Hilfe bei der Installation oder bei der Bewertung weiterer Korrekturen wünschen, sprechen Sie mit dem Team.


Geprüft vom Team der NexTool Solutions.

Häufig gestellte Fragen

Jede ITIL-Kategorie hat ein optionales Feld namens code. Ist es ausgefüllt, hängt GLPI diesen Wert in allen Dropdowns an den Namen an, mit dem Trennzeichen " - ". Es handelt sich um natives Verhalten des Core, nicht um einen Bug Ihrer Umgebung.

Nein. Essentials ändert nur, was auf dem Bildschirm angezeigt wird, indem es die Darstellung von Select2 abfängt. code bleibt in der Datenbank unverändert und steht weiterhin für Regeln, Integrationen und Berichte zur Verfügung.

Nein. Die Bereinigung ist auf die Identität des Feldes beschränkt (den name itilcategories_id oder, in Formularen, den input hidden mit itemtype ITILCategory), nie auf ein Textmuster. Namen mit legitimem " - ", wie Gruppen nach Supportstufe, bleiben unverändert.

Ja. Neben Tickets, Änderungen und Problemen deckt er die Fragen zur Kategorieauswahl in Glpi\Form ab, indem er den input hidden erkennt, der neben der Frage den itemtype ITILCategory angibt.

Nein. Die Korrektur gilt schon beim nächsten Öffnen einer Kategorie-Dropdownliste. Das JS-Asset verwendet eine Versionsmarke, die sich beim Ein- oder Ausschalten der Funktion ändert, sodass der Browser immer die richtige Version lädt.

Ja, es ist FREE. Es ist Teil des Plugins NexTool (6.3.0 oder höher) und mit GLPI 11.0 oder höher kompatibel.

Brauchen Sie Hilfe?