X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/dabe79a438f22612e7d68c8d1de7817505b59b93..refs/pull/2784/head:/app/Http/Controllers/PageController.php diff --git a/app/Http/Controllers/PageController.php b/app/Http/Controllers/PageController.php index b216c19a8..31ee4e970 100644 --- a/app/Http/Controllers/PageController.php +++ b/app/Http/Controllers/PageController.php @@ -1,19 +1,19 @@ pageRepo = $pageRepo; - parent::__construct(); } /** @@ -78,7 +77,7 @@ class PageController extends Controller public function editDraft(string $bookSlug, int $pageId) { $draft = $this->pageRepo->getById($pageId); - $this->checkOwnablePermission('page-create', $draft->parent()); + $this->checkOwnablePermission('page-create', $draft->getParent()); $this->setPageTitle(trans('entities.pages_edit_draft')); $draftsEnabled = $this->isSignedIn(); @@ -104,10 +103,9 @@ class PageController extends Controller 'name' => 'required|string|max:255' ]); $draftPage = $this->pageRepo->getById($pageId); - $this->checkOwnablePermission('page-create', $draftPage->parent()); + $this->checkOwnablePermission('page-create', $draftPage->getParent()); $page = $this->pageRepo->publishDraft($draftPage, $request->all()); - Activity::add($page, 'page_create', $draftPage->book->id); return redirect($page->getUrl()); } @@ -144,7 +142,9 @@ class PageController extends Controller $page->load(['comments.createdBy']); } - Views::add($page); + $nextPreviousLocator = new NextPreviousContentLocator($page, $sidebarTree); + + View::incrementFor($page); $this->setPageTitle($page->getShortName()); return view('pages.show', [ 'page' => $page, @@ -152,7 +152,9 @@ class PageController extends Controller 'current' => $page, 'sidebarTree' => $sidebarTree, 'commentsEnabled' => $commentsEnabled, - 'pageNav' => $pageNav + 'pageNav' => $pageNav, + 'next' => $nextPreviousLocator->getNext(), + 'previous' => $nextPreviousLocator->getPrevious(), ]); } @@ -163,6 +165,8 @@ class PageController extends Controller public function getPageAjax(int $pageId) { $page = $this->pageRepo->getById($pageId); + $page->setHidden(array_diff($page->getHidden(), ['html', 'markdown'])); + $page->addHidden(['book']); return response()->json($page); } @@ -222,7 +226,6 @@ class PageController extends Controller $this->checkOwnablePermission('page-update', $page); $this->pageRepo->update($page, $request->all()); - Activity::add($page, 'page_update', $page->book->id); return redirect($page->getUrl()); } @@ -244,8 +247,8 @@ class PageController extends Controller $updateTime = $draft->updated_at->timestamp; return response()->json([ - 'status' => 'success', - 'message' => trans('entities.pages_edit_draft_save_at'), + 'status' => 'success', + 'message' => trans('entities.pages_edit_draft_save_at'), 'timestamp' => $updateTime ]); } @@ -268,7 +271,7 @@ class PageController extends Controller { $page = $this->pageRepo->getBySlug($bookSlug, $pageSlug); $this->checkOwnablePermission('page-delete', $page); - $this->setPageTitle(trans('entities.pages_delete_named', ['pageName'=>$page->getShortName()])); + $this->setPageTitle(trans('entities.pages_delete_named', ['pageName' => $page->getShortName()])); return view('pages.delete', [ 'book' => $page->book, 'page' => $page, @@ -284,7 +287,7 @@ class PageController extends Controller { $page = $this->pageRepo->getById($pageId); $this->checkOwnablePermission('page-update', $page); - $this->setPageTitle(trans('entities.pages_delete_draft_named', ['pageName'=>$page->getShortName()])); + $this->setPageTitle(trans('entities.pages_delete_draft_named', ['pageName' => $page->getShortName()])); return view('pages.delete', [ 'book' => $page->book, 'page' => $page, @@ -296,26 +299,21 @@ class PageController extends Controller * Remove the specified page from storage. * @throws NotFoundException * @throws Throwable - * @throws NotifyException */ public function destroy(string $bookSlug, string $pageSlug) { $page = $this->pageRepo->getBySlug($bookSlug, $pageSlug); $this->checkOwnablePermission('page-delete', $page); + $parent = $page->getParent(); - $book = $page->book; - $parent = $page->chapter ?? $book; $this->pageRepo->destroy($page); - Activity::addMessage('page_delete', $page->name, $book->id); - $this->showSuccessNotification(trans('entities.pages_delete_success')); return redirect($parent->getUrl()); } /** * Remove the specified draft page from storage. * @throws NotFoundException - * @throws NotifyException * @throws Throwable */ public function destroyDraft(string $bookSlug, int $pageId) @@ -344,9 +342,9 @@ class PageController extends Controller ->paginate(20) ->setPath(url('/pages/recently-updated')); - return view('pages.detailed-listing', [ + return view('common.detailed-listing-paginated', [ 'title' => trans('entities.recently_updated_pages'), - 'pages' => $pages + 'entities' => $pages ]); } @@ -384,7 +382,7 @@ class PageController extends Controller try { $parent = $this->pageRepo->move($page, $entitySelection); } catch (Exception $exception) { - if ($exception instanceof PermissionsException) { + if ($exception instanceof PermissionsException) { $this->showPermissionError(); } @@ -392,7 +390,6 @@ class PageController extends Controller return redirect()->back(); } - Activity::add($page, 'page_move', $page->book->id); $this->showSuccessNotification(trans('entities.pages_move_success', ['parentName' => $parent->name])); return redirect($page->getUrl()); } @@ -429,7 +426,7 @@ class PageController extends Controller try { $pageCopy = $this->pageRepo->copy($page, $entitySelection, $newName); } catch (Exception $exception) { - if ($exception instanceof PermissionsException) { + if ($exception instanceof PermissionsException) { $this->showPermissionError(); } @@ -437,8 +434,6 @@ class PageController extends Controller return redirect()->back(); } - Activity::add($pageCopy, 'page_create', $pageCopy->book->id); - $this->showSuccessNotification(trans('entities.pages_copy_success')); return redirect($pageCopy->getUrl()); } @@ -452,7 +447,7 @@ class PageController extends Controller $page = $this->pageRepo->getBySlug($bookSlug, $pageSlug); $this->checkOwnablePermission('restrictions-manage', $page); return view('pages.permissions', [ - 'page' => $page, + 'page' => $page, ]); } @@ -461,14 +456,12 @@ class PageController extends Controller * @throws NotFoundException * @throws Throwable */ - public function permissions(Request $request, string $bookSlug, string $pageSlug) + public function permissions(Request $request, PermissionsUpdater $permissionsUpdater, string $bookSlug, string $pageSlug) { $page = $this->pageRepo->getBySlug($bookSlug, $pageSlug); $this->checkOwnablePermission('restrictions-manage', $page); - $restricted = $request->get('restricted') === 'true'; - $permissions = $request->filled('restrictions') ? collect($request->get('restrictions')) : null; - $this->pageRepo->updatePermissions($page, $restricted, $permissions); + $permissionsUpdater->updateFromPermissionsForm($page, $request); $this->showSuccessNotification(trans('entities.pages_permissions_success')); return redirect($page->getUrl());