public function getList($pageId = 0)
 {
     $page = Page::find($pageId);
     if (!empty($page)) {
         $block_cats = Template::template_blocks(config('coaster::frontend.theme'), $page->template);
         foreach ($block_cats as $block_cat) {
             foreach ($block_cat as $block) {
                 if ($block->type == 'gallery') {
                     $gallery_blocks[] = $block;
                 }
             }
         }
     }
     if (isset($gallery_blocks)) {
         if (count($gallery_blocks) == 1) {
             return \redirect()->route('coaster.admin.gallery.edit', ['pageId' => $pageId, 'blockId' => $gallery_blocks[0]->id]);
         }
         $page_lang_data = PageLang::preload($pageId);
         if (!empty($page_lang_data)) {
             $name = $page_lang_data->name;
             if ($page->parent != 0) {
                 $parent_lang_data = PageLang::preload($page->parent);
                 $name = $parent_lang_data->name . " / " . $name;
             }
         } else {
             $name = '';
         }
         $this->layoutData['content'] = View::make('coaster::pages.gallery.list', array('page_name' => $name, 'page_id' => $pageId, 'galleries' => $gallery_blocks));
     } else {
         $this->layoutData['content'] = 'No Galleries Found';
     }
     return null;
 }
Example #2
0
 /**
  * @param $blockId
  * @param $pageId
  * @return static|null
  */
 public static function getBlockOnPage($blockId, $pageId)
 {
     if ($page = Page::find($pageId)) {
         $blocksByCat = Template::template_blocks(config('coaster::frontend.theme'), $page->template);
     } else {
         $blocksByCat = Theme::theme_blocks(config('coaster::frontend.theme'));
     }
     foreach ($blocksByCat as $blocks) {
         foreach ($blocks as $block) {
             if ($block->id == $blockId) {
                 return static::find($blockId);
             }
         }
     }
     return null;
 }
 public function getEdit($pageId, $versionId = 0)
 {
     // get page data
     if (!($page = Page::find($pageId))) {
         return 'Page Not Found';
     }
     PageVersionSchedule::checkPageVersionIds();
     $publishingOn = config('coaster::admin.publishing') > 0;
     $auth = ['can_publish' => $publishingOn && Auth::action('pages.version-publish', ['page_id' => $pageId]) || !$publishingOn && Auth::action('pages.edit', ['page_id' => $pageId]), 'can_duplicate' => $page->canDuplicate()];
     // get page lang data
     if (!($page_lang = $page->pageCurrentLang)) {
         if (!($page_lang = $page->pageDefaultLang)) {
             return 'Page Lang Data Not Found';
         }
         $page_lang = $page_lang->replicate();
         $page_lang->language_id = Language::current();
         $page_lang->save();
     }
     $page_lang->url = ltrim($page_lang->url, '/');
     // get version data
     $versionData = [];
     $versionData['latest'] = PageVersion::latest_version($pageId);
     $versionData['editing'] = $versionId == 0 || $versionId > $versionData['latest'] ? $versionData['latest'] : $versionId;
     $versionData['live'] = $page_lang->live_version;
     // get frontend link (preview or direct link if document)
     $frontendLink = Path::getFullUrl($pageId);
     if (!$page->is_live() && $page->link == 0) {
         $live_page_version = PageVersion::where('page_id', '=', $pageId)->where('version_id', '=', $versionData['live'])->first();
         if (!empty($live_page_version)) {
             $frontendLink .= '?preview=' . $live_page_version->preview_key;
         }
     }
     // if loading a non live version get version template rather than current page template
     if ($versionData['live'] != $versionData['editing']) {
         if ($page_version = PageVersion::where('version_id', '=', $versionData['editing'])->where('page_id', '=', $pageId)->first()) {
             $page->template = $page_version->template;
         } else {
             return 'Page Version Data Not Found';
         }
     }
     // load blocks content
     if ($page->link == 0) {
         $blocks = Template::template_blocks(config('coaster::frontend.theme'), $page->template);
         $blocks_content = PageBlock::preloadPage($pageId, $versionData['editing']);
         list($tab_headers, $tab_contents) = Block::getTabs($blocks, $blocks_content, $page->id);
     } else {
         $tab_headers = [];
         $tab_contents = [];
     }
     // load page info and order so page info is first and block categories are in order
     list($tab_headers[0], $tab_contents[0]) = $page->tabInfo();
     ksort($tab_headers);
     // load version / publish requests
     if ($publishingOn && count($tab_headers) > 1) {
         $tab_headers[-1] = 'Versions';
         $tab_contents[-1] = View::make('coaster::partials.tabs.versions.main', ['content' => PageVersion::version_table($page->id)])->render();
         list($tab_headers[-2], $tab_contents[-2]) = $page->tabRequests();
     }
     // remove empty tabs
     $tab_headers = array_filter($tab_headers);
     // get item name, or default to page
     $item_name = $page->groupItemsNames() ?: 'Page';
     $tab_data = ['headers' => View::make('coaster::partials.tabs.header', ['tabs' => $tab_headers])->render(), 'contents' => View::make('coaster::partials.tabs.content', ['tabs' => $tab_contents, 'item' => $item_name, 'new_page' => false, 'publishing' => $publishingOn, 'can_publish' => $auth['can_publish'], 'page' => $page])->render()];
     // add required modals
     if ($publishingOn) {
         $intervals = PageVersionSchedule::selectOptions();
         $this->layoutData['modals'] = View::make('coaster::modals.pages.publish')->render() . View::make('coaster::modals.pages.publish_schedule', ['intervals' => $intervals, 'live_version' => $versionData['live']])->render() . View::make('coaster::modals.pages.request_publish')->render() . View::make('coaster::modals.pages.rename_version')->render();
     }
     $this->layoutData['content'] = View::make('coaster::pages.pages.edit', ['page' => $page, 'page_lang' => $page_lang, 'item_name' => $item_name, 'publishingOn' => $publishingOn, 'tab' => $tab_data, 'frontendLink' => $frontendLink, 'version' => $versionData, 'auth' => $auth]);
     return null;
 }