feat: add option to display onboarding on homepage and improve modal slide handling
This commit is contained in:
@@ -45,6 +45,14 @@ class Onboarding extends Extension
|
||||
'required' => false,
|
||||
'default' => false,
|
||||
],
|
||||
[
|
||||
'name' => 'include_homepage',
|
||||
'type' => 'checkbox',
|
||||
'label' => 'Show on Homepage',
|
||||
'description' => 'Also display onboarding on the homepage. By default, onboarding only shows on internal pages like dashboard, services, etc.',
|
||||
'required' => false,
|
||||
'default' => false,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
@@ -84,27 +92,40 @@ class Onboarding extends Extension
|
||||
];
|
||||
});
|
||||
|
||||
|
||||
// Only register body hook if the table exists
|
||||
if (!Schema::hasTable('ext_onboarding_slides')) {
|
||||
return;
|
||||
}
|
||||
|
||||
\Illuminate\Support\Facades\Event::listen('body', function () {
|
||||
|
||||
if (!request()->is('admin/*') &&
|
||||
!request()->is('login') &&
|
||||
!request()->is('register') &&
|
||||
!request()->is('2fa') &&
|
||||
!request()->is('forgot-password') &&
|
||||
!request()->is('reset-password/*') &&
|
||||
!request()->is('verify-email') &&
|
||||
!request()->is('/') &&
|
||||
\Illuminate\Support\Facades\Auth::check()) {
|
||||
return [
|
||||
'view' => view('onboarding::widget')->render(),
|
||||
];
|
||||
// Skip if table doesn't exist
|
||||
if (!Schema::hasTable('ext_onboarding_slides')) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Check if homepage should be included
|
||||
$extension = ExtensionHelper::getExtension('other', 'Onboarding');
|
||||
$includeHomepage = $extension->config('include_homepage', false);
|
||||
|
||||
// Skip admin and auth pages
|
||||
if (request()->is('admin/*') ||
|
||||
request()->is('login') ||
|
||||
request()->is('register') ||
|
||||
request()->is('2fa') ||
|
||||
request()->is('forgot-password') ||
|
||||
request()->is('reset-password/*') ||
|
||||
request()->is('verify-email')) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Skip homepage unless explicitly included
|
||||
if (!$includeHomepage && request()->is('/')) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Only show for authenticated users
|
||||
if (!\Illuminate\Support\Facades\Auth::check()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return [
|
||||
'view' => view('onboarding::widget'),
|
||||
];
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user