b2in/database/seeders/DisplayVersionSeeder.php
Kevin Adametz 6c6d683b9a Display CMS Optimierungen 29-05-2026
- Mediathek: Video-Vorschaubilder statt Icons (FFmpeg-Thumbnails + Backfill-Command), Kategorie "Sonstiges"
- B2in Media-Picker zeigt alle Medientypen, Typ wird automatisch erkannt; Thumbnail-Preview vor allen Medien-URL-Feldern
- B2in Marke/Footer: Footer ein/aus, Logo+Claim frei positionierbar (Ecken) mit Constraints, separate Anzeige-Schalter
- Angebote-Modul dynamisch: kein Slide-Typ mehr, einheitliches Detail-Layout mit ein-/ausblendbaren Bloecken, Logo/Brand pro Slide, Streichpreis-Option
- Player: leere Module stoppen Endlosschleife, dynamische Layout-Anpassung bei verstecktem Footer/Header
- Fix: Script-Ladereihenfolge (Livewire vor Flux), entfernte stale public/flux/flux.js, Modal-Crash beim Aktualisieren behoben

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-29 15:57:33 +00:00

299 lines
11 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace Database\Seeders;
use App\Models\Display;
use App\Models\DisplayVersion;
use App\Models\DisplayVersionItem;
use Illuminate\Database\Seeder;
class DisplayVersionSeeder extends Seeder
{
/**
* Seed display versions, items, and displays with example data.
*/
public function run(): void
{
// ========================================
// 1. Video-Display Version
// ========================================
$videoVersion = DisplayVersion::create([
'name' => 'Schaufenster Video',
'type' => 'video-display',
'settings' => [],
'is_active' => true,
]);
$videos = [
['filename' => 'herbst_2025.mp4', 'title' => 'Herbst Kollektion 2025', 'position' => 25],
['filename' => 'fruehjahr_2025.mp4', 'title' => 'Frühjahr Kollektion 2025', 'position' => 30],
['filename' => 'herbst_2024.mp4', 'title' => 'Herbst Kollektion 2024', 'position' => 25],
['filename' => 'fruehjahr_2024.mp4', 'title' => 'Frühjahr Kollektion 2024', 'position' => 25],
];
foreach ($videos as $i => $video) {
DisplayVersionItem::create([
'display_version_id' => $videoVersion->id,
'item_type' => 'video',
'content' => $video,
'sort_order' => $i,
'is_active' => true,
]);
}
$footers = [
['headline' => 'Beratung & Termin', 'subline' => 'Jetzt Termin vereinbaren.', 'url' => 'https://b2in.de/termin'],
['headline' => 'Neue Kollektion', 'subline' => 'Entdecken Sie die aktuellen Trends.', 'url' => null],
];
foreach ($footers as $i => $footer) {
DisplayVersionItem::create([
'display_version_id' => $videoVersion->id,
'item_type' => 'footer',
'content' => $footer,
'sort_order' => $i,
'is_active' => true,
]);
}
// ========================================
// 2. B2in Version (Dark)
// ========================================
$b2inDark = DisplayVersion::create([
'name' => 'B2in Immobilien Dark',
'type' => 'b2in',
'settings' => [
'theme' => 'dark',
'footer_name' => 'Marcel Scheibe',
'footer_url' => 'b2in.de',
'transition' => ['type' => 'crossfade', 'duration_ms' => 800],
'default_image_duration' => 10,
'rotation_weights' => ['immobilien' => 70, 'moebel' => 30],
'display_active' => true,
],
'is_active' => true,
]);
$b2inItems = [
[
'category' => 'immobilien',
'media_type' => 'video',
'media_url' => '../assets/334716_medium.mp4',
'headline' => 'Internationale Immobilien — Ihr Einstieg.',
'subline' => 'Beratung, Begleitung und Vermittlung. Persönlich. Transparent.',
'duration_seconds' => 10,
],
[
'category' => 'immobilien',
'media_type' => 'video',
'media_url' => '../assets/48504-454713939_medium.mp4',
'headline' => 'Ihr Zuhause. Weltweit.',
'subline' => 'Von Dubai bis Europa wir finden Ihre Immobilie.',
'duration_seconds' => 10,
],
[
'category' => 'moebel',
'media_type' => 'image',
'media_url' => 'https://images.unsplash.com/photo-1618221195710-dd6b41faaea6?w=1920&h=1080&fit=crop',
'headline' => 'Exklusive Einrichtung — Lokal. Für Sie.',
'subline' => 'Kuratierte Möbelkonzepte von lokalen Fachhändlern.',
'duration_seconds' => 10,
],
];
foreach ($b2inItems as $i => $item) {
DisplayVersionItem::create([
'display_version_id' => $b2inDark->id,
'item_type' => 'media',
'content' => $item,
'sort_order' => $i,
'is_active' => true,
]);
}
// ========================================
// 3. B2in Version (Light)
// ========================================
$b2inLight = DisplayVersion::create([
'name' => 'B2in Immobilien Light',
'type' => 'b2in',
'settings' => [
'theme' => 'light',
'footer_name' => 'Marcel Scheibe',
'footer_url' => 'b2in.de',
'transition' => ['type' => 'crossfade', 'duration_ms' => 800],
'default_image_duration' => 10,
'rotation_weights' => ['immobilien' => 70, 'moebel' => 30],
'display_active' => true,
],
'is_active' => true,
]);
foreach ($b2inItems as $i => $item) {
DisplayVersionItem::create([
'display_version_id' => $b2inLight->id,
'item_type' => 'media',
'content' => $item,
'sort_order' => $i,
'is_active' => true,
]);
}
// ========================================
// 4. Offers Version
// ========================================
$offersVersion = DisplayVersion::create([
'name' => 'Angebote Schauraum',
'type' => 'offers',
'settings' => [
'loop' => true,
'transition' => ['type' => 'fade', 'duration' => 600],
],
'is_active' => true,
]);
$slides = [
[
'type' => 'intro',
'duration' => 8000,
'image_url' => '../assets/cabinet-intro.jpg',
'badge_text' => 'Ausstellungsdeals solange verfügbar',
'eyebrow' => 'Heute im Fokus',
'title' => "Kuratiert.\nHochwertig.\nSofort.",
'subline' => '',
'price' => '',
'original_price' => '',
'tag_text' => '',
'bullets' => [],
'disclaimer' => 'Zwischenverkauf vorbehalten',
'qr_url' => 'https://cabinet-bielefeld.de',
'qr_title' => 'Kontakt',
'contact' => "0521 98620100\nTel. oder WhatsApp",
'show_logo' => true,
'logo_url' => '../logo-cabinet-300.png',
'brand_text' => 'Bielefeld',
'brand_tagline' => "Planung • Beratung\nLieferung & Montage",
],
[
'type' => 'product-hero',
'duration' => 10000,
'image_url' => '../assets/goya1.jpg',
'badge_text' => 'Einzelstück',
'eyebrow' => 'Hersteller: Sudbrock',
'title' => 'GOYA Sideboard',
'subline' => '',
'price' => '489 €',
'original_price' => 'statt 4.744 €',
'tag_text' => '',
'bullets' => [],
'disclaimer' => '',
'qr_url' => 'https://cabinet-bielefeld.de',
'qr_title' => 'Reservieren',
'contact' => "0521 98620100\nTel. oder WhatsApp",
'show_logo' => true,
'logo_url' => '../logo-cabinet-300.png',
'brand_text' => '',
'brand_tagline' => '',
],
[
'type' => 'product-details',
'duration' => 12000,
'image_url' => '../assets/goya2.jpg',
'badge_text' => 'Einzelstück',
'eyebrow' => 'Auf einen Blick',
'title' => 'GOYA Sideboard',
'subline' => '',
'price' => '',
'original_price' => '',
'tag_text' => '',
'bullets' => [
'Eingelagertes Einzelstück',
'Abholung in Rheda-Wiedenbrück',
'Lieferung optional',
'Deckel weiß matt (neu)',
],
'disclaimer' => '',
'qr_url' => 'https://cabinet-bielefeld.de',
'qr_title' => 'Reservieren',
'contact' => "0521 98620100\nTel. oder WhatsApp",
'show_logo' => true,
'logo_url' => '../logo-cabinet-300.png',
'brand_text' => '',
'brand_tagline' => '',
],
[
'type' => 'product-impulse',
'duration' => 10000,
'image_url' => '../assets/tango.jpg',
'badge_text' => 'Ausstellungsstück',
'eyebrow' => 'Nur 1×',
'title' => 'TANDO Spiegel',
'subline' => 'Heute mitnehmen',
'price' => '199 €',
'original_price' => '',
'tag_text' => 'Im Store verfügbar',
'bullets' => [],
'disclaimer' => '',
'qr_url' => 'https://cabinet-bielefeld.de',
'qr_title' => 'Sichern',
'contact' => "0521 98620100\nTel. oder WhatsApp",
'show_logo' => true,
'logo_url' => '../logo-cabinet-300.png',
'brand_text' => '',
'brand_tagline' => '',
],
];
foreach ($slides as $i => $slide) {
DisplayVersionItem::create([
'display_version_id' => $offersVersion->id,
'item_type' => 'slide',
'content' => $slide,
'sort_order' => $i,
'is_active' => true,
]);
}
// ========================================
// Displays
// ========================================
$display1 = Display::create([
'name' => 'Display 1 Eingang',
'location' => 'Schaufenster links',
'is_active' => true,
]);
$display1->versions()->attach([
$videoVersion->id => ['sort_order' => 0],
$b2inDark->id => ['sort_order' => 1],
]);
$display2 = Display::create([
'name' => 'Display 2 Mitte',
'location' => 'Schaufenster Mitte',
'is_active' => true,
]);
$display2->versions()->attach([
$offersVersion->id => ['sort_order' => 0],
]);
$display3 = Display::create([
'name' => 'Display 3 Rechts',
'location' => 'Schaufenster rechts',
'is_active' => true,
]);
$display3->versions()->attach([
$b2inLight->id => ['sort_order' => 0],
$offersVersion->id => ['sort_order' => 1],
$videoVersion->id => ['sort_order' => 2],
]);
$display4 = Display::create([
'name' => 'Display 4 Innen',
'location' => 'Schauraum',
'is_active' => true,
]);
$display4->versions()->attach([
$b2inDark->id => ['sort_order' => 0],
]);
}
}