Small changes for new client area (#751)

* add placeholder to allocation notes

* add button to open server in admin area

* use new client area for "console" button on EditServer

* hide schedule presets on view

* use arrow functions for auth checks

* add placeholder to schedules last run

* change icon of "open in admin"

* fix parentheses
This commit is contained in:
Boy132 2024-12-02 22:27:35 +01:00 committed by GitHub
parent 918ba02075
commit 1337767049
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 21 additions and 8 deletions

View File

@ -6,6 +6,7 @@ use App\Enums\ContainerStatus;
use App\Enums\ServerState; use App\Enums\ServerState;
use App\Filament\Resources\ServerResource; use App\Filament\Resources\ServerResource;
use App\Filament\Resources\ServerResource\RelationManagers\AllocationsRelationManager; use App\Filament\Resources\ServerResource\RelationManagers\AllocationsRelationManager;
use App\Filament\Server\Pages\Console;
use App\Models\Database; use App\Models\Database;
use App\Models\DatabaseHost; use App\Models\DatabaseHost;
use App\Models\Egg; use App\Models\Egg;
@ -870,7 +871,7 @@ class EditServer extends EditRecord
Actions\Action::make('console') Actions\Action::make('console')
->label('Console') ->label('Console')
->icon('tabler-terminal') ->icon('tabler-terminal')
->url(fn (Server $server) => "/server/$server->uuid_short"), ->url(fn (Server $server) => Console::getUrl(panel: 'server', tenant: $server)),
$this->getSaveFormAction()->formId('form'), $this->getSaveFormAction()->formId('form'),
]; ];

View File

@ -53,7 +53,7 @@ class Settings extends ServerFormPage
->schema([ ->schema([
TextInput::make('name') TextInput::make('name')
->label('Server Name') ->label('Server Name')
->disabled(!auth()->user()->can(Permission::ACTION_SETTINGS_RENAME, $server)) ->disabled(fn () => !auth()->user()->can(Permission::ACTION_SETTINGS_RENAME, $server))
->required() ->required()
->columnSpan([ ->columnSpan([
'default' => 1, 'default' => 1,
@ -66,7 +66,7 @@ class Settings extends ServerFormPage
Textarea::make('description') Textarea::make('description')
->label('Server Description') ->label('Server Description')
->hidden(!config('panel.editable_server_descriptions')) ->hidden(!config('panel.editable_server_descriptions'))
->disabled(!auth()->user()->can(Permission::ACTION_SETTINGS_RENAME, $server)) ->disabled(fn () => !auth()->user()->can(Permission::ACTION_SETTINGS_RENAME, $server))
->columnSpan([ ->columnSpan([
'default' => 1, 'default' => 1,
'sm' => 2, 'sm' => 2,
@ -168,7 +168,7 @@ class Settings extends ServerFormPage
->footerActions([ ->footerActions([
Action::make('reinstall') Action::make('reinstall')
->color('danger') ->color('danger')
->disabled(!auth()->user()->can(Permission::ACTION_SETTINGS_REINSTALL, $server)) ->disabled(fn () => !auth()->user()->can(Permission::ACTION_SETTINGS_REINSTALL, $server))
->label('Reinstall') ->label('Reinstall')
->requiresConfirmation() ->requiresConfirmation()
->modalHeading('Are you sure you want to reinstall the server?') ->modalHeading('Are you sure you want to reinstall the server?')

View File

@ -62,7 +62,7 @@ class Startup extends ServerFormPage
->label('Docker Image') ->label('Docker Image')
->live() ->live()
->visible(fn (Server $server) => in_array($server->image, $server->egg->docker_images)) ->visible(fn (Server $server) => in_array($server->image, $server->egg->docker_images))
->disabled(!auth()->user()->can(Permission::ACTION_STARTUP_DOCKER_IMAGE, $server)) ->disabled(fn () => !auth()->user()->can(Permission::ACTION_STARTUP_DOCKER_IMAGE, $server))
->afterStateUpdated(function ($state, Server $server) { ->afterStateUpdated(function ($state, Server $server) {
$original = $server->image; $original = $server->image;
$server->forceFill(['image' => $state])->saveOrFail(); $server->forceFill(['image' => $state])->saveOrFail();
@ -97,7 +97,7 @@ class Startup extends ServerFormPage
->label('') ->label('')
->relationship('viewableServerVariables') ->relationship('viewableServerVariables')
->grid() ->grid()
->disabled(!auth()->user()->can(Permission::ACTION_STARTUP_UPDATE, $server)) ->disabled(fn () => !auth()->user()->can(Permission::ACTION_STARTUP_UPDATE, $server))
->reorderable(false)->addable(false)->deletable(false) ->reorderable(false)->addable(false)->deletable(false)
->schema(function () { ->schema(function () {
$text = TextInput::make('variable_value') $text = TextInput::make('variable_value')

View File

@ -36,7 +36,8 @@ class ListAllocations extends ListRecords
TextColumn::make('port'), TextColumn::make('port'),
TextInputColumn::make('notes') TextInputColumn::make('notes')
->disabled(fn () => !auth()->user()->can(Permission::ACTION_ALLOCATION_UPDATE, $server)) ->disabled(fn () => !auth()->user()->can(Permission::ACTION_ALLOCATION_UPDATE, $server))
->label('Notes'), ->label('Notes')
->placeholder('No Notes'),
IconColumn::make('primary') IconColumn::make('primary')
->icon(fn ($state) => match ($state) { ->icon(fn ($state) => match ($state) {
true => 'tabler-star-filled', true => 'tabler-star-filled',

View File

@ -70,7 +70,7 @@ class EditFiles extends Page
->footerActions([ ->footerActions([
Action::make('save') Action::make('save')
->label('Save Changes') ->label('Save Changes')
->authorize(auth()->user()->can(Permission::ACTION_FILE_UPDATE, $server)) ->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_UPDATE, $server))
->icon('tabler-device-floppy') ->icon('tabler-device-floppy')
->keyBindings('mod+s') ->keyBindings('mod+s')
->action(function () use ($server) { ->action(function () use ($server) {

View File

@ -111,6 +111,7 @@ class ScheduleResource extends Resource
->default('*') ->default('*')
->required(), ->required(),
Section::make('Presets') Section::make('Presets')
->hiddenOn('view')
->schema([ ->schema([
Actions::make([ Actions::make([
Action::make('hourly') Action::make('hourly')

View File

@ -33,6 +33,7 @@ class ListSchedules extends ListRecords
->sortable(), ->sortable(),
DateTimeColumn::make('last_run_at') DateTimeColumn::make('last_run_at')
->label('Last run') ->label('Last run')
->placeholder('Never')
->since() ->since()
->sortable(), ->sortable(),
DateTimeColumn::make('next_run_at') DateTimeColumn::make('next_run_at')

View File

@ -4,6 +4,7 @@ namespace App\Providers\Filament;
use App\Filament\App\Resources\ServerResource\Pages\ListServers; use App\Filament\App\Resources\ServerResource\Pages\ListServers;
use App\Filament\Pages\Auth\Login; use App\Filament\Pages\Auth\Login;
use App\Filament\Resources\ServerResource\Pages\EditServer;
use App\Filament\Resources\UserResource\Pages\EditProfile; use App\Filament\Resources\UserResource\Pages\EditProfile;
use App\Http\Middleware\Activity\ServerSubject; use App\Http\Middleware\Activity\ServerSubject;
use App\Models\Server; use App\Models\Server;
@ -12,6 +13,7 @@ use Filament\Http\Middleware\Authenticate;
use Filament\Http\Middleware\DisableBladeIconComponents; use Filament\Http\Middleware\DisableBladeIconComponents;
use Filament\Http\Middleware\DispatchServingFilamentEvent; use Filament\Http\Middleware\DispatchServingFilamentEvent;
use Filament\Navigation\MenuItem; use Filament\Navigation\MenuItem;
use Filament\Navigation\NavigationItem;
use Filament\Panel; use Filament\Panel;
use Filament\PanelProvider; use Filament\PanelProvider;
use Filament\Support\Enums\MaxWidth; use Filament\Support\Enums\MaxWidth;
@ -54,6 +56,13 @@ class ServerPanelProvider extends PanelProvider
->sort(5) ->sort(5)
->visible(fn (): bool => auth()->user()->canAccessPanel(Filament::getPanel('admin'))), ->visible(fn (): bool => auth()->user()->canAccessPanel(Filament::getPanel('admin'))),
]) ])
->navigationItems([
NavigationItem::make('Open in Admin')
->url(fn () => EditServer::getUrl(['record' => Filament::getTenant()], panel: 'admin', tenant: null), true)
->visible(fn () => auth()->user()->can('view server', Filament::getTenant()))
->icon('tabler-arrow-back')
->sort(99),
])
->discoverResources(in: app_path('Filament/Server/Resources'), for: 'App\\Filament\\Server\\Resources') ->discoverResources(in: app_path('Filament/Server/Resources'), for: 'App\\Filament\\Server\\Resources')
->discoverPages(in: app_path('Filament/Server/Pages'), for: 'App\\Filament\\Server\\Pages') ->discoverPages(in: app_path('Filament/Server/Pages'), for: 'App\\Filament\\Server\\Pages')
->discoverWidgets(in: app_path('Filament/Server/Widgets'), for: 'App\\Filament\\Server\\Widgets') ->discoverWidgets(in: app_path('Filament/Server/Widgets'), for: 'App\\Filament\\Server\\Widgets')