{# Dateien, Verlauf und Antwortformular einer Meldung, als drei Karten. **Diese Teilvorlage hat eine Schnittstelle, weil sie zwei Seiten dienen soll:** heute die Verfolgungsseite `/v/{token}`, ab Etappe 3 die Meldungsansicht im Bewohnerportal. Bis dahin rendern beide dasselbe Ticket mit zwei Bauweisen. - `meldung` — das Ticket mit `anhaenge` und `kommentare` - `anhang_basis` — Pfad-Praefix der Anhaenge, OHNE Schraegstrich am Ende - `antwort_ziel` — Ziel des Antwortformulars - `antwort_vorschau_ziel`, `entwurf`, `vorschau`, `max_mb`, `max_zeichen` — was `bausteine/antwortformular.html` seit dem 10.09.2026 zusätzlich braucht. Die Umgebung läuft auf `StrictUndefined`: Fehlt eines davon, bricht das Rendern, und diese Liste ist das, woran sich ein zweiter Aufrufer orientiert (Befund /code-review desselben Tages). **Beide Praefixe baut der Aufrufer, und er kodiert sie dabei selbst** (`vorlage.pfadteil`). Hier laesst sich das nicht nachholen: Ein Praefix IST ein Pfad mit Schraegstrichen, `|pfadteil` machte ihn kaputt. Die Kennung des Anhangs dagegen ist EIN Abschnitt und wird hier kodiert — Autoescape schliesst nur den Attributausbruch, nicht die Pfadverschiebung (Sicherheitsdurchgang 2026-09-02). Dazu erwartet sie `statusklasse`, `status_text`, `datum` und seit Etappe 2 `ton` im Kontext (fuer `bausteine/kommentar.html`). Die Dateikarte heisst `anhaenge`, nicht `dateien`: `.dateien` ist der Chip-Behaelter des Meldeformulars (`display: flex`), und die Karte des Handwerkers lief am 2026-09-03 genau in diese Regel. #} {% import "bausteine/bausatz.html" as b %} {% import "bausteine/symbol.html" as s %} {% if meldung.anhaenge %}{% call b.kasten("Dateien", meldung.anhaenge|length, "anhaenge") %}{% with dateien = meldung.anhaenge, dateien_basis = anhang_basis %}{% include "bausteine/dateiliste.html" %}{% endwith %}{% endcall %}{% endif %} {#- Der Zähler nennt die GESAMTZAHL, auch wenn gefiltert ist: Sonst sagt die Karte «Verlauf (2)», und niemand weiss mehr, dass elf da sind. -#} {% call b.kasten("Verlauf", verlauf_gesamt if verlauf_gesamt else "", "verlauf") %}{% include "bausteine/strang.html" %}{% endcall %} {#- **Das Antwortfeld steht UNTER dem Verlauf**, und zwar wieder. Zwischen dem 10.09.2026 vormittags und nachmittags stand es darüber, weil der Strang umgedreht war; der Auftraggeber hat beides am gebauten Stand zurückgenommen: «Auch mit dem Lesen und unten schreiben.» Wer geantwortet hat, hat gerade die letzte Nachricht gelesen, und die steht jetzt direkt darüber. -#} {% call b.kasten("Antworten", klasse="antwort") %}{% include "bausteine/antwortformular.html" %}{% endcall %}