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

@ -2,10 +2,23 @@
namespace App\Models;
use Filament\Forms\Components\RichEditor\FileAttachmentProviders\SpatieMediaLibraryFileAttachmentProvider;
use Filament\Forms\Components\RichEditor\Models\Concerns\InteractsWithRichContent;
use Filament\Forms\Components\RichEditor\Models\Contracts\HasRichContent;
use Illuminate\Database\Eloquent\Model;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
/*
Entry model with rich content and media library integration
This is the main article / blog rich content model
*/
class Entry extends Model implements HasRichContent, HasMedia
class Entry extends Model
{
use InteractsWithMedia, InteractsWithRichContent;
protected $fillable = [
'title',
'slug',
@ -15,4 +28,19 @@ class Entry extends Model
'published_at',
'content',
];
/**
* Set up rich content configuration for media library integration
*/
public function setUpRichContent(): void
{
$this->registerRichContent('content')
->fileAttachmentProvider(
SpatieMediaLibraryFileAttachmentProvider::make()
->collection('content-attachments')
->preserveFilenames()
);
}
}