/**
  * Register bindings in the container.
  *
  * @return void
  */
 public function boot()
 {
     view()->composer('frontend.layout', function ($view) {
         $contentPages = Cache::remember('contentPages', 10, function () {
             return Page::sorted()->whereNull('parent_id')->with(['childs.pageable', 'childs.parent', 'pageable'])->get();
         });
         $view->with('contentPages', $contentPages);
     });
 }
 /**
  * @param Page $pagerCurrentPage
  * @return IlluminateCollection
  */
 protected function getPager($pagerCurrentPage)
 {
     $pagerCurrentPage = $pagerCurrentPage->id ? $pagerCurrentPage : Page::sorted()->visible()->first();
     $pager = new IlluminateCollection();
     $pager->push($pagerCurrentPage);
     // e.g. page 6
     /** @var Collection $previousPages */
     $previousPages = $pagerCurrentPage->previous(4)->visible()->with(['pageable', 'parent'])->get();
     // 5 4 3 2
     /** @var Collection $nextPages */
     $nextPages = $pagerCurrentPage->next(4)->visible()->with(['pageable', 'parent'])->get();
     // 7 8 9 10
     do {
         $prevPage = $previousPages->shift();
         if ($prevPage) {
             $pager->prepend($prevPage);
         }
         $nextPage = $nextPages->shift();
         if ($nextPage) {
             $pager->push($nextPage);
         }
     } while ($pager->count() < 5 && ($previousPages->count() > 0 || $nextPages->count() > 0));
     return $pager;
 }
 public function index()
 {
     return view('dashboard.page.index', ['pages' => Page::sorted()->with('parent')->get()]);
 }