/** * Creates a new CMS page * * @return ViewModel */ public function newAction() { if (!$this->rcmIsAllowed('sites.' . $this->currentSite->getSiteId() . '.pages', 'create')) { $response = new Response(); $response->setStatusCode('401'); return $response; } /** @var \RcmAdmin\Form\NewPageForm $form */ $form = $this->getServiceLocator()->get('FormElementManager')->get('RcmAdmin\\Form\\NewPageForm'); /** @var \Zend\Http\Request $request */ $request = $this->request; if ($request->isGet()) { $form->get('url')->setValue($request->getQuery('url')); } $data = $request->getPost(); $form->setValidationGroup('url'); $form->setData($data); if ($request->isPost() && $form->isValid()) { $validatedData = $form->getData(); // Create a new page if (empty($validatedData['page-template']) && !empty($validatedData['main-layout'])) { $pageData = ['name' => $validatedData['url'], 'pageTitle' => $validatedData['title'], 'siteLayoutOverride' => $validatedData['main-layout'], 'author' => $this->rcmUserGetCurrentUser()->getName()]; $this->pageRepo->createPage($this->currentSite, $pageData); } elseif (!empty($validatedData['page-template'])) { /** @var \Rcm\Entity\Page $page */ $page = $this->pageRepo->findOneBy(['pageId' => $validatedData['page-template'], 'pageType' => 't']); if (empty($page)) { throw new PageNotFoundException('No template found for page id: ' . $validatedData['page-template']); } $pageData = ['author' => $this->rcmUserGetCurrentUser()->getName(), 'name' => $validatedData['url'], 'pageTitle' => $validatedData['title'], 'pageType' => 'n']; $this->pageRepo->copyPage($this->currentSite, $page, $pageData); } $this->view->setVariable('newPageUrl', $this->urlToPage($validatedData['url'], 'n')); $this->view->setTemplate('rcm-admin/page/success'); return $this->view; } elseif ($request->isPost() && !$form->isValid()) { $this->view->setVariable('errors', $form->getMessages()); } $this->view->setVariable('form', $form); return $this->view; }