From 333eeda065a7bfb814826e83224111cd74ae6ade Mon Sep 17 00:00:00 2001 From: Boy132 Date: Tue, 6 Jan 2026 08:45:40 +0100 Subject: [PATCH] Disable field if server variable is not user_editable (#2074) --- .../Admin/Resources/Servers/Pages/CreateServer.php | 1 + .../Admin/Resources/Servers/Pages/EditServer.php | 3 ++- .../Components/Forms/Fields/StartupVariable.php | 4 ++++ app/Filament/Server/Pages/Startup.php | 12 +++++++----- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php b/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php index 0ffb01293..54ef0af7c 100644 --- a/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php +++ b/app/Filament/Admin/Resources/Servers/Pages/CreateServer.php @@ -480,6 +480,7 @@ class CreateServer extends CreateRecord ->schema([ StartupVariable::make('variable_value') ->fromForm() + ->disabled(false) ->afterStateUpdated(function (Set $set, Get $get, $state) { $environment = $get($envPath = '../../environment'); $environment[$get('env_variable')] = $state; diff --git a/app/Filament/Admin/Resources/Servers/Pages/EditServer.php b/app/Filament/Admin/Resources/Servers/Pages/EditServer.php index 22c8f42cb..159eaa389 100644 --- a/app/Filament/Admin/Resources/Servers/Pages/EditServer.php +++ b/app/Filament/Admin/Resources/Servers/Pages/EditServer.php @@ -822,7 +822,8 @@ class EditServer extends EditRecord ->reorderable(false)->addable(false)->deletable(false) ->schema([ StartupVariable::make('variable_value') - ->fromRecord(), + ->fromRecord() + ->disabled(false), ]) ->columnSpan(6), ]), diff --git a/app/Filament/Components/Forms/Fields/StartupVariable.php b/app/Filament/Components/Forms/Fields/StartupVariable.php index bc746ed4a..ebe2fdf44 100644 --- a/app/Filament/Components/Forms/Fields/StartupVariable.php +++ b/app/Filament/Components/Forms/Fields/StartupVariable.php @@ -83,6 +83,8 @@ class StartupVariable extends Field $this->variableDefault(fn (Get $get) => $get('default_value')); $this->variableRules(fn (Get $get) => $get('rules')); + $this->disabled(fn (Get $get) => !$get('user_editable')); + return $this; } @@ -94,6 +96,8 @@ class StartupVariable extends Field $this->variableDefault(fn (?ServerVariable $record) => $record?->variable->default_value); $this->variableRules(fn (?ServerVariable $record) => $record?->variable->rules); + $this->disabled(fn (?ServerVariable $record) => !$record?->variable->user_editable); + return $this; } diff --git a/app/Filament/Server/Pages/Startup.php b/app/Filament/Server/Pages/Startup.php index 4eae89233..e3cca608e 100644 --- a/app/Filament/Server/Pages/Startup.php +++ b/app/Filament/Server/Pages/Startup.php @@ -147,12 +147,15 @@ class Startup extends ServerFormPage return parent::canAccess() && user()?->can(SubuserPermission::StartupRead, Filament::getTenant()); } - public function update(?string $state, ServerVariable $serverVariable): null + public function update(?string $state, ServerVariable $serverVariable): void { + if (!$serverVariable->variable->user_editable) { + return; + } + $original = $serverVariable->variable_value; try { - $validator = Validator::make( ['variable_value' => $state], ['variable_value' => $serverVariable->variable->rules] @@ -165,7 +168,7 @@ class Startup extends ServerFormPage ->danger() ->send(); - return null; + return; } ServerVariable::query()->updateOrCreate([ @@ -184,6 +187,7 @@ class Startup extends ServerFormPage ]) ->log(); } + Notification::make() ->title(trans('server/startup.update', ['variable' => $serverVariable->variable->name])) ->body(fn () => $original . ' -> ' . $state) @@ -196,8 +200,6 @@ class Startup extends ServerFormPage ->danger() ->send(); } - - return null; } public function getTitle(): string