- 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>
31 lines
787 B
PHP
31 lines
787 B
PHP
<?php
|
||
|
||
namespace Database\Seeders;
|
||
|
||
use App\Models\Display;
|
||
use Illuminate\Database\Seeder;
|
||
|
||
class TestDisplaySeeder extends Seeder
|
||
{
|
||
/**
|
||
* Stellt sicher, dass genau ein Test-Display existiert (Konzept §10.1).
|
||
* Idempotent: legt nur an, wenn noch kein Test-Display vorhanden ist.
|
||
*/
|
||
public function run(): void
|
||
{
|
||
if (Display::query()->where('is_test', true)->exists()) {
|
||
$this->command?->info('Test-Display existiert bereits – übersprungen.');
|
||
|
||
return;
|
||
}
|
||
|
||
Display::query()->create([
|
||
'name' => 'Test-Display',
|
||
'location' => 'Vorschau / Test',
|
||
'is_active' => true,
|
||
'is_test' => true,
|
||
]);
|
||
|
||
$this->command?->info('Test-Display angelegt.');
|
||
}
|
||
}
|