コード例 #1
0
ファイル: manage_globalpages.php プロジェクト: Jazzee/Jazzee
 /**
  * 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);
     }
 }
コード例 #2
0
ファイル: PageBuilder.php プロジェクト: Jazzee/Jazzee
 /**
  * Save a page
  * @param \Jazzee\Entity\Page $page
  */
 public function savePage($page, $data)
 {
     $htmlPurifier = $this->getFilter();
     $page->setTitle($htmlPurifier->purify($data->title));
     $page->setMin(empty($data->min) ? null : $data->min);
     $page->setMax(empty($data->max) ? null : $data->max);
     if ($data->isRequired) {
         $page->required();
     } else {
         $page->optional();
     }
     $page->hideAnswerStatus();
     if ($data->answerStatusDisplay) {
         if ($page instanceof \Jazzee\Entity\ApplicationPage) {
             $interfaces = class_implements($page->getPage()->getType()->getClass());
         } else {
             $interfaces = class_implements($page->getType()->getClass());
         }
         if (in_array('Jazzee\\Interfaces\\StatusPage', $interfaces)) {
             $page->showAnswerStatus();
         }
     }
     $page->setInstructions(empty($data->instructions) ? null : $htmlPurifier->purify($data->instructions));
     $page->setLeadingText(empty($data->leadingText) ? null : $htmlPurifier->purify($data->leadingText));
     $page->setTrailingText(empty($data->trailingText) ? null : $htmlPurifier->purify($data->trailingText));
     $this->_em->persist($page);
     if ($page instanceof \Jazzee\Entity\ApplicationPage) {
         $page->setWeight($data->weight);
         $page->setName($data->name);
         //if this is a global page then we are done
         //programs can't edit any of the remaining properties on a globa page
         if ($page->getPage()->isGlobal()) {
             $this->addMessage('success', $page->getTitle() . ' page saved.');
             return;
         }
         //otherwise continue making changes by swaping the $page varialbe for the correct \Jazzee\Entity\Page class
         $page = $page->getPage();
     }
     $page->setFixedId(empty($data->fixedId) ? null : $data->fixedId);
     foreach ($data->variables as $v) {
         $jazzeePage = $page->getApplicationPageJazzeePage();
         $jazzeePage->setController($this);
         $jazzeePage->setVar($v->name, $v->value);
     }
     $this->savePageElements($page, $data->elements);
     foreach ($data->children as $child) {
         switch ($child->status) {
             case 'delete':
                 $childPage = $page->getChildById($child->id);
                 if ($childPage) {
                     $this->log(" ==> about to delete child");
                     $this->_em->remove($childPage);
                     $page->getChildren()->removeElement($childPage);
                     $this->addMessage('success', $childPage->getTitle() . ' page deleted.');
                 } else {
                     $this->log("EntityManager is not aware of child page, skipping delete");
                 }
                 break;
             case 'import':
                 $childPage = new \Jazzee\Entity\Page();
                 $childPage->setParent($page);
                 $childPage->notGlobal();
                 $childPage->setType($this->_em->getRepository('\\Jazzee\\Entity\\PageType')->find($child->typeId));
                 $childPage->setUuid($child->uuid);
                 $this->savePage($childPage, $child);
                 break;
             case 'new':
             case 'copy':
                 $childPage = new \Jazzee\Entity\Page();
                 $childPage->setParent($page);
                 $childPage->notGlobal();
                 $childPage->setType($this->_em->getRepository('\\Jazzee\\Entity\\PageType')->find($child->typeId));
                 $this->savePage($childPage, $child);
                 break;
             default:
                 $childPage = $page->getChildById($child->id);
                 $this->savePage($childPage, $child);
                 break;
         }
         unset($childPage);
     }
     $this->addMessage('success', $page->getTitle() . ' page saved.');
 }