X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/25da4d9a8bb113b1f28fa54d9b8ea5e7eede1681..refs/pull/1026/head:/app/Http/Controllers/PageController.php diff --git a/app/Http/Controllers/PageController.php b/app/Http/Controllers/PageController.php index 2ca991620..80bbe56c1 100644 --- a/app/Http/Controllers/PageController.php +++ b/app/Http/Controllers/PageController.php @@ -2,7 +2,6 @@ use Activity; use BookStack\Exceptions\NotFoundException; -use BookStack\Exceptions\BadRequestException; use BookStack\Repos\EntityRepo; use BookStack\Repos\UserRepo; use BookStack\Services\ExportService; @@ -460,7 +459,7 @@ class PageController extends Controller * Deletes a revision using the id of the specified revision. * @param string $bookSlug * @param string $pageSlug - * @param int $revisionId + * @param int $revId * @throws NotFoundException * @throws BadRequestException * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector @@ -468,7 +467,7 @@ class PageController extends Controller public function destroyRevision($bookSlug, $pageSlug, $revId) { $page = $this->entityRepo->getBySlug('page', $pageSlug, $bookSlug); - $this->checkOwnablePermission('page-update', $page); + $this->checkOwnablePermission('page-delete', $page); $revision = $page->revisions()->where('id', '=', $revId)->first(); if ($revision === null) { @@ -476,11 +475,12 @@ class PageController extends Controller } // Get the current revision for the page - $current = $revision->getCurrent(); + $currentRevision = $page->getCurrentRevision(); // Check if its the latest revision, cannot delete latest revision. - if (intval($current->id) === intval($revId)) { - throw new BadRequestException("Cannot delete the current revision #{$revId}"); + if (intval($currentRevision->id) === intval($revId)) { + session()->flash('error', trans('entities.revision_cannot_delete_latest')); + return response()->view('pages/revisions', ['page' => $page, 'book' => $page->book, 'current' => $page], 400); } $revision->delete(); @@ -500,10 +500,7 @@ class PageController extends Controller $page = $this->entityRepo->getBySlug('page', $pageSlug, $bookSlug); $page->html = $this->entityRepo->renderPage($page); $pdfContent = $this->exportService->pageToPdf($page); - return response()->make($pdfContent, 200, [ - 'Content-Type' => 'application/octet-stream', - 'Content-Disposition' => 'attachment; filename="' . $pageSlug . '.pdf' - ]); + return $this->downloadResponse($pdfContent, $pageSlug . '.pdf'); } /** @@ -517,10 +514,7 @@ class PageController extends Controller $page = $this->entityRepo->getBySlug('page', $pageSlug, $bookSlug); $page->html = $this->entityRepo->renderPage($page); $containedHtml = $this->exportService->pageToContainedHtml($page); - return response()->make($containedHtml, 200, [ - 'Content-Type' => 'application/octet-stream', - 'Content-Disposition' => 'attachment; filename="' . $pageSlug . '.html' - ]); + return $this->downloadResponse($containedHtml, $pageSlug . '.html'); } /** @@ -532,11 +526,8 @@ class PageController extends Controller public function exportPlainText($bookSlug, $pageSlug) { $page = $this->entityRepo->getBySlug('page', $pageSlug, $bookSlug); - $containedHtml = $this->exportService->pageToPlainText($page); - return response()->make($containedHtml, 200, [ - 'Content-Type' => 'application/octet-stream', - 'Content-Disposition' => 'attachment; filename="' . $pageSlug . '.txt' - ]); + $pageText = $this->exportService->pageToPlainText($page); + return $this->downloadResponse($pageText, $pageSlug . '.txt'); } /**