From 3843e534da518739be04b196a63a05e398c0e53f Mon Sep 17 00:00:00 2001 From: Kevin Adametz Date: Fri, 10 Jul 2026 11:57:26 +0000 Subject: [PATCH] Web-Frontend: Kartenkomponenten auf PressRelease-Helper umgestellt (R4.3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @php-Bloecke von feed-item, feed-top-item, focus-side-item, focus-hero, kategorie, newsroom, release-detail, veroeffentlichen nutzen die neuen Model-Helper — gerendertes Markup unveraendert (Web-Suite 215 gruen). Co-Authored-By: Claude Fable 5 --- .../views/components/web/feed-item.blade.php | 4 +--- .../views/components/web/feed-top-item.blade.php | 15 +++++---------- .../views/components/web/focus-hero.blade.php | 11 ++++------- .../components/web/focus-side-item.blade.php | 11 +++-------- resources/views/web/kategorie.blade.php | 13 +++++-------- resources/views/web/newsroom.blade.php | 13 +++++-------- resources/views/web/release-detail.blade.php | 6 +++--- resources/views/web/veroeffentlichen.blade.php | 4 +--- 8 files changed, 27 insertions(+), 50 deletions(-) diff --git a/resources/views/components/web/feed-item.blade.php b/resources/views/components/web/feed-item.blade.php index 062b61bc..f4706f90 100644 --- a/resources/views/components/web/feed-item.blade.php +++ b/resources/views/components/web/feed-item.blade.php @@ -4,9 +4,7 @@ ]) @php - $category = $release?->category?->translations?->firstWhere('locale', app()->getLocale()) - ?? $release?->category?->translations?->first(); - $categoryName = $category?->name; + $categoryName = $release?->localizedCategoryName(); $company = $release?->company?->name; $city = $release?->company?->city ?? null; $title = $release->title; diff --git a/resources/views/components/web/feed-top-item.blade.php b/resources/views/components/web/feed-top-item.blade.php index 1b3da3eb..c2890189 100644 --- a/resources/views/components/web/feed-top-item.blade.php +++ b/resources/views/components/web/feed-top-item.blade.php @@ -3,21 +3,16 @@ ]) @php - $category = $release?->category?->translations?->firstWhere('locale', app()->getLocale()) - ?? $release?->category?->translations?->first(); - $categoryName = $category?->name; - $image = $release?->images?->first(); - $imageUrl = $image?->variantUrl('card') ?? $image?->url(); + $categoryName = $release?->localizedCategoryName(); + $imageUrl = $release?->cardImageUrl(); $placeholderUrl = $imageUrl ? null : $release?->chosenPlaceholderUrl(); - $teaser = (string) \Illuminate\Support\Str::of(strip_tags((string) ($release?->text ?? '')))->squish()->limit(180); + $teaser = $release?->teaserText(180) ?? ''; $company = $release?->company?->name; $title = $release->title; $href = route('release.detail', ['slug' => $release->slug]); - $time = $release?->published_at?->isToday() - ? $release->published_at->format('H:i') - : ($release?->published_at?->isYesterday() ? __('web.shared.yesterday') : $release?->published_at?->isoFormat('D. MMM')); + $time = $release?->compactPublishedLabel(); $city = $release?->company?->city ?? null; - $readTime = max(1, (int) round(str_word_count(strip_tags((string) ($release?->text ?? ''))) / 200)); + $readTime = $release?->readTimeMinutes() ?? 1; @endphp
diff --git a/resources/views/components/web/focus-hero.blade.php b/resources/views/components/web/focus-hero.blade.php index a7942d1a..ac960d85 100644 --- a/resources/views/components/web/focus-hero.blade.php +++ b/resources/views/components/web/focus-hero.blade.php @@ -7,17 +7,14 @@ $sideReleases = collect($sideReleases)->take(4)->values(); if ($leadRelease) { - $leadCategory = $leadRelease->category?->translations?->firstWhere('locale', app()->getLocale()) - ?? $leadRelease->category?->translations?->first(); - $leadCategoryName = $leadCategory?->name; - $leadImage = $leadRelease->images?->first(); - $leadImageUrl = $leadImage?->variantUrl('card') ?? $leadImage?->url(); + $leadCategoryName = $leadRelease->localizedCategoryName(); + $leadImageUrl = $leadRelease->cardImageUrl(); $leadPlaceholderUrl = $leadImageUrl ? null : $leadRelease->chosenPlaceholderUrl(); $leadTitle = $leadRelease->title; - $leadTeaser = (string) \Illuminate\Support\Str::of(strip_tags((string) $leadRelease->text))->squish()->limit(200); + $leadTeaser = $leadRelease->teaserText(200); $leadCompany = $leadRelease->company?->name; $leadHref = route('release.detail', ['slug' => $leadRelease->slug]); - $leadReadTime = max(1, (int) round(str_word_count(strip_tags((string) $leadRelease->text)) / 200)); + $leadReadTime = $leadRelease->readTimeMinutes(); $leadPublishedAt = $leadRelease->published_at; } @endphp diff --git a/resources/views/components/web/focus-side-item.blade.php b/resources/views/components/web/focus-side-item.blade.php index d04c9e7d..ade32fb8 100644 --- a/resources/views/components/web/focus-side-item.blade.php +++ b/resources/views/components/web/focus-side-item.blade.php @@ -5,17 +5,12 @@ ]) @php - $category = $release?->category?->translations?->firstWhere('locale', app()->getLocale()) - ?? $release?->category?->translations?->first(); - $categoryName = $category?->name; - $time = $release?->published_at?->isToday() - ? $release->published_at->format('H:i') - : ($release?->published_at?->isYesterday() ? __('web.shared.yesterday') : $release?->published_at?->isoFormat('D. MMM')); + $categoryName = $release?->localizedCategoryName(); + $time = $release?->compactPublishedLabel(); $title = $release->title; $company = $release?->company?->name; $href = route('release.detail', ['slug' => $release->slug]); - $image = $release?->images?->first(); - $imageUrl = $image?->variantUrl('card') ?? $image?->url(); + $imageUrl = $release?->cardImageUrl(); $placeholderUrl = $imageUrl ? null : $release?->chosenPlaceholderUrl(); $gradient = 'linear-gradient(135deg,#3A4A5A,#6B7C95)'; $number = str_pad((string) $index, 2, '0', STR_PAD_LEFT); diff --git a/resources/views/web/kategorie.blade.php b/resources/views/web/kategorie.blade.php index e270d2f6..eacee7c0 100644 --- a/resources/views/web/kategorie.blade.php +++ b/resources/views/web/kategorie.blade.php @@ -24,15 +24,12 @@ $leadImage = $leadRelease?->images->first(); $leadImageUrl = $leadImage?->variantUrl('detail') ?? $leadImage?->variantUrl('card') ?? $leadImage?->url(); $leadPlaceholderUrl = $leadImageUrl ? null : $leadRelease?->chosenPlaceholderUrl(); - $leadCat = $leadRelease?->category?->translations->firstWhere('locale', app()->getLocale()) ?? $leadRelease?->category?->translations->first(); + $leadCatName = $leadRelease?->localizedCategoryName(); $leadCompany = $leadRelease?->company?->name; $leadLead = $leadRelease - ? (filled($leadRelease->subtitle) - ? $leadRelease->subtitle - : (string) Str::of(strip_tags((string) $leadRelease->text))->squish()->limit(220)) + ? (filled($leadRelease->subtitle) ? $leadRelease->subtitle : $leadRelease->teaserText(220)) : null; - $leadWords = $leadRelease ? str_word_count(strip_tags((string) $leadRelease->text)) : 0; - $leadReadTime = max(1, (int) round($leadWords / 200)); + $leadReadTime = $leadRelease?->readTimeMinutes() ?? 1; @endphp @section('title', __('web.category.meta_title', ['category' => $catName, 'brand' => config('app.name')])) @@ -135,8 +132,8 @@ {{ __('web.hero.top_story') }}
- @if ($leadCat) -
{{ $leadCat->name }}
+ @if ($leadCatName) +
{{ $leadCatName }}
@endif

{{ $leadRelease->title }} diff --git a/resources/views/web/newsroom.blade.php b/resources/views/web/newsroom.blade.php index 1c5ea2b3..48160d7a 100644 --- a/resources/views/web/newsroom.blade.php +++ b/resources/views/web/newsroom.blade.php @@ -25,14 +25,11 @@ $leadImage = $leadRelease?->images->first(); $leadImageUrl = $leadImage?->variantUrl('detail') ?? $leadImage?->variantUrl('card') ?? $leadImage?->url(); $leadPlaceholderUrl = $leadImageUrl ? null : $leadRelease?->chosenPlaceholderUrl(); - $leadCat = $leadRelease?->category?->translations->firstWhere('locale', app()->getLocale()) ?? $leadRelease?->category?->translations->first(); + $leadCatName = $leadRelease?->localizedCategoryName(); $leadLead = $leadRelease - ? (filled($leadRelease->subtitle) - ? $leadRelease->subtitle - : (string) Str::of(strip_tags((string) $leadRelease->text))->squish()->limit(220)) + ? (filled($leadRelease->subtitle) ? $leadRelease->subtitle : $leadRelease->teaserText(220)) : null; - $leadWords = $leadRelease ? str_word_count(strip_tags((string) $leadRelease->text)) : 0; - $leadReadTime = max(1, (int) round($leadWords / 200)); + $leadReadTime = $leadRelease?->readTimeMinutes() ?? 1; @endphp @section('title', $company->name.' – Newsroom · '.$brandName.$brandAccent) @@ -164,8 +161,8 @@ {{ __('web.newsroom_page.latest') }}

- @if ($leadCat) -
{{ $leadCat->name }}
+ @if ($leadCatName) +
{{ $leadCatName }}
@endif

{{ $leadRelease->title }} diff --git a/resources/views/web/release-detail.blade.php b/resources/views/web/release-detail.blade.php index 7ec34e20..dc80e4ef 100644 --- a/resources/views/web/release-detail.blade.php +++ b/resources/views/web/release-detail.blade.php @@ -29,10 +29,10 @@ $embargoAt = $release->embargoAtLocal(); $bodyHtml = $release->renderedText(); - $wordCount = str_word_count(strip_tags((string) $release->text)); - $readTime = max(1, (int) round($wordCount / 200)); + $wordCount = $release->wordCount(); + $readTime = $release->readTimeMinutes(); - $teaser = (string) Str::of(strip_tags((string) $release->text))->squish()->limit(180); + $teaser = $release->teaserText(180); // Subline nur bei explizit gesetztem Untertitel — kein Fallback auf den Textanfang, // sonst erscheint der erste Absatz doppelt. Der Teaser dient nur der Meta-Description. diff --git a/resources/views/web/veroeffentlichen.blade.php b/resources/views/web/veroeffentlichen.blade.php index b32f17c9..deb0463f 100644 --- a/resources/views/web/veroeffentlichen.blade.php +++ b/resources/views/web/veroeffentlichen.blade.php @@ -20,9 +20,7 @@ $exampleCategory = $example?->category?->translations?->first()?->name; $exampleCompany = $example?->company?->name; $examplePublishedAt = $example?->published_at; - $exampleReadMinutes = $example - ? max(1, (int) ceil(str_word_count(strip_tags((string) $example->text)) / 200)) - : 3; + $exampleReadMinutes = $example?->readTimeMinutes() ?? 3; // Inhalte aus static.publish.* — Reihen als Datenstrukturen (DRY). $trustPrinciples = [