b2in/database/seeders/OriginSectionCmsSeeder.php
Kevin Adametz 90aa079cf7 CMS: Standorte an der Marke, Seitenbaum mit Vorschau, Referenzen-Modul
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>
2026-09-15 14:58:45 +00:00

69 lines
2.2 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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.');
}
}