schema([ Forms\Components\TextInput::make('key') ->label(__('Key')) ->required() ->maxLength(255) ->hiddenOn('edit'), Forms\Components\Fieldset::make() ->label(fn (?Setting $record) => $record ? __('filament.resource.setting.form.' . $record->key) : __('New Setting')) ->schema([ TextInput::make('value') ->label(__('Bitte Wert eingeben')) ->disableLabel(fn (?Setting $record) => $record && ($record->key !== 'image_refresh_interval' && $record->key !== 'new_image_timespan_minutes' && $record->key !== 'gallery_heading')) ->formatStateUsing(function (?string $state, ?Setting $record) { if ($record && $record->key === 'image_refresh_interval') { return (int)$state / 1000; } else if ($record && $record->key === 'new_image_timespan_minutes') { return (int)$state; } return $state; }) ->dehydrateStateUsing(function (?string $state, ?Setting $record) { if ($record && $record->key === 'image_refresh_interval') { return (int)$state * 1000; } else if ($record && $record->key === 'new_image_timespan_minutes') { return (int)$state; } return $state; }) ]) ]); } public static function table(Table $table): Table { return $table ->columns([ Tables\Columns\TextColumn::make('key')->label(__('Key'))->searchable()->sortable(), Tables\Columns\TextColumn::make('value')->label(__('Value'))->searchable()->sortable(), ]) ->filters([ // ]) ->actions([ Tables\Actions\EditAction::make(), ]) ->bulkActions([ Tables\Actions\BulkActionGroup::make([ Tables\Actions\DeleteBulkAction::make(), ]), ]) ->emptyStateActions([ Tables\Actions\CreateAction::make(), ]); } public static function getRelations(): array { return [ // ]; } public static function getPages(): array { return [ 'index' => Pages\ListSettings::route('/'), 'create' => Pages\CreateSetting::route('/create'), 'edit' => Pages\EditSetting::route('/{record}/edit'), ]; } public static function getNavigationGroup(): ?string { return __('filament.navigation.groups.settings'); } }