Setzt die vier Punkte aus dev/2026-08-28/umsetzung-03-09-2026.md um.
1. Markenseiten
- Rotpunkt und Febrü auf die korrigierten Fassungen (*_FINAL.md) gebracht:
bei Rotpunkt sind die beiden Nachhaltigkeitsabschnitte zusammengefuehrt,
bei Febrü behaelt der Blaue-Engel-Satz seinen Produktbezug ohne den
erklaerenden Zusatz.
- CABINET nach demselben Muster neu verfasst: 8 Abschnitte, 3 Vertiefungen,
eigener Abschlussblock und eigene Widget-Beschriftung. Bewusst ohne Zahlen,
Zertifizierungen oder Herstelleraussagen – dafuer gibt es keine Quelle.
Braucht Marcels Freigabe.
- Febrü-Claim korrigiert: „Arbeiten, wo man gerne bleibt.“
2. „BEISPIEL“-Vermerk aus den Bildunterschriften entfernt. Weil die Demobilder
auf Vorschau und Live bereits in der Datenbank stehen, entfernt
BrandGalleryCaptionNormalizerSeeder ihn dort in-place – nur der Text, Bild,
Kategorie und Reihenfolge bleiben unberuehrt.
3. Hinweise zu Visualisierungen neu formuliert (Markengalerie und /referenzen).
Die Trennung bleibt, sie laeuft nur nicht mehr ueber eine Verneinung.
4. Abschluss-CTA der Markenseiten ueberarbeitet: weiche Lichtflaechen statt
Vollton, gesetzter Hauptbutton mit Pfeil, Herstellerseite als gleichwertiger
Outline-Button, Showroom als Fusszeile.
Ein Pruefskript hat jeden veroeffentlichten Satz gegen die abgestimmten
Markdown-Fassungen gehalten: keine Abweichung.
Tests: 859 gruen (3180 Assertions), Pint sauber, npm run build:b2in gebaut.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
70 lines
3 KiB
PHP
70 lines
3 KiB
PHP
<?php
|
||
|
||
namespace Database\Seeders;
|
||
|
||
use App\Models\CmsBrand;
|
||
use Illuminate\Database\Seeder;
|
||
|
||
/**
|
||
* Demo-Galerien zum Ausprobieren der Marken-Detailseiten.
|
||
*
|
||
* NUR fuer lokale Tests. Bewusst NICHT in {@see DatabaseSeeder} registriert.
|
||
*
|
||
* ⚠️ Die verwendeten Bilder stammen aus dem Bestand der alten Dubai-Seite – es sind Stockmotive
|
||
* und KI-Renderings, kein einziges davon ist ein echtes CABINET-, Rotpunkt- oder Februe-Projekt.
|
||
* Der frueher vorangestellte Vermerk „BEISPIEL“ in den Bildunterschriften ist auf Kundenwunsch
|
||
* entfallen. Die Unterscheidung traegt jetzt allein die Kategorie (Badge „Realisiertes Projekt“
|
||
* bzw. „Visualisierung“) – die Motive der Kategorie `project` muessen deshalb vor dem Livegang
|
||
* durch echte Referenzen ersetzt werden. Steht als Punkt in der Deployment-Checkliste.
|
||
*
|
||
* Wieder entfernen:
|
||
* php artisan tinker --execute="App\Models\CmsBrand::query()->update(['gallery' => null]);"
|
||
*/
|
||
class DemoBrandGallerySeeder extends Seeder
|
||
{
|
||
/**
|
||
* Galerie je Marken-Slug: [Dateiname, Kategorie, Bildunterschrift].
|
||
*
|
||
* @var array<string, list<array{0: string, 1: string, 2: string}>>
|
||
*/
|
||
private const GALLERIES = [
|
||
'cabinet' => [
|
||
['b2a.webp', CmsBrand::GALLERY_PROJECT, 'Wohnwand mit Einbauregal, Bielefeld'],
|
||
['hero-room.webp', CmsBrand::GALLERY_PROJECT, 'Wohnbereich mit Raumteiler'],
|
||
['stileigentum.webp', CmsBrand::GALLERY_INSPIRATION, 'Entwurf Wohnzimmer mit Sideboard'],
|
||
['best-of-two-worlds.jpg', CmsBrand::GALLERY_INSPIRATION, 'Visualisierung offener Wohnraum'],
|
||
],
|
||
'rotpunkt' => [
|
||
['best-of-two-world.jpg', CmsBrand::GALLERY_PROJECT, 'Offener Wohn- und Kochbereich'],
|
||
['style2own.webp', CmsBrand::GALLERY_INSPIRATION, 'Entwurf heller Wohnbereich'],
|
||
['magazin-3.webp', CmsBrand::GALLERY_INSPIRATION, 'Visualisierung Wohnraum mit Ausblick'],
|
||
],
|
||
'februe' => [
|
||
['accommodation-2.webp', CmsBrand::GALLERY_PROJECT, 'Empfangsbereich eines Buerogebaeudes'],
|
||
['accommodation-1.webp', CmsBrand::GALLERY_PROJECT, 'Grossraumbuero mit Arbeitsplaetzen'],
|
||
['partner-hero.webp', CmsBrand::GALLERY_INSPIRATION, 'Entwurf Besprechungsbereich'],
|
||
['ecosystem-hero.webp', CmsBrand::GALLERY_INSPIRATION, 'Visualisierung Projektraum'],
|
||
],
|
||
];
|
||
|
||
public function run(): void
|
||
{
|
||
foreach (self::GALLERIES as $slug => $items) {
|
||
$brand = CmsBrand::query()->where('slug', $slug)->first();
|
||
|
||
if (! $brand) {
|
||
$this->command?->warn("Marke „{$slug}“ nicht gefunden – uebersprungen.");
|
||
|
||
continue;
|
||
}
|
||
|
||
$brand->gallery = CmsBrand::normalizeGallery(array_map(
|
||
fn (array $item) => ['image' => $item[0], 'category' => $item[1], 'caption' => $item[2]],
|
||
$items,
|
||
));
|
||
$brand->save();
|
||
|
||
$this->command?->info("Galerie fuer „{$brand->slug}“ gesetzt: ".count($brand->gallery).' Bilder.');
|
||
}
|
||
}
|
||
}
|