Optimierung 4.1: Web-Portal-/Domain-Kontext extrahiert
- WebPortalContext::fromRequest() buendelt die zuvor ~6x je Route-Closure wiederholte Host->Portal-Ableitung (portal, language, portalValues, domainConfig). - DomainAssetContext::applyWebDomainConfig() ist die Single Source of Truth fuer die Domain-/Theme-Anwendung (config + View::share + Vite); die fruehere $applyWebDomainConfig-Closure in routes/web.php ist nur noch ein duenner Delegations-Wrapper, damit Bare-Root- und Edition-Home-Route unveraendert per Closure aufrufen koennen. - Die 6 Portal-Seiten-Closures (Kategorie, Detail, Veroeffentlichen, Suche, Newsrooms, Newsroom-Detail) sowie Preise nutzen jetzt den zentralen Kontext. Abgesichert durch die 92 Web/-Tests (jede Seite laeuft ueber den neuen Kontext). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
f20a95f9a4
commit
714a5cd5b1
4 changed files with 106 additions and 98 deletions
|
|
@ -72,7 +72,7 @@ Keine Fachlogik-Änderung. Reduziert erreichbare Demo-Komponenten und Altlasten.
|
|||
|
||||
`routes/web.php` > 1100 Zeilen mit kompletter Datenaufbereitung. Schrittweise, gut absicherbar.
|
||||
|
||||
- [ ] **4.1 Portal-/Domain-Kontext extrahieren** (baut auf 3.3 `DomainContext` auf).
|
||||
- [x] **4.1 Portal-/Domain-Kontext extrahieren** — Die je Route-Closure ~6× wiederholte Host→Portal-Ableitung liegt jetzt in `WebPortalContext::fromRequest()` (liefert `portal`, `language`, `portalValues`, `domainConfig`). Die Domain-/Theme-Anwendung (config + `View::share` + Vite) ist als `DomainAssetContext::applyWebDomainConfig()` zentralisiert (vorher die `$applyWebDomainConfig`-Closure in `routes/web.php`, jetzt ein dünner Delegations-Wrapper, damit Bare-Root- und Edition-Home-Route unverändert bleiben). Abgesichert durch die 92 `Web/`-Tests, die jede Seite über den neuen Kontext laufen lassen.
|
||||
- [x] **4.2 Published-Release-Query zentralisieren** — vier komponierbare Scopes auf `PressRelease`: `scopePublished()` (Status + gesetztes Datum, ohne Zeitschranke → für Statistik-Fenster), `scopeVisibleInArchive()` (`published()` + `published_at <= now()`), `scopeForPortalValues(array)`, `scopeForLanguage(string)`. ~19 dupliziierte Query-Blöcke in `routes/web.php` (Home, Kategorie, Detail, Veröffentlichen, Suche, Newsrooms, Newsroom-Detail, Legacy-Redirect) darüber zentralisiert; jedes `withoutGlobalScope(PortalScope)` an seiner Stelle erhalten (Klausel-Reihenfolge ist für das Ergebnis irrelevant, da reine AND-Verknüpfung). Test: `Web/PublishedReleaseScopeTest`; die 89 bestehenden `Web/`-Tests bleiben grün.
|
||||
- [ ] **4.3 Page-Data in Services** — `HomePageData`/`CategoryPageData`/`NewsroomPageData` für Home/Kategorie/Newsroom/Detail/Suche/Preise.
|
||||
- [ ] **4.4 Routen auf schlanke (Invokable) Controller umstellen** — schrittweise je Seite.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue