- Hinweisleiste per B2IN_ANNOUNCEMENT_BAR ausgeblendet (Standard aus) - Hero: „Räume aus einer Hand.“ als neue Überschrift, zweiter Button entfernt - Projekttext mit zentralem deutschen Vertragspartner (Punkt statt Gedankenstrich) - Otterpohl als vierte Kernmarke: Text v2, Abschnitt „Montage“, Titelbild getauscht - Markenabschnitte: Absätze mit „- “ als Liste mit fetter Einleitung - Titelbilder und Galerien für CABINET, Rotpunkt, Febrü und Otterpohl (WebP) - Feedback 17.09. in den Markentexten, Demobilder entfernt, WhatsApp-Nummer - Palette „Modern“ fest ohne Schalter, Entwurf /entwurf mit Hero-Slideshow - Seeder-Liste fürs Deployment im Entwicklungsplan Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
72 lines
2.6 KiB
PHP
72 lines
2.6 KiB
PHP
<?php
|
||
|
||
namespace Database\Seeders;
|
||
|
||
use App\Models\CmsBrand;
|
||
use Illuminate\Database\Seeder;
|
||
|
||
/**
|
||
* Traegt die Markenlogos nach.
|
||
*
|
||
* Grundlage: dev/2026-08-28/markenlogos/ (Zulieferung vom 03.09.2026). Die Dateien liegen unter
|
||
* public/img/assets/marken/ und sind dort **optisch aufeinander abgestimmt** – das Frontend
|
||
* rendert sie in einer gemeinsamen Box, in der jedes Logo seine Zeichenflaeche ausfuellt:
|
||
*
|
||
* Rotpunkt Zeichenflaeche = Inhalt → fuellt die Box, gilt als Bezugsgroesse
|
||
* CABINET Zeichenflaeche rechts +18 % → rendert 15 % kleiner als Rotpunkt
|
||
* Februe Zeichenflaeche oben/unten +20 % → rendert wie vor der Abstimmung
|
||
* Otterpohl knapp beschnitten, weiss freigestellt (Zulieferung 17.09.2026, Nachtrag 15)
|
||
*
|
||
* Alle drei waren in der Zulieferung sehr unterschiedlich stark umrandet (CABINET nutzte nur
|
||
* 29 Prozent der Hoehe) und wirkten dadurch ungleich gross. Die Abstimmung steckt bewusst in den
|
||
* Dateien und nicht im Blade: so gilt sie an allen vier Stellen gleichzeitig – Seitenkopf,
|
||
* Startseiten-Kachel, /marken und „Weitere Marken“.
|
||
*
|
||
* Wird ein Logo im Admin ausgetauscht, sollte die neue Datei genauso knapp beschnitten sein.
|
||
* Ohne Rand rendert sie in Rotpunkt-Groesse, mit viel Rand entsprechend kleiner.
|
||
*
|
||
* {@see CmsBrandSeeder} bringt dieselben Werte fuer frische Installationen mit, ueberspringt
|
||
* aber bereits angelegte Marken. Dieser Seeder fasst nur das Feld `logo` an und auch nur dann,
|
||
* wenn es leer ist – ein selbst hochgeladenes Logo bleibt also stehen. Mehrfaches Ausfuehren
|
||
* ist unbedenklich.
|
||
*
|
||
* php artisan db:seed --class=BrandLogoSeeder
|
||
*/
|
||
class BrandLogoSeeder extends Seeder
|
||
{
|
||
/** @var array<string, string> */
|
||
private const LOGOS = [
|
||
'cabinet' => 'marken/cabinet.svg',
|
||
'rotpunkt' => 'marken/rotpunkt.svg',
|
||
'februe' => 'marken/februe.png',
|
||
'tischlerei' => 'marken/otterpohl.png',
|
||
];
|
||
|
||
public function run(): void
|
||
{
|
||
$set = 0;
|
||
$kept = 0;
|
||
|
||
foreach (self::LOGOS as $slug => $logo) {
|
||
$brand = CmsBrand::query()->where('slug', $slug)->first();
|
||
|
||
if (! $brand) {
|
||
$this->command?->warn("Marke „{$slug}“ nicht gefunden – uebersprungen.");
|
||
|
||
continue;
|
||
}
|
||
|
||
if (trim((string) $brand->logo) !== '') {
|
||
$kept++;
|
||
|
||
continue;
|
||
}
|
||
|
||
$brand->logo = $logo;
|
||
$brand->save();
|
||
$set++;
|
||
}
|
||
|
||
$this->command?->info("Markenlogos gesetzt: {$set}, vorhandene behalten: {$kept}.");
|
||
}
|
||
}
|