Example #1
0
 public function editElementAction()
 {
     $elementClass = $this->_getParam('className');
     $id = $this->_getParam('id');
     $activityId = $this->_getParam('activity_id');
     $parentId = $this->_getParam('parent_id');
     $isMultiple = $this->_getParam('isMultiple', 1);
     if (!$elementClass) {
         $this->_helper->FlashMessenger->addMessage(array('error' => "Could not\n                                                             fetch element."));
         $this->_redirect("/wep/dashboard");
     }
     $elementName = "Iati_Aidstream_Element_" . $elementClass;
     $element = new $elementName();
     if ($isMultiple == '0') {
         $element->setIsMultiple(false);
     }
     if ($data = $this->getRequest()->getPost()) {
         $element->setData($data[$element->getClassName()]);
         $form = $element->getForm();
         if ($form->validate()) {
             //$eleId will be null is element is deleted or in case of db error
             $eleId = $element->save($data[$element->getClassName()], $activityId);
             $activityHashModel = new Model_ActivityHash();
             $updated = $activityHashModel->updateActivityHash($activityId);
             if (!$updated) {
                 $type = 'message';
                 $message = 'No Changes Made';
             } else {
                 $oldState = Model_Activity::getActivityStatus($activityId);
                 Model_Activity::updateActivityUpdatedInfo($activityId);
                 $type = 'message';
                 $message = $element->getDisplayName() . " successfully updated.";
             }
             $this->_helper->FlashMessenger->addMessage(array($type => $message));
             // In case of update notify the user about state change.
             if ($updated && $oldState != Iati_WEP_ActivityState::STATUS_DRAFT) {
                 $this->_helper->FlashMessenger->addMessage(array('state-change-flash-message' => "The\n                                        activity state is changed back to Draft.\n                                        You must complete and verify in order\n                                        to publish the activity."));
             }
             if ($element->getClassName() == "Transaction" || $element->getClassName() == "Result") {
                 $this->_redirect("activity/list-elements?classname={$elementClass}" . "&activity_id={$activityId}");
             }
             // Check if save and view button was clicked
             if ($data['save_and_view'] || $data[$element->getClassName()]['save_and_view']) {
                 $this->_redirect('activity/view-activity-info/?activity_id=' . $activityId);
             }
             //In case the eleId is not present i.e the element is deleted redirect to add page.
             if (!$eleId) {
                 $this->_redirect("activity/add-element?className={$elementClass}" . "&activity_id={$activityId}");
             }
         } else {
             $form->populate($data);
             $this->_helper->FlashMessenger->addMessage(array('error' => "You have some problem in your\n                                        data. Please correct and save again"));
         }
     } else {
         //This can be used to edit element at any level by providing parent id.
         if ($parentId) {
             $data[$element->getClassName()] = $element->fetchData($parentId, true);
         } else {
             if ($id) {
                 $data = $element->fetchData($id);
             } else {
                 if ($element->getClassName() == 'Activity') {
                     $data = $element->fetchData($activityId);
                 } else {
                     $data[$element->getClassName()] = $element->fetchData($activityId, true);
                 }
             }
         }
         if (empty($data[$element->getClassName()])) {
             $this->_redirect("/activity/add-element?className={$elementClass}" . "&activity_id={$activityId}");
         }
         $element->setData($data[$element->getClassName()]);
         $form = $element->getForm();
     }
     /* @todo this part of code should be moved to base form or base element */
     if (Iati_Aidstream_ElementSettings::isHandledIndividually($element->getClassName())) {
         $form->addElement('submit', 'save', array('class' => 'form-submit', 'label' => 'Update ' . $element->getDisplayName()));
     } else {
         $form->addSubmitButton('Save');
     }
     $this->view->form = $form;
     $this->view->activityInfo = Model_Activity::getActivityInfo($activityId);
     $this->view->elementClass = $element->getClassName();
     $this->view->displayName = $element->getDisplayName();
     $this->view->blockManager()->enable('partial/activitymenu.phtml');
     $this->view->blockManager()->disable('partial/primarymenu.phtml');
     $this->view->blockManager()->disable('partial/add-activity-menu.phtml');
     $this->view->blockManager()->disable('partial/usermgmtmenu.phtml');
     $this->view->blockManager()->disable('partial/published-list.phtml');
     $this->view->blockManager()->disable('partial/organisation-data.phtml');
     $this->view->blockManager()->disable('partial/download-my-data.phtml');
     $this->view->blockManager()->disable('partial/uploaded-docs.phtml');
 }
Example #2
0
 public function decorateElement($element)
 {
     $requiredSuffx = '<span title="This field is required." class="form-required">*</span>';
     $decorator = $element->getDecorator('Label');
     if ($decorator) {
         if ($element->getLabel()) {
             // need to check this, since label decorator can be blank
             $element->setLabel($element->getLabel() . "&nbsp;");
         }
         $decorator->setOption('requiredSuffix', $requiredSuffx);
         $decorator->setOption('escape', false);
     }
     if ($element->getErrors()) {
         $this->addElementClass($element, 'error');
     }
     // Add a wrapper div to all elements other than add and remove buttons.
     if ($element->getType() != 'Iati_Form_Element_Note' && $element->getType() != 'Zend_Form_Element_Submit') {
         if ($element->getName() == 'id' || $element->getType() == 'Zend_Form_Element_Hidden' && preg_match('/_id/', $element->getName())) {
             $element->addDecorators(array(array(array('wrapperAll' => 'HtmlTag'), array('tag' => 'div', 'class' => 'form-item ele-id clearfix'))));
         } else {
             if ($element->getName() == 'save_and_view' || $element->getName() == 'save') {
                 $element->addDecorators(array(array(array('wrapperAll' => 'HtmlTag'), array('tag' => 'div', 'class' => 'form-item ele-submit-buttons clearfix'))));
             } else {
                 // Add help element
                 $uniqueElementName = $this->element->getFullName() . '-' . $element->getName();
                 $element->addDecorators(array(array('HtmlTag', array('tag' => 'div', 'class' => 'help ' . $uniqueElementName, 'placement' => 'PREPEND'))));
                 $wrapperClass = 'form-item clearfix';
                 //If the current element is a default field then add default-item class to wrapper
                 if (Iati_Aidstream_ElementSettings::isDefaultField($element->getName())) {
                     $wrapperClass .= ' default-item element-' . $this->element->getFullName();
                     //if default field has value set wrapper visible else hidden
                     if ($element->getValue()) {
                         $wrapperClass .= ' visible';
                     } else {
                         $wrapperClass .= ' hidden';
                     }
                 }
                 $element->addDecorators(array(array(array('wrapperAll' => 'HtmlTag'), array('tag' => 'div', 'class' => $wrapperClass))));
             }
         }
     } else {
         $element->removeDecorator('label');
     }
     return $element;
 }