From 46b6d0f950b4f4a30a29e5d35088d54d365a05f7 Mon Sep 17 00:00:00 2001 From: Marco Rieser Date: Sun, 19 Jan 2025 06:50:46 +0100 Subject: [PATCH 1/7] Remove app url from AssetContainer::url() --- src/Assets/AssetContainer.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Assets/AssetContainer.php b/src/Assets/AssetContainer.php index 29765fce499..04149c0bb65 100644 --- a/src/Assets/AssetContainer.php +++ b/src/Assets/AssetContainer.php @@ -27,6 +27,7 @@ use Statamic\Facades\Stache; use Statamic\Facades\URL; use Statamic\Support\Arr; +use Statamic\Support\Str; use Statamic\Support\Traits\FluentlyGetsAndSets; class AssetContainer implements Arrayable, ArrayAccess, AssetContainerContract, Augmentable @@ -139,6 +140,7 @@ public function url() } $url = rtrim($this->disk()->url('/'), '/'); + $url = Str::chopStart($url, config('app.url')); return ($url === '') ? '/' : $url; } From 41e2a003f01e2bf8e721c5ae704dca652e03ae3b Mon Sep 17 00:00:00 2001 From: Marco Rieser Date: Sun, 19 Jan 2025 07:16:41 +0100 Subject: [PATCH 2/7] Add test --- tests/Assets/AssetContainerTest.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/Assets/AssetContainerTest.php b/tests/Assets/AssetContainerTest.php index 507c7358792..9bc8f92ffed 100644 --- a/tests/Assets/AssetContainerTest.php +++ b/tests/Assets/AssetContainerTest.php @@ -137,6 +137,21 @@ public function it_gets_the_url_from_the_disk_config_when_its_relative() $this->assertEquals('http://localhost/container', $container->absoluteUrl()); } + #[Test] + public function it_gets_the_url_from_the_disk_config_when_its_app_url() + { + config(['filesystems.disks.test' => [ + 'driver' => 'local', + 'root' => __DIR__.'/__fixtures__/container', + 'url' => 'http://localhost/container', + ]]); + + $container = (new AssetContainer)->disk('test'); + + $this->assertEquals('/container', $container->url()); + $this->assertEquals('http://localhost/container', $container->absoluteUrl()); + } + #[Test] public function its_private_if_the_disk_has_no_url() { From 8923ba4e7b3f16d017b8a480dfb556017995bcaa Mon Sep 17 00:00:00 2001 From: Marco Rieser Date: Sun, 19 Jan 2025 07:41:23 +0100 Subject: [PATCH 3/7] Replace Str::chopStart for Laravel 10 compatibility --- src/Assets/AssetContainer.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Assets/AssetContainer.php b/src/Assets/AssetContainer.php index 04149c0bb65..b995f26521f 100644 --- a/src/Assets/AssetContainer.php +++ b/src/Assets/AssetContainer.php @@ -140,7 +140,10 @@ public function url() } $url = rtrim($this->disk()->url('/'), '/'); - $url = Str::chopStart($url, config('app.url')); + + if (str_starts_with($url, config('app.url'))) { + $url = substr($url, strlen(config('app.url'))); + } return ($url === '') ? '/' : $url; } From f59ad351b34cf337ee5667ded9bfeedcf955c89f Mon Sep 17 00:00:00 2001 From: Marco Rieser Date: Sun, 19 Jan 2025 07:44:37 +0100 Subject: [PATCH 4/7] Remove unused use statement --- src/Assets/AssetContainer.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Assets/AssetContainer.php b/src/Assets/AssetContainer.php index b995f26521f..e11986dc401 100644 --- a/src/Assets/AssetContainer.php +++ b/src/Assets/AssetContainer.php @@ -27,7 +27,6 @@ use Statamic\Facades\Stache; use Statamic\Facades\URL; use Statamic\Support\Arr; -use Statamic\Support\Str; use Statamic\Support\Traits\FluentlyGetsAndSets; class AssetContainer implements Arrayable, ArrayAccess, AssetContainerContract, Augmentable From b11efda551672136b1d1977375f5274e88ed98e5 Mon Sep 17 00:00:00 2001 From: Marco Rieser Date: Tue, 21 Jan 2025 09:16:09 +0100 Subject: [PATCH 5/7] Use `Str::removeLeft()` --- src/Assets/AssetContainer.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Assets/AssetContainer.php b/src/Assets/AssetContainer.php index e11986dc401..fa3432a1bd2 100644 --- a/src/Assets/AssetContainer.php +++ b/src/Assets/AssetContainer.php @@ -27,6 +27,7 @@ use Statamic\Facades\Stache; use Statamic\Facades\URL; use Statamic\Support\Arr; +use Statamic\Support\Str; use Statamic\Support\Traits\FluentlyGetsAndSets; class AssetContainer implements Arrayable, ArrayAccess, AssetContainerContract, Augmentable @@ -139,10 +140,7 @@ public function url() } $url = rtrim($this->disk()->url('/'), '/'); - - if (str_starts_with($url, config('app.url'))) { - $url = substr($url, strlen(config('app.url'))); - } + $url = Str::removeLeft($url, config('app.url')); return ($url === '') ? '/' : $url; } From ba16c169a527b14a16e0d7b87724f37549c5745c Mon Sep 17 00:00:00 2001 From: Marco Rieser Date: Tue, 21 Jan 2025 21:25:09 +0100 Subject: [PATCH 6/7] Replace rtrim with Str::removeRight --- src/Assets/AssetContainer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Assets/AssetContainer.php b/src/Assets/AssetContainer.php index fa3432a1bd2..d9ef83d6a1c 100644 --- a/src/Assets/AssetContainer.php +++ b/src/Assets/AssetContainer.php @@ -139,7 +139,7 @@ public function url() return null; } - $url = rtrim($this->disk()->url('/'), '/'); + $url = Str::removeRight($this->disk()->url('/'), '/'); $url = Str::removeLeft($url, config('app.url')); return ($url === '') ? '/' : $url; From 1de73c6cb6d940ece99815b219b2e569777be863 Mon Sep 17 00:00:00 2001 From: Jason Varga Date: Tue, 25 Feb 2025 14:20:05 -0500 Subject: [PATCH 7/7] nitpick --- src/Assets/AssetContainer.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Assets/AssetContainer.php b/src/Assets/AssetContainer.php index d9ef83d6a1c..86263865e7e 100644 --- a/src/Assets/AssetContainer.php +++ b/src/Assets/AssetContainer.php @@ -139,8 +139,9 @@ public function url() return null; } - $url = Str::removeRight($this->disk()->url('/'), '/'); - $url = Str::removeLeft($url, config('app.url')); + $url = (string) Str::of($this->disk()->url('/')) + ->rtrim('/') + ->after(config('app.url')); return ($url === '') ? '/' : $url; }