public function preValidation($params) { $data = Application_Model_Block::organizeSmartPlyalistCriteria($params['data']); // add elelments that needs to be added // set multioption for modifier according to criteria_field $modRowMap = array(); foreach ($data['criteria'] as $critKey => $d) { $count = 1; foreach ($d as $modKey => $modInfo) { if ($modKey == 0) { $eleCrit = $this->getElement("sp_criteria_field_" . $critKey . "_" . $modKey); $eleCrit->setValue($this->getCriteriaOptions($modInfo['sp_criteria_field'])); $eleCrit->setAttrib("disabled", null); $eleMod = $this->getElement("sp_criteria_modifier_" . $critKey . "_" . $modKey); $criteriaType = $this->criteriaTypes[$modInfo['sp_criteria_field']]; if ($criteriaType == "s") { $eleMod->setMultiOptions($this->getStringCriteriaOptions()); } elseif ($criteriaType == "n") { $eleMod->setMultiOptions($this->getNumericCriteriaOptions()); } else { $eleMod->setMultiOptions(array('0' => _('Select modifier'))); } $eleMod->setValue($modInfo['sp_criteria_modifier']); $eleMod->setAttrib("disabled", null); $eleValue = $this->getElement("sp_criteria_value_" . $critKey . "_" . $modKey); $eleValue->setValue($modInfo['sp_criteria_value']); $eleValue->setAttrib("disabled", null); if (isset($modInfo['sp_criteria_extra'])) { $eleExtra = $this->getElement("sp_criteria_extra_" . $critKey . "_" . $modKey); $eleExtra->setValue($modInfo['sp_criteria_extra']); $eleValue->setAttrib('class', 'input_text sp_extra_input_text'); $eleExtra->setAttrib("disabled", null); } } else { $criteria = new Zend_Form_Element_Select("sp_criteria_field_" . $critKey . "_" . $modKey); $criteria->setAttrib('class', 'input_select sp_input_select sp-invisible')->setValue('Select criteria')->setDecorators(array('viewHelper'))->setMultiOptions($this->getCriteriaOptions()); $criteriaType = $this->criteriaTypes[$modInfo['sp_criteria_field']]; $criteria->setValue($this->getCriteriaOptions($modInfo['sp_criteria_field'])); $this->addElement($criteria); /****************** MODIFIER ***********/ $criteriaModifers = new Zend_Form_Element_Select("sp_criteria_modifier_" . $critKey . "_" . $modKey); $criteriaModifers->setValue('Select modifier')->setAttrib('class', 'input_select sp_input_select')->setDecorators(array('viewHelper')); if ($criteriaType == "s") { $criteriaModifers->setMultiOptions($this->getStringCriteriaOptions()); } elseif ($criteriaType == "n") { $criteriaModifers->setMultiOptions($this->getNumericCriteriaOptions()); } else { $criteriaModifers->setMultiOptions(array('0' => _('Select modifier'))); } $criteriaModifers->setValue($modInfo['sp_criteria_modifier']); $this->addElement($criteriaModifers); /****************** VALUE ***********/ $criteriaValue = new Zend_Form_Element_Text("sp_criteria_value_" . $critKey . "_" . $modKey); $criteriaValue->setAttrib('class', 'input_text sp_input_text')->setDecorators(array('viewHelper')); $criteriaValue->setValue($modInfo['sp_criteria_value']); $this->addElement($criteriaValue); /****************** EXTRA ***********/ $criteriaExtra = new Zend_Form_Element_Text("sp_criteria_extra_" . $critKey . "_" . $modKey); $criteriaExtra->setAttrib('class', 'input_text sp_extra_input_text')->setDecorators(array('viewHelper')); if (isset($modInfo['sp_criteria_extra'])) { $criteriaExtra->setValue($modInfo['sp_criteria_extra']); $criteriaValue->setAttrib('class', 'input_text sp_extra_input_text'); } else { $criteriaExtra->setAttrib('disabled', 'disabled'); } $this->addElement($criteriaExtra); $count++; } } $modRowMap[$critKey] = $count; } $decorator = $this->getDecorator("ViewScript"); $existingModRow = $decorator->getOption("modRowMap"); foreach ($modRowMap as $key => $v) { $existingModRow[$key] = $v; } $decorator->setOption("modRowMap", $existingModRow); // reconstruct the params['criteria'] so we can populate the form $formData = array(); foreach ($params['data'] as $ele) { $formData[$ele['name']] = $ele['value']; } $this->populate($formData); return $data; }