diff --git a/app/Http/Controllers/Api/SearchApiController.php b/app/Http/Controllers/Api/SearchApiController.php index 8fb249665..ba960b9d2 100644 --- a/app/Http/Controllers/Api/SearchApiController.php +++ b/app/Http/Controllers/Api/SearchApiController.php @@ -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'], ]); } - - } diff --git a/app/Http/Controllers/AttachmentController.php b/app/Http/Controllers/AttachmentController.php index 445611fcb..084f6f96a 100644 --- a/app/Http/Controllers/AttachmentController.php +++ b/app/Http/Controllers/AttachmentController.php @@ -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; diff --git a/resources/views/pages/parts/form.blade.php b/resources/views/pages/parts/form.blade.php index f6f0143da..01f68a6c5 100644 --- a/resources/views/pages/parts/form.blade.php +++ b/resources/views/pages/parts/form.blade.php @@ -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"> diff --git a/tests/Entity/PageEditorTest.php b/tests/Entity/PageEditorTest.php index 652bc1336..c06aa5bf1 100644 --- a/tests/Entity/PageEditorTest.php +++ b/tests/Entity/PageEditorTest.php @@ -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'); + } }