X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/9e033709a78824decbf959ea25ce8672b026da09..refs/pull/2511/head:/app/Http/Controllers/PageController.php diff --git a/app/Http/Controllers/PageController.php b/app/Http/Controllers/PageController.php index ee998996f..2bfd55fa0 100644 --- a/app/Http/Controllers/PageController.php +++ b/app/Http/Controllers/PageController.php @@ -1,11 +1,11 @@ pageRepo = $pageRepo; - parent::__construct(); } /** @@ -107,7 +106,6 @@ class PageController extends Controller $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,6 +142,38 @@ class PageController extends Controller $page->load(['comments.createdBy']); } + $chapterId = $page->getParentChapter(); + $allPageSlugs = $this->pageRepo->getPageByChapterID($chapterId[0]->id); + $pos = 0; + foreach ($allPageSlugs as $slug){ + if($pageSlug === $slug->slug){ + $currPagePos = $pos; + } + $pos++; + $pageUrl = $this->pageRepo->getBySlug($bookSlug, $slug->slug); + $urlLink[] = $pageUrl->getUrl(); + } + for($i=0; $i <= $currPagePos; $i++){ + $nextCount = $i+1; + $prevCount = $i-1; + $prevPage = '#'; + $nextPage = '#'; + if($nextCount < count($urlLink)){ + $nextPage = $urlLink[$nextCount]; + } + if($currPagePos == $i && $currPagePos != 0){ + $prevPage = $urlLink[$prevCount]; + } + } + + $disablePrev = ""; + $disableNxt = ""; + if($prevPage == "#"){ + $disablePrev = "disabled"; + } + if($nextPage == "#"){ + $disableNxt = "disabled"; + } Views::add($page); $this->setPageTitle($page->getShortName()); return view('pages.show', [ @@ -152,7 +182,11 @@ class PageController extends Controller 'current' => $page, 'sidebarTree' => $sidebarTree, 'commentsEnabled' => $commentsEnabled, - 'pageNav' => $pageNav + 'pageNav' => $pageNav, + 'prevPage' => $prevPage, + 'nextPage' => $nextPage, + 'disablePrev' => $disablePrev, + 'disableNxt' => $disableNxt ]); } @@ -224,7 +258,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()); } @@ -304,13 +337,10 @@ class PageController extends Controller { $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()); } @@ -394,7 +424,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()); } @@ -439,8 +468,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()); } @@ -463,14 +490,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());