Esempio n. 1
0
 /**
  * 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;
 }