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>
This commit is contained in:
parent
9262132325
commit
6c6d683b9a
42 changed files with 2267 additions and 13905 deletions
|
|
@ -30,6 +30,9 @@ class DisplayList extends Component
|
|||
|
||||
public $addVersionSelect = null;
|
||||
|
||||
/** @var array<int> */
|
||||
public $versionsToAdd = [];
|
||||
|
||||
public $editingPlaylistStatus = DisplayPlaylist::STATUS_PUBLISHED;
|
||||
|
||||
public ?string $draftPreviewToken = null;
|
||||
|
|
@ -75,6 +78,20 @@ class DisplayList extends Component
|
|||
$this->persistDraftPreviewIfNeeded();
|
||||
}
|
||||
|
||||
public function addSelectedVersions(): void
|
||||
{
|
||||
foreach ($this->versionsToAdd as $versionId) {
|
||||
$id = (int) $versionId;
|
||||
|
||||
if ($id && ! in_array($id, $this->selectedVersionIds, true)) {
|
||||
$this->selectedVersionIds[] = $id;
|
||||
}
|
||||
}
|
||||
|
||||
$this->versionsToAdd = [];
|
||||
$this->persistDraftPreviewIfNeeded();
|
||||
}
|
||||
|
||||
private function firstAvailableVersionId(): ?int
|
||||
{
|
||||
return DisplayVersion::active()
|
||||
|
|
@ -175,10 +192,31 @@ class DisplayList extends Component
|
|||
}
|
||||
|
||||
$display->draftPlaylist->delete();
|
||||
$display->clearPreviewToken();
|
||||
|
||||
session()->flash('success', 'Entwurf wurde verworfen.');
|
||||
}
|
||||
|
||||
public function rotatePreviewToken(int $displayId): void
|
||||
{
|
||||
$display = Display::with('draftPlaylist')->findOrFail($displayId);
|
||||
|
||||
if (! $display->draftPlaylist) {
|
||||
session()->flash('success', 'Für dieses Display gibt es keinen Entwurf.');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$display->rotatePreviewToken();
|
||||
|
||||
if ($this->displayId === $display->id && $this->editingPlaylistStatus === DisplayPlaylist::STATUS_DRAFT) {
|
||||
$this->draftPreviewToken = $display->preview_token;
|
||||
$this->previewFrameRefreshCounter++;
|
||||
}
|
||||
|
||||
session()->flash('success', 'Vorschau-Link wurde neu erzeugt. Der alte Link ist jetzt ungültig.');
|
||||
}
|
||||
|
||||
public function publishDraft(int $displayId): void
|
||||
{
|
||||
$display = Display::with(['draftPlaylist.modules'])->findOrFail($displayId);
|
||||
|
|
@ -201,6 +239,8 @@ class DisplayList extends Component
|
|||
return $display->draftPlaylist->fresh('modules');
|
||||
});
|
||||
|
||||
$display->clearPreviewToken();
|
||||
|
||||
session()->flash('success', 'Entwurf wurde veröffentlicht.');
|
||||
}
|
||||
|
||||
|
|
@ -314,6 +354,7 @@ class DisplayList extends Component
|
|||
$this->displayIsActive = true;
|
||||
$this->displayIsTest = false;
|
||||
$this->addVersionSelect = null;
|
||||
$this->versionsToAdd = [];
|
||||
$this->editingPlaylistStatus = DisplayPlaylist::STATUS_PUBLISHED;
|
||||
$this->draftPreviewToken = null;
|
||||
$this->previewFrameRefreshCounter = 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue