/** * Index page */ public function indexAction() { $receivedPath = $this->getReceivedPath(); $pageName = end($receivedPath); // get current user's role and current site's language $userRole = $this->userIdentity()['role']; $language = $this->localization()['language']; // get a page info if (!$pageName || false == ($pageInfo = $this->getModel()->getActivePageInfo($pageName, $userRole, $language))) { return $this->createHttpNotFoundModel($this->getResponse()); } // get the page's parents $pageParents = $pageInfo['level'] > 1 ? $this->getModel()->getActivePageParents($pageInfo['left_key'], $pageInfo['right_key'], $userRole, $language, false) : [$pageInfo]; // get the page's breadcrumb if (false === ($breadcrumb = $this->getPageBreadcrumb($pageParents, $pageInfo['level'] > 1))) { return $this->createHttpNotFoundModel($this->getResponse()); } // show a disabled site message if (true !== DisableSiteUtility::isAllowedViewSite()) { $this->getResponse()->setStatusCode(Response::STATUS_CODE_503); // set the page variables $viewModel = new ViewModel(['message' => $this->applicationSetting('application_disable_site_message')]); $viewModel->setTemplate($this->getModel()->getLayoutPath() . 'layout-disabled-site'); $this->layout('layout/blank'); return $viewModel; } // fire the page show event PageEvent::firePageShowEvent($pageInfo['slug'], $language); // check for redirect if ($pageInfo['redirect_url']) { $response = $this->redirect()->toUrl($pageInfo['redirect_url']); $response->setStatusCode(Response::STATUS_CODE_301); return $response; } $request = $this->getRequest(); $widgetConnectionId = $this->params()->fromQuery('widget_connection', null); $widgetPosition = $this->params()->fromQuery('widget_position', null); PageService::setCurrentPage($pageInfo); // get only a specific widget info if ($request->isXmlHttpRequest() && null !== $widgetConnectionId && null !== $widgetPosition) { // set the page variables $viewModel = new ViewModel(['page' => $pageInfo, 'widget_connection' => $widgetConnectionId, 'widget_position' => $widgetPosition]); // set a custom page layout $viewModel->setTerminal(true)->setTemplate($this->getModel()->getLayoutPath() . 'layout-ajax'); return $viewModel; } // passing the current page info to the layout $this->layout()->setVariable('page', $pageInfo); // set the page variables $viewModel = new ViewModel(['page' => $pageInfo, 'breadcrumb' => $breadcrumb]); // set a custom page layout $viewModel->setTemplate($this->getModel()->getLayoutPath() . $pageInfo['layout']); return $viewModel; }
/** * Get pages * * @param string $language * @return array * boolean url_active * string url_title * array url_params * array xml_map * string lastmod * string changefreq * string priority * array children */ public function getPages($language) { if (null === self::$pages) { self::$pages = []; $users = $this->getModel()->getAllActiveUsers(); $currentPage = PageService::getCurrentPage(); if (count($users)) { foreach ($users as $user) { self::$pages[] = ['url_active' => !empty($currentPage['slug']) && $currentPage['slug'] == $this->dynamicPageName && RouteParamUtility::getParam('slug') == $user['slug'], 'url_title' => $user['nick_name'], 'url_params' => ['slug' => $user['slug']], 'xml_map' => ['lastmod' => $user['date_edited'], 'changefreq' => null, 'priority' => null], 'children' => []]; } } } return self::$pages; }
/** * Get widget content * * @return string|boolean */ public function getContent() { if (null != ($currentPage = PageService::getCurrentPage())) { $menuType = $this->getWidgetSetting('page_sidebar_menu_type'); $showDynamicPages = (int) $this->getWidgetSetting('page_sidebar_menu_show_dynamic'); $currentLanguage = LocalizationService::getCurrentLocalization()['language']; $pages = []; // collect sidebar menu items foreach ($this->getModel()->getPagesMap($currentLanguage) as $page) { // check the type of menu if ($page['parent'] != ($menuType == 'sidebar_menu_subpages' ? $currentPage['slug'] : $currentPage['parent_slug'])) { continue; } // get dynamic pages if (!empty($page['pages_provider'])) { if ($showDynamicPages) { if (null != ($dynamicPages = PageProviderUtility::getPages($page['pages_provider'], $currentLanguage))) { // process only the first pages level foreach ($dynamicPages as $dynamicPage) { // check received params if (!isset($dynamicPage['url_params'], $dynamicPage['url_title'])) { continue; } if (false !== ($pageUrl = $this->getView()->pageUrl($page['slug'], [], $currentLanguage, true))) { $pages[] = ['active' => !empty($dynamicPage['url_active']), 'url' => $pageUrl, 'title' => $dynamicPage['url_title'], 'params' => $dynamicPage['url_params']]; } } } } } else { // get a page url if (false === ($pageUrl = $this->getView()->pageUrl($page['slug']))) { continue; } $pages[] = ['active' => $currentPage['slug'] == $page['slug'], 'url' => $pageUrl, 'title' => $this->getView()->pageTitle($page)]; } } if ($pages) { return $this->getView()->partial('page/widget/sidebar-menu', ['pages' => $pages]); } } return false; }
/** * Get page slug * * @return string|integer */ protected function getPageSlug() { return !empty(PageService::getCurrentPage()['pages_provider']) ? $this->getSlug() : null; }
/** * Is it page of news list * * @return boolean */ protected function isNewsListPage() { return self::NEWS_LIST_PAGE == PageService::getCurrentPage()['slug']; }
/** * Class constructor * * @param array $pagesTree */ public function __construct(array $pagesTree = []) { $this->pagesTree = $pagesTree; $this->currentPage = PageService::getCurrentPage(); }
/** * Is it shopping cart page * * @return boolean */ protected function isShoppingCartPage() { return !empty(PageService::getCurrentPage()['slug']) && self::SHOPPING_CART_PAGE == PageService::getCurrentPage()['slug']; }