Rebrand Hub+Flux
This commit is contained in:
parent
0a3e52d603
commit
9b47296cea
130 changed files with 9357 additions and 3345 deletions
136
dev/frontend/hub-flux/15-PHASE-4I-ADMIN-PRESS-RELEASES.md
Normal file
136
dev/frontend/hub-flux/15-PHASE-4I-ADMIN-PRESS-RELEASES.md
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
# 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 um `rejected` und `archived`
|
||||
Counter, damit alle 6 Saved-Views-Tabs ihre Counter haben
|
||||
|
||||
## Tests
|
||||
|
||||
- `AdminPressReleaseActionsTest` (3 Tests, prüft auf Modal-Strings)
|
||||
- `PressReleaseWorkflowTest` (mehrere Tests, prüft auf
|
||||
`publish`/`reject`-Methoden + Audit-Logs)
|
||||
- Volle Suite muss weiter sauber laufen (modulo
|
||||
pre-existing `ApiDocumentationTest`)
|
||||
|
||||
## Akzeptanzkriterien
|
||||
|
||||
- [x] Plan
|
||||
- [x] Volt: `stats` um `rejected` + `archived` erweitert
|
||||
- [x] Volt: `setView()` + `resetFilters()` ergänzt
|
||||
- [x] Saved-Views-Tabs eingebaut (6 Stück inkl. Counter)
|
||||
- [x] Active-Chips eingebaut (8 Filter-Typen)
|
||||
- [x] Portal-Pills statt Text (incl. Both → 2 Pills)
|
||||
- [x] Row-Tinting (review → warn, rejected → err)
|
||||
- [x] Inline-Actions als Modal-Trigger
|
||||
(Freigeben/Ablehnen/Archivieren) zusätzlich neben Badge
|
||||
- [x] Sub-Zeilen: PM-ID + Firma + Sprache, Datum + Status-Kontext
|
||||
- [x] Empty-State 2-stufig (mit/ohne Filter)
|
||||
- [x] Build + Pint + Tests grün (16/16 PR + 230/231 voll)
|
||||
- [x] 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 ... @endphp` umgewandelt.
|
||||
- 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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue