| 
									
										
										
										
											2016-02-28 03:24:42 +08:00
										 |  |  | <?php namespace BookStack\Http\Controllers; | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-17 01:59:23 +08:00
										 |  |  | use Activity; | 
					
						
							| 
									
										
										
										
											2016-03-06 02:09:21 +08:00
										 |  |  | use BookStack\Exceptions\NotFoundException; | 
					
						
							| 
									
										
										
										
											2016-02-28 18:49:41 +08:00
										 |  |  | use BookStack\Repos\UserRepo; | 
					
						
							| 
									
										
										
										
											2016-01-21 06:13:13 +08:00
										 |  |  | use BookStack\Services\ExportService; | 
					
						
							| 
									
										
										
										
											2016-04-09 20:36:32 +08:00
										 |  |  | use Carbon\Carbon; | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | use Illuminate\Http\Request; | 
					
						
							| 
									
										
										
										
											2015-09-11 02:31:09 +08:00
										 |  |  | use BookStack\Http\Requests; | 
					
						
							|  |  |  | use BookStack\Repos\BookRepo; | 
					
						
							|  |  |  | use BookStack\Repos\ChapterRepo; | 
					
						
							|  |  |  | use BookStack\Repos\PageRepo; | 
					
						
							| 
									
										
										
										
											2016-02-26 04:01:59 +08:00
										 |  |  | use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; | 
					
						
							| 
									
										
										
										
											2015-11-22 01:22:14 +08:00
										 |  |  | use Views; | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | class PageController extends Controller | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     protected $pageRepo; | 
					
						
							|  |  |  |     protected $bookRepo; | 
					
						
							| 
									
										
										
										
											2015-07-31 05:27:35 +08:00
										 |  |  |     protected $chapterRepo; | 
					
						
							| 
									
										
										
										
											2016-01-21 06:13:13 +08:00
										 |  |  |     protected $exportService; | 
					
						
							| 
									
										
										
										
											2016-02-28 18:49:41 +08:00
										 |  |  |     protected $userRepo; | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * PageController constructor. | 
					
						
							| 
									
										
										
										
											2016-02-28 18:49:41 +08:00
										 |  |  |      * @param PageRepo $pageRepo | 
					
						
							|  |  |  |      * @param BookRepo $bookRepo | 
					
						
							|  |  |  |      * @param ChapterRepo $chapterRepo | 
					
						
							| 
									
										
										
										
											2016-01-21 06:13:13 +08:00
										 |  |  |      * @param ExportService $exportService | 
					
						
							| 
									
										
										
										
											2016-02-28 18:49:41 +08:00
										 |  |  |      * @param UserRepo $userRepo | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-02-28 18:49:41 +08:00
										 |  |  |     public function __construct(PageRepo $pageRepo, BookRepo $bookRepo, ChapterRepo $chapterRepo, ExportService $exportService, UserRepo $userRepo) | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |     { | 
					
						
							|  |  |  |         $this->pageRepo = $pageRepo; | 
					
						
							|  |  |  |         $this->bookRepo = $bookRepo; | 
					
						
							| 
									
										
										
										
											2015-07-31 05:27:35 +08:00
										 |  |  |         $this->chapterRepo = $chapterRepo; | 
					
						
							| 
									
										
										
										
											2016-01-21 06:13:13 +08:00
										 |  |  |         $this->exportService = $exportService; | 
					
						
							| 
									
										
										
										
											2016-02-28 18:49:41 +08:00
										 |  |  |         $this->userRepo = $userRepo; | 
					
						
							| 
									
										
										
										
											2015-08-29 22:03:42 +08:00
										 |  |  |         parent::__construct(); | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  |      * Show the form for creating a new page. | 
					
						
							| 
									
										
										
										
											2015-08-29 22:03:42 +08:00
										 |  |  |      * @param      $bookSlug | 
					
						
							| 
									
										
										
										
											2015-07-31 05:27:35 +08:00
										 |  |  |      * @param bool $chapterSlug | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |      * @return Response | 
					
						
							| 
									
										
										
										
											2015-07-31 05:27:35 +08:00
										 |  |  |      * @internal param bool $pageSlug | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-07-31 05:27:35 +08:00
										 |  |  |     public function create($bookSlug, $chapterSlug = false) | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |         $chapter = $chapterSlug ? $this->chapterRepo->getBySlug($chapterSlug, $book->id) : null; | 
					
						
							| 
									
										
										
										
											2016-02-28 03:24:42 +08:00
										 |  |  |         $parent = $chapter ? $chapter : $book; | 
					
						
							|  |  |  |         $this->checkOwnablePermission('page-create', $parent); | 
					
						
							| 
									
										
										
										
											2015-12-05 22:41:51 +08:00
										 |  |  |         $this->setPageTitle('Create New Page'); | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $draft = $this->pageRepo->getDraftPage($book, $chapter); | 
					
						
							|  |  |  |         return redirect($draft->getUrl()); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Show form to continue editing a draft page. | 
					
						
							|  |  |  |      * @param $bookSlug | 
					
						
							|  |  |  |      * @param $pageId | 
					
						
							|  |  |  |      * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function editDraft($bookSlug, $pageId) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							|  |  |  |         $draft = $this->pageRepo->getById($pageId, true); | 
					
						
							| 
									
										
										
										
											2016-04-27 04:48:17 +08:00
										 |  |  |         $this->checkOwnablePermission('page-create', $book); | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |         $this->setPageTitle('Edit Page Draft'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-13 06:12:05 +08:00
										 |  |  |         return view('pages/edit', ['page' => $draft, 'book' => $book, 'isDraft' => true]); | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |      * Store a new page by changing a draft into a page. | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |      * @param  Request $request | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |      * @param  string $bookSlug | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |      * @return Response | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |     public function store(Request $request, $bookSlug, $pageId) | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |         $this->validate($request, [ | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |             'name' => 'required|string|max:255' | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |         ]); | 
					
						
							| 
									
										
										
										
											2015-07-31 05:27:35 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-11 01:57:52 +08:00
										 |  |  |         $input = $request->all(); | 
					
						
							|  |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							| 
									
										
										
										
											2015-07-21 05:05:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |         $draftPage = $this->pageRepo->getById($pageId, true); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-11 02:45:53 +08:00
										 |  |  |         $chapterId = intval($draftPage->chapter_id); | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |         $parent = $chapterId !== 0 ? $this->chapterRepo->getById($chapterId) : $book; | 
					
						
							|  |  |  |         $this->checkOwnablePermission('page-create', $parent); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-08 02:03:00 +08:00
										 |  |  |         if ($parent->isA('chapter')) { | 
					
						
							|  |  |  |             $input['priority'] = $this->chapterRepo->getNewPriority($parent); | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             $input['priority'] = $this->bookRepo->getNewPriority($parent); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |         $page = $this->pageRepo->publishDraft($draftPage, $input); | 
					
						
							| 
									
										
										
										
											2015-07-21 05:05:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-17 01:59:23 +08:00
										 |  |  |         Activity::add($page, 'page_create', $book->id); | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |         return redirect($page->getUrl()); | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  |      * Display the specified page. | 
					
						
							| 
									
										
										
										
											2016-02-26 04:01:59 +08:00
										 |  |  |      * If the page is not found via the slug the | 
					
						
							|  |  |  |      * revisions are searched for a match. | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |      * @param $bookSlug | 
					
						
							|  |  |  |      * @param $pageSlug | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |      * @return Response | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |     public function show($bookSlug, $pageSlug) | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-07-16 05:55:49 +08:00
										 |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							| 
									
										
										
										
											2016-02-26 04:01:59 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         try { | 
					
						
							|  |  |  |             $page = $this->pageRepo->getBySlug($pageSlug, $book->id); | 
					
						
							| 
									
										
										
										
											2016-03-06 02:09:21 +08:00
										 |  |  |         } catch (NotFoundException $e) { | 
					
						
							| 
									
										
										
										
											2016-02-26 04:01:59 +08:00
										 |  |  |             $page = $this->pageRepo->findPageUsingOldSlug($pageSlug, $bookSlug); | 
					
						
							|  |  |  |             if ($page === null) abort(404); | 
					
						
							|  |  |  |             return redirect($page->getUrl()); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-09 19:40:07 +08:00
										 |  |  |         $this->checkOwnablePermission('page-view', $page); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-27 07:45:04 +08:00
										 |  |  |         $sidebarTree = $this->bookRepo->getChildren($book); | 
					
						
							| 
									
										
										
										
											2015-11-22 01:22:14 +08:00
										 |  |  |         Views::add($page); | 
					
						
							| 
									
										
										
										
											2015-12-05 22:41:51 +08:00
										 |  |  |         $this->setPageTitle($page->getShortName()); | 
					
						
							| 
									
										
										
										
											2015-11-27 07:45:04 +08:00
										 |  |  |         return view('pages/show', ['page' => $page, 'book' => $book, 'current' => $page, 'sidebarTree' => $sidebarTree]); | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-12 23:52:19 +08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Get page from an ajax request. | 
					
						
							|  |  |  |      * @param $pageId | 
					
						
							|  |  |  |      * @return \Illuminate\Http\JsonResponse | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function getPageAjax($pageId) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $page = $this->pageRepo->getById($pageId); | 
					
						
							|  |  |  |         return response()->json($page); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  |      * Show the form for editing the specified page. | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |      * @param $bookSlug | 
					
						
							|  |  |  |      * @param $pageSlug | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |      * @return Response | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |     public function edit($bookSlug, $pageSlug) | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-07-16 05:55:49 +08:00
										 |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							|  |  |  |         $page = $this->pageRepo->getBySlug($pageSlug, $book->id); | 
					
						
							| 
									
										
										
										
											2016-02-28 03:24:42 +08:00
										 |  |  |         $this->checkOwnablePermission('page-update', $page); | 
					
						
							| 
									
										
										
										
											2015-12-05 22:41:51 +08:00
										 |  |  |         $this->setPageTitle('Editing Page ' . $page->getShortName()); | 
					
						
							| 
									
										
										
										
											2016-03-12 23:52:19 +08:00
										 |  |  |         $page->isDraft = false; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |         // Check for active editing
 | 
					
						
							| 
									
										
										
										
											2016-03-12 23:52:19 +08:00
										 |  |  |         $warnings = []; | 
					
						
							|  |  |  |         if ($this->pageRepo->isPageEditingActive($page, 60)) { | 
					
						
							|  |  |  |             $warnings[] = $this->pageRepo->getPageEditingActiveMessage($page, 60); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |         // Check for a current draft version for this user
 | 
					
						
							| 
									
										
										
										
											2016-03-12 23:52:19 +08:00
										 |  |  |         if ($this->pageRepo->hasUserGotPageDraft($page, $this->currentUser->id)) { | 
					
						
							|  |  |  |             $draft = $this->pageRepo->getUserPageDraft($page, $this->currentUser->id); | 
					
						
							|  |  |  |             $page->name = $draft->name; | 
					
						
							|  |  |  |             $page->html = $draft->html; | 
					
						
							| 
									
										
										
										
											2016-03-25 22:41:15 +08:00
										 |  |  |             $page->markdown = $draft->markdown; | 
					
						
							| 
									
										
										
										
											2016-03-12 23:52:19 +08:00
										 |  |  |             $page->isDraft = true; | 
					
						
							|  |  |  |             $warnings [] = $this->pageRepo->getUserPageDraftMessage($draft); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (count($warnings) > 0) session()->flash('warning', implode("\n", $warnings)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-16 21:51:45 +08:00
										 |  |  |         return view('pages/edit', ['page' => $page, 'book' => $book, 'current' => $page]); | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  |      * Update the specified page in storage. | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |      * @param  Request $request | 
					
						
							| 
									
										
										
										
											2015-08-29 22:03:42 +08:00
										 |  |  |      * @param          $bookSlug | 
					
						
							|  |  |  |      * @param          $pageSlug | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |      * @return Response | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |     public function update(Request $request, $bookSlug, $pageSlug) | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-12-28 23:58:13 +08:00
										 |  |  |         $this->validate($request, [ | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |             'name' => 'required|string|max:255' | 
					
						
							| 
									
										
										
										
											2015-12-28 23:58:13 +08:00
										 |  |  |         ]); | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							| 
									
										
										
										
											2015-07-16 05:55:49 +08:00
										 |  |  |         $page = $this->pageRepo->getBySlug($pageSlug, $book->id); | 
					
						
							| 
									
										
										
										
											2016-02-28 03:24:42 +08:00
										 |  |  |         $this->checkOwnablePermission('page-update', $page); | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  |         $this->pageRepo->updatePage($page, $book->id, $request->all()); | 
					
						
							| 
									
										
										
										
											2015-08-17 01:59:23 +08:00
										 |  |  |         Activity::add($page, 'page_update', $book->id); | 
					
						
							| 
									
										
										
										
											2015-07-13 04:31:15 +08:00
										 |  |  |         return redirect($page->getUrl()); | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-10 06:32:07 +08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Save a draft update as a revision. | 
					
						
							|  |  |  |      * @param Request $request | 
					
						
							|  |  |  |      * @param $pageId | 
					
						
							|  |  |  |      * @return \Illuminate\Http\JsonResponse | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |     public function saveDraft(Request $request, $pageId) | 
					
						
							| 
									
										
										
										
											2016-03-10 06:32:07 +08:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |         $page = $this->pageRepo->getById($pageId, true); | 
					
						
							| 
									
										
										
										
											2016-03-10 06:32:07 +08:00
										 |  |  |         $this->checkOwnablePermission('page-update', $page); | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |         if ($page->draft) { | 
					
						
							| 
									
										
										
										
											2016-03-25 22:41:15 +08:00
										 |  |  |             $draft = $this->pageRepo->updateDraftPage($page, $request->only(['name', 'html', 'markdown'])); | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2016-03-25 22:41:15 +08:00
										 |  |  |             $draft = $this->pageRepo->saveUpdateDraft($page, $request->only(['name', 'html', 'markdown'])); | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2016-04-09 20:36:32 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $updateTime = $draft->updated_at->timestamp; | 
					
						
							|  |  |  |         $utcUpdateTimestamp = $updateTime + Carbon::createFromTimestamp(0)->offset; | 
					
						
							|  |  |  |         return response()->json([ | 
					
						
							| 
									
										
										
										
											2016-06-12 19:14:14 +08:00
										 |  |  |             'status'    => 'success', | 
					
						
							|  |  |  |             'message'   => 'Draft saved at ', | 
					
						
							| 
									
										
										
										
											2016-04-09 20:36:32 +08:00
										 |  |  |             'timestamp' => $utcUpdateTimestamp | 
					
						
							|  |  |  |         ]); | 
					
						
							| 
									
										
										
										
											2016-03-10 06:32:07 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-22 03:13:29 +08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Redirect from a special link url which | 
					
						
							|  |  |  |      * uses the page id rather than the name. | 
					
						
							|  |  |  |      * @param $pageId | 
					
						
							|  |  |  |      * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-07-17 02:15:22 +08:00
										 |  |  |     public function redirectFromLink($pageId) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $page = $this->pageRepo->getById($pageId); | 
					
						
							|  |  |  |         return redirect($page->getUrl()); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Show the deletion page for the specified page. | 
					
						
							|  |  |  |      * @param $bookSlug | 
					
						
							|  |  |  |      * @param $pageSlug | 
					
						
							|  |  |  |      * @return \Illuminate\View\View | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-07-29 03:57:13 +08:00
										 |  |  |     public function showDelete($bookSlug, $pageSlug) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							|  |  |  |         $page = $this->pageRepo->getBySlug($pageSlug, $book->id); | 
					
						
							| 
									
										
										
										
											2016-02-28 03:24:42 +08:00
										 |  |  |         $this->checkOwnablePermission('page-delete', $page); | 
					
						
							| 
									
										
										
										
											2015-12-05 22:41:51 +08:00
										 |  |  |         $this->setPageTitle('Delete Page ' . $page->getShortName()); | 
					
						
							| 
									
										
										
										
											2015-08-16 21:51:45 +08:00
										 |  |  |         return view('pages/delete', ['book' => $book, 'page' => $page, 'current' => $page]); | 
					
						
							| 
									
										
										
										
											2015-07-29 03:57:13 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Show the deletion page for the specified page. | 
					
						
							|  |  |  |      * @param $bookSlug | 
					
						
							|  |  |  |      * @param $pageId | 
					
						
							|  |  |  |      * @return \Illuminate\View\View | 
					
						
							|  |  |  |      * @throws NotFoundException | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function showDeleteDraft($bookSlug, $pageId) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							|  |  |  |         $page = $this->pageRepo->getById($pageId, true); | 
					
						
							|  |  |  |         $this->checkOwnablePermission('page-update', $page); | 
					
						
							|  |  |  |         $this->setPageTitle('Delete Draft Page ' . $page->getShortName()); | 
					
						
							|  |  |  |         return view('pages/delete', ['book' => $book, 'page' => $page, 'current' => $page]); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  |      * Remove the specified page from storage. | 
					
						
							| 
									
										
										
										
											2015-07-29 03:57:13 +08:00
										 |  |  |      * @param $bookSlug | 
					
						
							|  |  |  |      * @param $pageSlug | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |      * @return Response | 
					
						
							| 
									
										
										
										
											2015-07-29 03:57:13 +08:00
										 |  |  |      * @internal param int $id | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-07-29 03:57:13 +08:00
										 |  |  |     public function destroy($bookSlug, $pageSlug) | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2015-07-29 03:57:13 +08:00
										 |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							|  |  |  |         $page = $this->pageRepo->getBySlug($pageSlug, $book->id); | 
					
						
							| 
									
										
										
										
											2016-02-28 03:24:42 +08:00
										 |  |  |         $this->checkOwnablePermission('page-delete', $page); | 
					
						
							| 
									
										
										
										
											2015-08-17 01:59:23 +08:00
										 |  |  |         Activity::addMessage('page_delete', $book->id, $page->name); | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |         session()->flash('success', 'Page deleted'); | 
					
						
							|  |  |  |         $this->pageRepo->destroy($page); | 
					
						
							|  |  |  |         return redirect($book->getUrl()); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Remove the specified draft page from storage. | 
					
						
							|  |  |  |      * @param $bookSlug | 
					
						
							|  |  |  |      * @param $pageId | 
					
						
							|  |  |  |      * @return Response | 
					
						
							|  |  |  |      * @throws NotFoundException | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function destroyDraft($bookSlug, $pageId) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							|  |  |  |         $page = $this->pageRepo->getById($pageId, true); | 
					
						
							|  |  |  |         $this->checkOwnablePermission('page-update', $page); | 
					
						
							|  |  |  |         session()->flash('success', 'Draft deleted'); | 
					
						
							| 
									
										
										
										
											2015-11-22 02:05:03 +08:00
										 |  |  |         $this->pageRepo->destroy($page); | 
					
						
							| 
									
										
										
										
											2015-07-29 03:57:13 +08:00
										 |  |  |         return redirect($book->getUrl()); | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Shows the last revisions for this page. | 
					
						
							|  |  |  |      * @param $bookSlug | 
					
						
							|  |  |  |      * @param $pageSlug | 
					
						
							|  |  |  |      * @return \Illuminate\View\View | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function showRevisions($bookSlug, $pageSlug) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							|  |  |  |         $page = $this->pageRepo->getBySlug($pageSlug, $book->id); | 
					
						
							| 
									
										
										
										
											2015-12-05 22:41:51 +08:00
										 |  |  |         $this->setPageTitle('Revisions For ' . $page->getShortName()); | 
					
						
							| 
									
										
										
										
											2015-08-16 21:51:45 +08:00
										 |  |  |         return view('pages/revisions', ['page' => $page, 'book' => $book, 'current' => $page]); | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Shows a preview of a single revision | 
					
						
							|  |  |  |      * @param $bookSlug | 
					
						
							|  |  |  |      * @param $pageSlug | 
					
						
							|  |  |  |      * @param $revisionId | 
					
						
							|  |  |  |      * @return \Illuminate\View\View | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function showRevision($bookSlug, $pageSlug, $revisionId) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							|  |  |  |         $page = $this->pageRepo->getBySlug($pageSlug, $book->id); | 
					
						
							|  |  |  |         $revision = $this->pageRepo->getRevisionById($revisionId); | 
					
						
							|  |  |  |         $page->fill($revision->toArray()); | 
					
						
							| 
									
										
										
										
											2015-12-05 22:41:51 +08:00
										 |  |  |         $this->setPageTitle('Page Revision For ' . $page->getShortName()); | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  |         return view('pages/revision', ['page' => $page, 'book' => $book]); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-19 02:40:33 +08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Restores a page using the content of the specified revision. | 
					
						
							|  |  |  |      * @param $bookSlug | 
					
						
							|  |  |  |      * @param $pageSlug | 
					
						
							|  |  |  |      * @param $revisionId | 
					
						
							|  |  |  |      * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  |     public function restoreRevision($bookSlug, $pageSlug, $revisionId) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							|  |  |  |         $page = $this->pageRepo->getBySlug($pageSlug, $book->id); | 
					
						
							| 
									
										
										
										
											2016-02-28 03:24:42 +08:00
										 |  |  |         $this->checkOwnablePermission('page-update', $page); | 
					
						
							| 
									
										
										
										
											2015-10-19 02:40:33 +08:00
										 |  |  |         $page = $this->pageRepo->restoreRevision($page, $book, $revisionId); | 
					
						
							| 
									
										
										
										
											2015-08-17 01:59:23 +08:00
										 |  |  |         Activity::add($page, 'page_restore', $book->id); | 
					
						
							| 
									
										
										
										
											2015-08-09 19:06:52 +08:00
										 |  |  |         return redirect($page->getUrl()); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-01-21 06:13:13 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-01 01:53:30 +08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Exports a page to pdf format using barryvdh/laravel-dompdf wrapper. | 
					
						
							|  |  |  |      * https://github.com/barryvdh/laravel-dompdf | 
					
						
							|  |  |  |      * @param $bookSlug | 
					
						
							|  |  |  |      * @param $pageSlug | 
					
						
							|  |  |  |      * @return \Illuminate\Http\Response | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-01-21 06:13:13 +08:00
										 |  |  |     public function exportPdf($bookSlug, $pageSlug) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							|  |  |  |         $page = $this->pageRepo->getBySlug($pageSlug, $book->id); | 
					
						
							| 
									
										
										
										
											2016-02-01 01:53:30 +08:00
										 |  |  |         $pdfContent = $this->exportService->pageToPdf($page); | 
					
						
							|  |  |  |         return response()->make($pdfContent, 200, [ | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |             'Content-Type'        => 'application/octet-stream', | 
					
						
							|  |  |  |             'Content-Disposition' => 'attachment; filename="' . $pageSlug . '.pdf' | 
					
						
							| 
									
										
										
										
											2016-02-01 01:53:30 +08:00
										 |  |  |         ]); | 
					
						
							| 
									
										
										
										
											2016-01-21 06:13:13 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Export a page to a self-contained HTML file. | 
					
						
							|  |  |  |      * @param $bookSlug | 
					
						
							|  |  |  |      * @param $pageSlug | 
					
						
							|  |  |  |      * @return \Illuminate\Http\Response | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function exportHtml($bookSlug, $pageSlug) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							|  |  |  |         $page = $this->pageRepo->getBySlug($pageSlug, $book->id); | 
					
						
							|  |  |  |         $containedHtml = $this->exportService->pageToContainedHtml($page); | 
					
						
							|  |  |  |         return response()->make($containedHtml, 200, [ | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |             'Content-Type'        => 'application/octet-stream', | 
					
						
							|  |  |  |             'Content-Disposition' => 'attachment; filename="' . $pageSlug . '.html' | 
					
						
							| 
									
										
										
										
											2016-01-21 06:13:13 +08:00
										 |  |  |         ]); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-02-01 01:53:30 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Export a page to a simple plaintext .txt file. | 
					
						
							|  |  |  |      * @param $bookSlug | 
					
						
							|  |  |  |      * @param $pageSlug | 
					
						
							|  |  |  |      * @return \Illuminate\Http\Response | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function exportPlainText($bookSlug, $pageSlug) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							|  |  |  |         $page = $this->pageRepo->getBySlug($pageSlug, $book->id); | 
					
						
							|  |  |  |         $containedHtml = $this->exportService->pageToPlainText($page); | 
					
						
							|  |  |  |         return response()->make($containedHtml, 200, [ | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |             'Content-Type'        => 'application/octet-stream', | 
					
						
							|  |  |  |             'Content-Disposition' => 'attachment; filename="' . $pageSlug . '.txt' | 
					
						
							| 
									
										
										
										
											2016-02-01 01:53:30 +08:00
										 |  |  |         ]); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-21 02:51:01 +08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Show a listing of recently created pages | 
					
						
							|  |  |  |      * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function showRecentlyCreated() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $pages = $this->pageRepo->getRecentlyCreatedPaginated(20); | 
					
						
							|  |  |  |         return view('pages/detailed-listing', [ | 
					
						
							|  |  |  |             'title' => 'Recently Created Pages', | 
					
						
							|  |  |  |             'pages' => $pages | 
					
						
							|  |  |  |         ]); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Show a listing of recently created pages | 
					
						
							|  |  |  |      * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function showRecentlyUpdated() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $pages = $this->pageRepo->getRecentlyUpdatedPaginated(20); | 
					
						
							|  |  |  |         return view('pages/detailed-listing', [ | 
					
						
							|  |  |  |             'title' => 'Recently Updated Pages', | 
					
						
							|  |  |  |             'pages' => $pages | 
					
						
							|  |  |  |         ]); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-28 18:49:41 +08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Show the Restrictions view. | 
					
						
							|  |  |  |      * @param $bookSlug | 
					
						
							|  |  |  |      * @param $pageSlug | 
					
						
							|  |  |  |      * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function showRestrict($bookSlug, $pageSlug) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							|  |  |  |         $page = $this->pageRepo->getBySlug($pageSlug, $book->id); | 
					
						
							|  |  |  |         $this->checkOwnablePermission('restrictions-manage', $page); | 
					
						
							|  |  |  |         $roles = $this->userRepo->getRestrictableRoles(); | 
					
						
							|  |  |  |         return view('pages/restrictions', [ | 
					
						
							| 
									
										
										
										
											2016-03-13 20:04:08 +08:00
										 |  |  |             'page'  => $page, | 
					
						
							| 
									
										
										
										
											2016-02-28 18:49:41 +08:00
										 |  |  |             'roles' => $roles | 
					
						
							|  |  |  |         ]); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-12 04:04:18 +08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Show the view to choose a new parent to move a page into. | 
					
						
							|  |  |  |      * @param $bookSlug | 
					
						
							|  |  |  |      * @param $pageSlug | 
					
						
							|  |  |  |      * @return mixed | 
					
						
							|  |  |  |      * @throws NotFoundException | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function showMove($bookSlug, $pageSlug) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							|  |  |  |         $page = $this->pageRepo->getBySlug($pageSlug, $book->id); | 
					
						
							|  |  |  |         $this->checkOwnablePermission('page-update', $page); | 
					
						
							|  |  |  |         return view('pages/move', [ | 
					
						
							|  |  |  |             'book' => $book, | 
					
						
							|  |  |  |             'page' => $page | 
					
						
							|  |  |  |         ]); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-25 22:31:38 +08:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Does the action of moving the location of a page | 
					
						
							|  |  |  |      * @param $bookSlug | 
					
						
							|  |  |  |      * @param $pageSlug | 
					
						
							|  |  |  |      * @param Request $request | 
					
						
							|  |  |  |      * @return mixed | 
					
						
							|  |  |  |      * @throws NotFoundException | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2016-06-12 19:14:14 +08:00
										 |  |  |     public function move($bookSlug, $pageSlug, Request $request) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							|  |  |  |         $page = $this->pageRepo->getBySlug($pageSlug, $book->id); | 
					
						
							|  |  |  |         $this->checkOwnablePermission('page-update', $page); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $entitySelection = $request->get('entity_selection', null); | 
					
						
							|  |  |  |         if ($entitySelection === null || $entitySelection === '') { | 
					
						
							|  |  |  |             return redirect($page->getUrl()); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $stringExploded = explode(':', $entitySelection); | 
					
						
							|  |  |  |         $entityType = $stringExploded[0]; | 
					
						
							|  |  |  |         $entityId = intval($stringExploded[1]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $parent = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if ($entityType == 'chapter') { | 
					
						
							|  |  |  |             $parent = $this->chapterRepo->getById($entityId); | 
					
						
							|  |  |  |         } else if ($entityType == 'book') { | 
					
						
							|  |  |  |             $parent = $this->bookRepo->getById($entityId); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if ($parent === false || $parent === null) { | 
					
						
							|  |  |  |             session()->flash('The selected Book or Chapter was not found'); | 
					
						
							|  |  |  |             return redirect()->back(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->pageRepo->changePageParent($page, $parent); | 
					
						
							|  |  |  |         Activity::add($page, 'page_move', $page->book->id); | 
					
						
							|  |  |  |         session()->flash('success', sprintf('Page moved to "%s"', $parent->name)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return redirect($page->getUrl()); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-28 18:49:41 +08:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2016-05-02 04:20:50 +08:00
										 |  |  |      * Set the permissions for this page. | 
					
						
							| 
									
										
										
										
											2016-02-28 18:49:41 +08:00
										 |  |  |      * @param $bookSlug | 
					
						
							|  |  |  |      * @param $pageSlug | 
					
						
							|  |  |  |      * @param Request $request | 
					
						
							|  |  |  |      * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function restrict($bookSlug, $pageSlug, Request $request) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $book = $this->bookRepo->getBySlug($bookSlug); | 
					
						
							|  |  |  |         $page = $this->pageRepo->getBySlug($pageSlug, $book->id); | 
					
						
							|  |  |  |         $this->checkOwnablePermission('restrictions-manage', $page); | 
					
						
							| 
									
										
										
										
											2016-05-02 04:20:50 +08:00
										 |  |  |         $this->pageRepo->updateEntityPermissionsFromRequest($request, $page); | 
					
						
							|  |  |  |         session()->flash('success', 'Page Permissions Updated'); | 
					
						
							| 
									
										
										
										
											2016-02-28 18:49:41 +08:00
										 |  |  |         return redirect($page->getUrl()); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 03:01:42 +08:00
										 |  |  | } |