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ÓDIGOsowohl aus dem Optionstext als auch aus dem Attributtitle(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 -
codebleibt 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
| Wo | GLPI nativ (vorher) | Mit Essentials (nachher) |
|---|---|---|
| Dropdownliste im Ticket | Fehler bei der Automatisierung - 337.TYP:INC;... | Fehler bei der Automatisierung |
| Kategoriefrage im Formular | Netzwerk - NET.02;Gruppe:INFRA | Netzwerk |
| Tooltip (title) des Elements | Zeigt den vollständigen Code | Zeigt nur den Namen |
| Gruppen-Dropdown (z. B. N1 - Support) | N1 - Support | N1 - Support (unverändert) |
| Feld code in der Datenbank | Ausgefüllt | Ausgefüllt (wird nie verändert) |
So aktivieren Sie es
- Installieren Sie das Plugin NexTool in Ihrem GLPI 11 (falls noch nicht vorhanden).
- Öffnen Sie Einrichtung > NexTool > Module und aktivieren Sie Essentials.
- Öffnen Sie Konfigurieren und gehen Sie zum Reiter Funktionen.
- 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.