From 2f94f078e36cf65fa8c7b1d640c030b415714cdc Mon Sep 17 00:00:00 2001 From: Christopher Wilkinson Date: Thu, 26 Sep 2019 22:51:24 +0100 Subject: [PATCH 1/2] Fix Book form (create) returning to the full books list on cancel Fixes #1662 Added a small block of logic to determine the correct URL to attribute to the cancel button on a given page create form. If adding a book from a bookshelf, return to the bookshelf. If editing a book, return to the book. In all other cases, return to the full books list. --- resources/views/books/form.blade.php | 11 ++++++++++- tests/Entity/EntityTest.php | 26 ++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/resources/views/books/form.blade.php b/resources/views/books/form.blade.php index 8960b4135..91a3899de 100644 --- a/resources/views/books/form.blade.php +++ b/resources/views/books/form.blade.php @@ -36,6 +36,15 @@
- {{ trans('common.cancel') }} + getUrl(); + } else if (isset($book)) { + $cancelUrl = $book->getUrl(); + } else { + $cancelUrl = '/books'; + } + ?> + {{ trans('common.cancel') }}
\ No newline at end of file diff --git a/tests/Entity/EntityTest.php b/tests/Entity/EntityTest.php index a3fb1cfe1..c28ca8b3e 100644 --- a/tests/Entity/EntityTest.php +++ b/tests/Entity/EntityTest.php @@ -1,5 +1,6 @@ assertEquals('parta-partb-partc', $book->slug); } + public function test_shelf_cancel_creation_returns_to_correct_place() + { + $shelf = Bookshelf::first(); + + // Cancel button from shelf goes back to shelf + $this->asEditor()->visit($shelf->getUrl('/create-book')) + ->see('Cancel') + ->click('Cancel') + ->seePageIs($shelf->getUrl()); + + // Cancel button from books goes back to books + $this->asEditor()->visit('/create-book') + ->see('Cancel') + ->click('Cancel') + ->seePageIs('/books'); + + // Cancel button from book edit goes back to book + $book = Book::first(); + + $this->asEditor()->visit($book->getUrl('/edit')) + ->see('Cancel') + ->click('Cancel') + ->seePageIs($book->getUrl()); + } + } From 4b9618cd2163589c441fa12d078d62f76f002d69 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sun, 27 Oct 2019 16:55:05 +0000 Subject: [PATCH 2/2] Update book form so cancel URL is explicitly passed in - Added to prevent future possibility of 'shelf' var being introduced in scope and therefore causing a side-effect of redirect logic. --- resources/views/books/create.blade.php | 2 +- resources/views/books/edit.blade.php | 2 +- resources/views/books/form.blade.php | 13 ++----------- 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/resources/views/books/create.blade.php b/resources/views/books/create.blade.php index 6de81cd46..db3e90e51 100644 --- a/resources/views/books/create.blade.php +++ b/resources/views/books/create.blade.php @@ -28,7 +28,7 @@

{{ trans('entities.books_create') }}

- @include('books.form') + @include('books.form', ['returnLocation' => isset($bookshelf) ? $bookshelf->getUrl() : url('/books')])
diff --git a/resources/views/books/edit.blade.php b/resources/views/books/edit.blade.php index 400fd6e81..ac11b58e2 100644 --- a/resources/views/books/edit.blade.php +++ b/resources/views/books/edit.blade.php @@ -18,7 +18,7 @@

{{ trans('entities.books_edit') }}

- @include('books.form', ['model' => $book]) + @include('books.form', ['model' => $book, 'returnLocation' => $book->getUrl()])
diff --git a/resources/views/books/form.blade.php b/resources/views/books/form.blade.php index 91a3899de..a3235036e 100644 --- a/resources/views/books/form.blade.php +++ b/resources/views/books/form.blade.php @@ -31,20 +31,11 @@
- @include('components.tag-manager', ['entity' => isset($book)?$book:null, 'entityType' => 'chapter']) + @include('components.tag-manager', ['entity' => $book ?? null, 'entityType' => 'chapter'])
- getUrl(); - } else if (isset($book)) { - $cancelUrl = $book->getUrl(); - } else { - $cancelUrl = '/books'; - } - ?> - {{ trans('common.cancel') }} + {{ trans('common.cancel') }}
\ No newline at end of file