Add marketing demo toggle and tolerate string flags
This commit is contained in:
@@ -97,6 +97,10 @@ class EventResource extends Resource
|
|||||||
Toggle::make('is_active')
|
Toggle::make('is_active')
|
||||||
->label(__('admin.events.fields.is_active'))
|
->label(__('admin.events.fields.is_active'))
|
||||||
->default(true),
|
->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')
|
KeyValue::make('settings')
|
||||||
->label(__('admin.events.fields.settings'))
|
->label(__('admin.events.fields.settings'))
|
||||||
->keyLabel(__('admin.common.key'))
|
->keyLabel(__('admin.common.key'))
|
||||||
|
|||||||
@@ -419,7 +419,15 @@ class MarketingController extends Controller
|
|||||||
public function demo()
|
public function demo()
|
||||||
{
|
{
|
||||||
$event = Event::query()
|
$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')
|
->latest('id')
|
||||||
->first();
|
->first();
|
||||||
$joinToken = null;
|
$joinToken = null;
|
||||||
|
|||||||
@@ -364,6 +364,8 @@ return [
|
|||||||
'type' => 'Eventtyp',
|
'type' => 'Eventtyp',
|
||||||
'default_locale' => 'Standardsprache',
|
'default_locale' => 'Standardsprache',
|
||||||
'is_active' => 'Aktiv',
|
'is_active' => 'Aktiv',
|
||||||
|
'marketing_demo' => 'Marketing-Demo',
|
||||||
|
'marketing_demo_help' => 'Markiert dieses Event als Demo-Event für die Marketing-Seite.',
|
||||||
'settings' => 'Einstellungen',
|
'settings' => 'Einstellungen',
|
||||||
'join_link' => 'Einladungslink',
|
'join_link' => 'Einladungslink',
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -363,6 +363,9 @@ return [
|
|||||||
'date' => 'Event Date',
|
'date' => 'Event Date',
|
||||||
'type' => 'Event Type',
|
'type' => 'Event Type',
|
||||||
'default_locale' => 'Default Locale',
|
'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',
|
'settings' => 'Settings',
|
||||||
'join_link' => 'Invitation Link',
|
'join_link' => 'Invitation Link',
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -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
|
public function test_demo_page_renders_without_marketing_demo_event(): void
|
||||||
{
|
{
|
||||||
$response = $this->get('/de/demo');
|
$response = $this->get('/de/demo');
|
||||||
|
|||||||
Reference in New Issue
Block a user