Files

41 lines
2.0 KiB
Markdown
Raw Permalink Normal View History

# `html_form` — Freies HTML-Formular
**Zweck:** Rendert ein beliebiges, selbst definiertes HTML-Formular und blockiert den Workflow, bis der Benutzer es absendet; `<assign_to>` bestimmt Bearbeiter und Benachrichtigung. Nach dem Absenden werden **alle POST-Felder unter ihrem Feldnamen in den Workflow-Kontext übernommen** und stehen nachfolgenden Tasks als `{{feldname}}` zur Verfügung. Ein CSRF-Schutz wird automatisch in jedes `<form>`-Tag injiziert — dafür ist nichts zu konfigurieren.
**Parameter**
| Name | Pflicht? | Default | Beschreibung |
|---|---|---|---|
| `html` | **ja** | — | Vollständiger HTML-Inhalt der Seite (mit mindestens einem `<form method="post">`); Platzhalter werden gerendert |
| `required` | nein | *(keine)* | CSV von Feldnamen, die nicht leer sein dürfen (gilt für Text- und Dateifelder); bei Verstoß wird das Formular mit Hinweis erneut angezeigt |
**Eingangswerte:** Beliebige Kontextvariablen im HTML; zusätzlich steht `{{TASK_ID}}` zur Verfügung.
**Ausgangswerte:**
- Jedes abgesendete Formularfeld als `{{feldname}}` (Strings getrimmt)
- **Datei-Uploads** (`<input type="file" name="feld">`): pro Datei drei Variablen —
- `{{feld}}` — Ablagepfad der hochgeladenen Datei (für Folgetasks wie PDF-Verarbeitung oder Mail-Anhang)
- `{{feld}}_name` — ursprünglicher Dateiname
- `{{feld}}_url` — abrufbare URL der Datei
Uploads sind auf 20 MB begrenzt; ausführbare Formate (Skripte, Programme) werden serverseitig abgelehnt.
```xml
<task type="html_form" id="antrag_erfassen">
<assign_to>{{antragsteller_mail}}</assign_to>
<config>
<required>betreff,anlage</required>
<html><![CDATA[
<!DOCTYPE html><html><body>
<form method="post" enctype="multipart/form-data">
<input type="text" name="betreff" placeholder="Betreff">
<textarea name="beschreibung"></textarea>
<input type="file" name="anlage">
<button type="submit">Absenden</button>
</form>
</body></html>
]]></html>
</config>
</task>
```