From 6eafec2128b792db088a3a966c80e6aba5c953d5 Mon Sep 17 00:00:00 2001 From: Codex Agent Date: Thu, 5 Feb 2026 11:50:36 +0100 Subject: [PATCH] Add marketing demo toggle and tolerate string flags --- app/Filament/Resources/EventResource.php | 4 ++++ app/Http/Controllers/MarketingController.php | 10 +++++++- resources/lang/de/admin.php | 2 ++ resources/lang/en/admin.php | 3 +++ tests/Feature/Marketing/DemoPageTest.php | 24 ++++++++++++++++++++ 5 files changed, 42 insertions(+), 1 deletion(-) diff --git a/app/Filament/Resources/EventResource.php b/app/Filament/Resources/EventResource.php index 3c04884e..d13cf172 100644 --- a/app/Filament/Resources/EventResource.php +++ b/app/Filament/Resources/EventResource.php @@ -97,6 +97,10 @@ class EventResource extends Resource Toggle::make('is_active') ->label(__('admin.events.fields.is_active')) ->default(true), + Toggle::make('settings.marketing_demo') + ->label(__('admin.events.fields.marketing_demo')) + ->helperText(__('admin.events.fields.marketing_demo_help')) + ->default(false), KeyValue::make('settings') ->label(__('admin.events.fields.settings')) ->keyLabel(__('admin.common.key')) diff --git a/app/Http/Controllers/MarketingController.php b/app/Http/Controllers/MarketingController.php index 55785715..517288b2 100644 --- a/app/Http/Controllers/MarketingController.php +++ b/app/Http/Controllers/MarketingController.php @@ -419,7 +419,15 @@ class MarketingController extends Controller public function demo() { $event = Event::query() - ->where('settings->marketing_demo', true) + ->where(function ($query) { + $query + ->where('settings->marketing_demo', true) + ->orWhere('settings->marketing_demo', 'true') + ->orWhere('settings->marketing_demo', '1') + ->orWhere('settings->demo', true) + ->orWhere('settings->demo', 'true') + ->orWhere('settings->demo', '1'); + }) ->latest('id') ->first(); $joinToken = null; diff --git a/resources/lang/de/admin.php b/resources/lang/de/admin.php index 14e86a22..62bac7f9 100644 --- a/resources/lang/de/admin.php +++ b/resources/lang/de/admin.php @@ -364,6 +364,8 @@ return [ 'type' => 'Eventtyp', 'default_locale' => 'Standardsprache', 'is_active' => 'Aktiv', + 'marketing_demo' => 'Marketing-Demo', + 'marketing_demo_help' => 'Markiert dieses Event als Demo-Event für die Marketing-Seite.', 'settings' => 'Einstellungen', 'join_link' => 'Einladungslink', ], diff --git a/resources/lang/en/admin.php b/resources/lang/en/admin.php index ddde63d2..817c5a6b 100644 --- a/resources/lang/en/admin.php +++ b/resources/lang/en/admin.php @@ -363,6 +363,9 @@ return [ 'date' => 'Event Date', 'type' => 'Event Type', 'default_locale' => 'Default Locale', + 'is_active' => 'Active', + 'marketing_demo' => 'Marketing demo', + 'marketing_demo_help' => 'Marks this event as the demo event for the marketing page.', 'settings' => 'Settings', 'join_link' => 'Invitation Link', ], diff --git a/tests/Feature/Marketing/DemoPageTest.php b/tests/Feature/Marketing/DemoPageTest.php index bf84657b..f549ff6d 100644 --- a/tests/Feature/Marketing/DemoPageTest.php +++ b/tests/Feature/Marketing/DemoPageTest.php @@ -30,6 +30,30 @@ class DemoPageTest extends TestCase ); } + public function test_demo_page_accepts_string_demo_flags(): void + { + $eventA = Event::factory()->create([ + 'settings' => ['marketing_demo' => 'true'], + ]); + + $eventB = Event::factory()->create([ + 'settings' => ['demo' => 'true'], + ]); + + $joinToken = $eventB->joinTokens()->latest('id')->first(); + + $this->assertNotNull($eventA); + $this->assertNotNull($joinToken); + + $response = $this->get('/de/demo'); + + $response->assertOk(); + $response->assertInertia(fn (Assert $page) => $page + ->component('marketing/Demo') + ->where('demoToken', $joinToken->token) + ); + } + public function test_demo_page_renders_without_marketing_demo_event(): void { $response = $this->get('/de/demo');