]> BookStack Code Mirror - bookstack/blobdiff - app/Http/Controllers/PageController.php
Fixes "bookshelf" pt_BR translation in "activities"
[bookstack] / app / Http / Controllers / PageController.php
index 2ca991620d667900a479a2052aaa1ebb36fea78f..e010077bdc0c38fcbebebfe8e62cef1c659cc818 100644 (file)
@@ -1,15 +1,14 @@
 <?php namespace BookStack\Http\Controllers;
 
 use Activity;
+use BookStack\Auth\UserRepo;
+use BookStack\Entities\EntityRepo;
+use BookStack\Entities\ExportService;
 use BookStack\Exceptions\NotFoundException;
-use BookStack\Exceptions\BadRequestException;
-use BookStack\Repos\EntityRepo;
-use BookStack\Repos\UserRepo;
-use BookStack\Services\ExportService;
+use GatherContent\Htmldiff\Htmldiff;
 use Illuminate\Http\Request;
 use Illuminate\Http\Response;
 use Views;
-use GatherContent\Htmldiff\Htmldiff;
 
 class PageController extends Controller
 {
@@ -20,8 +19,8 @@ class PageController extends Controller
 
     /**
      * PageController constructor.
-     * @param EntityRepo $entityRepo
-     * @param ExportService $exportService
+     * @param \BookStack\Entities\EntityRepo $entityRepo
+     * @param \BookStack\Entities\ExportService $exportService
      * @param UserRepo $userRepo
      */
     public function __construct(EntityRepo $entityRepo, ExportService $exportService, UserRepo $userRepo)
@@ -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');
     }
 
     /**