/** * 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; }