X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/5283919d2493a396f588043b68bf9a4b3d5876a2..refs/pull/118/head:/app/Http/Controllers/PageController.php diff --git a/app/Http/Controllers/PageController.php b/app/Http/Controllers/PageController.php index e2b10d3d3..da9273743 100644 --- a/app/Http/Controllers/PageController.php +++ b/app/Http/Controllers/PageController.php @@ -4,6 +4,7 @@ use Activity; use BookStack\Exceptions\NotFoundException; use BookStack\Repos\UserRepo; use BookStack\Services\ExportService; +use Carbon\Carbon; use Illuminate\Http\Request; use BookStack\Http\Requests; use BookStack\Repos\BookRepo; @@ -68,10 +69,10 @@ class PageController extends Controller { $book = $this->bookRepo->getBySlug($bookSlug); $draft = $this->pageRepo->getById($pageId, true); - $this->checkOwnablePermission('page-create', $draft); + $this->checkOwnablePermission('page-create', $book); $this->setPageTitle('Edit Page Draft'); - return view('pages/create', ['draft' => $draft, 'book' => $book]); + return view('pages/edit', ['page' => $draft, 'book' => $book, 'isDraft' => true]); } /** @@ -88,7 +89,6 @@ class PageController extends Controller $input = $request->all(); $book = $this->bookRepo->getBySlug($bookSlug); - $input['priority'] = $this->bookRepo->getNewPriority($book); $draftPage = $this->pageRepo->getById($pageId, true); @@ -96,6 +96,12 @@ class PageController extends Controller $parent = $chapterId !== 0 ? $this->chapterRepo->getById($chapterId) : $book; $this->checkOwnablePermission('page-create', $parent); + if ($parent->isA('chapter')) { + $input['priority'] = $this->chapterRepo->getNewPriority($parent); + } else { + $input['priority'] = $this->bookRepo->getNewPriority($parent); + } + $page = $this->pageRepo->publishDraft($draftPage, $input); Activity::add($page, 'page_create', $book->id); @@ -122,6 +128,8 @@ class PageController extends Controller return redirect($page->getUrl()); } + $this->checkOwnablePermission('page-view', $page); + $sidebarTree = $this->bookRepo->getChildren($book); Views::add($page); $this->setPageTitle($page->getShortName()); @@ -164,6 +172,7 @@ class PageController extends Controller $draft = $this->pageRepo->getUserPageDraft($page, $this->currentUser->id); $page->name = $draft->name; $page->html = $draft->html; + $page->markdown = $draft->markdown; $page->isDraft = true; $warnings [] = $this->pageRepo->getUserPageDraftMessage($draft); } @@ -204,12 +213,18 @@ class PageController extends Controller $page = $this->pageRepo->getById($pageId, true); $this->checkOwnablePermission('page-update', $page); if ($page->draft) { - $draft = $this->pageRepo->updateDraftPage($page, $request->only(['name', 'html'])); + $draft = $this->pageRepo->updateDraftPage($page, $request->only(['name', 'html', 'markdown'])); } else { - $draft = $this->pageRepo->saveUpdateDraft($page, $request->only(['name', 'html'])); + $draft = $this->pageRepo->saveUpdateDraft($page, $request->only(['name', 'html', 'markdown'])); } - $updateTime = $draft->updated_at->format('H:i'); - return response()->json(['status' => 'success', 'message' => 'Draft saved at ' . $updateTime]); + + $updateTime = $draft->updated_at->timestamp; + $utcUpdateTimestamp = $updateTime + Carbon::createFromTimestamp(0)->offset; + return response()->json([ + 'status' => 'success', + 'message' => 'Draft saved at ', + 'timestamp' => $utcUpdateTimestamp + ]); } /** @@ -436,7 +451,7 @@ class PageController extends Controller } /** - * Set the restrictions for this page. + * Set the permissions for this page. * @param $bookSlug * @param $pageSlug * @param Request $request @@ -447,8 +462,8 @@ class PageController extends Controller $book = $this->bookRepo->getBySlug($bookSlug); $page = $this->pageRepo->getBySlug($pageSlug, $book->id); $this->checkOwnablePermission('restrictions-manage', $page); - $this->pageRepo->updateRestrictionsFromRequest($request, $page); - session()->flash('success', 'Page Restrictions Updated'); + $this->pageRepo->updateEntityPermissionsFromRequest($request, $page); + session()->flash('success', 'Page Permissions Updated'); return redirect($page->getUrl()); }