From 6962e37065de7703d73fc4f36fea58fa39d37a29 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Fri, 4 Nov 2022 14:51:47 +0100 Subject: [PATCH 01/10] Automatically store the redirect upon calling make --- packages/framework/src/Support/Models/Redirect.php | 2 +- packages/framework/tests/Feature/RedirectTest.php | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/framework/src/Support/Models/Redirect.php b/packages/framework/src/Support/Models/Redirect.php index ee8d4f6005a..596d9a1f301 100644 --- a/packages/framework/src/Support/Models/Redirect.php +++ b/packages/framework/src/Support/Models/Redirect.php @@ -29,7 +29,7 @@ public function __construct(string $path, string $destination) public static function make(string $path, string $destination): static { - return new static($path, $destination); + return (new static($path, $destination))->store(); } public function render(): string diff --git a/packages/framework/tests/Feature/RedirectTest.php b/packages/framework/tests/Feature/RedirectTest.php index 4228e7fa4f0..89d33bfb40c 100644 --- a/packages/framework/tests/Feature/RedirectTest.php +++ b/packages/framework/tests/Feature/RedirectTest.php @@ -26,8 +26,6 @@ public function test_can_create_a_redirect() str_replace("\r", '', $redirect->render()) ); - $redirect->store(); - $this->assertFileExists(Hyde::path('_site/foo.html')); $this->assertSame($redirect->render(), file_get_contents(Hyde::path('_site/foo.html'))); From 3ba8966d1ed0ffdf204a3098afc074ed761f5a84 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Fri, 4 Nov 2022 15:13:49 +0100 Subject: [PATCH 02/10] Add newline to end of redirect page --- packages/framework/resources/views/pages/redirect.blade.php | 2 +- packages/framework/tests/Feature/RedirectTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/framework/resources/views/pages/redirect.blade.php b/packages/framework/resources/views/pages/redirect.blade.php index b2cfaa09511..f1d4cd6b823 100644 --- a/packages/framework/resources/views/pages/redirect.blade.php +++ b/packages/framework/resources/views/pages/redirect.blade.php @@ -9,4 +9,4 @@ Redirecting to {{ $destination }}. - \ No newline at end of file + diff --git a/packages/framework/tests/Feature/RedirectTest.php b/packages/framework/tests/Feature/RedirectTest.php index 89d33bfb40c..1a39149ad79 100644 --- a/packages/framework/tests/Feature/RedirectTest.php +++ b/packages/framework/tests/Feature/RedirectTest.php @@ -22,7 +22,7 @@ public function test_can_create_a_redirect() $this->assertSame('foo', $redirect->path); $this->assertSame('bar', $redirect->destination); - $this->assertSame("\n\n \n \n \n\n Redirecting to bar\n \n \n Redirecting to bar.\n \n", + $this->assertSame("\n\n \n \n \n\n Redirecting to bar\n \n \n Redirecting to bar.\n \n\n", str_replace("\r", '', $redirect->render()) ); From 4bb385526df787ebe5d7592c79ee52db46b5400c Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Fri, 4 Nov 2022 15:14:22 +0100 Subject: [PATCH 03/10] Class implements interface renderable --- packages/framework/src/Support/Models/Redirect.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/framework/src/Support/Models/Redirect.php b/packages/framework/src/Support/Models/Redirect.php index 596d9a1f301..e3cf77ac5fe 100644 --- a/packages/framework/src/Support/Models/Redirect.php +++ b/packages/framework/src/Support/Models/Redirect.php @@ -5,6 +5,7 @@ namespace Hyde\Support\Models; use Hyde\Hyde; +use Illuminate\Contracts\Support\Renderable; /** * A basic redirect page. Is not discoverable by Hyde, instead you manually need to create the pages. @@ -16,7 +17,7 @@ * * @example `Redirect::make('foo', 'bar')->store();` */ -class Redirect +class Redirect implements Renderable { public string $path; public string $destination; From 4fd9322cb2523d63ff3fa11570ca8ed5a64d2252 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Fri, 4 Nov 2022 15:17:16 +0100 Subject: [PATCH 04/10] Normalize input path --- packages/framework/src/Support/Models/Redirect.php | 11 ++++++++++- packages/framework/tests/Feature/RedirectTest.php | 9 +++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/framework/src/Support/Models/Redirect.php b/packages/framework/src/Support/Models/Redirect.php index e3cf77ac5fe..11a4a0f0298 100644 --- a/packages/framework/src/Support/Models/Redirect.php +++ b/packages/framework/src/Support/Models/Redirect.php @@ -24,7 +24,7 @@ class Redirect implements Renderable public function __construct(string $path, string $destination) { - $this->path = $path; + $this->path = $this->normalizePath($path); $this->destination = $destination; } @@ -46,4 +46,13 @@ public function store(): static return $this; } + + protected function normalizePath(string $path): string + { + if (str_ends_with($path, '.html')) { + return substr($path, 0, -5); + } + + return $path; + } } diff --git a/packages/framework/tests/Feature/RedirectTest.php b/packages/framework/tests/Feature/RedirectTest.php index 1a39149ad79..054fca00503 100644 --- a/packages/framework/tests/Feature/RedirectTest.php +++ b/packages/framework/tests/Feature/RedirectTest.php @@ -31,4 +31,13 @@ public function test_can_create_a_redirect() unlink(Hyde::path('_site/foo.html')); } + + public function test_path_parameter_is_normalized() + { + $redirect = Redirect::make('foo.html', 'bar'); + + $this->assertSame('foo', $redirect->path); + + unlink(Hyde::path('_site/foo.html')); + } } From b9e768f1bb3e197dc0da74e2c5c1766b40da6e9b Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Fri, 4 Nov 2022 15:17:58 +0100 Subject: [PATCH 05/10] Add PHPDoc --- packages/framework/src/Support/Models/Redirect.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/framework/src/Support/Models/Redirect.php b/packages/framework/src/Support/Models/Redirect.php index 11a4a0f0298..c81afd331eb 100644 --- a/packages/framework/src/Support/Models/Redirect.php +++ b/packages/framework/src/Support/Models/Redirect.php @@ -22,6 +22,12 @@ class Redirect implements Renderable public string $path; public string $destination; + /** + * Create a new redirect page file in the project's site output directory. + * + * @param string $path The URI path to redirect from. + * @param string $destination The destination to redirect to. + */ public function __construct(string $path, string $destination) { $this->path = $this->normalizePath($path); From 0f94995ecd19d8e0b04ef27177e06194aa618917 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Fri, 4 Nov 2022 15:18:27 +0100 Subject: [PATCH 06/10] Make data protected --- packages/framework/src/Support/Models/Redirect.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/framework/src/Support/Models/Redirect.php b/packages/framework/src/Support/Models/Redirect.php index c81afd331eb..ccca82db481 100644 --- a/packages/framework/src/Support/Models/Redirect.php +++ b/packages/framework/src/Support/Models/Redirect.php @@ -19,8 +19,8 @@ */ class Redirect implements Renderable { - public string $path; - public string $destination; + protected string $path; + protected string $destination; /** * Create a new redirect page file in the project's site output directory. From 5ed3cc6222276b4d0ff4478fb7eacf802b7a4420 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Fri, 4 Nov 2022 15:19:40 +0100 Subject: [PATCH 07/10] Revert "Make data protected" This reverts commit 0f94995ecd19d8e0b04ef27177e06194aa618917. --- packages/framework/src/Support/Models/Redirect.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/framework/src/Support/Models/Redirect.php b/packages/framework/src/Support/Models/Redirect.php index ccca82db481..c81afd331eb 100644 --- a/packages/framework/src/Support/Models/Redirect.php +++ b/packages/framework/src/Support/Models/Redirect.php @@ -19,8 +19,8 @@ */ class Redirect implements Renderable { - protected string $path; - protected string $destination; + public string $path; + public string $destination; /** * Create a new redirect page file in the project's site output directory. From c3ebd8643a084e05252fd527db4ac9deb114404c Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Fri, 4 Nov 2022 15:23:21 +0100 Subject: [PATCH 08/10] Make data readonly as they have no cause to change --- packages/framework/src/Support/Models/Redirect.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/framework/src/Support/Models/Redirect.php b/packages/framework/src/Support/Models/Redirect.php index c81afd331eb..d4efbcd9ed0 100644 --- a/packages/framework/src/Support/Models/Redirect.php +++ b/packages/framework/src/Support/Models/Redirect.php @@ -19,8 +19,8 @@ */ class Redirect implements Renderable { - public string $path; - public string $destination; + public readonly string $path; + public readonly string $destination; /** * Create a new redirect page file in the project's site output directory. From a365d3a92f53ec91241a95833b35ed35df07cdf4 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Fri, 4 Nov 2022 15:29:26 +0100 Subject: [PATCH 09/10] Add media query to prevent blinding flashes when on dark mode --- packages/framework/resources/views/pages/redirect.blade.php | 1 + packages/framework/tests/Feature/RedirectTest.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/framework/resources/views/pages/redirect.blade.php b/packages/framework/resources/views/pages/redirect.blade.php index f1d4cd6b823..e68e520e68b 100644 --- a/packages/framework/resources/views/pages/redirect.blade.php +++ b/packages/framework/resources/views/pages/redirect.blade.php @@ -3,6 +3,7 @@ + Redirecting to {{ $destination }} diff --git a/packages/framework/tests/Feature/RedirectTest.php b/packages/framework/tests/Feature/RedirectTest.php index 054fca00503..f3aadfa1cd9 100644 --- a/packages/framework/tests/Feature/RedirectTest.php +++ b/packages/framework/tests/Feature/RedirectTest.php @@ -22,7 +22,7 @@ public function test_can_create_a_redirect() $this->assertSame('foo', $redirect->path); $this->assertSame('bar', $redirect->destination); - $this->assertSame("\n\n \n \n \n\n Redirecting to bar\n \n \n Redirecting to bar.\n \n\n", + $this->assertSame("\n\n \n \n \n \n\n Redirecting to bar\n \n \n Redirecting to bar.\n \n\n", str_replace("\r", '', $redirect->render()) ); From 1241ba2629e7839164e87785094205084e1d901f Mon Sep 17 00:00:00 2001 From: StyleCI Bot Date: Fri, 4 Nov 2022 14:29:52 +0000 Subject: [PATCH 10/10] Apply fixes from StyleCI --- packages/framework/src/Support/Models/Redirect.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/framework/src/Support/Models/Redirect.php b/packages/framework/src/Support/Models/Redirect.php index d4efbcd9ed0..1ba6040fe4c 100644 --- a/packages/framework/src/Support/Models/Redirect.php +++ b/packages/framework/src/Support/Models/Redirect.php @@ -25,8 +25,8 @@ class Redirect implements Renderable /** * Create a new redirect page file in the project's site output directory. * - * @param string $path The URI path to redirect from. - * @param string $destination The destination to redirect to. + * @param string $path The URI path to redirect from. + * @param string $destination The destination to redirect to. */ public function __construct(string $path, string $destination) {