Das Plugin schreibt Meldungen mit dem Präfix [Markdown-Support] in das PHP-Error-Log. Schau dort zuerst nach.
Symptome: Das Plugin erscheint nicht unter Manage > Plugins, oder osTicket meldet beim Laden einen Fehler.
Prüfung:
include/plugins/markdown-support/ mit plugin.php direkt darin?vendor/autoload.php im Plugin-Ordner? Das Plugin lädt diese Datei zwingend.Lösung: Das Release-ZIP verwenden oder im Git-Checkout composer install --no-dev ausführen.
Prüfung:
js/markdown-editor.js mit Status 200 (Netzwerk-Tab)?tickets.php oder ticket.php? Nur für diese Skriptnamen werden die Assets eingebunden.response, note oder message?Lösung: Seite hart neu laden (Strg+Umschalt+R). Zeigt der Netzwerk-Tab für js oder css einen Fehler 403, siehe den nächsten Abschnitt.
Der Format-Umschalter erscheint nur bei aktivem Allow Format Switching. Er bietet nur Markdown und HTML an. Ein Format Text gibt es im Umschalter nicht.
Das Plugin ergänzt beim Aktivieren die Datei include/.htaccess. Hat das nicht geklappt (zum Beispiel wegen fehlender Schreibrechte), erscheint im Log Warning: /include/.htaccess not found oder Could not find insertion point in /include/.htaccess.
Lösung: Plugin deaktivieren und wieder aktivieren. Prüfe danach, ob include/.htaccess einen Block # Allow static assets and API endpoints for plugins enthält. Bei NGINX gibt es keine automatische Anpassung: Erlaube dort den Zugriff auf /include/plugins/markdown-support/css/ und /include/plugins/markdown-support/js/ in der Server-Konfiguration.
Mögliche Ursachen:
Unable to apply patch - pattern not found, class.thread.php not found oder Failed to write patched file. Prüfe, ob include/class.thread.php den Text case 'markdown': enthält und der Webserver-Benutzer die Datei schreiben darf.Composer autoload not found.Die Vorschau ruft api/markdown-preview.php auf. Antwortet der Endpoint nicht, zeigt der Editor eine vereinfachte Browser-Vorschau ohne Tabellen.
Prüfung:
api/markdown-preview.php? Ist das Verzeichnis api/ für den Webserver-Benutzer beschreibbar? Im Log steht sonst Error: Cannot copy API file oder Error: /api directory not found.405 Method Not Allowed bei GET ist normal)?markdown-support? Der Endpoint sucht Parsedown unter diesem Pfad.| Symptom | Ursache und Lösung |
|---|---|
Meldung Image upload not available — no draft context found. |
Das Eingabefeld hat keinen Draft-Kontext. Der Upload steht nur in Formularen mit osTicket-Drafts zur Verfügung |
Der Platzhalter ![Uploading image-1...]() verschwindet ohne Bild |
Das CSRF-Token fehlt. Seite neu laden |
| Fehlermeldung nach Drag & Drop | Browser-Konsole und Netzwerk-Tab prüfen, upload_max_filesize und post_max_size in PHP prüfen |
| Datei wird abgelehnt | Nur JPEG, PNG, GIF, WebP und BMP sind erlaubt |
Die Vorab-Umwandlung für E-Mails läuft nur bei Anfragen mit format=markdown in $_POST. Bei API-Anfragen steht das Format erst später zur Verfügung. Siehe API-Integration.
Die Konfiguration meldet Auto-convert requires Markdown Support to be enabled. Schalte Enable Markdown Support ein und speichere erneut.
Gibt es eine Option für die Live-Vorschau?
Nein. Die Vorschau ist im Markdown-Modus immer aktiv, außer im kompakten Editor.
Können Clients im Portal Markdown schreiben?
Das Plugin prüft nur den Skriptnamen tickets.php/ticket.php und unterscheidet nicht zwischen Staff und Clients. Ob das Portal-Formular den Editor erhält, hängt von den Seiten deines osTicket ab. Gerendert werden Markdown-Einträge überall dort, wo osTicket den Eintrag ausgibt.
Kann ich Markdown und HTML im selben Ticket mischen?
Ja, das Format gilt pro Thread-Eintrag.
Was passiert beim Deaktivieren mit bestehenden Einträgen?
Das Plugin löscht nichts. Einträge behalten ihr Format und ihren Markdown-Text in der Datenbank. Die Darstellung ohne Plugin bestimmt der osTicket-Core.
Läuft das Plugin mit osTicket 1.17 oder älter?
Das Plugin ist für osTicket 1.18.x geschrieben. Andere Versionen sind nicht Ziel des Plugins, und der Core-Patch kann dort fehlschlagen.
Wird HTML in Markdown-Einträgen ausgeführt?
Nein. Parsedown läuft im SafeMode, und das Ergebnis geht durch Format::sanitize(). Siehe Technische Details.