<?php namespace BookStack\Http\Controllers;
-use Activity;
-use BookStack\Entities\Managers\BookContents;
-use BookStack\Entities\Managers\PageContent;
-use BookStack\Entities\Managers\PageEditActivity;
-use BookStack\Entities\Page;
+use BookStack\Entities\Tools\BookContents;
+use BookStack\Entities\Tools\PageContent;
+use BookStack\Entities\Tools\PageEditActivity;
+use BookStack\Entities\Models\Page;
use BookStack\Entities\Repos\PageRepo;
+use BookStack\Entities\Tools\PermissionsUpdater;
use BookStack\Exceptions\NotFoundException;
use BookStack\Exceptions\NotifyException;
use BookStack\Exceptions\PermissionsException;
public function __construct(PageRepo $pageRepo)
{
$this->pageRepo = $pageRepo;
- parent::__construct();
}
/**
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();
'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());
}
$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', [
'current' => $page,
'sidebarTree' => $sidebarTree,
'commentsEnabled' => $commentsEnabled,
- 'pageNav' => $pageNav
+ 'pageNav' => $pageNav,
+ 'prevPage' => $prevPage,
+ 'nextPage' => $nextPage,
+ 'disablePrev' => $disablePrev,
+ 'disableNxt' => $disableNxt
]);
}
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);
}
$this->checkOwnablePermission('page-update', $page);
$this->pageRepo->update($page, $request->all());
- Activity::add($page, 'page_update', $page->book->id);
return redirect($page->getUrl());
}
{
$page = $this->pageRepo->getBySlug($bookSlug, $pageSlug);
$this->checkOwnablePermission('page-delete', $page);
+ $parent = $page->getParent();
- $book = $page->book;
$this->pageRepo->destroy($page);
- Activity::addMessage('page_delete', $page->name, $book->id);
- $this->showSuccessNotification(trans('entities.pages_delete_success'));
- return redirect($book->getUrl());
+ return redirect($parent->getUrl());
}
/**
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());
}
return redirect()->back();
}
- Activity::add($pageCopy, 'page_create', $pageCopy->book->id);
-
$this->showSuccessNotification(trans('entities.pages_copy_success'));
return redirect($pageCopy->getUrl());
}
* @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());