allow to customize resource pages

This commit is contained in:
Boy132 2025-05-20 10:27:27 +02:00
parent 618a69ad86
commit 01cd499d09
10 changed files with 60 additions and 9 deletions

View File

@ -6,6 +6,7 @@ use App\Filament\Admin\Resources\ApiKeyResource\Pages;
use App\Filament\Admin\Resources\UserResource\Pages\EditUser;
use App\Filament\Components\Tables\Columns\DateTimeColumn;
use App\Models\ApiKey;
use App\Traits\Filament\CanCustomizePages;
use App\Traits\Filament\CanCustomizeRelations;
use Filament\Forms\Components\Fieldset;
use Filament\Forms\Components\TagsInput;
@ -21,6 +22,7 @@ use Illuminate\Database\Eloquent\Builder;
class ApiKeyResource extends Resource
{
use CanCustomizePages;
use CanCustomizeRelations;
protected static ?string $model = ApiKey::class;
@ -145,7 +147,7 @@ class ApiKeyResource extends Resource
]);
}
public static function getPages(): array
public static function getDefaultPages(): array
{
return [
'index' => Pages\ListApiKeys::route('/'),

View File

@ -5,6 +5,7 @@ namespace App\Filament\Admin\Resources;
use App\Filament\Admin\Resources\DatabaseHostResource\Pages;
use App\Filament\Admin\Resources\DatabaseHostResource\RelationManagers;
use App\Models\DatabaseHost;
use App\Traits\Filament\CanCustomizePages;
use App\Traits\Filament\CanCustomizeRelations;
use Filament\Forms\Components\Section;
use Filament\Forms\Components\Select;
@ -22,6 +23,7 @@ use Illuminate\Database\Eloquent\Builder;
class DatabaseHostResource extends Resource
{
use CanCustomizePages;
use CanCustomizeRelations;
protected static ?string $model = DatabaseHost::class;
@ -161,7 +163,7 @@ class DatabaseHostResource extends Resource
];
}
public static function getPages(): array
public static function getDefaultPages(): array
{
return [
'index' => Pages\ListDatabaseHosts::route('/'),

View File

@ -5,11 +5,13 @@ namespace App\Filament\Admin\Resources;
use App\Filament\Admin\Resources\EggResource\Pages;
use App\Filament\Admin\Resources\EggResource\RelationManagers;
use App\Models\Egg;
use App\Traits\Filament\CanCustomizePages;
use App\Traits\Filament\CanCustomizeRelations;
use Filament\Resources\Resource;
class EggResource extends Resource
{
use CanCustomizePages;
use CanCustomizeRelations;
protected static ?string $model = Egg::class;
@ -55,7 +57,7 @@ class EggResource extends Resource
];
}
public static function getPages(): array
public static function getDefaultPages(): array
{
return [
'index' => Pages\ListEggs::route('/'),

View File

@ -4,6 +4,7 @@ namespace App\Filament\Admin\Resources;
use App\Filament\Admin\Resources\MountResource\Pages;
use App\Models\Mount;
use App\Traits\Filament\CanCustomizePages;
use App\Traits\Filament\CanCustomizeRelations;
use Filament\Forms\Components\Group;
use Filament\Forms\Components\Section;
@ -23,6 +24,7 @@ use Illuminate\Database\Eloquent\Builder;
class MountResource extends Resource
{
use CanCustomizePages;
use CanCustomizeRelations;
protected static ?string $model = Mount::class;
@ -165,7 +167,7 @@ class MountResource extends Resource
]);
}
public static function getPages(): array
public static function getDefaultPages(): array
{
return [
'index' => Pages\ListMounts::route('/'),

View File

@ -5,12 +5,14 @@ namespace App\Filament\Admin\Resources;
use App\Filament\Admin\Resources\NodeResource\Pages;
use App\Filament\Admin\Resources\NodeResource\RelationManagers;
use App\Models\Node;
use App\Traits\Filament\CanCustomizePages;
use App\Traits\Filament\CanCustomizeRelations;
use Filament\Resources\Resource;
use Illuminate\Database\Eloquent\Builder;
class NodeResource extends Resource
{
use CanCustomizePages;
use CanCustomizeRelations;
protected static ?string $model = Node::class;
@ -52,7 +54,7 @@ class NodeResource extends Resource
];
}
public static function getPages(): array
public static function getDefaultPages(): array
{
return [
'index' => Pages\ListNodes::route('/'),

View File

@ -4,6 +4,7 @@ namespace App\Filament\Admin\Resources;
use App\Filament\Admin\Resources\RoleResource\Pages;
use App\Models\Role;
use App\Traits\Filament\CanCustomizePages;
use App\Traits\Filament\CanCustomizeRelations;
use Filament\Forms\Components\Actions\Action;
use Filament\Forms\Components\CheckboxList;
@ -27,6 +28,7 @@ use Spatie\Permission\Contracts\Permission;
class RoleResource extends Resource
{
use CanCustomizePages;
use CanCustomizeRelations;
protected static ?string $model = Role::class;
@ -201,7 +203,7 @@ class RoleResource extends Resource
]);
}
public static function getPages(): array
public static function getDefaultPages(): array
{
return [
'index' => Pages\ListRoles::route('/'),

View File

@ -6,6 +6,7 @@ use App\Filament\Admin\Resources\ServerResource\Pages;
use App\Filament\Admin\Resources\ServerResource\RelationManagers;
use App\Models\Mount;
use App\Models\Server;
use App\Traits\Filament\CanCustomizePages;
use App\Traits\Filament\CanCustomizeRelations;
use Filament\Forms\Components\CheckboxList;
use Filament\Forms\Get;
@ -14,6 +15,7 @@ use Illuminate\Database\Eloquent\Builder;
class ServerResource extends Resource
{
use CanCustomizePages;
use CanCustomizeRelations;
protected static ?string $model = Server::class;
@ -77,7 +79,7 @@ class ServerResource extends Resource
];
}
public static function getPages(): array
public static function getDefaultPages(): array
{
return [
'index' => Pages\ListServers::route('/'),

View File

@ -6,6 +6,7 @@ use App\Filament\Admin\Resources\UserResource\Pages;
use App\Filament\Admin\Resources\UserResource\RelationManagers;
use App\Models\Role;
use App\Models\User;
use App\Traits\Filament\CanCustomizePages;
use App\Traits\Filament\CanCustomizeRelations;
use Filament\Facades\Filament;
use Filament\Forms\Components\CheckboxList;
@ -23,6 +24,7 @@ use Illuminate\Database\Eloquent\Builder;
class UserResource extends Resource
{
use CanCustomizePages;
use CanCustomizeRelations;
protected static ?string $model = User::class;
@ -156,7 +158,7 @@ class UserResource extends Resource
];
}
public static function getPages(): array
public static function getDefaultPages(): array
{
return [
'index' => Pages\ListUsers::route('/'),

View File

@ -4,6 +4,7 @@ namespace App\Filament\Admin\Resources;
use App\Filament\Admin\Resources\WebhookResource\Pages;
use App\Models\WebhookConfiguration;
use App\Traits\Filament\CanCustomizePages;
use App\Traits\Filament\CanCustomizeRelations;
use Filament\Forms\Components\CheckboxList;
use Filament\Forms\Components\TextInput;
@ -19,6 +20,7 @@ use Filament\Tables\Table;
class WebhookResource extends Resource
{
use CanCustomizePages;
use CanCustomizeRelations;
protected static ?string $model = WebhookConfiguration::class;
@ -101,7 +103,7 @@ class WebhookResource extends Resource
]);
}
public static function getPages(): array
public static function getDefaultPages(): array
{
return [
'index' => Pages\ListWebhookConfigurations::route('/'),

View File

@ -0,0 +1,33 @@
<?php
namespace App\Traits\Filament;
use Filament\Resources\Pages\PageRegistration;
trait CanCustomizePages
{
/** @var array<string, PageRegistration> */
protected static array $customPages = [];
/** @param array<string, PageRegistration> $customPages */
public static function registerCustomPages(array $customPages): void
{
static::$customPages = array_merge(static::$customPages, $customPages);
}
/**
* @return array<string, PageRegistration>
*/
public static function getDefaultPages(): array
{
return [];
}
/**
* @return array<string, PageRegistration>
*/
public static function getPages(): array
{
return array_unique(array_merge(static::getDefaultPages(), static::$customPages), SORT_REGULAR);
}
}