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'); }
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() . " "); } $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; }