Arbeitsplan 14.09.2026, Punkte 1.1 bis 1.4 (Nachträge 6 bis 10 im Entwicklungsplan): - Farbwelt Interior (Tanne, Creme, Sand, Ocker, Clay) als Standard, Immobilien-Welt behält das bisherige Blau über body.world-immobilien; Logo je Welt, Favicons neu, Welten-Wechsler in Kopf- und Fußzeile. - Saubere Trennung der Welten: eigene Navigation, Ankündigungsleiste, Magazinliste, Über-uns-Seite, FAQ, Kontaktseite und Abschluss-CTA für Immobilien; Beiträge tragen eine Welt (Migration + Admin-Feld). Abschluss-CTA Ton in Ton statt Grün-zu-Ocker. - Kontakt: Betreffe in Gruppen Interior / Immobilien / B2in, Marken darin. Terminanfrage-Buttons öffnen das Widget mit vorgewähltem Anliegen; Select-Felder einheitlich gestaltet. - Tischlerei als vierte Kernmarke (Platzhalter), Kachelraster 2×2. - Herkunfts-Sektion „Aus der Region gefertigt“ mit schematischer Standortkarte und Ablauf CABINET (Beratung Bielefeld, Fertigung Köln, Aufbau mit Tischlerei). Deployment: migrate, WorldSplitCmsSeeder, CmsBrandSeeder, OriginSectionCmsSeeder (Abschnitt 8 im Entwicklungsplan). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
46 lines
1.4 KiB
PHP
46 lines
1.4 KiB
PHP
<?php
|
||
|
||
namespace App\Livewire\Web\Components\Ui;
|
||
|
||
use Livewire\Component;
|
||
|
||
class AnnouncementBar extends Component
|
||
{
|
||
public array $content = [];
|
||
|
||
/** Farbwelt der Seite – jede Welt hat ihre eigene Meldung. */
|
||
public string $world = 'interior';
|
||
|
||
public function mount(): void
|
||
{
|
||
$this->world = b2in_world();
|
||
|
||
// Interior: global.announcement_bar, Immobilien: global.announcement_bar_immobilien.
|
||
$section = cms_theme_section($this->world === 'immobilien' ? 'announcement_bar_immobilien' : 'announcement_bar');
|
||
$this->content = is_array($section) ? $section : [];
|
||
}
|
||
|
||
/**
|
||
* Schluessel, unter dem sich der Browser das Wegklicken merkt.
|
||
*
|
||
* Leitet sich aus dem Inhalt ab, nicht nur aus der gepflegten `id`: Wird die Leiste im CMS
|
||
* neu belegt, ohne die `id` zu aendern, bekaemen Wiederkehrer die neue Meldung sonst nie
|
||
* zu sehen, weil ihr alter Dismiss-Eintrag im localStorage weitergilt.
|
||
*/
|
||
public function getDismissKeyProperty(): string
|
||
{
|
||
$fingerprint = implode('|', [
|
||
$this->content['id'] ?? 'default',
|
||
$this->content['badge'] ?? '',
|
||
$this->content['text'] ?? '',
|
||
$this->content['link_url'] ?? '',
|
||
]);
|
||
|
||
return 'announcement_dismissed_'.substr(md5($fingerprint), 0, 12);
|
||
}
|
||
|
||
public function render()
|
||
{
|
||
return view('livewire.web.components.ui.announcement-bar');
|
||
}
|
||
}
|