Das Plugin hat keine eigene API für Tickets. Es setzt beim Anlegen eines Thread-Eintrags das Format, wenn die Anfrage eines mitbringt, und kann Markdown-Syntax optional automatisch erkennen.
Der Signal-Handler threadentry.created ermittelt das Format in dieser Reihenfolge:
format in $_POST.Content-Type: application/json das Feld format im JSON-Body.Gültig sind markdown, html und text (Groß- und Kleinschreibung egal). Jeder andere Wert wird zu html. Das Plugin schreibt das ermittelte Format danach in die Spalte format des Thread-Eintrags.
{
"name": "Max Mustermann",
"email": "max@example.com",
"subject": "Ticket mit Markdown",
"message": "## Problem\n\nDer Server antwortet **nicht**.",
"format": "markdown"
}
Den Text für die Zeilenumbruch-Wiederherstellung und die Auto-Erkennung liest das Plugin aus den Feldern response, note, message und body (das erste nicht leere Feld gilt).
osTicket entfernt beim Speichern teilweise Zeilenumbrüche. Das Plugin stellt sie wieder her, wenn der Text in
$_POSTZeilenumbrüche enthält und der gespeicherte Eintrag keine hat.
Mit der Option Auto-Convert Markdown Syntax speichert das Plugin Einträge als Markdown, wenn die Anfrage kein format in $_POST mitbringt und der Text Markdown-Syntax enthält.
Jedes Muster zählt einmal, egal wie oft es vorkommt:
| Muster | Punkte | Beispiel |
|---|---|---|
| Code-Block | 20 | ```code``` |
| Überschrift | 15 | # Titel |
| Link | 15 | [Text](url) |
| Aufzählung | 12 | - Punkt oder * Punkt |
| Nummerierte Liste | 12 | 1. Punkt |
| Fett | 10 | **fett** |
| Zitat | 10 | > Zitat |
| Kursiv | 8 | *kursiv* |
| Inline-Code | 5 | `code` |
| Horizontale Linie | 5 | --- |
Der Schwellenwert ist fest 5. Damit reicht schon ein einziges erkanntes Muster, um den Eintrag als Markdown zu speichern.
Die Erkennung ist sehr empfindlich: Schon eine Zeile wie
- Punktoder ein Wort in*Sternchen*gilt als Markdown. Sende bei API-Aufrufen lieber das Feldformatausdrücklich mit.
Das Plugin API Endpoints nimmt format bei POST /tickets entgegen und prüft den Wert. Es führt den JSON-Body in $_POST zusammen, bevor das Ticket entsteht. Dadurch findet der Signal-Handler dieses Plugins das Format.
noteFormat. Fehlt es, nimmt API Endpoints markdown.format=markdown mit einem Fehler ab, wenn Markdown Support nicht aktiv ist. API Endpoints erkennt das Plugin daran, dass die Klasse MarkdownThreadEntryBody existiert. Die Klasse ist nur vorhanden, wenn Markdown Support aktiviert ist und Parsedown geladen wurde.markdown. Weitere Schreibweisen, die API Endpoints akzeptiert, kennt Markdown Support nicht.Das Plugin wandelt Markdown für ausgehende E-Mails nur bei Anfragen mit format=markdown in $_POST vorab zu HTML um (siehe Technische Details). Diese Umwandlung läuft beim Start von osTicket und sieht den JSON-Body einer API-Anfrage noch nicht. Bei API-Tickets setzt das Plugin daher nur das Format des gespeicherten Eintrags.