Example #1
0
 /**
  * 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;
 }
Example #2
0
 /**
  * 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;
 }
Example #4
0
 /**
  * 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'];
 }
Example #6
0
 /**
  * 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'];
 }