feat: integrate Spatie Media Library (#4)

- Added Spatie Media Library
- Added media library configuration file
- Updated Entry model to support media handling
- Added featured image upload with gallery selection and preview
- Added login tests with Dusk for user authentication
- Added Dusk test for featured image selection

Co-authored-by: jon brookes <marshyon@gmail.com>
Reviewed-on: https://codeberg.org/headshed/share-lt/pulls/4
This commit is contained in:
Jon Brookes 2026-01-06 13:26:55 +01:00
parent 6cf8d5dfd4
commit 56607285bd
38 changed files with 2200 additions and 16 deletions

View file

@ -0,0 +1,60 @@
<?php
namespace App\Filament\Resources\Media;
use App\Filament\Resources\Media\Pages\CreateMedia;
use App\Filament\Resources\Media\Pages\EditMedia;
use App\Filament\Resources\Media\Pages\ListMedia;
use App\Filament\Resources\Media\Pages\ViewMedia;
use App\Filament\Resources\Media\Schemas\MediaForm;
use App\Filament\Resources\Media\Schemas\MediaInfolist;
use App\Filament\Resources\Media\Tables\MediaTable;
use BackedEnum;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Table;
use Spatie\MediaLibrary\MediaCollections\Models\Media;
class MediaResource extends Resource
{
protected static ?string $model = Media::class;
protected static ?string $recordTitleAttribute = 'file_name';
protected static string|BackedEnum|null $navigationIcon = Heroicon::Photo
;
public static function form(Schema $schema): Schema
{
return MediaForm::configure($schema);
}
public static function infolist(Schema $schema): Schema
{
return MediaInfolist::configure($schema);
}
public static function table(Table $table): Table
{
return MediaTable::configure($table);
}
public static function getRelations(): array
{
return [
//
];
}
public static function getPages(): array
{
return [
'index' => ListMedia::route('/'),
'create' => CreateMedia::route('/create'),
'view' => ViewMedia::route('/{record}'),
'edit' => EditMedia::route('/{record}/edit'),
];
}
}