diff --git a/app/main.py b/app/main.py index b416e6f..3efe55d 100644 --- a/app/main.py +++ b/app/main.py @@ -376,7 +376,22 @@ _MATRIX_EXPLANATIONS = { @app.get("/antrag/{drucksache:path}", response_class=HTMLResponse) async def antrag_detail(request: Request, drucksache: str, current_user: Optional[dict] = Depends(get_current_user)): - """v2-Antrag-Detail (Profi-Modus): volles GWÖ-Dashboard pro Drucksache.""" + """Standard-Antrag-Detail (v3 Bürger:innen-Modus, single column). + + Bisheriger Profi-Modus (v2, zwei Spalten) ist unter /v2/antrag/{drs} + weiterhin erreichbar — Link im Admin-Bereich (/v2/admin/stand). + """ + return await _render_antrag_detail( + request, drucksache, current_user, "v3/screens/antrag_detail.html" + ) + + +@app.get("/v2/antrag/{drucksache:path}", response_class=HTMLResponse) +async def antrag_detail_v2(request: Request, drucksache: str, current_user: Optional[dict] = Depends(get_current_user)): + """Alt-Profi-Modus: zweispaltiges Layout mit allen Feldern gleichzeitig. + + Ist nicht mehr Standard, bleibt aber als Power-User-Variante zugaenglich. + """ return await _render_antrag_detail( request, drucksache, current_user, "v2/screens/antrag_detail.html" ) @@ -384,12 +399,8 @@ async def antrag_detail(request: Request, drucksache: str, current_user: Optiona @app.get("/v3/antrag/{drucksache:path}", response_class=HTMLResponse) async def antrag_detail_v3(request: Request, drucksache: str, current_user: Optional[dict] = Depends(get_current_user)): - """v3-Antrag-Detail (Bürger:innen-Modus, Beta): vereinfachte Vorschau. - - Sandbox fuer Issues #184 (CD-Konformitaet) und #185 (Bürgerinnen- - Perspektive). Initial identisch zu v2; iterative Vereinfachungen - folgen pro PR. v2-Endpoint bleibt unangetastet. - """ + """Alias auf den Standard (= /antrag/{drs}), damit alte Bookmarks + auf v3-URLs weiter funktionieren.""" return await _render_antrag_detail( request, drucksache, current_user, "v3/screens/antrag_detail.html" ) diff --git a/app/static/v3/v3.css b/app/static/v3/v3.css index e2f9bf1..715fecd 100644 --- a/app/static/v3/v3.css +++ b/app/static/v3/v3.css @@ -407,14 +407,24 @@ } /* ── 9. Rest-Block ─────────────────────────────────────────────────── */ +/* Kein eigenes border-top mehr — die letzte v3-section (z.B. + Abstimmungsergebnis) liefert bereits die Trennlinie via border-bottom. + Vorher waren beide aktiv → Doppellinie. */ .v3-rest { margin-top: 28px; padding-top: 20px; - border-top: 1px solid var(--hairline); display: flex; flex-direction: column; gap: 22px; } + +/* Trennlinien zwischen ausgewählten Rest-Blöcken: vor Teilen und vor + Aktions-Links (Beginn des administrativen Bereichs). */ +.v3-rest > .v3-rest-block.v3-rest-divider-top, +.v3-rest > .v3-rest-aktions.v3-rest-divider-top { + border-top: 1px solid var(--hairline); + padding-top: 22px; +} .v3-rest-block { font-size: 13px; } diff --git a/app/templates/v2/screens/admin_stand.html b/app/templates/v2/screens/admin_stand.html index cfd8a09..3a908fd 100644 --- a/app/templates/v2/screens/admin_stand.html +++ b/app/templates/v2/screens/admin_stand.html @@ -167,6 +167,19 @@
+ + {# Alternative Detail-Ansichten — nur im Admin sichtbar. + Default ist v3 (`/antrag/{drs}`), der frühere Profi-Modus läuft + unter /v2/antrag/. Hier ein Sample-Link, damit Admins ihn finden. #} +
+ Standard-Detailansicht ist v3 (Bürger:innen-Modus, single column).
+ Die frühere v2-Profi-Ansicht (zwei Spalten, alle Felder gleichzeitig)
+ bleibt unter /v2/antrag/<Drucksache> erreichbar.
+
+ Lade aktuelles Beispiel … +
{% endblock %} @@ -281,6 +294,30 @@ async function loadStand() { } } +/* Sample-Link für Alternative Ansichten: aktuellster Antrag */ +(async function () { + var el = document.getElementById('alt-views-sample'); + if (!el) return; + try { + var r = await fetch('/api/assessments?limit=1'); + var data = await r.json(); + var a = (data && data[0]) || (data.results && data.results[0]) || null; + if (!a || !a.drucksache) { + el.textContent = 'Kein Beispiel-Antrag verfügbar.'; + return; + } + var drs = encodeURIComponent(a.drucksache); + var labelFor = function (s) { return s.length > 70 ? s.slice(0,68) + '…' : s; }; + el.innerHTML = + 'Beispiel: ' + (a.bundesland || '?') + ' · Drs. ' + a.drucksache + + ' — „' + labelFor((a.title || '')) + '"