{# Eine Meldung als Tabellenzeile — die Liste unter «Meine Meldungen» (Rückmeldung des Auftraggebers, 04.09.2026). **Warum eine Tabelle und keine Karten.** Bis dahin stand jede Meldung in einem eigenen Kasten mit Titel, Nummer, Datum und Status untereinander: vier Angaben auf neunzig Pixel Höhe, fünf davon füllten den halben Bildschirm. «So wirkt die Auflistung mit den wenigen Infos dominant» — und die Angaben fluchten nicht, obwohl jede Zeile dieselben vier trägt. Genau dafür gibt es Spalten. **Am Telefon wird dieselbe Zeile wieder zur Zeile**, das entscheidet der Stil (`.liste` unter 60rem), nicht ein zweites Markup. Ein zweites Markup für dieselbe Sache ist die Doppelung, an der die alte Reiterleiste gestorben ist. **Ohne Kennung kein Verweis.** `/b/meldung/` ist keine Adresse, die es gibt; der Titel steht dann als Text da, statt in eine Absage zu führen. Dieselbe Regel wie bei der Mitteilungszeile des Dashboards. Eine zusammengeführte Meldung verschwindet nicht. Ohne den Satz sucht die Melderin ihre eigene Meldung und findet einen Eintrag, an dem sich nichts mehr tut — obwohl daran gearbeitet wird. `m.id` trägt `|pfadteil`: Autoescape hält den Wert im Attribut, ist aber keine URL-Kodierung (siehe `pfadteil` in `vorlage.py`). #} {% import "bausteine/bausatz.html" as b %} {% set kennung = m.get('id', '') %} {% if kennung %}{{ m.get('titel', '') }}{% else %}{{ m.get('titel', '') }}{% endif %} {%- if zusammen %}Zusammengeführt mit {{ zusammen }}{% endif %} {{ m.get('nummer', '') }} {{ wann }} {#- Die Zelle heisst `zustand` und nicht `stand`: `.stand` ist im Stil global vergeben (Statuskasten der Auftragsseite, Rahmen mit 4-px-Balken und eigenem Abstand) und hätte die Kapsel in ein graues Kästchen gesetzt (Code-Review 2026-09-04). Ein Status ohne Wort wäre nur Farbe; der Bausatz bricht dann ab. Ist keiner da, bleibt die Zelle leer statt eine Kapsel zu erfinden. -#} {% if status %}{{ b.kapsel(status, ton) }}{% endif %}