]> BookStack Code Mirror - bookstack/commitdiff
Fixed page editor back button sometimes going nowhere
authorDan Brown <redacted>
Mon, 15 Nov 2021 11:17:27 +0000 (11:17 +0000)
committerDan Brown <redacted>
Mon, 15 Nov 2021 11:19:03 +0000 (11:19 +0000)
Updated the back button to be a proper link instead of a reference to
the last viewed URL since it could break if the last page was the
current one (On validation for example).

Includes test to cover.
Also applied some styleCI changes.

Fixes #2834

app/Http/Controllers/Api/SearchApiController.php
app/Http/Controllers/AttachmentController.php
resources/views/pages/parts/form.blade.php
tests/Entity/PageEditorTest.php

index 8fb2496657588a09116037edcbcf594744a1abf9..ba960b9d2f79d0bc5b4db095a3c5dbdb7c01eb8a 100644 (file)
@@ -13,8 +13,8 @@ class SearchApiController extends ApiController
 
     protected $rules = [
         'all' => [
-            'query' => ['required'],
-            'page'  => ['integer', 'min:1'],
+            'query'  => ['required'],
+            'page'   => ['integer', 'min:1'],
             'count'  => ['integer', 'min:1', 'max:100'],
         ],
     ];
@@ -58,10 +58,8 @@ class SearchApiController extends ApiController
         }
 
         return response()->json([
-            'data' => $results['results'],
+            'data'  => $results['results'],
             'total' => $results['total'],
         ]);
     }
-
-
 }
index 445611fcbfe907108c25a758c1f645f6b1b368d5..084f6f96ad8866469346c4d0469636820f799a9c 100644 (file)
@@ -9,7 +9,6 @@ use BookStack\Uploads\Attachment;
 use BookStack\Uploads\AttachmentService;
 use Exception;
 use Illuminate\Contracts\Filesystem\FileNotFoundException;
-use Illuminate\Foundation\Http\Middleware\ValidatePostSize;
 use Illuminate\Http\Request;
 use Illuminate\Support\MessageBag;
 use Illuminate\Validation\ValidationException;
index f6f0143da6f378d0ea03dabe50f864947069ed2c..01f68a6c5cf0dfa5ab18e9c6fbbc0c4c5451e3a1 100644 (file)
@@ -20,7 +20,8 @@
         <div class="grid third no-break v-center">
 
             <div class="action-buttons text-left px-m py-xs">
-                <a href="{{ back()->getTargetUrl() }}" class="text-button text-primary">@icon('back')<span class="hide-under-l">{{ trans('common.back') }}</span></a>
+                <a href="{{ $page->draft ? $page->getParent()->getUrl() : $page->getUrl() }}"
+                   class="text-button text-primary">@icon('back')<span class="hide-under-l">{{ trans('common.back') }}</span></a>
             </div>
 
             <div class="text-center px-m py-xs">
index 652bc1336e5c98bccc20e156014f96d03ff93117..c06aa5bf125406fc0160b581d3dc5f2fe6e648e0 100644 (file)
@@ -3,6 +3,7 @@
 namespace Tests\Entity;
 
 use BookStack\Entities\Models\Book;
+use BookStack\Entities\Models\Chapter;
 use BookStack\Entities\Models\Page;
 use Tests\TestCase;
 
@@ -74,4 +75,31 @@ class PageEditorTest extends TestCase
             'draft'    => false,
         ]);
     }
+
+    public function test_back_link_in_editor_has_correct_url()
+    {
+        /** @var Book $book */
+        $book = Book::query()->whereHas('pages')->whereHas('chapters')->firstOrFail();
+        $this->asEditor()->get($book->getUrl('/create-page'));
+        /** @var Chapter $chapter */
+        $chapter = $book->chapters()->firstOrFail();
+        /** @var Page $draft */
+        $draft = $book->pages()->where('draft', '=', true)->firstOrFail();
+
+        // Book draft goes back to book
+        $resp = $this->get($book->getUrl("/draft/{$draft->id}"));
+        $resp->assertElementContains('a[href="' . $book->getUrl() . '"]', 'Back');
+
+        // Chapter draft goes back to chapter
+        $draft->chapter_id = $chapter->id;
+        $draft->save();
+        $resp = $this->get($book->getUrl("/draft/{$draft->id}"));
+        $resp->assertElementContains('a[href="' . $chapter->getUrl() . '"]', 'Back');
+
+        // Saved page goes back to page
+        $this->post($book->getUrl("/draft/{$draft->id}"), ['name' => 'Updated', 'html' => 'Updated']);
+        $draft->refresh();
+        $resp = $this->get($draft->getUrl('/edit'));
+        $resp->assertElementContains('a[href="' . $draft->getUrl() . '"]', 'Back');
+    }
 }
Morty Proxy This is a proxified and sanitized view of the page, visit original site.