From 9cf2a4a9f4d27a9dcd6a07e8ab9146475ee64cac Mon Sep 17 00:00:00 2001 From: Lupu Gheorghe Date: Wed, 7 Oct 2026 10:48:05 +0300 Subject: [PATCH] Show the maximum file size on every admin upload field. Co-authored-by: Cursor --- .../Schemas/PartnerOrganizationForm.php | 8 +++++--- .../Schemas/ProfessionalForm.php | 7 +++++-- .../Resources/Schemas/ResourceForm.php | 7 +++++-- app/Filament/Support/LimitedFileUpload.php | 15 ++++++++++++++ lang/en/admin.php | 1 + lang/ro/admin.php | 1 + tests/Feature/AdminUploadLimitTest.php | 20 +++++++++++++++++++ 7 files changed, 52 insertions(+), 7 deletions(-) create mode 100644 app/Filament/Support/LimitedFileUpload.php create mode 100644 tests/Feature/AdminUploadLimitTest.php diff --git a/app/Filament/Resources/PartnerOrganizations/Schemas/PartnerOrganizationForm.php b/app/Filament/Resources/PartnerOrganizations/Schemas/PartnerOrganizationForm.php index 7b9b264..f3e2ed5 100644 --- a/app/Filament/Resources/PartnerOrganizations/Schemas/PartnerOrganizationForm.php +++ b/app/Filament/Resources/PartnerOrganizations/Schemas/PartnerOrganizationForm.php @@ -2,6 +2,7 @@ namespace App\Filament\Resources\PartnerOrganizations\Schemas; +use App\Filament\Support\LimitedFileUpload; use Filament\Forms\Components\SpatieMediaLibraryFileUpload; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; @@ -18,9 +19,10 @@ public static function configure(Schema $schema): Schema ->components([ TextInput::make('name') ->required(), - SpatieMediaLibraryFileUpload::make('logo') - ->collection('logo') - ->image(), + LimitedFileUpload::configure( + SpatieMediaLibraryFileUpload::make('logo')->collection('logo')->image(), + 5, + ), Tabs::make('Translations') ->tabs([ Tab::make('Română')->schema([ diff --git a/app/Filament/Resources/Professionals/Schemas/ProfessionalForm.php b/app/Filament/Resources/Professionals/Schemas/ProfessionalForm.php index 83f26e4..7cbc104 100644 --- a/app/Filament/Resources/Professionals/Schemas/ProfessionalForm.php +++ b/app/Filament/Resources/Professionals/Schemas/ProfessionalForm.php @@ -2,6 +2,7 @@ namespace App\Filament\Resources\Professionals\Schemas; +use App\Filament\Support\LimitedFileUpload; use Filament\Forms\Components\DateTimePicker; use Filament\Forms\Components\SpatieMediaLibraryFileUpload; use Filament\Forms\Components\Textarea; @@ -34,8 +35,10 @@ public static function configure(Schema $schema): Schema ->columnSpanFull(), TextInput::make('category')->required(), TextInput::make('type')->required(), - SpatieMediaLibraryFileUpload::make('file') - ->collection('file'), + LimitedFileUpload::configure( + SpatieMediaLibraryFileUpload::make('file')->collection('file'), + 50, + ), TextInput::make('file_size')->numeric(), Toggle::make('is_published'), DateTimePicker::make('last_updated_at'), diff --git a/app/Filament/Resources/Resources/Schemas/ResourceForm.php b/app/Filament/Resources/Resources/Schemas/ResourceForm.php index bf9d15b..80a8bba 100644 --- a/app/Filament/Resources/Resources/Schemas/ResourceForm.php +++ b/app/Filament/Resources/Resources/Schemas/ResourceForm.php @@ -4,6 +4,7 @@ use App\Enums\ResourceStatus; use App\Enums\ResourceType; +use App\Filament\Support\LimitedFileUpload; use Filament\Forms\Components\DateTimePicker; use Filament\Forms\Components\Select; use Filament\Forms\Components\SpatieMediaLibraryFileUpload; @@ -52,8 +53,10 @@ public static function configure(Schema $schema): Schema ->url(), TextInput::make('video_url') ->url(), - SpatieMediaLibraryFileUpload::make('file') - ->collection('file'), + LimitedFileUpload::configure( + SpatieMediaLibraryFileUpload::make('file')->collection('file'), + 50, + ), Toggle::make('featured'), Select::make('status') ->options(ResourceStatus::options()) diff --git a/app/Filament/Support/LimitedFileUpload.php b/app/Filament/Support/LimitedFileUpload.php new file mode 100644 index 0000000..1e4746d --- /dev/null +++ b/app/Filament/Support/LimitedFileUpload.php @@ -0,0 +1,15 @@ +maxSize($megabytes * 1024) + ->helperText(__('admin.upload_limit', ['size' => $megabytes])); + } +} diff --git a/lang/en/admin.php b/lang/en/admin.php index e2d170f..6a97942 100644 --- a/lang/en/admin.php +++ b/lang/en/admin.php @@ -93,6 +93,7 @@ 'data_points' => 'Data Points', 'messages' => 'Messages', ], + 'upload_limit' => 'Maximum file size: :size MB.', 'notifications' => [ 'submission_approved' => 'Submission approved', 'submission_rejected' => 'Submission rejected', diff --git a/lang/ro/admin.php b/lang/ro/admin.php index f4e773a..9c4e977 100644 --- a/lang/ro/admin.php +++ b/lang/ro/admin.php @@ -93,6 +93,7 @@ 'data_points' => 'Puncte de date', 'messages' => 'Mesaje', ], + 'upload_limit' => 'Dimensiunea maximă a fișierului: :size MB.', 'notifications' => [ 'submission_approved' => 'Trimitere aprobată', 'submission_rejected' => 'Trimitere respinsă', diff --git a/tests/Feature/AdminUploadLimitTest.php b/tests/Feature/AdminUploadLimitTest.php new file mode 100644 index 0000000..526130a --- /dev/null +++ b/tests/Feature/AdminUploadLimitTest.php @@ -0,0 +1,20 @@ +actingAs(User::factory()->admin()->create()); + + Livewire::test(CreatePartnerOrganization::class) + ->assertSee('Maximum file size: 5 MB.', false); + + Livewire::test(CreateResource::class) + ->assertSee('Maximum file size: 50 MB.', false); + + Livewire::test(CreateProfessional::class) + ->assertSee('Maximum file size: 50 MB.', false); +});