Nachtrag 11: Herkunfts-Sektion liest Ort, Entfernung und Rolle aus der Markenverwaltung (drei neue Felder an cms_brands, BrandOriginSeeder), Kartenpositionen im Code, „Marken“ in der Sidebar. Nachtrag 12: Inhalte-Editor zeigt die Seiten der Website mit ihren Sektionen in Reihenfolge (config/cms_pages.php, CmsPageTree), Felder in Klartext, fehlende Sektionen aus der Sprachdatei anlegbar, Vorschau der echten Seite im iframe mit Sprung zur Sektion; Anker an allen lebenden Sektionen nachgezogen. Nachtrag 13: Referenzen als eigenes Modul (CmsReference, Portal-Seite, /referenzen mit Fallback auf die Markengalerien); Immobilien-Projekte aus Sidebar und CMS-Übersicht genommen, Route bleibt. Dazu .gitignore für _b2in_interior_shop/ und docs/. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
69 lines
2.2 KiB
PHP
69 lines
2.2 KiB
PHP
<?php
|
||
|
||
namespace Database\Seeders;
|
||
|
||
use FluxCms\Core\Models\CmsContent;
|
||
use FluxCms\Core\Services\CmsContentService;
|
||
use Illuminate\Database\Seeder;
|
||
|
||
/**
|
||
* Herkunfts-Sektion „Aus der Region gefertigt“ ins CMS legen (Arbeitsplan 14.09.2026, Punkt 1.3).
|
||
*
|
||
* Legt die Sektion nur an, wenn sie fehlt. Ein bestehender Eintrag bleibt inhaltlich unangetastet,
|
||
* damit Korrekturen aus dem Admin (Ablauf CABINET) nicht verloren gehen.
|
||
*
|
||
* Einzige Ausnahme (Nachtrag 11): Der Schlüssel `locations` stammt aus dem ersten Stand, als die
|
||
* Standorte noch im Sektions-JSON lagen. Seitdem kommen sie aus den Marken
|
||
* ({@see BrandOriginSeeder}), das Frontend liest den Schlüssel nicht mehr. Er wird aus einem
|
||
* bestehenden Eintrag entfernt, damit er im Inhalte-Editor nicht als Pflegefeld auftaucht.
|
||
* Mehrfaches Ausführen ist unbedenklich.
|
||
*
|
||
* php artisan db:seed --class=OriginSectionCmsSeeder
|
||
*/
|
||
class OriginSectionCmsSeeder extends Seeder
|
||
{
|
||
/** @var array<int, string> */
|
||
private const SECTIONS = ['origin_section'];
|
||
|
||
public function run(): void
|
||
{
|
||
$seeder = new CmsContentSeeder;
|
||
$seeder->setCommand($this->command);
|
||
$seeder->onlySections = self::SECTIONS;
|
||
$seeder->run();
|
||
|
||
$this->dropLegacyLocations();
|
||
|
||
$this->command?->info('Herkunfts-Sektion: angelegt, falls sie fehlte.');
|
||
}
|
||
|
||
private function dropLegacyLocations(): void
|
||
{
|
||
$row = CmsContent::query()->where('group', 'home')->where('key', 'origin_section')->first();
|
||
|
||
if (! $row) {
|
||
return;
|
||
}
|
||
|
||
$value = $row->getTranslations('value');
|
||
$changed = false;
|
||
|
||
foreach ($value as $locale => $section) {
|
||
if (is_array($section) && array_key_exists('locations', $section)) {
|
||
unset($section['locations']);
|
||
$value[$locale] = $section;
|
||
$changed = true;
|
||
}
|
||
}
|
||
|
||
if (! $changed) {
|
||
return;
|
||
}
|
||
|
||
$row->value = $value;
|
||
$row->save();
|
||
app(CmsContentService::class)->clearCache('home');
|
||
|
||
$this->command?->info('Herkunfts-Sektion: veralteten Schlüssel „locations“ entfernt – die Standorte kommen aus den Marken.');
|
||
}
|
||
}
|