setupNavigation(); $this->setupUserNavigation(); $this->setupUserSettings(); $this->setupAssets(); $this->setupFieldMacros(); } /** * Register the Nova routes. */ protected function routes(): void { Nova::routes() ->withAuthenticationRoutes() ->withPasswordResetRoutes() ->register(); } /** * Register the Nova gate. * * This gate determines who can access Nova in non-local environments. */ protected function gate(): void { Gate::define('viewNova', NovaRepo::viewNova()); } /** * Get the dashboards that should be listed in the Nova sidebar. */ protected function dashboards(): array { return [ new Main, ]; } /** * Get the tools that should be listed in the Nova sidebar. */ public function tools(): array { return [ LocaleSwitcher::make() ->setLocales(config('app.locales')) ->onSwitchLocale(NovaRepo::localeSwitcherSave()), BackupTool::make() ->canSee(NovaRepo::isSuperAdmin()), LogsTool::make() ->canSee(NovaRepo::isMe()) ->canDownload(NovaRepo::isMe()) ->canDelete(NovaRepo::isMe()), ]; } /** * Setup navigation */ public function setupNavigation(): void { Nova::mainMenu(function (Request $request) { return [ MenuSection::dashboard(Main::class)->icon('chart-bar'), MenuSection::make(__('Orders'), [ MenuGroup::make(__('Loan department'), [ MenuItem::resource(LoanOrder::class), ])->collapsedByDefault(), MenuGroup::make(__('Card department'), [ MenuItem::resource(CardOrder::class)->name(__('Order new card')), MenuItem::resource(CardRequisite::class), MenuItem::resource(CardPin::class), ])->collapsedByDefault(), ])->icon('ticket')->collapsedByDefault(), MenuSection::make(__('System'), [ MenuGroup::make(__('Users'), [ MenuItem::resource(User::class), MenuItem::resource(Role::class), MenuItem::resource(Permission::class), ])->collapsedByDefault(), MenuGroup::make(__('Loan'), [ MenuItem::resource(LoanType::class), ])->collapsedByDefault(), MenuGroup::make(__('Card'), [ MenuItem::resource(CardState::class), MenuItem::resource(CardType::class), ])->collapsedByDefault(), MenuGroup::make(__('Location'), [ MenuItem::resource(Province::class), MenuItem::resource(Branch::class), ])->collapsedByDefault(), ])->icon('cog')->collapsedByDefault(), MenuSection::make(__('Backups')) ->path('/backups') ->icon('server') ->canSee(fn () => auth()->user()->isSuperAdmin()), MenuSection::make(__('Logs')) ->path('/logs') ->icon('document-text') ->canSee(fn () => auth()->user()->isSuperAdmin()), ]; }); } /** * Setup user navigation (dropdown). */ public function setupUserNavigation(): void { Nova::userMenu(function (Request $request, Menu $menu) { $menu->prepend(MenuItem::make(__('My Profile'), $request->user()->profilePage())); return $menu; }); } /** * Setup user settings */ public function setupUserSettings(): void { Nova::serving(fn (ServingNova $event) => NovaRepo::serving($event)); } /** * Setup Assets */ public function setupAssets(): void { Nova::style('additional', resource_path('css/vendor/nova/css/additional.css')); } /** * Setup macros of fields */ public function setupFieldMacros(): void { Date::macro('toTurkmenFormat', fn () => $this->displayUsing(fn ($value) => $value?->format('d.m.Y'))); } }