Startseite und Heroes - Hero-Slideshow (11 Motive inkl. Febrü) mit Infokarte, Laufzeit-Linie, größeren Klickflächen, Goldrahmen und mobiler Karte unter dem Bild; Zeile über der Überschrift, neue Vertrauenspunkte - Hero-Stil auf Marken, Über uns und Kontakt übertragen, Breadcrumb entfernt - Gründer-Leiste, Vision-Box auf Ocker, Showroom-Display in Box mit „Größer ansehen“/Vollbild - Akzentfarbe #a8741f, größere Serif-Überschriften in der Interior-Welt - Marken: Bildpause mit Zitat; Vereine aktualisiert und verlinkt Inhalte - Lektorat aller angezeigten Texte, /about-Korrekturen, Rechtstexte (DDG, TDDDG, Hosting Hetzner) - Ablauf Maßanfertigung überall einheitlich, Magazin-Beitrag neu, alte Beiträge offline, deutsches Datum/Lesezeit, FAQ Projektausstattung, Otterpohl - Referenzen-Seite per CMS-Schalter ausblendbar CMS und Technik - Tote Sektionen, Felder, Seiten und Komponenten entfernt und archiviert (dev/2026-08-28/archiv-*) - Entwurf /entwurf, Farb-Schalter und /welcome entfernt; Test-Routen nur noch lokal - Seitenbaum-Beschreibungen geprüft, fehlende CMS-Felder ergänzt, Markenliste aus „Kernmarken“ - Admin-Bildvorschauen repariert, verwendete Bilder in die Mediathek übernommen - Seeder für das Deployment siehe dev/2026-08-28/entwicklungsplan.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
72 lines
2.5 KiB
PHP
72 lines
2.5 KiB
PHP
<?php
|
||
|
||
namespace Database\Seeders;
|
||
|
||
use FluxCms\Core\Models\CmsContent;
|
||
use FluxCms\Core\Services\CmsContentService;
|
||
use Illuminate\Database\Seeder;
|
||
|
||
/**
|
||
* Macht jedes Feld, das die Website kennt, im CMS bearbeitbar (07.10.2026).
|
||
*
|
||
* Ein CMS-Eintrag zeigt im Editor nur die Felder, die in ihm stehen. Kam ein Feld später in die
|
||
* Lang-Datei (etwa „Zur Marke“ in „Aus der Region gefertigt“), fehlt es in älteren Einträgen und
|
||
* die Website nimmt still den Standardtext. Der Seeder ergänzt solche Felder der obersten Ebene
|
||
* aus der Lang-Datei – vorhandene Werte bleiben unangetastet, Felder aus
|
||
* {@see UnusedCmsContentCleanupSeeder::UNUSED_FIELDS} kommen nicht zurück.
|
||
* Mehrfaches Ausführen ist unbedenklich.
|
||
*
|
||
* php artisan db:seed --class=CmsSectionFieldsSeeder
|
||
*/
|
||
class CmsSectionFieldsSeeder extends Seeder
|
||
{
|
||
public function run(): void
|
||
{
|
||
/** @var array<string, array{0: string, 1: string}> $sections */
|
||
$sections = config('cms_section_map.sections', []);
|
||
$theme = config('app.theme', 'b2in');
|
||
$added = [];
|
||
|
||
foreach ($sections as $sectionKey => [$group, $key]) {
|
||
$row = CmsContent::query()->where('group', $group)->where('key', $key)->first();
|
||
|
||
if (! $row) {
|
||
continue;
|
||
}
|
||
|
||
$skip = UnusedCmsContentCleanupSeeder::UNUSED_FIELDS["{$group}.{$key}"] ?? [];
|
||
$value = $row->getTranslations('value');
|
||
$fields = [];
|
||
|
||
foreach ($value as $locale => $content) {
|
||
$defaults = trans("b2in.themes.{$theme}.{$sectionKey}", [], $locale);
|
||
|
||
if (! is_array($content) || ! is_array($defaults)) {
|
||
continue;
|
||
}
|
||
|
||
foreach ($defaults as $field => $default) {
|
||
if (! array_key_exists($field, $content) && ! in_array($field, $skip, true)) {
|
||
$content[$field] = $default;
|
||
$fields[$field] = true;
|
||
}
|
||
}
|
||
|
||
$value[$locale] = $content;
|
||
}
|
||
|
||
if ($fields === []) {
|
||
continue;
|
||
}
|
||
|
||
$row->value = $value;
|
||
$row->save();
|
||
app(CmsContentService::class)->clearCache($group);
|
||
$added[] = "{$group}.{$key} (".implode(', ', array_keys($fields)).')';
|
||
}
|
||
|
||
$this->command?->info($added === []
|
||
? 'CMS-Felder: alle Einträge vollständig.'
|
||
: 'CMS-Felder ergänzt: '.implode('; ', $added).'.');
|
||
}
|
||
}
|