Subticket Manager: Installation
Subticket Manager für osTicket installieren: Release-ZIP oder Git mit Composer, Aktivierung, was beim Aktivieren in scp/ kopiert wird, Update, manuelles Deployment, Deaktivieren und Deinstallieren.
Subticket Manager: Installation
Voraussetzungen
| Anforderung | Wert | Hinweise |
|---|---|---|
| osTicket | 1.18.x | Die Plugin-Klasse prüft auf osTicket 1.18.0 oder neuer und auf die Spalte ticket_pid in ost_ticket |
| PHP | 7.4 oder neuer | Laut composer.json; die CI prüft 7.4 bis 8.3 |
| Datenbank | MySQL oder MariaDB | Die README nennt MariaDB 10.3+ oder MySQL 5.7+ |
| Tabellenpräfix | ost_ |
Alle SQL-Abfragen des Plugins verwenden den festen Präfix ost_; ein anderer Präfix wird nicht unterstützt |
| Dateirechte | Schreibzugriff auf scp/ |
Das Plugin kopiert beim Aktivieren drei Dateien dorthin |
| Composer | nur beim Git-Weg | Das Plugin hat keine Laufzeit-Abhängigkeiten, braucht aber den von Composer erzeugten Autoloader |
Plugin-Dateien bereitstellen
Release-ZIP (empfohlen)
- Lade das neueste Release von GitHub Releases herunter.
- Entpacke die ZIP-Datei.
- Lade den Plugin-Ordner nach
include/plugins/auf deinen osTicket-Server hoch.
Die Paketliste des Repositorys (
.releaseinclude) enthältvendor/autoload.phpundvendor/composer/. Genau diese Dateien braucht das Plugin zum Laden seiner Klassen aussrc/.
Git Clone mit Composer
cd /pfad/zu/osticket/include/plugins
git clone https://github.com/markus-michalski/osticket-subticket-manager.git subticket-manager
cd subticket-manager
composer install --no-dev
Ein reiner
git clonereicht nicht. Das Plugin lädt seine Klassen untersrc/ausschließlich übervendor/autoload.php, undvendor/gehört nicht zum Repository. Ohnecomposer installbricht das Plugin mit einem PHP-Fehler (Klasse nicht gefunden) ab.
Ordnername und Mehrfachinstallation
Der Name des Plugin-Ordners ist frei wählbar. Der AJAX-Handler sucht die Plugin-Klasse über include/plugins/*/class.SubticketPlugin.php. Liegt das Plugin mehrfach unter include/plugins/ (zum Beispiel eine alte Kopie mit anderem Ordnernamen), antwortet der Handler mit HTTP 500 und der Meldung Multiple SubticketPlugin installations detected. Entferne dann die überzählige Kopie.
Plugin aktivieren
- Melde dich im osTicket Admin Panel an.
- Öffne Verwalten → Plugins.
- Wähle Subticket Manager, installiere das Plugin und aktiviere es.
Beim Aktivieren (enable()) passiert Folgendes:
- Singleton-Instanz: Das Plugin ist ein Singleton. Gibt es noch keine Instanz, legt
enable()automatisch eine aktive Instanz mit dem Namen des Plugins an. - Dateien nach
scp/kopieren:subtickets.php,ajax-subticket.phpundapps.phpaus dem Ordnerscp-files/des Plugins werden nachscp/kopiert. Bestehende Dateien mit demselben Namen werden überschrieben. - Fehler: Ist
scp/nicht beschreibbar oder fehlt eine Quelldatei, liefertenable()Meldungen wieTarget directory not writable: ...oderFailed to deploy file to scp/<Datei>.
Die Datenbank-Änderungen legt das Plugin nicht in enable() an, sondern beim ersten Seitenaufruf nach der Aktivierung (siehe Technische Details).
apps.phpwird nachscp/apps.phpkopiert. Existiert dort schon eine Datei mit diesem Namen (zum Beispiel aus osTicket selbst), wird sie überschrieben, und beim Deinstallieren des Plugins wirdscp/apps.phpgelöscht. Sichere die Datei vor der Aktivierung.
Installation prüfen
- Ticket-Ansicht: Öffne ein beliebiges Ticket im Staff-Bereich. Über den Ticket-Tabs erscheint das Panel mit den Abschnitten Parent Ticket und Child Tickets.
- Übersichtsseite: Im Bereich Applications (Anwendungen) der Staff-Navigation findest du den Eintrag Subtickets.
- Queue-Indikator: Verknüpfe ein Ticket mit einem Parent. In der Ticket-Warteschlange zeigt das Parent-Ticket ein Code-Fork-Icon mit der Anzahl der Children.
Update
- Ersetze die Plugin-Dateien durch die neue Version (beim Git-Weg
git pullundcomposer install --no-dev). - Rufe eine beliebige osTicket-Seite auf. Das Plugin vergleicht beim Start die Version aus
plugin.phpmit der Dateiscp/.subticket-deployed-versionund kopiert die drei Dateien nachscp/neu, sobald die Versionen abweichen. - Leere den Browser-Cache, damit die aktuellen JavaScript-Dateien geladen werden.
Manuelles Deployment (Fallback)
Ist scp/ für den Webserver nicht beschreibbar, kopierst du die Dateien von Hand:
cd /pfad/zu/osticket
cp include/plugins/subticket-manager/scp-files/subtickets.php scp/subtickets.php
cp include/plugins/subticket-manager/scp-files/ajax-subticket.php scp/ajax-subticket.php
cp include/plugins/subticket-manager/scp-files/apps.php scp/apps.php
Deaktivieren
Das Plugin überschreibt disable() nicht. Beim Deaktivieren bleiben die drei Dateien in scp/ und alle Datenbank-Änderungen bestehen. Die Panels, der Queue-Indikator und die Auto-Verknüpfung sind dann nicht aktiv, weil das Plugin nicht mehr startet.
Deinstallieren
Beim Löschen des Plugins im Admin Panel läuft uninstall():
- Die Dateien
scp/subtickets.php,scp/ajax-subticket.php,scp/apps.phpundscp/.subticket-deployed-versionwerden entfernt. - Ist die Option Remove Data on Uninstall aktiv, löscht das Plugin zusätzlich seine Tabellen, die Spalte
versionund die beiden Indizes (Details unter Konfiguration). - Die Verknüpfungen zwischen Tickets bleiben immer erhalten, weil sie in der osTicket-Spalte
ticket_pidstehen.