]> BookStack Code Mirror - bookstack/blobdiff - app/Http/Controllers/PageController.php
Add prev and next button to navigate through different pages
[bookstack] / app / Http / Controllers / PageController.php
index 7d8e54382961006db647b5f1b1b4fe9982337a2d..2bfd55fa0cf07b1797a22d31060773d6e34ec758 100644 (file)
@@ -142,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', [
@@ -150,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
         ]);
     }