Allow user selectable navigation type (#1572)

Co-authored-by: Boy132 <Boy132@users.noreply.github.com>
This commit is contained in:
Charles 2025-08-05 08:56:31 -04:00 committed by GitHub
parent 75863c50d1
commit 36863f94c0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 23 additions and 20 deletions

View File

@ -169,16 +169,6 @@ class Settings extends Page implements HasForms
->formatStateUsing(fn ($state): bool => (bool) $state)
->afterStateUpdated(fn ($state, Set $set) => $set('APP_DEBUG', (bool) $state))
->default(env('APP_DEBUG', config('app.debug'))),
ToggleButtons::make('FILAMENT_TOP_NAVIGATION')
->label(trans('admin/setting.general.navigation'))
->inline()
->options([
false => trans('admin/setting.general.sidebar'),
true => trans('admin/setting.general.topbar'),
])
->formatStateUsing(fn ($state): bool => (bool) $state)
->afterStateUpdated(fn ($state, Set $set) => $set('FILAMENT_TOP_NAVIGATION', (bool) $state))
->default(env('FILAMENT_TOP_NAVIGATION', config('panel.filament.top-navigation'))),
]),
Group::make()
->columns(2)

View File

@ -29,7 +29,7 @@ class EggResource extends Resource
public static function getNavigationGroup(): ?string
{
return config('panel.filament.top-navigation', false) ? null : trans('admin/dashboard.server');
return !empty(auth()->user()->getCustomization()['top_navigation']) ? false : trans('admin/dashboard.server');
}
public static function getNavigationLabel(): string

View File

@ -40,7 +40,8 @@ class NodeResource extends Resource
public static function getNavigationGroup(): ?string
{
return config('panel.filament.top-navigation', false) ? null : trans('admin/dashboard.server');
return !empty(auth()->user()->getCustomization()['top_navigation']) ? false : trans('admin/dashboard.server');
}
public static function getNavigationBadge(): ?string

View File

@ -59,7 +59,7 @@ class RoleResource extends Resource
public static function getNavigationGroup(): ?string
{
return config('panel.filament.top-navigation', false) ? trans('admin/dashboard.advanced') : trans('admin/dashboard.user');
return !empty(auth()->user()->getCustomization()['top_navigation']) ? trans('admin/dashboard.advanced') : trans('admin/dashboard.user');
}
public static function getNavigationBadge(): ?string

View File

@ -43,7 +43,7 @@ class ServerResource extends Resource
public static function getNavigationGroup(): ?string
{
return config('panel.filament.top-navigation', false) ? null : trans('admin/dashboard.server');
return !empty(auth()->user()->getCustomization()['top_navigation']) ? false : trans('admin/dashboard.server');
}
public static function getNavigationBadge(): ?string

View File

@ -56,7 +56,7 @@ class UserResource extends Resource
public static function getNavigationGroup(): ?string
{
return config('panel.filament.top-navigation', false) ? null : trans('admin/dashboard.user');
return !empty(auth()->user()->getCustomization()['top_navigation']) ? false : trans('admin/dashboard.user');
}
public static function getNavigationBadge(): ?string

View File

@ -471,6 +471,14 @@ class EditProfile extends BaseEditProfile
'grid' => trans('profile.grid'),
'table' => trans('profile.table'),
]),
ToggleButtons::make('top_navigation')
->label(trans('profile.navigation'))
->inline()
->required()
->options([
true => trans('profile.top'),
false => trans('profile.side'),
]),
]),
Section::make(trans('profile.console'))
->collapsible()
@ -628,9 +636,10 @@ class EditProfile extends BaseEditProfile
'console_rows' => $data['console_rows'],
'console_graph_period' => $data['console_graph_period'],
'dashboard_layout' => $data['dashboard_layout'],
'top_navigation' => $data['top_navigation'],
];
unset($data['console_font'],$data['console_font_size'], $data['console_rows'], $data['dashboard_layout']);
unset($data['console_font'],$data['console_font_size'], $data['console_rows'], $data['dashboard_layout'], $data['top_navigation']);
$data['customization'] = json_encode($moarbetterdata);
return $data;
@ -645,6 +654,7 @@ class EditProfile extends BaseEditProfile
$data['console_rows'] = $moarbetterdata['console_rows'] ?? 30;
$data['console_graph_period'] = $moarbetterdata['console_graph_period'] ?? 30;
$data['dashboard_layout'] = $moarbetterdata['dashboard_layout'] ?? 'grid';
$data['top_navigation'] = $moarbetterdata['top_navigation'] ?? false;
return $data;
}

View File

@ -37,7 +37,7 @@ class AdminPanelProvider extends PanelProvider
->brandLogo(config('app.logo'))
->brandLogoHeight('2rem')
->favicon(config('app.favicon', '/pelican.ico'))
->topNavigation(config('panel.filament.top-navigation', false))
->topNavigation(fn () => auth()->user()->getCustomization()['top_navigation'] ?? false)
->maxContentWidth(config('panel.filament.display-width', 'screen-2xl'))
->login(Login::class)
->passwordReset()

View File

@ -34,7 +34,7 @@ class AppPanelProvider extends PanelProvider
->brandLogo(config('app.logo'))
->brandLogoHeight('2rem')
->favicon(config('app.favicon', '/pelican.ico'))
->topNavigation(config('panel.filament.top-navigation', false))
->topNavigation(fn () => auth()->user()->getCustomization()['top_navigation'] ?? false)
->maxContentWidth(config('panel.filament.display-width', 'screen-2xl'))
->navigation(false)
->profile(EditProfile::class, false)

View File

@ -41,7 +41,7 @@ class ServerPanelProvider extends PanelProvider
->brandLogo(config('app.logo'))
->brandLogoHeight('2rem')
->favicon(config('app.favicon', '/pelican.ico'))
->topNavigation(config('panel.filament.top-navigation', false))
->topNavigation(fn () => auth()->user()->getCustomization()['top_navigation'] ?? false)
->maxContentWidth(config('panel.filament.display-width', 'screen-2xl'))
->login(Login::class)
->passwordReset()

View File

@ -50,7 +50,6 @@ return [
],
'filament' => [
'top-navigation' => env('FILAMENT_TOP_NAVIGATION', false),
'display-width' => env('FILAMENT_WIDTH', 'screen-2xl'),
'avatar-provider' => env('FILAMENT_AVATAR_PROVIDER', 'gravatar'),
'uploadable-avatars' => env('FILAMENT_UPLOADABLE_AVATARS', false),

View File

@ -58,4 +58,7 @@ return [
'seconds' => 'Seconds',
'graph_period' => 'Graph Period',
'graph_period_helper' => 'The amount of data points, seconds, shown on the console graphs.',
'navigation' => 'Navigation Type',
'top' => 'Topbar',
'side' => 'Sidebar',
];