diff --git a/app/Providers/NovaServiceProvider.php b/app/Providers/NovaServiceProvider.php index e164104..f336c3e 100644 --- a/app/Providers/NovaServiceProvider.php +++ b/app/Providers/NovaServiceProvider.php @@ -2,7 +2,18 @@ namespace App\Providers; +use App\Nova\Resources\Branch\Branch; +use App\Nova\Resources\System\Location\Province; +use App\Nova\Resources\System\Roles\Permission; +use App\Nova\Resources\System\Roles\Role; +use App\Nova\User; +use Illuminate\Http\Request; use Illuminate\Support\Facades\Gate; +use Laravel\Nova\Dashboards\Main; +use Laravel\Nova\Menu\Menu; +use Laravel\Nova\Menu\MenuGroup; +use Laravel\Nova\Menu\MenuItem; +use Laravel\Nova\Menu\MenuSection; use Laravel\Nova\Nova; use Laravel\Nova\NovaApplicationServiceProvider; @@ -13,10 +24,13 @@ class NovaServiceProvider extends NovaApplicationServiceProvider */ public function boot(): void { + parent::boot(); + Nova::withBreadcrumbs(); Nova::footer(fn () => view('vendor.nova.partials.footer')->render()); - parent::boot(); + $this->setupNavigation(); + $this->setupUserNavigation(); } /** @@ -50,7 +64,7 @@ class NovaServiceProvider extends NovaApplicationServiceProvider protected function dashboards(): array { return [ - new \App\Nova\Dashboards\Main, + new Main, ]; } @@ -69,4 +83,47 @@ class NovaServiceProvider extends NovaApplicationServiceProvider { // } + + /** + * Setup user navigation (dropdown). + */ + public function setupUserNavigation(): void + { + Nova::userMenu(function (Request $request, Menu $menu) { + $menu->prepend( + MenuItem::make( + __('My Profile'), + sprintf('/resources/users/%s', $request->user()->id) + ) + ); + + return $menu; + }); + } + + /** + * Setup navigation + */ + public function setupNavigation(): void + { + Nova::mainMenu(function (Request $request) { + return [ + MenuSection::dashboard(Main::class)->icon('chart-bar'), + + MenuSection::make(__('System'), [ + MenuGroup::make(__('User'), [ + MenuItem::resource(User::class), + MenuItem::resource(Role::class), + MenuItem::resource(Permission::class), + ])->collapsable(), + + MenuGroup::make(__('Location'), [ + MenuItem::resource(Province::class), + MenuItem::resource(Branch::class), + ])->collapsable(), + + ])->icon('cog')->collapsable(), + ]; + }); + } }