Add marketing demo toggle and tolerate string flags
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled

This commit is contained in:
Codex Agent
2026-02-05 11:50:36 +01:00
parent 04c399aeb6
commit 6eafec2128
5 changed files with 42 additions and 1 deletions

View File

@@ -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'))

View File

@@ -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;

View File

@@ -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',
],

View File

@@ -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',
],

View File

@@ -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');