mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-10-01 01:36:00 -04:00
Merge branch 'prev-next-button' of https://github.com/shubhamosmosys/BookStack into shubhamosmosys-prev-next-button
This commit is contained in:
commit
7ca66c5d5e
@ -138,4 +138,13 @@ class Page extends BookChild
|
|||||||
$refreshed->html = (new PageContent($refreshed))->render();
|
$refreshed->html = (new PageContent($refreshed))->render();
|
||||||
return $refreshed;
|
return $refreshed;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Get the parent chapter ID.
|
||||||
|
*/
|
||||||
|
public function getParentChapter()
|
||||||
|
{
|
||||||
|
$chapterId = $this->chapter()->visible()
|
||||||
|
->get('id');
|
||||||
|
return $chapterId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -468,4 +468,10 @@ class PageRepo
|
|||||||
->where('page_id', '=', $page->id)
|
->where('page_id', '=', $page->id)
|
||||||
->orderBy('created_at', 'desc');
|
->orderBy('created_at', 'desc');
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Get page details by chapter ID.
|
||||||
|
*/
|
||||||
|
public function getPageByChapterID(int $id){
|
||||||
|
return Page::visible()->where('chapter_id', '=', $id)->get(['id','slug']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -142,6 +142,39 @@ class PageController extends Controller
|
|||||||
$page->load(['comments.createdBy']);
|
$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";
|
||||||
|
}
|
||||||
|
|
||||||
View::incrementFor($page);
|
View::incrementFor($page);
|
||||||
$this->setPageTitle($page->getShortName());
|
$this->setPageTitle($page->getShortName());
|
||||||
return view('pages.show', [
|
return view('pages.show', [
|
||||||
@ -150,7 +183,11 @@ class PageController extends Controller
|
|||||||
'current' => $page,
|
'current' => $page,
|
||||||
'sidebarTree' => $sidebarTree,
|
'sidebarTree' => $sidebarTree,
|
||||||
'commentsEnabled' => $commentsEnabled,
|
'commentsEnabled' => $commentsEnabled,
|
||||||
'pageNav' => $pageNav
|
'pageNav' => $pageNav,
|
||||||
|
'prevPage' => $prevPage,
|
||||||
|
'nextPage' => $nextPage,
|
||||||
|
'disablePrev' => $disablePrev,
|
||||||
|
'disableNxt' => $disableNxt
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,6 +62,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@include smaller-than($m) {
|
@include smaller-than($m) {
|
||||||
|
.grid.third.prev-next:not(.no-break) {
|
||||||
|
grid-template-columns: 1fr 1fr 1fr;
|
||||||
|
}
|
||||||
.grid.third:not(.no-break) {
|
.grid.third:not(.no-break) {
|
||||||
grid-template-columns: 1fr 1fr;
|
grid-template-columns: 1fr 1fr;
|
||||||
}
|
}
|
||||||
@ -81,12 +84,24 @@
|
|||||||
.grid.right-focus.reverse-collapse > *:nth-child(1) {
|
.grid.right-focus.reverse-collapse > *:nth-child(1) {
|
||||||
order: 1;
|
order: 1;
|
||||||
}
|
}
|
||||||
|
.grid.third:not(.no-break) .text-m-left {
|
||||||
|
margin-left: 20%;
|
||||||
|
}
|
||||||
|
.grid.third:not(.no-break) .text-m-right {
|
||||||
|
margin-left: 45%;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@include smaller-than($s) {
|
@include smaller-than($s) {
|
||||||
.grid.third:not(.no-break) {
|
.grid.third:not(.no-break) {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
|
.grid.third:not(.no-break) .text-m-left {
|
||||||
|
margin-left: 18%;
|
||||||
|
}
|
||||||
|
.grid.third:not(.no-break) .text-m-right {
|
||||||
|
margin-left: 20%;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@include smaller-than($xs) {
|
@include smaller-than($xs) {
|
||||||
@ -367,3 +382,7 @@ body.flexbox {
|
|||||||
margin-inline-end: 0;
|
margin-inline-end: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.prev-next-btn {
|
||||||
|
height: 50px;
|
||||||
|
}
|
||||||
|
@ -112,6 +112,12 @@ a {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a.disabled {
|
||||||
|
pointer-events: none;
|
||||||
|
cursor: default;
|
||||||
|
opacity: 0.6;
|
||||||
|
}
|
||||||
|
|
||||||
.blended-links a {
|
.blended-links a {
|
||||||
color: inherit;
|
color: inherit;
|
||||||
svg {
|
svg {
|
||||||
|
@ -17,6 +17,18 @@
|
|||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
|
<div class="prev-next-btn">
|
||||||
|
<div class="grid third no-row-gap prev-next">
|
||||||
|
<div class="text-m-left">
|
||||||
|
<a class="{{ $disablePrev }}" href="{{ $prevPage }}">Previous Page</a>
|
||||||
|
</div>
|
||||||
|
<div></div>
|
||||||
|
<div class="text-m-right">
|
||||||
|
<a class="{{ $disableNxt }}" href="{{ $nextPage }}">Next Page</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
@if ($commentsEnabled)
|
@if ($commentsEnabled)
|
||||||
<div class="container small p-none comments-container mb-l print-hidden">
|
<div class="container small p-none comments-container mb-l print-hidden">
|
||||||
@include('comments.comments', ['page' => $page])
|
@include('comments.comments', ['page' => $page])
|
||||||
|
Loading…
Reference in New Issue
Block a user