Beispiel #1
0
 /**
  * Save data from editing a page
  * @param integer $pageId
  */
 public function actionSavePage($pageId)
 {
     $data = json_decode($this->post['data']);
     switch ($data->status) {
         case 'delete':
             if ($page = $this->_em->getRepository('\\Jazzee\\Entity\\Page')->findOneBy(array('id' => $pageId, 'isGlobal' => true))) {
                 $applicationPages = $this->_em->getRepository('\\Jazzee\\Entity\\ApplicationPage')->findBy(array('page' => $page->getId()));
                 if ($applicationPages) {
                     $this->setLayoutVar('status', 'error');
                     $this->addMessage('error', $page->getTitle() . ' could not be deleted becuase it is part of at least one application');
                 } else {
                     if ($this->_em->getRepository('\\Jazzee\\Entity\\Page')->hasAnswers($page)) {
                         $this->setLayoutVar('status', 'error');
                         $this->addMessage('error', $page->getTitle() . '  could not be deleted becuase it has applicant information associated with it.');
                     } else {
                         $this->addMessage('success', $page->getTitle() . ' deleted');
                         $this->_em->remove($page);
                     }
                 }
             }
             break;
         case 'import':
             $page = new \Jazzee\Entity\Page();
             $page->makeGlobal();
             $page->setType($this->_em->getRepository('\\Jazzee\\Entity\\PageType')->find($data->typeId));
             $page->setUuid($data->uuid);
             $this->savePage($page, $data);
             break;
         case 'new':
         case 'copy':
             $page = new \Jazzee\Entity\Page();
             $page->makeGlobal();
             $page->setType($this->_em->getRepository('\\Jazzee\\Entity\\PageType')->find($data->typeId));
             //create a fake application page to work with so we can run setupNewPage
             $page->getApplicationPageJazzeePage()->setController($this);
             //only do setup for new pages, copies already have elements
             if ($data->status == 'new') {
                 $page->getApplicationPageJazzeePage()->setupNewPage();
             }
             $this->addMessage('success', $data->title . ' created.');
             $this->savePage($page, $data);
             break;
         default:
             $page = $this->_em->getRepository('\\Jazzee\\Entity\\Page')->findOneBy(array('id' => $pageId, 'isGlobal' => true));
             $this->savePage($page, $data);
     }
 }
 /**
  * Copy a Page
  * @param \Doctrine\ORM\EntityManager $em
  * @param \Jazzee\Entity\Page $page
  * @return \Jazzee\Entity\Page
  */
 public function copyPage(\Doctrine\ORM\EntityManager $em, \Jazzee\Entity\Page $page)
 {
     $newPage = new \Jazzee\Entity\Page();
     $newPage->setTitle($page->getTitle());
     $newPage->setMax($page->getMax());
     $newPage->setInstructions($page->getInstructions());
     $newPage->setLeadingText($page->getLeadingText());
     $newPage->setTrailingText($page->getTrailingText());
     $newPage->setFixedId($page->getFixedId());
     $newPage->setType($em->getRepository('\\Jazzee\\Entity\\PageType')->findOneByClass($page->getType()->getClass()));
     if ($page->isGlobal()) {
         $newPage->makeGlobal();
     } else {
         $newPage->notGlobal();
     }
     if ($page->isRequired()) {
         $newPage->required();
     } else {
         $newPage->optional();
     }
     foreach ($page->getChildren() as $child) {
         $newPage->addChild($this->copyPage($em, $child));
     }
     foreach ($page->getVariables() as $variable) {
         $newPage->setVar($variable->getName(), $variable->getValue());
     }
     foreach ($newPage->getVariables() as $variable) {
         $em->persist($variable);
     }
     foreach ($page->getElements() as $element) {
         $newElement = new \Jazzee\Entity\Element();
         $newElement->setType($em->getRepository('\\Jazzee\\Entity\\ElementType')->findOneByClass($element->getType()->getClass()));
         $newElement->setWeight($element->getWeight());
         $newElement->setFixedId($element->getFixedId());
         $newElement->setTitle($element->getTitle());
         $newElement->setMax($element->getMax());
         $newElement->setMin($element->getMin());
         $newElement->setInstructions($element->getInstructions());
         $newElement->setDefaultValue($element->getDefaultValue());
         $newElement->setFormat($element->getFormat());
         if ($element->isRequired()) {
             $newElement->required();
         } else {
             $newElement->optional();
         }
         foreach ($element->getListItems() as $item) {
             $newItem = new \Jazzee\Entity\ElementListItem();
             $newItem->setValue($item->getValue());
             $newItem->setWeight($item->getWeight());
             $newElement->addItem($newItem);
             $em->persist($newItem);
         }
         $em->persist($newElement);
         $newPage->addElement($newElement);
     }
     $em->persist($newPage);
     return $newPage;
 }