Das Tab Swap Plugin tauscht die Reihenfolge der Antworten- und Interne Notiz-Tabs in der osTicket Ticket-Detailansicht, sodass Interne Notiz statt Antworten der Standard-aktive Tab wird.
Perfekt für Teams, die primär interne Notizen für die Zusammenarbeit nutzen und versehentliche kundenseitige Antworten reduzieren möchten.
Was macht dieses Plugin unverzichtbar:
| Anforderung | Version | Hinweise |
|---|---|---|
| osTicket | 1.18.x | Plugin nutzt osTickets Signal API |
| PHP | 7.4+ | Empfohlen: PHP 8.1+ für beste Performance |
| jQuery | Beliebig | In osTicket standardmäßig enthalten |
tab-swap-Ordner nach /include/plugins/ auf deinem osTicket-Server hochFinaler Pfad: /pfad/zu/osticket/include/plugins/tab-swap/
cd /pfad/zu/osticket/include/plugins
git clone https://github.com/markus-michalski/osticket-tab-swap.git tab-swap
Das Plugin installiert sich automatisch und aktualisiert /include/.htaccess um JavaScript-Dateien zu erlauben.
| Einstellung | Beschreibung | Standard | Nutzen wenn |
|---|---|---|---|
| Enable Tab Swap | Tab-Tausch an/aus schalten | AN | Du den Tab-Tausch temporär deaktivieren möchtest ohne zu deinstallieren |
Das Plugin benötigt minimale Konfiguration - einfach aktivieren und es funktioniert sofort.
Sobald aktiviert, tauscht das Plugin automatisch die Tabs in der Ticket-Ansicht:
[Antworten (aktiv)] [Interne Notiz]
[Interne Notiz (aktiv)] [Antworten]
| Szenario | Verhalten |
|---|---|
| Nutzer hat KEINE Antwort-Berechtigung | Nur Notiz-Tab existiert → kein Tausch durchgeführt |
| Ticket ist geschlossen | Keine Formulare vorhanden → kein Tausch durchgeführt |
| Mobile-Ansicht | Tab-Tausch funktioniert (responsives Design kompatibel) |
| PJAX-Navigation | Tab-Tausch wird beim dynamischen Laden erneut angewendet |
Symptome:
Prüfen:
Plugin aktiviert?
Plugin konfiguriert?
Nutzer hat Antwort-Berechtigung?
JavaScript-Fehler?
tab-swap.jsBrowser-Cache?
Strg+F5 (Windows) oder Cmd+Shift+R (Mac)Symptome:
Lösung:
[Tab-Swap] PJAX reload detected NachrichtSymptome:
tab-swap.jsUrsache: /include/.htaccess wurde nicht aktualisiert um statische Assets zu erlauben
Manuelle Lösung (Apache):
Bearbeite /include/.htaccess und füge dies vor der Deny from all Zeile ein:
# Allow static assets for plugins (JavaScript, CSS, images, fonts)
<FilesMatch "\.(js|css|map|json|png|jpg|jpeg|gif|svg|ico|woff|woff2|ttf|eot|otf)$">
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Allow from all
</IfModule>
</FilesMatch>
Für NGINX:
location ~ ^/include/plugins/.+\.(js|css|png|jpg|jpeg|gif|svg|ico|woff|woff2|ttf|eot)$ {
allow all;
access_log off;
expires 7d;
}
location ~ ^/include/ {
deny all;
}
Plugin-Struktur:
tab-swap/
├── plugin.php # Plugin-Metadaten
├── class.TabSwapPlugin.php # Haupt-Plugin-Klasse
├── config.php # Plugin-Konfiguration
└── js/
└── tab-swap.js # Frontend-JavaScript
Das Plugin verbindet sich mit osTickets Signal API:
| Signal | Handler | Zweck |
|---|---|---|
object.view |
onTicketView() |
Erkennt, wenn ein Ticket angezeigt wird |
Implementierung:
Signal::connect('object.view', function(Ticket $ticket) {
if ($user->hasPerm(PERM_REPLY)) {
// JavaScript zum Tab-Tausch injizieren
}
});
JavaScript-Workflow:
#post-reply-tab) und Interne Notiz (#post-note-tab) TabsPJAX-Unterstützung:
$(document).on('pjax:success', function() {
TabSwapPlugin.reset();
TabSwapPlugin.init();
});
| Nutzer-Berechtigung | Verhalten |
|---|---|
Hat PERM_REPLY |
✅ JavaScript injiziert, Tabs getauscht |
Kein PERM_REPLY |
❌ Keine Injektion (Nutzer sieht nur Notiz-Tab) |
F: Modifiziert dieses Plugin osTicket Core-Dateien?
A: Nein! Das Plugin nutzt osTickets offizielle Signal API (object.view). Keine Core-Dateien werden modifiziert.
F: Kann ich das Plugin temporär deaktivieren ohne Konfiguration zu verlieren?
A: Ja! Einfach das Plugin im Admin Panel Deaktivieren. Deine Konfiguration wird in der Datenbank gespeichert.
F: Funktioniert das mit osTicket 1.17 oder älter?
A: Nein. Das Plugin ist für osTicket 1.18.x konzipiert. Ältere Versionen haben möglicherweise eine andere DOM-Struktur.
F: Ist es kompatibel mit PHP 8.x?
A: Ja! Das Plugin ist getestet mit PHP 7.4, 8.0, 8.1, 8.2 und 8.3.
F: Funktioniert das mit benutzerdefinierten osTicket-Themes?
A: Meistens ja, aber benutzerdefinierte Themes haben möglicherweise eine andere DOM-Struktur. Das Plugin basiert auf Standard-Element-IDs (#post-reply-tab, #post-note-tab).
F: Kann ich das mit anderen Plugins nutzen?
A: Ja, aber teste auf Konflikte. Plugins, die dieselben DOM-Elemente modifizieren, können sich gegenseitig stören.
F: Was passiert, wenn ein Nutzer keine Antwort-Berechtigung hat?
A: Das Plugin erkennt dies und injiziert kein JavaScript. Nutzer ohne Antwort-Berechtigung sehen nur den Notiz-Tab (nichts zu tauschen).
F: Beeinflusst das die API-Ticket-Erstellung?
A: Nein, dies ist ein reines Frontend-Plugin. API-Operationen sind nicht betroffen.
F: Warum werden vorgefertigte Antworten immer noch ins Antworten-Formular eingefügt?
A: Dies ist osTicket Core-Verhalten, nicht durch Plugins kontrollierbar. Nach Auswahl einer vorgefertigten Antwort, manuell zum Antworten-Tab wechseln oder Inhalt ins Notiz-Formular kopieren.
Dieses Plugin wird unter der GNU General Public License v2 veröffentlicht, kompatibel mit osTicket Core.
Details siehe LICENSE.
Für Fragen oder Probleme erstelle bitte ein Issue auf GitHub:
Issue Tracker: https://github.com/markus-michalski/osticket-tab-swap/issues
Beim Melden von Problemen bitte angeben:
php -v)Entwickelt von Markus Michalski
Beiträge willkommen!
Siehe CHANGELOG.md für Versionshistorie.