- dev/betrieb/deploy.sh: Deploy nur per Tag, mit --seed (Seeder im Wartungsmodus) und --initial (Vorschau/Live einmalig an Ort und Stelle auf Git umstellen) - dev/betrieb/vorschau-auffrischen.sh: Live-DB und Live-Medien in die Vorschau (Generalprobe) - InteriorReleaseSeeder: alle Inhaltsschritte des Relaunchs in einem Lauf, idempotent; Displays, Playlists und Mediathek bleiben unberührt - DisplayInteriorBrandingSeeder überschreibt keinen inzwischen gepflegten Claim mehr - Monitoring: GlitchTip (Server + Browser), /health mit Token, Scheduler-Herzschlag, Alarme per Mail und ntfy, Version in about und /health - public/build versioniert; .gitignore: macOS-Muster Icon traf resources/views/flux/icon/ - Runbook: dev/betrieb/README.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
58 lines
2.1 KiB
PHP
58 lines
2.1 KiB
PHP
<?php
|
||
|
||
namespace Database\Seeders;
|
||
|
||
use App\Enums\DisplayVersionType;
|
||
use App\Models\DisplayVersion;
|
||
use Illuminate\Database\Seeder;
|
||
|
||
/**
|
||
* Vereinheitlicht das Branding aller B2in-Display-Module auf das Interior-Logo.
|
||
*
|
||
* Ausgangslage waren vier verschiedene Logo-Quellen nebeneinander: zwei Dateien aus der
|
||
* Medienbibliothek, ein relativer und ein absoluter Pfad auf die Cabinet-Assets. Drei Module
|
||
* zeigten dabei auf `b2in.test` – eine lokale Entwicklungsdomain, die auf dem Live-Display
|
||
* nicht auflösbar ist.
|
||
*
|
||
* Gesetzt wird das Logo passend zum Theme des Moduls (dunkel = negativ/weiss, hell = positiv)
|
||
* sowie der neue Claim. Alle anderen Einstellungen bleiben unangetastet.
|
||
*
|
||
* Module, die schon eines der beiden Interior-Logos tragen, bleiben ganz unberührt (08.10.2026):
|
||
* Sie sind entweder neu angelegt (Standardwerte) oder bereits umgestellt, und ein inzwischen im
|
||
* Display-CMS gepflegter Claim soll beim Livegang nicht zurückgesetzt werden.
|
||
*
|
||
* php artisan db:seed --class=DisplayInteriorBrandingSeeder
|
||
*/
|
||
class DisplayInteriorBrandingSeeder extends Seeder
|
||
{
|
||
private const LOGO_DARK = '/_cabinet/assets/b2in-interior-logo-negative.svg';
|
||
|
||
private const LOGO_LIGHT = '/_cabinet/assets/b2in-interior-logo-positive.svg';
|
||
|
||
private const CLAIM = 'Premium-Einrichtung. Persönlich gemacht.';
|
||
|
||
public function run(): void
|
||
{
|
||
$updated = 0;
|
||
|
||
foreach (DisplayVersion::query()->where('type', DisplayVersionType::B2in)->get() as $module) {
|
||
$settings = $module->settings ?? [];
|
||
|
||
if (in_array($settings['header_logo_url'] ?? null, [self::LOGO_DARK, self::LOGO_LIGHT], true)) {
|
||
continue;
|
||
}
|
||
|
||
$settings['header_logo_url'] = ($settings['theme'] ?? 'dark') === 'light'
|
||
? self::LOGO_LIGHT
|
||
: self::LOGO_DARK;
|
||
|
||
$settings['header_claim'] = self::CLAIM;
|
||
|
||
$module->settings = $settings;
|
||
$module->save();
|
||
$updated++;
|
||
}
|
||
|
||
$this->command?->info("Display-Branding vereinheitlicht: {$updated} B2in-Module.");
|
||
}
|
||
}
|