4.5 KiB
Phase 4I — Admin „Pressemitteilungen" Mockup-Patterns
Folgepäckchen zu 4H. Überträgt die in der Customer-PM-Liste entwickelten Mockup-Patterns auf die Admin-Seite. Die CSS-Komponenten existieren bereits.
Status: ✅ abgeschlossen · Aufwand: ~½ Tag · Risiko: niedrig
Anlass
Nach 4H matched customer/press-releases/index.blade.php das
Mockup zu ~90 %. Die gleichen Patterns gehören in die
Admin-Liste — das ist der zentrale Editorial-Workflow.
Aktueller Stand
admin/press-releases/index.blade.php ist bei ~60 % Match:
- ✅ Page-Header (Hub-Stil)
- ✅ 4-KPI-Reihe (
<x-portal.stat-card>) - ✅ Filter-Panel (search/status/portal/language/category + 3 entity-comboboxes)
- ✅ Tabellen-Panel + Empty-State (Hub-styled)
- ✅ Modals (publish/reject/archive) — test-kritisch
- ❌ Saved-Views-Tabs
- ❌ Active-Chips für aktive Filter
- ❌ Portal-Pills (statt Text)
- ❌ Row-Tinting (review/rejected)
- ❌ Inline-Actions („Veröffentlichen →", „Ablehnen →" neben Status)
- ❌ Reichere Sub-Zeilen (PM-{id} + Datum + Status-Kontext)
Scope
1. Saved-Views-Tabs
Tab-Leiste zwischen KPI-Reihe und Filter:
Alle · Veröffentlicht · In Prüfung · Entwürfe · Abgelehnt · Archiv
Counter-Pille pro Tab basierend auf erweiterten stats.
2. Active-Chips
Sichtbarkeit aller aktiven Filter (Status, Portal, Sprache,
Kategorie, User, Firma, Kontakt, Suche), jeweils mit ×.
3. Portal-Pills
Statt „Presseecho"/„Businessportal24"/„Beide" als Text:
Portal-Pills mit farbigem Dot. Bei Portal::Both zwei
Pills nebeneinander.
4. Row-Tinting
is-row-warn für review, is-row-err für rejected.
5. Inline-Actions
Zusätzlich zu den bestehenden Action-Buttons + Modals:
| Status | Inline-Action |
|---|---|
| Review | Freigeben → + Ablehnen → (öffnet die Modals) |
| Published | Archivieren → (öffnet Modal) |
Die Inline-Actions sind nur Trigger für die bestehenden
Modals (keine direkte Wire-Methode), damit die existierenden
Test-Modal-Strings („Pressemitteilung veröffentlichen?")
weiter angezeigt werden. Action-Buttons in der Aktionen-
Spalte bleiben als Backup für Power-User.
6. Reichere Sub-Zeilen
In Titel-Zelle: PM-{id} als Sub. In Datum-Zelle: Hauptdatum
- Status-Kontext (
erstellt · 11:02,veröffentlicht · 14:30, …).
7. Counter-Strip ausgelassen
KPI-Reihe ist bereits 4-spaltig (Gesamt, Veröffentlicht, In Prüfung, Entwürfe) und voll funktional. Counter-Strip wäre redundant. Bleibt bei KPI-Cards.
Was bleibt unangetastet
- Volt-Methoden (
publish,reject,archive,sort,with,clearUserFilter, …) - Bestehende Modals mit Strings „Pressemitteilung veröffentlichen?", „Pressemitteilung ablehnen?", „Pressemitteilung archivieren?" (Test-kritisch)
- Filter-Panel-Struktur (Entity-Comboboxes erhalten, kein Reduktionsexperiment)
stats-Cache-Methode (AdminPerformanceCache)
Erweiterung
pressReleaseStats()erweitert umrejectedundarchivedCounter, damit alle 6 Saved-Views-Tabs ihre Counter haben
Tests
AdminPressReleaseActionsTest(3 Tests, prüft auf Modal-Strings)PressReleaseWorkflowTest(mehrere Tests, prüft aufpublish/reject-Methoden + Audit-Logs)- Volle Suite muss weiter sauber laufen (modulo
pre-existing
ApiDocumentationTest)
Akzeptanzkriterien
- Plan
- Volt:
statsumrejected+archivederweitert - Volt:
setView()+resetFilters()ergänzt - Saved-Views-Tabs eingebaut (6 Stück inkl. Counter)
- Active-Chips eingebaut (8 Filter-Typen)
- Portal-Pills statt Text (incl. Both → 2 Pills)
- Row-Tinting (review → warn, rejected → err)
- Inline-Actions als Modal-Trigger (Freigeben/Ablehnen/Archivieren) zusätzlich neben Badge
- Sub-Zeilen: PM-ID + Firma + Sprache, Datum + Status-Kontext
- Empty-State 2-stufig (mit/ohne Filter)
- Build + Pint + Tests grün (16/16 PR + 230/231 voll)
- PROGRESS.md + 03-WEITERE-PHASEN.md aktualisiert
Lessons Learned
@php(...)Inline-Form führte beim Compile zu einem Syntax-Fehler im kompilierten View (führte zu<?php($var = ...)ohne Whitespace), obwohl alle Klammern balanced waren. Vermutung: Konflikt der Klammer-Zählung mit Methoden-Calls. Lösung: alle drei@php(...)Statements zu@php ... @endphpumgewandelt.- Tabellen-Spalten reduziert (8 → 7), weil die rechte „Aktionen"-Spalte mit den Status-Icons inhaltlich redundant zur neuen Inline-Action in der Status-Spalte war. Die linke „Aktionen"-Spalte (view/edit) blieb.