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>
62 lines
1.6 KiB
PHP
62 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace Database\Factories;
|
|
|
|
use App\Models\CmsReference;
|
|
use Illuminate\Database\Eloquent\Factories\Factory;
|
|
|
|
/**
|
|
* @extends Factory<CmsReference>
|
|
*/
|
|
class CmsReferenceFactory extends Factory
|
|
{
|
|
protected $model = CmsReference::class;
|
|
|
|
public function definition(): array
|
|
{
|
|
$title = fake()->unique()->words(3, true);
|
|
|
|
return [
|
|
'title' => ['de' => ucfirst($title), 'en' => ucfirst($title)],
|
|
'location' => fake()->city(),
|
|
'year' => (string) fake()->numberBetween(2022, 2026),
|
|
'description' => ['de' => fake()->paragraph(2), 'en' => fake()->paragraph(2)],
|
|
'image' => 'referenzen/'.fake()->unique()->slug(2).'.webp',
|
|
'gallery' => [],
|
|
'brand_slugs' => [],
|
|
'is_published' => true,
|
|
'order' => fake()->numberBetween(1, 20),
|
|
];
|
|
}
|
|
|
|
public function published(): static
|
|
{
|
|
return $this->state(fn () => ['is_published' => true]);
|
|
}
|
|
|
|
public function unpublished(): static
|
|
{
|
|
return $this->state(fn () => ['is_published' => false]);
|
|
}
|
|
|
|
/**
|
|
* @param list<string> $slugs
|
|
*/
|
|
public function forBrands(array $slugs): static
|
|
{
|
|
return $this->state(fn () => ['brand_slugs' => $slugs]);
|
|
}
|
|
|
|
public function withGallery(int $count = 2): static
|
|
{
|
|
return $this->state(function () use ($count) {
|
|
$items = [];
|
|
|
|
for ($i = 1; $i <= $count; $i++) {
|
|
$items[] = ['image' => 'referenzen/bild-'.$i.'.webp', 'caption' => 'Bild '.$i];
|
|
}
|
|
|
|
return ['gallery' => $items];
|
|
});
|
|
}
|
|
}
|