diff --git a/app/Http/Middleware/SetEdition.php b/app/Http/Middleware/SetEdition.php new file mode 100644 index 0000000..2ae27dc --- /dev/null +++ b/app/Http/Middleware/SetEdition.php @@ -0,0 +1,47 @@ + …])` setzen, damit benannte Routen + * (`route('kategorie', …)`) das Präfix automatisch erhalten – auch auf + * Seiten ohne Edition-Präfix (Hub/Auth) bleibt so ein gültiger Default. + * 3. App-Locale nur für echte Edition-URLs übernehmen, damit Admin-/Hub-Seiten + * ihre eigene Locale behalten. + */ +class SetEdition +{ + /** + * @var array + */ + public const EDITIONS = ['de', 'en']; + + public const DEFAULT_EDITION = 'de'; + + public function handle(Request $request, Closure $next): Response + { + $segment = $request->segment(1); + $isEdition = in_array($segment, self::EDITIONS, true); + $edition = $isEdition ? $segment : self::DEFAULT_EDITION; + + URL::defaults(['edition' => $edition]); + + if ($isEdition) { + app()->setLocale($edition); + } + + return $next($request); + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 809f2dc..34af02b 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -6,6 +6,7 @@ use App\Contracts\NewsletterSyncClient; use App\Helpers\ThemeHelper; use App\Http\Middleware\EnsureUserIsAdmin; use App\Http\Middleware\LogSlowAdminRequests; +use App\Http\Middleware\SetEdition; use App\Listeners\ActivateUserAfterVerification; use App\Listeners\SyncCompanyMembershipsOnLogin; use App\Models\AdminPreset; @@ -59,6 +60,13 @@ class AppServiceProvider extends ServiceProvider URL::forceScheme('https'); } + // Baseline für das Ausgabe-Präfix (de|en). Die SetEdition-Middleware + // überschreibt dies pro Request mit der tatsächlichen Ausgabe; der + // Default hier stellt sicher, dass route('…')-Aufrufe das {edition}- + // Segment auch außerhalb der HTTP-Middleware erhalten (Livewire-Tests, + // Konsole, Mails). + URL::defaults(['edition' => SetEdition::DEFAULT_EDITION]); + // Registrierung → Verifizierungsmail; bestätigter Klick → Aktivierung. Event::listen(Registered::class, SendEmailVerificationNotification::class); Event::listen(Verified::class, ActivateUserAfterVerification::class); diff --git a/app/Support/CategoryNavigation.php b/app/Support/CategoryNavigation.php new file mode 100644 index 0000000..2a91a88 --- /dev/null +++ b/app/Support/CategoryNavigation.php @@ -0,0 +1,67 @@ + + */ + public static function items(int $limit = 9): Collection + { + $portal = Portal::tryFrom((string) config('app.theme')) ?? Portal::Businessportal24; + $language = app()->getLocale(); + $portalValues = [$portal->value, Portal::Both->value]; + + return Category::query() + ->with(['translations' => fn ($query) => $query->where('locale', $language)]) + ->withCount([ + 'pressReleases as published_count' => function (Builder $query) use ($portalValues, $language): void { + $query + ->withoutGlobalScope(PortalScope::class) + ->whereIn('portal', $portalValues) + ->where('status', PressReleaseStatus::Published) + ->where('language', $language) + ->whereNotNull('published_at'); + }, + ]) + ->whereIn('portal', $portalValues) + ->where('is_active', true) + ->whereNull('parent_id') + ->orderByDesc('published_count') + ->orderBy('id') + ->limit($limit) + ->get() + ->map(function (Category $category): ?array { + $translation = $category->translations->first(); + + if (! $translation || ! $translation->slug) { + return null; + } + + return [ + 'label' => $translation->name, + 'slug' => $translation->slug, + 'href' => route('kategorie', ['slug' => $translation->slug]), + ]; + }) + ->filter() + ->values(); + } +} diff --git a/app/Support/EditorialClock.php b/app/Support/EditorialClock.php new file mode 100644 index 0000000..b936fb8 --- /dev/null +++ b/app/Support/EditorialClock.php @@ -0,0 +1,48 @@ + $portalValues + */ + public static function reference(array $portalValues, string $language = 'de'): Carbon + { + $latest = PressRelease::query() + ->withoutGlobalScope(PortalScope::class) + ->whereIn('portal', $portalValues) + ->where('status', PressReleaseStatus::Published) + ->where('language', $language) + ->whereNotNull('published_at') + ->where('published_at', '<=', now()) + ->max('published_at'); + + if (! $latest) { + return now(); + } + + $latest = Carbon::parse($latest); + + return $latest->lt(now()) ? $latest : now(); + } +} diff --git a/bootstrap/app.php b/bootstrap/app.php index f0d9356..a49f315 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -4,6 +4,7 @@ use App\Http\Middleware\BasicAuthMiddleware; use App\Http\Middleware\LogApiUsage; use App\Http\Middleware\RejectLegacyApiKeys; use App\Http\Middleware\SetCurrentPortal; +use App\Http\Middleware\SetEdition; use Illuminate\Foundation\Application; use Illuminate\Foundation\Configuration\Exceptions; use Illuminate\Foundation\Configuration\Middleware; @@ -23,6 +24,9 @@ return Application::configure(basePath: dirname(__DIR__)) // Portal-Kontext nach dem Theme-Provider setzen (liest config('app.theme')) $middleware->append(SetCurrentPortal::class); + // Ausgabe/Sprache (de|en) aus dem URL-Präfix ableiten und URL-Defaults setzen. + $middleware->append(SetEdition::class); + // Wohin eingeloggte User von Gast-Routen (/login, /register) gelenkt // werden: rollen- und verifizierungsbewusst statt fix auf /dashboard, // sonst landet ein Customer dort im 403 und sitzt fest. diff --git a/dev/frontend/ENTWICKLUNGSKONZEPT-BusinessPortal24-Frontend.md b/dev/frontend/ENTWICKLUNGSKONZEPT-BusinessPortal24-Frontend.md index ae29a5a..2d35782 100644 --- a/dev/frontend/ENTWICKLUNGSKONZEPT-BusinessPortal24-Frontend.md +++ b/dev/frontend/ENTWICKLUNGSKONZEPT-BusinessPortal24-Frontend.md @@ -506,7 +506,17 @@ Fünf Test-Szenarien rund um die Hub-Landing: 4. **`shows the brand-context banner when arriving from presseecho`** – `?from=presseecho` triggert den Banner inkl. Link „Zurück zu presseecho.de". 5. **`shows the brand-context banner when arriving from businessportal24`** – `?from=businessportal24` triggert den Banner für BP24. -**Stand:** 11 Web-Tests grün (BP24 3 + Presseecho 3 + Hub 5 = 79 Assertions). Gesamt-Suite: 220/221 (der eine Fail `ApiDocumentationTest` ist vorbestehend wegen fehlender `docs/api/v1.yml` und nicht UI-bezogen). +### Datei: `tests/Feature/Web/ReleaseDetailTest.php` + +Fünf Szenarien rund um die Detailseite: + +1. **`businessportal24 release detail renders the editorial shell with real data`** – Titel, Lead/Subtitle, Newsroom, Rubrik, Pressekontakt, Boilerplate, Schlagwörter und sanitisierter Fließtext. +2. **`release detail counts a hit`** – `hits` wird beim Aufruf um 1 erhöht. +3. **`release detail returns 404 for drafts and unknown slugs`** – Entwürfe und unbekannte Slugs liefern 404. +4. **`release detail does not expose releases from another portal`** – Portal-Trennung: presseecho-Release ist auf BP24 nicht abrufbar, auf presseecho schon. +5. **`release detail shows more from newsroom and related releases`** – „Mehr von [Newsroom]" + „Verwandte Meldungen". + +**Stand:** Web-Tests grün (BP24 3 + Presseecho 3 + Hub 5 + Detailseite 5 + Canonical/Meta). Gesamt-Suite: 612 grün, 1 skipped. --- @@ -567,6 +577,7 @@ vendor/bin/pint --dirty --format agent | 17 | 13.05.2026 | `PressekontoHubHomeTest` (5 Szenarien inkl. Brand-Context-Banner-Conditional). Vite-Config + ThemeHelper + `web-master`-Fonts (Inter Tight + JetBrains Mono ohne Serif) für `pressekonto` ergänzt. | ✅ | | 18 | 13.05.2026 | **Brand-Mark-Konvention etabliert** (Feintuning Marken-Schreibweise): keine TLD am Marken­schriftzug, Akzent farblich vom Basis-Wort abgesetzt. Single Source of Truth `` (Marken-Tabelle inkl. Standard- und On-Dark-Akzentfarben, Serif/Sans-Switch). `config/domains.php` umgestellt (`presseecho`: `name=presse`/`accent=echo`; `pressekonto`: `name=presse`/`accent=konto`; Footer-Legal & Meta-Texte ohne TLD). Hub-Komponenten und Hub-View durchgehend auf Brand-Mark migriert (Top-Utility-Bar, Site-Header, Brand-Context-Banner, Site-Footer, Hero-Headline, Architektur-Diagramm, Tarif-Subline, Plattform-Familie, FAQ). Hub-Theme bekommt Source Serif 4 als `--font-serif` (für Marken-Mentions) – Bunny-Font-Loader erweitert. **+1 neuer Test `uses the brand-mark splitting without TLDs`**; alle 12 Web-Tests grün. | ✅ | | 19 | 12.05.2026 | **Aktuell offen:** Detailseite, Branchenseite, Veröffentlichen-Landing für BP24 + Presseecho. Hub-Folgeseiten (Konto-Erstellen-Flow als Landing, Tarif-Detail, Doku-Hub) ebenfalls offen. | 🟡 | +| 20 | 16.06.2026 | **Detailseite Pressemitteilung live** (1:1 zu `tailwind_v3/businessportal24_detailseite-tailwind.html`): `web/release-detail.blade.php` komplett auf Editorial-Design + Theme-Tokens umgebaut, nutzt ``/``, theme-fähig für BP24 **und** Presseecho. `release.detail`-Route lädt echte `PressRelease`-Daten (Lead/Subtitle, sanitisierter Fließtext via `renderedText()`, Hero-Bild mit Hatch-Fallback, Pressekontakt aus `contacts`, Schlagwörter aus `keywords`, Boilerplate, Hit-Zähler), 404 bei Entwurf/Fremd-Portal/Unbekannt. Related-Spalten „Mehr von [Newsroom]" + „Verwandte Meldungen" über ``. Lese-Fortschrittsbalken + Teilen (LinkedIn/X/Mail/Copy) via Alpine. Neue Status-/Prosa-Tokens (`warn-*`, `verify-*`, `.hatch-*`, `.pm-body`) zentral in `shared-styles.css`. **+5 Tests `ReleaseDetailTest`** (BP24-Shell, Hit-Zähler, 404-Fälle, Portal-Trennung, Related); `CanonicalMetaTest` auf echten Datensatz umgestellt. Gesamt-Suite 612 grün. | ✅ | --- @@ -575,7 +586,7 @@ vendor/bin/pint --dirty --format agent | Reihenfolge | Aufgabe | Vorlage | Status | | --- | --- | --- | --- | | 1 | **Mobile-Feinschliff Startseite** gegen `dev/frontend/Mobile _ Startseite.png` durchgehen, alle Sektionen testen (besonders 7-Spalten-Events und 4×2 Branchen-Index Stack-Behavior) | `Mobile _ Startseite.html` | 🟡 noch nicht final geprüft | -| 2 | **Detailseite Pressemitteilung** umsetzen | `tailwind_v3/Detailseite Tailwind.html` + `Detailseite _ Pressemitteilung _aktiv.png` | 🔴 offen | +| 2 | **Detailseite Pressemitteilung** umsetzen | `tailwind_v3/businessportal24_detailseite-tailwind.html` + `Detailseite _ Pressemitteilung _aktiv.png` | ✅ **erledigt (16.06.2026)** – `web/release-detail.blade.php` editorial, echte Daten, theme-fähig BP24+Presseecho, `ReleaseDetailTest` | | 3 | **Branchenseite Energie & Klima** umsetzen (Template für alle Kategorien) | `tailwind_v3/Branchenseite Tailwind.html` + `Branchenseite _ Energie _ Klima _aktiv.png` | 🔴 offen | | 4 | **Veröffentlichen-Landing** umsetzen (Variante A) | `tailwind_v3/Veröffentlichen Tailwind.html` + `Ver_ffentlichen _ Variante A _aktiv_.png` | 🔴 offen | | 5 | **Echte Datenquellen** für aktuell statische Komponenten anbinden: Live-Ticker (Ad-Hoc-Meldungen), Events-Week, Newsletter-Topics, Industry-Spotlight-Studie | – | 🔴 offen | diff --git a/dev/frontend/Branchenseite _ Energie _ Klima _aktiv.html b/dev/frontend/claude-design/Branchenseite _ Energie _ Klima _aktiv.html similarity index 100% rename from dev/frontend/Branchenseite _ Energie _ Klima _aktiv.html rename to dev/frontend/claude-design/Branchenseite _ Energie _ Klima _aktiv.html diff --git a/dev/frontend/Branchenseite _ Energie _ Klima _aktiv.png b/dev/frontend/claude-design/Branchenseite _ Energie _ Klima _aktiv.png similarity index 100% rename from dev/frontend/Branchenseite _ Energie _ Klima _aktiv.png rename to dev/frontend/claude-design/Branchenseite _ Energie _ Klima _aktiv.png diff --git a/dev/frontend/Detailseite _ Pressemitteilung _aktiv.html b/dev/frontend/claude-design/Detailseite _ Pressemitteilung _aktiv.html similarity index 100% rename from dev/frontend/Detailseite _ Pressemitteilung _aktiv.html rename to dev/frontend/claude-design/Detailseite _ Pressemitteilung _aktiv.html diff --git a/dev/frontend/Detailseite _ Pressemitteilung _aktiv.png b/dev/frontend/claude-design/Detailseite _ Pressemitteilung _aktiv.png similarity index 100% rename from dev/frontend/Detailseite _ Pressemitteilung _aktiv.png rename to dev/frontend/claude-design/Detailseite _ Pressemitteilung _aktiv.png diff --git a/dev/frontend/Mobile _ Startseite.html b/dev/frontend/claude-design/Mobile _ Startseite.html similarity index 100% rename from dev/frontend/Mobile _ Startseite.html rename to dev/frontend/claude-design/Mobile _ Startseite.html diff --git a/dev/frontend/Mobile _ Startseite.png b/dev/frontend/claude-design/Mobile _ Startseite.png similarity index 100% rename from dev/frontend/Mobile _ Startseite.png rename to dev/frontend/claude-design/Mobile _ Startseite.png diff --git a/dev/frontend/Pass B _ _ Deutschland _aktiv.html b/dev/frontend/claude-design/Pass B _ _ Deutschland _aktiv.html similarity index 100% rename from dev/frontend/Pass B _ _ Deutschland _aktiv.html rename to dev/frontend/claude-design/Pass B _ _ Deutschland _aktiv.html diff --git a/dev/frontend/Pass B _ _ Deutschland _aktiv.png b/dev/frontend/claude-design/Pass B _ _ Deutschland _aktiv.png similarity index 100% rename from dev/frontend/Pass B _ _ Deutschland _aktiv.png rename to dev/frontend/claude-design/Pass B _ _ Deutschland _aktiv.png diff --git a/dev/frontend/Ver_ffentlichen _ Variante A _aktiv_.html b/dev/frontend/claude-design/Ver_ffentlichen _ Variante A _aktiv_.html similarity index 100% rename from dev/frontend/Ver_ffentlichen _ Variante A _aktiv_.html rename to dev/frontend/claude-design/Ver_ffentlichen _ Variante A _aktiv_.html diff --git a/dev/frontend/Ver_ffentlichen _ Variante A _aktiv_.png b/dev/frontend/claude-design/Ver_ffentlichen _ Variante A _aktiv_.png similarity index 100% rename from dev/frontend/Ver_ffentlichen _ Variante A _aktiv_.png rename to dev/frontend/claude-design/Ver_ffentlichen _ Variante A _aktiv_.png diff --git a/dev/frontend/tailwind_v3/Startseite presseecho Tailwind.html b/dev/frontend/tailwind_v3/Startseite presseecho Tailwind.html deleted file mode 100644 index 8c2e050..0000000 --- a/dev/frontend/tailwind_v3/Startseite presseecho Tailwind.html +++ /dev/null @@ -1,1268 +0,0 @@ - - - - - -businessportal24 — Startseite (DE) - - - - - - - - - - - - - - - -
- - -
-
- - - Mi, 6. Mai 2026 - - - - Ausgabe - - - - - - - - - - - - - - - - - Deutsch - - - Newsletter - RSS - API - -
-
- - -
-
-
-
- businessportal24 -
-
- Pressemitteilungen · DACH -
-
- - -
-
- - - - - Pressemitteilungen, Unternehmen, Branchen, ISIN… - ⌘K -
-
- -
-
- - - -
-
- - - - - -
-
-
- - - AD-HOC - -
- - 14:32 - Siemens Energy hebt Jahresprognose an - - - 14:18 - BASF: Restrukturierung in Ludwigshafen abgeschlossen - - - 13:55 - Deutsche Bahn meldet Rekord bei Fernverkehr - -
-
- - - - - DAX - 18.247 - +0,8% - - - - -
-
- - -
- - -
-
-

- Im Fokus - · 🇩🇪 Deutschland -

-
Mittwoch, 14:42 Uhr · Auswahl der Redaktion
-
-
- -
- - -
-
-
- - - - - - - - - - -
- -
- TOP-MELDUNG - Audio · 24 min -
- -
-
KI & Innovation
-

- Die Zukunft der KI im deutschen Mittelstand -

-

- Im exklusiven Interview spricht Dr. Maria Schmidt, Leiterin des KI-Instituts München, über Chancen und Herausforderungen der KI für mittelständische Unternehmen. -

-
- KI-Institut München· - 17.10.2026 · 09:30· - 5 Min. Lesezeit -
-
-
- - -
-
- - - - - -
-
- 1 von 3 Top-Meldungen -
-
-
- - - -
-
- - -
- - -
-
-

Aktuelle Meldungen

- -
-
- - -
-
- - - - - - - Top-Meldung -
-
-
- Bauen · Immobilien - 14:18 -
-

- Immobilienmarkt 2025: Experten prognostizieren Trendwende bei Kaufpreisen -

-

- Nach 18 Monaten der Konsolidierung deuten Frühindikatoren auf eine Erholung hin. ImmoConsult-Studie analysiert 240 Märkte in DACH. -

-
- - - - - ImmoConsult Deutschland · München · 5 Min. Lesezeit -
-
-
- - - - 13:42 - Tourismus -
-
- Nachhaltiger Tourismus auf Erfolgskurs: Buchungen steigen um 45 % - - - Empfehlung - -
-
GreenTravel Consulting · Berlin
-
-
- - - 12:55 - Bildung -
-
- Digitalisierung im Bildungssektor: Schulen erhalten 2 Mrd. Euro Förderung -
-
EduTech Initiative · Frankfurt
-
-
- - - 11:20 - Medien -
-
- Medienbranche im Umbruch: Streaming-Dienste überholen klassisches TV -
-
MediaWatch Analytics · Hamburg
-
-
- - - 10:48 - Handel -
-
- Einzelhandel setzt auf KI: Personalisierte Shopping-Erlebnisse werden Standard - - - Empfehlung - -
-
RetailTech Innovations · Köln
-
-
- - - - - - 09:33 - Gesundheit -
-
- Telemedizin-Boom: 3 Millionen Online-Sprechstunden im letzten Quartal -
-
HealthConnect Digital · Stuttgart
-
-
- - - 08:15 - Mobilität -
-
- E-Mobilität: Ladeinfrastruktur wächst um 38 % gegenüber Vorjahr -
-
eMobility Verband · Düsseldorf
-
-
- - - - -
- -
-
- - - -
- - -
-
-

- Heute im Fokus · Energie & Klima -

-
Aktualisiert 14:38 Uhr · 47 Meldungen heute
-
-
- - -
-
-
Meldungen heute
-
47
-
+18 ggü. Wochenschnitt
-
-
-
Investitions­volumen
-
€8,4 Mrd.
-
Q4 2025 angekündigt
-
-
-
Aktive Unternehmen
-
23
-
in dieser Branche heute
-
-
- -
- - - - - - -
-
- - -
-
-
-

Termine & Events

- Diese Woche im Überblick -
-
- - - Alle Branchen - - - - iCal abonnieren - - Alle Termine → -
-
-
- - -
- - -
-
-

Branchen-Index

- Letzte 7 Tage -
-
- - -
- - -
-
- - - - - - -
- -
-
Bleiben Sie informiert
-

- Pressemeldungen, kuratiert in Ihren Posteingang -

-

- Die wichtigsten Meldungen aus DACH — täglich, wöchentlich oder branchenspezifisch. Keine Werbung, jederzeit kündbar. -

- -
- - -
-
Über 84.000 Abonnenten · Datenschutz nach DSGVO
-
- - -
- - - - - - - - -
-
-
-
-
- - -
-
-
- - - - -
-
-
Redaktioneller Qualitätsstandard
-
- Alle Pressemitteilungen werden redaktionell geprüft. - - Mindestqualität gewährleistet durch unseren Content-Score — eine Bewertung von Quellenqualität, Verifizierungsstatus und redaktioneller Relevanz. - -
-
- - Redaktionsrichtlinien → - -
-
- - - - -
- - - diff --git a/dev/frontend/tailwind_v3/Branchenseite Tailwind.html b/dev/frontend/tailwind_v3/businessportal24_branchenseite-tailwind.html similarity index 99% rename from dev/frontend/tailwind_v3/Branchenseite Tailwind.html rename to dev/frontend/tailwind_v3/businessportal24_branchenseite-tailwind.html index bb9f109..6522928 100644 --- a/dev/frontend/tailwind_v3/Branchenseite Tailwind.html +++ b/dev/frontend/tailwind_v3/businessportal24_branchenseite-tailwind.html @@ -187,7 +187,7 @@
Redaktions-Ansprech
- [email protected] + [email protected]
@@ -350,7 +350,7 @@
Tel. +49 201 5179-5111
- +
diff --git a/dev/frontend/tailwind_v3/businessportal24_branchenseite-tailwind.png b/dev/frontend/tailwind_v3/businessportal24_branchenseite-tailwind.png new file mode 100644 index 0000000..9e39b76 Binary files /dev/null and b/dev/frontend/tailwind_v3/businessportal24_branchenseite-tailwind.png differ diff --git a/dev/frontend/tailwind_v3/Detailseite Tailwind.html b/dev/frontend/tailwind_v3/businessportal24_detailseite-tailwind.html similarity index 99% rename from dev/frontend/tailwind_v3/Detailseite Tailwind.html rename to dev/frontend/tailwind_v3/businessportal24_detailseite-tailwind.html index 225ce9e..0c14691 100644 --- a/dev/frontend/tailwind_v3/Detailseite Tailwind.html +++ b/dev/frontend/tailwind_v3/businessportal24_detailseite-tailwind.html @@ -415,7 +415,7 @@ - [email protected] + [email protected] diff --git a/dev/frontend/tailwind_v3/businessportal24_detailseite-tailwind.png b/dev/frontend/tailwind_v3/businessportal24_detailseite-tailwind.png new file mode 100644 index 0000000..4476ffc Binary files /dev/null and b/dev/frontend/tailwind_v3/businessportal24_detailseite-tailwind.png differ diff --git a/dev/frontend/tailwind_v3/Startseite Tailwind.html b/dev/frontend/tailwind_v3/businessportal24_startseite-tailwind.html similarity index 100% rename from dev/frontend/tailwind_v3/Startseite Tailwind.html rename to dev/frontend/tailwind_v3/businessportal24_startseite-tailwind.html diff --git a/dev/frontend/tailwind_v3/businessportal24_startseite-tailwind.png b/dev/frontend/tailwind_v3/businessportal24_startseite-tailwind.png new file mode 100644 index 0000000..7385768 Binary files /dev/null and b/dev/frontend/tailwind_v3/businessportal24_startseite-tailwind.png differ diff --git a/dev/frontend/tailwind_v3/Veröffentlichen Tailwind.html b/dev/frontend/tailwind_v3/businessportal24_veroeffentlichen-tailwind.html similarity index 98% rename from dev/frontend/tailwind_v3/Veröffentlichen Tailwind.html rename to dev/frontend/tailwind_v3/businessportal24_veroeffentlichen-tailwind.html index e8a5c3a..0a3f807 100644 --- a/dev/frontend/tailwind_v3/Veröffentlichen Tailwind.html +++ b/dev/frontend/tailwind_v3/businessportal24_veroeffentlichen-tailwind.html @@ -165,7 +165,7 @@
Einreichen im Publisher-Bereich
-

Die Einreichung läuft über pressekonto.de.

+

Die Einreichung läuft über presseportale.com.

Dort verwalten Sie Mitteilungen, Credits und Newsroom — einmaliges Konto, beide Portale nutzbar (businessportal24 & presseecho.de).

@@ -342,7 +342,7 @@

Die Veröffentlichung erfolgt über den zentralen Publisher-Bereich auf - pressekonto.de. + presseportale.com. Cross-Publishing nach presseecho.de ist optional verfügbar.

@@ -517,7 +517,7 @@

Sie finden hier keine Antwort?

Redaktion direkt anschreiben -
[email protected]
Mo–Fr · 09:00–17:00 Uhr (MEZ)
+
[email protected]
Mo–Fr · 09:00–17:00 Uhr (MEZ)
@@ -583,7 +583,7 @@ Zum Publisher-Bereich - Einreichung läuft über pressekonto.de · Login per Magic-Link + Einreichung läuft über presseportale.com · Login per Magic-Link Oder zuerst Beispiele ansehen →
@@ -597,7 +597,7 @@
businessportal24
-

businessportal24 ist ein Service der Pressekonto-Gruppe. Plattform für Pressemitteilungen mittelständischer Unternehmen, Selbstständiger und PR-Agenturen im deutschsprachigen Raum.

+

businessportal24 ist ein Service der Presseportale-Gruppe. Plattform für Pressemitteilungen mittelständischer Unternehmen, Selbstständiger und PR-Agenturen im deutschsprachigen Raum.

Einreichen
@@ -628,7 +628,7 @@
-
© 2026 Pressekonto-Gruppe · Alle Rechte vorbehalten
+
© 2026 Presseportale-Gruppe · Alle Rechte vorbehalten
Für fachlich-spezifische Themen: presseecho.de → diff --git a/dev/frontend/tailwind_v3/businessportal24_veroeffentlichen-tailwind.png b/dev/frontend/tailwind_v3/businessportal24_veroeffentlichen-tailwind.png new file mode 100644 index 0000000..5e37f0c Binary files /dev/null and b/dev/frontend/tailwind_v3/businessportal24_veroeffentlichen-tailwind.png differ diff --git a/dev/frontend/tailwind_v3/Hub Landing pressekonto-2.html b/dev/frontend/tailwind_v3/hub/Hub Landing pressekonto-2.html similarity index 100% rename from dev/frontend/tailwind_v3/Hub Landing pressekonto-2.html rename to dev/frontend/tailwind_v3/hub/Hub Landing pressekonto-2.html diff --git a/dev/frontend/tailwind_v3/Login pressekonto A3 Tailwind.html b/dev/frontend/tailwind_v3/hub/Login pressekonto A3 Tailwind.html similarity index 100% rename from dev/frontend/tailwind_v3/Login pressekonto A3 Tailwind.html rename to dev/frontend/tailwind_v3/hub/Login pressekonto A3 Tailwind.html diff --git a/dev/frontend/tailwind_v3/User Dashboard presseportale Dark.html b/dev/frontend/tailwind_v3/hub/User Dashboard presseportale Dark.html similarity index 100% rename from dev/frontend/tailwind_v3/User Dashboard presseportale Dark.html rename to dev/frontend/tailwind_v3/hub/User Dashboard presseportale Dark.html diff --git a/dev/frontend/tailwind_v3/User Dashboard presseportale.html b/dev/frontend/tailwind_v3/hub/User Dashboard presseportale.html similarity index 100% rename from dev/frontend/tailwind_v3/User Dashboard presseportale.html rename to dev/frontend/tailwind_v3/hub/User Dashboard presseportale.html diff --git a/dev/frontend/tailwind_v3/User Firmen presseportale.html b/dev/frontend/tailwind_v3/hub/User Firmen presseportale.html similarity index 100% rename from dev/frontend/tailwind_v3/User Firmen presseportale.html rename to dev/frontend/tailwind_v3/hub/User Firmen presseportale.html diff --git a/dev/frontend/tailwind_v3/User Neue Mitteilung presseportale.html b/dev/frontend/tailwind_v3/hub/User Neue Mitteilung presseportale.html similarity index 100% rename from dev/frontend/tailwind_v3/User Neue Mitteilung presseportale.html rename to dev/frontend/tailwind_v3/hub/User Neue Mitteilung presseportale.html diff --git a/dev/frontend/tailwind_v3/User Pressemitteilungen presseportale.html b/dev/frontend/tailwind_v3/hub/User Pressemitteilungen presseportale.html similarity index 100% rename from dev/frontend/tailwind_v3/User Pressemitteilungen presseportale.html rename to dev/frontend/tailwind_v3/hub/User Pressemitteilungen presseportale.html diff --git a/dev/frontend/tailwind_v3/presseecho_startseite-tailwind.html b/dev/frontend/tailwind_v3/presseecho_startseite-tailwind.html new file mode 100644 index 0000000..71819e7 --- /dev/null +++ b/dev/frontend/tailwind_v3/presseecho_startseite-tailwind.html @@ -0,0 +1,1307 @@ + + + + + +presseecho.de — Startseite (DE) + + + + + + + + + + + + + + + +
+ + + +
+
+ + + Mittwoch, 13. Mai 2026 · KW 20 + + + + Ausgabe + + + + + + + + + + + + + + + + Pressearchiv seit 2012 · 100.247 Mitteilungen + + + + + + Newsletter + RSS + API + +
+
+ + +
+
+
+
+ presseecho.de +
+
+ Branchen-Presse · Archiv +
+
+ + +
+
+ + + + + Themen, Branchen, Mitteilungen durchsuchen… + ⌘K +
+
+ + +
+
+ + + +
+
+ + + + + + + + +
+ + + +
+
+
+ Im Kontext +

+ Energie & Klima +

+
+
KW 20 · 2026 · Schwerpunkt seit 9. Mai
+
+
+ +
+ + +
+
+
+ + + + + + + + + + + + + + + +
+ +
+ Hauptmitteilung + + Im Thema seit 2018 + +
+ +
+
ENERGIE · WASSERSTOFF
+

+ Wasserstoff-Lieferkette Nordsee–Ruhrgebiet: EnBW, RWE und Air Liquide schließen Versorgungspakt +

+

+ Drei Energiekonzerne unterzeichnen Abkommen über bilateralen Wasserstoff-Transit. Im Archiv liegen 47 Mitteilungen, die diesen Pfad seit 2018 dokumentieren. +

+
+ EnBW Energie Baden-Württemberg AG· + 11. Mai 2026· + 6 Min. Lesezeit +
+
+
+
+ + + +
+ + +
+
+ 47 + Mitteilungen zu diesem Thema im Archiv · seit 2018 +
+ + Vollständige Themen-Recherche + + + + +
+
+ + +
+ + +
+
+

Diese Woche in den Branchen

+ +
+
+ + + + + + + + + + + + + + + + +
+ +
+
+ + + +
+ + +
+
+
+ Themenwelt im Detail +

+ Energie & Klima +

+
+
Wöchentlich kuratiert · KW 20
+
+
+ + +
+
+
Im Archiv
+
234
+
Mitteilungen zu diesem Thema seit 2018
+
+
+
Aktive Unternehmen
+
87
+
in dieser Themenwelt erfasst
+
+
+
Erster Beitrag
+
14. März
+
2018 · Fraunhofer ISE
+
+
+ +
+ + + + + + +
+
+ + +
+
+
+

Pressetermine

+ Zur fachlichen Vorbereitung · KW 20 +
+
+ + + Alle Branchen + + + + iCal abonnieren + + Alle Termine → +
+
+
+ + +
+ + +
+
+

Branchen-Übersicht

+ Bestand im Archiv +
+
+ + + +
+ Tiefe statt Bewegung — die Zahl ist hier das Statement. + Alle 24 Branchen anzeigen → +
+
+ + +
+
+ + + + + + +
+ +
+
REDAKTIONELL KURATIERT
+

+ Themen-Updates für Fachjournalisten und Recherche +

+

+ Themen-Schwerpunkte, Archiv-Funde und Pressetermine — wöchentlich, branchenspezifisch oder beides. Keine Tages-Push, keine Werbung. +

+ +
+ + +
+
Über 38.000 Abonnenten · Datenschutz nach DSGVO
+
+ +
+ + + + + + + + +
+
+
+
+
+ + +
+
+
+
+
PUBLISHER · GEMEINSAMER HUB
+

+ Veröffentlichen im Publisher-Bereich +

+

+ Die Einreichung läuft über presseportale.com — dort verwalten Sie Ihre Mitteilungen, Credits und Newsrooms. Einmaliges Konto, beide Portale (presseecho.de und businessportal24.com) nutzbar. +

+
+ +
+
+
+ + +
+
+
+ + + + +
+
+
Redaktioneller Qualitätsstandard
+
+ Alle Pressemitteilungen werden redaktionell geprüft. + + Mindestqualität gewährleistet durch unseren Content-Score — eine Bewertung von Quellenqualität, Verifizierungsstatus und redaktioneller Relevanz. + +
+
+ + Redaktionsrichtlinien → + +
+
+ + + + +
+ + + diff --git a/dev/frontend/tailwind_v3/presseecho_startseite-tailwind.png b/dev/frontend/tailwind_v3/presseecho_startseite-tailwind.png new file mode 100644 index 0000000..69ded57 Binary files /dev/null and b/dev/frontend/tailwind_v3/presseecho_startseite-tailwind.png differ diff --git a/docs/Echte öffentliche Unterseiten.md b/docs/Echte öffentliche Unterseiten.md index 06aff05..33f4c9c 100644 --- a/docs/Echte öffentliche Unterseiten.md +++ b/docs/Echte öffentliche Unterseiten.md @@ -2,15 +2,43 @@ > der oeffentlichen Strecke. Welcher Punkt bereits umgesetzt ist, ist > jeweils mit einer kurzen IST-Notiz markiert. +> **Update 16.06.2026 — Editorial-Relaunch & Ausgaben-Routing.** +> Die oeffentliche Strecke wurde auf ein gemeinsames Editorial-Design +> (Komponenten `x-web.site-header` / `x-web.site-footer`, Design-Tokens in +> `resources/css/web/shared-styles.css`) umgestellt und auf ein +> Ausgaben-Praefix `/{edition}/…` (Sprache `de` | `en`) gehoben. +> +> - **Routing**: Neue Middleware `app/Http/Middleware/SetEdition.php` liest +> die Ausgabe aus dem ersten URL-Segment, setzt Locale + `URL::defaults`. +> `routes/web.php` gruppiert alle oeffentlichen Routen unter `/{edition}`. +> `/` leitet auf die Default-Ausgabe (`/de`) um; Legacy-`.html`-URLs werden +> per 301 auf die neuen Pfade gemappt. Baseline-Default in +> `AppServiceProvider` fuer Route-Generierung ausserhalb von HTTP-Requests. +> - **Neue URL-Schemata**: Detailseite `/{edition}/press-release/{slug}` +> (Route `release.detail`), Kategorie `/{edition}/category/{slug}` +> (Route `kategorie`). +> - **Ausgabe = Sprache**: DE/EN-Umschalter im Header (Region-/CH-/AT-Auswahl +> entfernt). `EditorialClock` (`app/Support/EditorialClock.php`) und die +> Livewire-Komponenten sind sprachdynamisch. +> - **Rubriken-Navigation** statt Uebersichtsseite: Helper +> `app/Support/CategoryNavigation.php` liefert die Top-Rubriken der Ausgabe; +> Header/Footer verlinken direkt auf die Kategorieseiten. Die alte +> `web/kategorien.blade.php` + Route wurden entfernt (Legacy-301). +> - **Tests**: `tests/Feature/Web/` deckt Edition-Routing, Kategorie-Seite, +> Kategorie-Navigation, Detailseite, Veroeffentlichen, Suche und den +> EditorialClock ab. + Das sind die Seiten, die eigene URLs brauchen, weil sie verlinkbar sein müssen, SEO-Wert haben oder direkt von extern angesteuert werden. #### Inhalts-Seiten (Lese-Erfahrung) **1. Pressemitteilungs-Detailseite** – `/p/[slug]` oder `/pressemitteilung/[id]` Die wichtigste Seite überhaupt. Jede einzelne PM bekommt eine eigene Seite. Hier landen 90% des Traffics aus Google, Newsletter und Social Shares. _IST 21.05.2026_: umgesetzt als `resources/views/web/release-detail.blade.php` (Route `release.detail`, URL `/release/{slug}`). Das URL-Schema weicht vom Plan ab, ist aber konsistent über alle Themen. +_IST 16.06.2026_: im Editorial-Design neu aufgebaut, echte Daten (Firma, Kontakte, Bilder, verwandte Meldungen). Neue URL `/{edition}/press-release/{slug}`; Legacy-URLs per 301. Test: `tests/Feature/Web/ReleaseDetailTest.php`. **2. Branchen-Übersichten** – `/branche/[slug]` Zum Beispiel `/branche/energie-klima`, `/branche/finanzen`. Aggregierte Sicht auf alle PMs einer Branche, mit Sub-Filtern. Das sind deine SEO-Goldgruben (jede Branche eine ranking-fähige Landing Page). _IST 21.05.2026_: umgesetzt (`web/kategorie.blade.php`, `web/kategorien.blade.php`). +_IST 16.06.2026_: `web/kategorie.blade.php` im Editorial-Design mit echten Daten (Top-Meldung, Feed, Sub-/verwandte Branchen, Stats, Newsrooms). Neue URL `/{edition}/category/{slug}`. Es gibt **keine** Gesamt-Uebersicht mehr — die Header-/Footer-Navigation fuehrt direkt auf die Rubrik (`CategoryNavigation`); `web/kategorien.blade.php` + Route entfernt (Legacy-301). Tests: `CategoryPageTest`, `CategoryNavigationTest`. **3. Regionen-Übersichten** – `/region/[slug]` `/region/deutschland`, `/region/bayern`, `/region/oesterreich`. Analog zu Branchen, regional gefiltert. _IST 21.05.2026_: noch nicht umgesetzt. @@ -20,6 +48,7 @@ _IST 21.05.2026_: Layout vorhanden (`web/newsrooms.blade.php`), Daten-Anbindung **5. Such-Ergebnisseite** – `/suche?q=...` Volltextsuche mit Filtern (Erweiterte Suche schreibt in URL-Parameter, dadurch teilbar/bookmarkbar). _IST 21.05.2026_: Layout vorhanden (`web/suche.blade.php`), Volltextsuche noch nicht aktiv. +_IST 16.06.2026_: aktive Suche umgesetzt. `web/suche.blade.php` im Editorial-Design + Volt-Komponente `livewire/web/search.blade.php`: Suche ueber Titel/Untertitel/Text/Keywords sowie Firmenname und Rubrik-Name, Rubriken-Filter, Sortierung (Neueste/Aelteste/Meistgelesen), Pagination. URL-Parameter `q`, `category`, `sort` (teilbar/bookmarkbar); portal-/sprachsensitiv. Test: `tests/Feature/Web/SearchPageTest.php`. **6. Tag-/Themen-Seite** – `/thema/[slug]` _(optional, später)_ Nicht im ersten Release zwingend, aber sehr SEO-wirksam für aktuelle Themen ("Künstliche Intelligenz", "Lieferkettengesetz", "Energiekrise"). Würde ich datengetrieben aus den meistverwendeten Tags generieren lassen. _IST 21.05.2026_: nicht umgesetzt (bewusst spaeter). @@ -28,6 +57,7 @@ _IST 21.05.2026_: nicht umgesetzt (bewusst spaeter). **7. Pressemitteilung einreichen / Veröffentlichen** – `/veroeffentlichen` Die Conversion-Landingpage für neue Publisher. Erklärt Mehrwert, zeigt Tarife, Editor-Vorschau. Dahinter der eigentliche Editor (im User-Bereich). _IST 21.05.2026_: Landing-Seite vorhanden (`web/veroeffentlichen.blade.php`). Editor-Strecke im User-Bereich ist umgesetzt (siehe Phase 7). +_IST 16.06.2026_: Landing-Seite im Editorial-Design neu aufgebaut, echte Kennzahlen (Archiv-Gesamt, heute veroeffentlicht/in Pruefung, aktive Newsrooms, Beispiel-Mitteilung). Einreichung verweist auf den zentralen Publisher-Bereich. Test: `tests/Feature/Web/VeroeffentlichenPageTest.php`. **8. Tarife & Preise** – `/preise` _(oder als Modal aus mehreren Stellen aufrufbar)_ Da Tarife auch im Modal aus dem CTA aufgerufen werden, ist die Frage: brauchen wir die Seite? Antwort ja, weil SEO ("Pressemitteilung veröffentlichen Preise" ist eine wichtige Suche) und weil sie verlinkbar sein muss aus AGB, Footer, Mediadaten. _IST 21.05.2026_: Layout vorhanden (`web/preise.blade.php`), echte Tarife noch nicht hinterlegt (Tarif-Modul siehe `Presseportal – Konzept für Relaunch.md` Abschnitt 8). diff --git a/docs/user-admin/Admin-User.md b/docs/user-admin/Admin-User.md index 9598290..463ca63 100644 --- a/docs/user-admin/Admin-User.md +++ b/docs/user-admin/Admin-User.md @@ -418,11 +418,14 @@ Im Header die Rolle als Badge zeigen, damit der User immer weiß, was er darf, o ## Offene Designentscheidungen **1. Firmenwechsel-Bestätigung** Wenn ein User im Firmen-Detail arbeitet und über den Switcher die Firma wechselt – sofort wechseln oder Warnung „ungespeicherte Änderungen"? Ich würde Standard-Browser-Verhalten beibehalten (`beforeunload` bei dirty forms), kein eigener Dialog. +#Ja Ohne Dialog. **2. Firma deaktivieren vs. löschen** Im Datenmodell ist Aktiv/Inaktiv vorhanden. Echtes Löschen ist heikel wegen verknüpfter PMs, Rechnungen, Kontakte. Ich würde dem User **nur** Deaktivieren anbieten – echtes Löschen läuft über Support-Anfrage. Senkt deine Risiken bei DSGVO-Konflikten. +#Ja Firmen nur dekativieren **3. Owner-Übertragung** „Firma übertragen" ist ein sensibler Vorgang. Ich würde einen eigenen Wizard mit E-Mail-Bestätigung beim neuen Owner verlangen (ähnlich GitHub-Repo-Transfer). Macht den Punkt komplexer, aber sauber. +#ja genau so soll es gemacht werden, wird allerdings oft nach den Relaunch verschoben. **4. Pressekontakt-Zuordnung beim PM-Erstellen** Beim Anlegen einer neuen PM: Sollen alle Pressekontakte der Firma automatisch zugeordnet werden, oder muss der User explizit auswählen? Ich tendiere zu „alle vorausgewählt, abwählbar" – gibt dem User eine Voreinstellung, die in 90 % der Fälle stimmt. - +Ja Würde ich so machen die meisten haben eh nur einen oder keine Pressekontakt. --- diff --git a/resources/css/web/shared-styles.css b/resources/css/web/shared-styles.css index c5fc3cb..23f51db 100644 --- a/resources/css/web/shared-styles.css +++ b/resources/css/web/shared-styles.css @@ -20,6 +20,24 @@ @source "../../views/livewire/auth"; @source "../../views/components/layouts/auth"; +/** + * Editorial-Status-Tokens (Detailseite/Branchenseite). + * Semantisch identisch über alle Web-Themes hinweg: Bernstein-Warnung + * (Korrekturhinweise) und grüne Verifizierung (verifizierte Publisher). + * Liegen hier zentral, damit beide Marken (BP24 + presseecho) dieselben + * Status-Utilities (bg-warn-bg, text-verify-ink …) generieren. + */ +@theme { + --color-warn-bg: #fff8e1; + --color-warn-border: #e8c77a; + --color-warn-ink: #7a5a0f; + --color-warn-ink-deep: #3d2f0f; + + --color-verify-bg: #e8f4ec; + --color-verify-border: #1b8e3a; + --color-verify-ink: #0f5e26; +} + /* Tailwind Base Layer für gemeinsame Elemente */ @layer base { *, @@ -81,6 +99,80 @@ /* Gemeinsame Component Styles */ @layer components { + /** + * Artikel-Fließtext der Detailseite (sanitisiertes PM-HTML). + * Bildet die Editorial-Typografie aus dem tailwind_v3-Mockup nach und + * nutzt ausschließlich Theme-Tokens, damit BP24 und presseecho identisch + * rendern (nur die Brand-Akzente unterscheiden sich). + */ + .pm-body > p { + font-family: var(--font-serif); + font-size: 17px; + line-height: 1.65; + margin: 0 0 18px; + color: var(--color-ink); + text-wrap: pretty; + } + .pm-body > h2 { + font-family: var(--font-serif); + font-size: 22px; + font-weight: 600; + letter-spacing: -0.3px; + line-height: 1.25; + margin: 32px 0 14px; + color: var(--color-ink); + } + .pm-body > h3 { + font-family: var(--font-serif); + font-size: 18px; + font-weight: 600; + line-height: 1.3; + margin: 26px 0 10px; + color: var(--color-ink); + } + .pm-body > ul, + .pm-body > ol { + font-family: var(--font-serif); + font-size: 17px; + line-height: 1.65; + color: var(--color-ink); + margin: 0 0 18px; + padding-left: 1.4em; + } + .pm-body > ul { + list-style: disc; + } + .pm-body > ol { + list-style: decimal; + } + .pm-body li { + margin-bottom: 6px; + } + .pm-body blockquote { + margin: 28px 0; + padding-left: 24px; + border-left: 3px solid var(--color-brand); + } + .pm-body blockquote p { + font-family: var(--font-serif); + font-size: 21px; + font-style: italic; + font-weight: 500; + line-height: 1.4; + letter-spacing: -0.2px; + margin: 0 0 12px; + color: var(--color-ink); + text-wrap: balance; + } + .pm-body a { + color: var(--color-brand); + text-decoration: underline; + text-underline-offset: 2px; + } + .pm-body strong { + font-weight: 600; + } + /* Button Base Styles */ .btn { @apply inline-flex items-center justify-center px-4 py-2 rounded-lg font-medium transition-all duration-200; @@ -196,6 +288,22 @@ text-wrap: balance; } + /* Schraffur-Platzhalter für fehlende Pressefotos/Logos (Detailseite) */ + .hatch-dark { + background-image: repeating-linear-gradient( + 135deg, + rgba(255, 255, 255, 0.04) 0 10px, + transparent 10px 20px + ); + } + .hatch-light { + background-image: repeating-linear-gradient( + 135deg, + rgba(0, 0, 0, 0.04) 0 6px, + transparent 6px 12px + ); + } + /* Animations */ @keyframes fade-in { from { diff --git a/resources/views/components/web/category-strip.blade.php b/resources/views/components/web/category-strip.blade.php index 351b6d0..29dc336 100644 --- a/resources/views/components/web/category-strip.blade.php +++ b/resources/views/components/web/category-strip.blade.php @@ -8,7 +8,7 @@

Branchen

Zugänge nach Themen

- Alle + Alle
@if ($categories->isNotEmpty()) diff --git a/resources/views/components/web/events-week.blade.php b/resources/views/components/web/events-week.blade.php index c4a9224..cdf81d7 100644 --- a/resources/views/components/web/events-week.blade.php +++ b/resources/views/components/web/events-week.blade.php @@ -34,7 +34,7 @@ iCal abonnieren - Alle Termine → + Alle Termine →
diff --git a/resources/views/components/web/industry-index.blade.php b/resources/views/components/web/industry-index.blade.php index 9bb6e17..937fb5d 100644 --- a/resources/views/components/web/industry-index.blade.php +++ b/resources/views/components/web/industry-index.blade.php @@ -3,16 +3,14 @@ ]) @php - $industries = $industries ?? [ - ['name' => 'Technologie', 'count' => 142, 'delta' => 12, 'href' => route('kategorien')], - ['name' => 'Finanzen', 'count' => 98, 'delta' => 5, 'href' => route('kategorien')], - ['name' => 'Industrie', 'count' => 87, 'delta' => -2, 'href' => route('kategorien')], - ['name' => 'Energie', 'count' => 64, 'delta' => 18, 'href' => route('kategorien')], - ['name' => 'Gesundheit', 'count' => 51, 'delta' => 3, 'href' => route('kategorien')], - ['name' => 'Mobilität', 'count' => 44, 'delta' => 9, 'href' => route('kategorien')], - ['name' => 'Handel', 'count' => 38, 'delta' => -1, 'href' => route('kategorien')], - ['name' => 'Immobilien', 'count' => 32, 'delta' => 4, 'href' => route('kategorien')], - ]; + $industries = $industries ?? \App\Support\CategoryNavigation::items(8) + ->map(fn (array $category): array => [ + 'name' => $category['label'], + 'count' => 0, + 'delta' => 0, + 'href' => $category['href'], + ]) + ->all(); $maxCount = max(1, collect($industries)->max('count')); $industries = array_slice($industries, 0, 8); @@ -35,7 +33,7 @@ $isLastInRow = ($idx + 1) % 4 === 0; $barClass = $delta < 0 ? 'bg-brand' : 'bg-gain'; @endphp -
{{ $industry['name'] }} diff --git a/resources/views/components/web/industry-spotlight.blade.php b/resources/views/components/web/industry-spotlight.blade.php index fd5520a..1dac0e9 100644 --- a/resources/views/components/web/industry-spotlight.blade.php +++ b/resources/views/components/web/industry-spotlight.blade.php @@ -36,7 +36,7 @@

Heute im Fokus · {{ $industry }}

-
Aktualisiert {{ now()->format('H:i') }} Uhr · {{ $stats[0]['value'] ?? '47' }} Meldungen heute
+
Aktualisiert {{ now()->format('H:i') }} Uhr · {{ $stats[0]['value'] ?? '47' }} Meldungen

diff --git a/resources/views/components/web/site-footer.blade.php b/resources/views/components/web/site-footer.blade.php index f7e0706..558ac62 100644 --- a/resources/views/components/web/site-footer.blade.php +++ b/resources/views/components/web/site-footer.blade.php @@ -24,7 +24,7 @@