Spoke-Frontend-Audit: Fake-Inhalte raus, Newsletter-Rueckbau, echte Boersendaten, EN-Lokalisierung

Frontend-Umbau (Kevin, 06.07.2026), Ergebnis des businessportal24-Audits:

- Fake-Anzeigen und Mock-/Fallback-Daten entfernt (focus-ad, feed-ad,
  highlight-card, press-release-card, featured-releases, press-releases-grid);
  Sektionen rendern nur noch mit echten Daten oder gar nicht
- Newsletter-Strip und Newsletter-Box zurueckgebaut (Feature nachgelagert,
  vor Reaktivierung DOI-Flow noetig)
- Echte Boersendaten: MarketDataService (Yahoo-Finance-Quotes, config/market.php,
  Cache) + market:refresh alle 15 Min. im Scheduler; live-ticker blendet sich
  ohne Daten aus
- EN-Lokalisierung der Kern-Seiten via lang/de/web.php + lang/en/web.php;
  Carbon-Locale folgt app()->getLocale()
- Web-Tests auf den neuen Frontend-Stand nachgezogen (Suite: 993 gruen)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-06 13:36:23 +00:00
parent 3320aaaa85
commit bfad13af7d
67 changed files with 1735 additions and 1521 deletions

View file

@ -1,49 +1,26 @@
@props([
'release' => null,
'mock' => null,
'recommended' => false,
])
@php
\Carbon\Carbon::setLocale('de');
$category = $release?->category?->translations?->firstWhere('locale', app()->getLocale())
?? $release?->category?->translations?->first();
$categoryName = $category?->name;
$company = $release?->company?->name;
$city = $release?->company?->city ?? null;
$title = $release->title;
$href = route('release.detail', ['slug' => $release->slug]);
if ($release) {
$category = $release?->category?->translations?->firstWhere('locale', 'de')
?? $release?->category?->translations?->first();
$categoryName = $category?->name ?? 'Wirtschaft';
$company = $release?->company?->name ?? 'Unternehmen';
$city = $release?->company?->city ?? null;
$title = $release->title;
$href = route('release.detail', ['slug' => $release->slug]);
$recommended = $recommended;
$published = $release->published_at;
if ($published) {
$timeLine = $published->format('H:i');
if ($published->isToday()) {
$dateLine = $published->translatedFormat('j. M');
} elseif ($published->isYesterday()) {
$dateLine = 'Gestern';
} else {
$dateLine = $published->translatedFormat('j. M');
}
$datetimeAttr = $published->toIso8601String();
} else {
$timeLine = '—';
$dateLine = '';
$datetimeAttr = null;
}
$published = $release->published_at;
if ($published) {
$timeLine = $published->format('H:i');
$dateLine = $published->isYesterday() ? __('web.shared.yesterday') : $published->translatedFormat('j. M');
$datetimeAttr = $published->toIso8601String();
} else {
$mock ??= [];
$categoryName = $mock['category'] ?? 'Wirtschaft';
$company = $mock['company'] ?? '';
$city = $mock['city'] ?? null;
$title = $mock['title'] ?? '';
$href = $mock['href'] ?? '#';
$timeLine = $mock['time'] ?? '';
$dateLine = $mock['date'] ?? '';
$timeLine = '—';
$dateLine = '';
$datetimeAttr = null;
$recommended = $recommended || ($mock['recommended'] ?? false);
}
$bpCatClass = 'bp-cat self-start whitespace-nowrap leading-snug max-md:mt-1 max-md:text-[9px] max-md:tracking-[0.1em]';
@ -80,7 +57,7 @@
<svg width="9" height="9" viewBox="0 0 12 12" class="flex-shrink-0" aria-hidden="true">
<path d="M6 1l1.5 3.2 3.5.4-2.6 2.4.7 3.5L6 8.8l-3.1 1.7.7-3.5L1 4.6l3.5-.4z" fill="currentColor" />
</svg>
Empfehlung
{{ __('web.shared.recommendation') }}
</span>
@endif
</div>