'Onboarding', 'version' => '1.0.0', 'author' => 'Paymenter', 'website' => 'https://paymenter.org', ]; } public function getConfig($values = []) { return [ [ 'name' => 'test_mode', 'type' => 'checkbox', 'label' => 'Test Mode', 'description' => 'Enable test mode to always show onboarding modal (bypass session tracking). Useful for testing while setting up slides.', 'required' => false, 'default' => false, ], [ 'name' => 'show_backdrop', 'type' => 'checkbox', 'label' => 'Show Backdrop', 'description' => 'Display a dark backdrop behind the onboarding modal.', 'required' => false, 'default' => false, ], [ 'name' => 'per_session', 'type' => 'checkbox', 'label' => 'Per Session Onboarding', 'description' => 'Use cookies instead of database session. Onboarding will show again if user clears cookies or uses a different browser/device.', 'required' => false, 'default' => false, ], ]; } public function installed() { ExtensionHelper::runMigrations('extensions/Others/Onboarding/database/migrations'); } public function uninstalled() { ExtensionHelper::rollbackMigrations('extensions/Others/Onboarding/database/migrations'); } public function boot() { app('view')->addNamespace('onboarding', __DIR__ . '/resources/views'); \Livewire\Livewire::component('onboarding.modal', \Paymenter\Extensions\Others\Onboarding\Livewire\Onboarding\Modal::class); \Illuminate\Support\Facades\Gate::policy( \Paymenter\Extensions\Others\Onboarding\Models\OnboardingSlide::class, \Paymenter\Extensions\Others\Onboarding\Policies\OnboardingSlidePolicy::class ); \Illuminate\Support\Facades\Event::listen('permissions', function () { return [ 'admin.onboarding.view' => 'View Onboarding Slides', 'admin.onboarding.create' => 'Create Onboarding Slides', 'admin.onboarding.update' => 'Update Onboarding Slides', 'admin.onboarding.delete' => 'Delete Onboarding Slides', ]; }); // 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(), ]; } }); } }