diff --git a/config/media.php b/config/backstage/media.php similarity index 100% rename from config/media.php rename to config/backstage/media.php diff --git a/database/migrations/add_tenant_aware_column_to_media_table.php.stub b/database/migrations/add_tenant_aware_column_to_media_table.php.stub index 2f5950d..2a431f8 100644 --- a/database/migrations/add_tenant_aware_column_to_media_table.php.stub +++ b/database/migrations/add_tenant_aware_column_to_media_table.php.stub @@ -8,18 +8,18 @@ return new class extends Migration { public function up(): void { - if (config('media.is_tenant_aware')) { - Schema::table(app(config('media.model'))->getTable(), function (Blueprint $table) { - $table->ulid(config('media.tenant_relationship') . '_ulid')->nullable()->after('ulid'); + if (config('backstage.media.is_tenant_aware')) { + Schema::table(app(config('backstage.media.model'))->getTable(), function (Blueprint $table) { + $table->ulid(config('backstage.media.tenant_relationship') . '_ulid')->nullable()->after('ulid'); }); } } public function down(): void { - if (Schema::hasColumn(app(config('media.model'))->getTable(), config('media.tenant_relationship') . '_ulid')) { - Schema::table(app(config('media.model'))->getTable(), function (Blueprint $table) { - $table->dropColumn(config('media.tenant_relationship') . '_ulid'); + if (Schema::hasColumn(app(config('backstage.media.model'))->getTable(), config('backstage.media.tenant_relationship') . '_ulid')) { + Schema::table(app(config('backstage.media.model'))->getTable(), function (Blueprint $table) { + $table->dropColumn(config('backstage.media.tenant_relationship') . '_ulid'); }); } } diff --git a/database/migrations/create_media_relationships_table.php.stub b/database/migrations/create_media_relationships_table.php.stub index 806fdbf..c336f83 100644 --- a/database/migrations/create_media_relationships_table.php.stub +++ b/database/migrations/create_media_relationships_table.php.stub @@ -14,7 +14,7 @@ return new class extends Migration // Media ULID reference $table->foreignUlid('media_ulid') ->references('ulid') - ->on(app(config('media.model'))->getTable()) + ->on(app(config('backstage.media.model'))->getTable()) ->cascadeOnDelete(); // Polymorphic model relationship diff --git a/database/migrations/create_media_table.php.stub b/database/migrations/create_media_table.php.stub index 26be724..8dc00bc 100644 --- a/database/migrations/create_media_table.php.stub +++ b/database/migrations/create_media_table.php.stub @@ -8,7 +8,7 @@ return new class extends Migration { public function up(): void { - Schema::create(app(config('media.model'))->getTable(), function (Blueprint $table) { + Schema::create(app(config('backstage.media.model'))->getTable(), function (Blueprint $table) { $table->ulid('ulid')->primary(); $table->string('disk')->index(); @@ -38,6 +38,6 @@ return new class extends Migration public function down(): void { - Schema::dropIfExists(app(config('media.model'))->getTable()); + Schema::dropIfExists(app(config('backstage.media.model'))->getTable()); } }; \ No newline at end of file diff --git a/src/Components/Media.php b/src/Components/Media.php index e648899..f0cc344 100644 --- a/src/Components/Media.php +++ b/src/Components/Media.php @@ -10,11 +10,11 @@ public static function make(string $name = 'media'): static { return parent::make($name) ->label(__('File(s)')) - ->disk(config('media.disk')) - ->directory(config('media.directory')) - ->preserveFilenames(config('media.should_preserve_filenames')) - ->visibility(config('media.visibility')) - ->acceptedFileTypes(config('media.accepted_file_types')) + ->disk(config('backstage.media.disk')) + ->directory(config('backstage.media.directory')) + ->preserveFilenames(config('backstage.media.should_preserve_filenames')) + ->visibility(config('backstage.media.visibility')) + ->acceptedFileTypes(config('backstage.media.accepted_file_types')) ->multiple() ->columnSpanFull(); } diff --git a/src/Concerns/HasMedia.php b/src/Concerns/HasMedia.php index 0f7b115..0b09464 100644 --- a/src/Concerns/HasMedia.php +++ b/src/Concerns/HasMedia.php @@ -13,7 +13,7 @@ trait HasMedia public function media(): MorphToMany { return $this->morphToMany( - config('media.model'), + config('backstage.media.model'), 'model', 'media_relationships', 'model_id', diff --git a/src/Media.php b/src/Media.php index 75e4b2b..c6f35ec 100644 --- a/src/Media.php +++ b/src/Media.php @@ -18,13 +18,13 @@ public static function create(array | string $data): array foreach ($data as $file) { // Get the full path on the configured disk - $fullPath = Storage::disk(config('media.disk'))->path($file); + $fullPath = Storage::disk(config('backstage.media.disk'))->path($file); $filename = basename($file); - $mimeType = Storage::disk(config('media.disk'))->mimeType($file); + $mimeType = Storage::disk(config('backstage.media.disk'))->mimeType($file); - $fileSize = Storage::disk(config('media.disk'))->size($file); + $fileSize = Storage::disk(config('backstage.media.disk'))->size($file); $extension = pathinfo($filename, PATHINFO_EXTENSION); @@ -52,7 +52,7 @@ public static function create(array | string $data): array $media[] = Model::updateOrCreate([ 'site_ulid' => Filament::getTenant()->ulid, - 'disk' => config('media.disk'), + 'disk' => config('backstage.media.disk'), 'original_filename' => pathinfo($filename, PATHINFO_FILENAME), 'checksum' => md5_file($fullPath), ], [ @@ -63,7 +63,7 @@ public static function create(array | string $data): array 'size' => $fileSize, 'width' => $fileInfo['width'] ?? null, 'height' => $fileInfo['height'] ?? null, - 'public' => config('media.visibility') === 'public', + 'public' => config('backstage.media.visibility') === 'public', ]); } diff --git a/src/MediaPlugin.php b/src/MediaPlugin.php index 71c09ea..72a4cd3 100644 --- a/src/MediaPlugin.php +++ b/src/MediaPlugin.php @@ -70,47 +70,47 @@ public static function get(): static public function getResource(): string { - return $this->resource ?? config('media.resources.resource') ?? MediaResource::class; + return $this->resource ?? config('backstage.media.resources.resource') ?? MediaResource::class; } public function getLabel(): string { - return $this->evaluate($this->label) ?? config('media.resources.label'); + return $this->evaluate($this->label) ?? config('backstage.media.resources.label'); } public function getPluralLabel(): string { - return $this->evaluate($this->pluralLabel) ?? config('media.resources.plural_label'); + return $this->evaluate($this->pluralLabel) ?? config('backstage.media.resources.plural_label'); } public function getNavigationGroup(): ?string { - return $this->evaluate($this->navigationGroup) ?? config('media.resources.navigation_group'); + return $this->evaluate($this->navigationGroup) ?? config('backstage.media.resources.navigation_group'); } public function getNavigationLabel(): ?string { - return $this->evaluate($this->navigationLabel) ?? config('media.resources.navigation_label'); + return $this->evaluate($this->navigationLabel) ?? config('backstage.media.resources.navigation_label'); } public function getNavigationIcon(): ?string { - return $this->evaluate($this->navigationIcon) ?? config('media.resources.navigation_icon'); + return $this->evaluate($this->navigationIcon) ?? config('backstage.media.resources.navigation_icon'); } public function getNavigationSort(): ?int { - return $this->evaluate($this->navigationSort) ?? config('media.resources.navigation_sort'); + return $this->evaluate($this->navigationSort) ?? config('backstage.media.resources.navigation_sort'); } public function getNavigationCountBadge(): ?bool { - return $this->navigationCountBadge ?? config('media.resources.navigation_count_badge'); + return $this->navigationCountBadge ?? config('backstage.media.resources.navigation_count_badge'); } public function shouldRegisterNavigation(): ?bool { - return $this->evaluate($this->shouldRegisterNavigation) ?? config('media.should_register_navigation'); + return $this->evaluate($this->shouldRegisterNavigation) ?? config('backstage.media.should_register_navigation'); } public function navigationGroup(string | Closure | null $group = null): static @@ -190,13 +190,13 @@ public function configureTenant(string $relationship, string $model): static public function getTenantRelationship(): ?string { return $this->evaluate($this->tenantRelationship) - ?? config('media.tenant_relationship'); + ?? config('backstage.media.tenant_relationship'); } public function getTenantModel(): ?string { return $this->evaluate($this->tenantModel) - ?? config('media.tenant_model'); + ?? config('backstage.media.tenant_model'); } /** diff --git a/src/MediaServiceProvider.php b/src/MediaServiceProvider.php index a1232ff..cd356c9 100644 --- a/src/MediaServiceProvider.php +++ b/src/MediaServiceProvider.php @@ -36,8 +36,8 @@ public function configurePackage(Package $package): void $configFileName = $package->shortName(); - if (file_exists($package->basePath("/../config/{$configFileName}.php"))) { - $package->hasConfigFile(); + if (file_exists($package->basePath("/../config/backstage/media.php"))) { + $package->hasConfigFile('backstage/media'); } if (file_exists($package->basePath('/../database/migrations'))) { diff --git a/src/Models/Media.php b/src/Models/Media.php index 5530564..00c922b 100644 --- a/src/Models/Media.php +++ b/src/Models/Media.php @@ -50,7 +50,7 @@ public function getRouteKeyName(): string public function models(): MorphToMany { return $this->morphedByMany( - config('media.model_namespace', 'App\Models'), + config('backstage.media.model_namespace', 'App\Models'), 'model', 'media_relationships', 'media_ulid', @@ -61,8 +61,8 @@ public function models(): MorphToMany protected static function booted(): void { static::creating(function ($model) { - $tenantRelationship = Config::get('media.tenant_relationship'); - $tenantModel = Config::get('media.tenant_model'); + $tenantRelationship = Config::get('backstage.media.tenant_relationship'); + $tenantModel = Config::get('backstage.media.tenant_model'); if ($tenantRelationship && class_exists($tenantModel)) { $currentTenant = Filament::getTenant(); @@ -76,13 +76,13 @@ protected static function booted(): void public function user(): ?BelongsTo { - return $this->belongsTo(Config::get('media.user_model'), 'uploaded_by'); + return $this->belongsTo(Config::get('backstage.media.user_model'), 'uploaded_by'); } public function tenant(): ?BelongsTo { - $tenantRelationship = Config::get('media.tenant_relationship'); - $tenantModel = Config::get('media.tenant_model'); + $tenantRelationship = Config::get('backstage.media.tenant_relationship'); + $tenantModel = Config::get('backstage.media.tenant_model'); if ($tenantRelationship && class_exists($tenantModel)) { return $this->belongsTo( @@ -109,16 +109,16 @@ public function getHumanReadableSizeAttribute(): string public function getSrcAttribute(): string { - $disk = Config::get('media.disk', 'public'); - $directory = Config::get('media.directory', 'media'); + $disk = Config::get('backstage.media.disk', 'public'); + $directory = Config::get('backstage.media.directory', 'media'); return Storage::disk($disk)->url($directory . '/' . $this->filename); } public function download(): \Symfony\Component\HttpFoundation\StreamedResponse { - $disk = Config::get('media.disk', 'public'); - $directory = Config::get('media.directory', 'media'); + $disk = Config::get('backstage.media.disk', 'public'); + $directory = Config::get('backstage.media.directory', 'media'); return Storage::disk($disk)->download($directory . '/' . $this->filename); } diff --git a/src/Resources/MediaResource.php b/src/Resources/MediaResource.php index da16be2..57c6891 100644 --- a/src/Resources/MediaResource.php +++ b/src/Resources/MediaResource.php @@ -17,17 +17,17 @@ class MediaResource extends Resource { public static function getModel(): string { - return config('media.model'); + return config('backstage.media.model'); } public static function isScopedToTenant(): bool { - return config('media.is_tenant_aware') ?? static::$isScopedToTenant; + return config('backstage.media.is_tenant_aware') ?? static::$isScopedToTenant; } public static function getTenantOwnershipRelationshipName(): string { - return config('media.tenant_ownership_relationship_name') ?? Filament::getTenantOwnershipRelationshipName(); + return config('backstage.media.tenant_ownership_relationship_name') ?? Filament::getTenantOwnershipRelationshipName(); } public static function getModelLabel(): string @@ -66,9 +66,9 @@ public static function getNavigationBadge(): ?string return null; } - if (Filament::hasTenancy() && config('media.is_tenant_aware')) { + if (Filament::hasTenancy() && config('backstage.media.is_tenant_aware')) { return static::getEloquentQuery() - ->where(config('media.tenant_relationship') . '_ulid', Filament::getTenant()->id) + ->where(config('backstage.media.tenant_relationship') . '_ulid', Filament::getTenant()->id) ->count(); } diff --git a/src/Resources/MediaResource/CreateMedia.php b/src/Resources/MediaResource/CreateMedia.php index 5227d94..6b5f374 100644 --- a/src/Resources/MediaResource/CreateMedia.php +++ b/src/Resources/MediaResource/CreateMedia.php @@ -20,13 +20,13 @@ public function handleRecordCreation(array $data): Model { foreach ($data['media'] as $file) { // Get the full path on the configured disk - $fullPath = Storage::disk(config('media.disk'))->path($file); + $fullPath = Storage::disk(config('backstage.media.disk'))->path($file); $filename = basename($file); - $mimeType = Storage::disk(config('media.disk'))->mimeType($file); + $mimeType = Storage::disk(config('backstage.media.disk'))->mimeType($file); - $fileSize = Storage::disk(config('media.disk'))->size($file); + $fileSize = Storage::disk(config('backstage.media.disk'))->size($file); $extension = pathinfo($filename, PATHINFO_EXTENSION); @@ -54,7 +54,7 @@ public function handleRecordCreation(array $data): Model $first = Media::create([ 'site_ulid' => Filament::getTenant()->ulid, - 'disk' => config('media.disk'), + 'disk' => config('backstage.media.disk'), 'uploaded_by' => auth()->id(), 'filename' => $filename, 'extension' => $extension, @@ -63,7 +63,7 @@ public function handleRecordCreation(array $data): Model 'width' => $fileInfo['width'] ?? null, 'height' => $fileInfo['height'] ?? null, 'checksum' => md5_file($fullPath), - 'public' => config('media.visibility') === 'public', // TODO: Should be configurable in the form itself + 'public' => config('backstage.media.visibility') === 'public', // TODO: Should be configurable in the form itself ]); }