diff --git a/src/MediaCollections/Models/Media.php b/src/MediaCollections/Models/Media.php index 7ed69b5f4..882f966a3 100644 --- a/src/MediaCollections/Models/Media.php +++ b/src/MediaCollections/Models/Media.php @@ -175,6 +175,19 @@ public function getAvailablePath(array $conversionNames): string return $this->getPath(); } + public function getAvailablePathRelativeToRoot(array $conversionNames): string + { + foreach ($conversionNames as $conversionName) { + if (! $this->hasGeneratedConversion($conversionName)) { + continue; + } + + return $this->getPathRelativeToRoot($conversionName); + } + + return $this->getPathRelativeToRoot(); + } + protected function type(): Attribute { return Attribute::get( diff --git a/tests/Feature/Media/GetAvailableUrlTest.php b/tests/Feature/Media/GetAvailableUrlTest.php index ad1edc7fd..30fb14dcd 100644 --- a/tests/Feature/Media/GetAvailableUrlTest.php +++ b/tests/Feature/Media/GetAvailableUrlTest.php @@ -10,18 +10,21 @@ expect($media->getAvailableUrl(['small', 'medium', 'large']))->toEqual("/media/{$media->id}/conversions/test-large.jpg"); expect($media->getAvailableFullUrl(['small', 'medium', 'large']))->toEqual("http://localhost/media/{$media->id}/conversions/test-large.jpg"); expect($media->getAvailablePath(['small', 'medium', 'large']))->toEqual($this->makePathOsSafe($this->getMediaDirectory()."/{$media->id}/conversions/test-large.jpg")); + expect($media->getAvailablePathRelativeToRoot(['small', 'medium', 'large']))->toEqual("{$media->id}/conversions/test-large.jpg"); $media->markAsConversionGenerated('medium'); expect($media->getAvailableUrl(['small', 'medium', 'large']))->toEqual("/media/{$media->id}/conversions/test-medium.jpg"); expect($media->getAvailableFullUrl(['small', 'medium', 'large']))->toEqual("http://localhost/media/{$media->id}/conversions/test-medium.jpg"); expect($media->getAvailablePath(['small', 'medium', 'large']))->toEqual($this->makePathOsSafe($this->getMediaDirectory()."/{$media->id}/conversions/test-medium.jpg")); + expect($media->getAvailablePathRelativeToRoot(['small', 'medium', 'large']))->toEqual("{$media->id}/conversions/test-medium.jpg"); $media->markAsConversionGenerated('small'); expect($media->getAvailableUrl(['small', 'medium', 'large']))->toEqual("/media/{$media->id}/conversions/test-small.jpg"); expect($media->getAvailableFullUrl(['small', 'medium', 'large']))->toEqual("http://localhost/media/{$media->id}/conversions/test-small.jpg"); expect($media->getAvailablePath(['small', 'medium', 'large']))->toEqual($this->makePathOsSafe($this->getMediaDirectory()."/{$media->id}/conversions/test-small.jpg")); + expect($media->getAvailablePathRelativeToRoot(['small', 'medium', 'large']))->toEqual("{$media->id}/conversions/test-small.jpg"); }); it('uses original url if no conversion has been generated yet', function () { @@ -33,4 +36,5 @@ expect($media->getAvailableUrl(['small', 'medium', 'large']))->toEqual("/media/{$media->id}/test.jpg"); expect($media->getAvailableFullUrl(['small', 'medium', 'large']))->toEqual("http://localhost/media/{$media->id}/test.jpg"); expect($media->getAvailablePath(['small', 'medium', 'large']))->toEqual($this->makePathOsSafe($this->getMediaDirectory()."/{$media->id}/test.jpg")); + expect($media->getAvailablePathRelativeToRoot(['small', 'medium', 'large']))->toEqual("{$media->id}/test.jpg"); });