/** * Create a bind for the field * * @param Field $field the field * @param string $type the type of bind. If empty, STATIK * @param array $bind_data the data used to create the bind * * @return Bind null if error */ public function createBind($field, $type, $bind_data) { $bind = null; switch ($type) { case '': //default is static //default is static case self::STATIK: $dao = new Tracker_FormElement_Field_List_Bind_StaticDao(); if ($dao->save($field->getId(), 0)) { $bind = new Tracker_FormElement_Field_List_Bind_Static($field, 0, array(), array(), array()); $bind->process($bind_data, 'no redirect'); } break; case self::USERS: $dao = new Tracker_FormElement_Field_List_Bind_UsersDao(); if ($dao->save($field->getId(), array())) { $bind = new Tracker_FormElement_Field_List_Bind_Users($field, '', array(), array()); $bind->process($bind_data, 'no redirect'); } break; case self::UGROUPS: $bind = new Tracker_FormElement_Field_List_Bind_Ugroups($field, array(), array(), array(), $this->ugroup_manager, $this->getUgroupsValueDao()); $bind->process($bind_data, 'no redirect'); break; default: break; } return $bind; }
/** * Create a new field and save it to database * @param sfWebRequest $request * @return <type> */ public function executeSaveField(sfWebRequest $request) { $data = $request->getPostParameters(); $fieldClass = new FieldClass(); $data = $fieldClass->prepareSaveData($data); // prepare the data to save, set color and writeprotected flag // create parent element for the fields $fieldObj = new Field(); $fieldObj->setTitle($data['createFileWindow_fieldname']); $fieldObj->setType($data['createFileWindow_fieldtype']); $fieldObj->setwriteprotected($data['createFileWindow_writeprotected']); $fieldObj->setColor($data['createFileWindow_color']); $fieldObj->save(); $id = $fieldObj->getId(); // add the child elements to the field, with the selected field type switch ($data['createFileWindow_fieldtype']) { case 'TEXTFIELD': $textfield = new FieldTextfield(); $textfield->setFieldId($id); $textfield->setRegex($data['fieldTextfield_regularexpression']); $textfield->setDefaultvalue($data['fieldTextfield_standard']); $textfield->save(); break; case 'CHECKBOX': // do nothing break; case 'NUMBER': $numberfield = new FieldNumber(); $numberfield->setRegex($data['fieldNumber_regularexpression']); $numberfield->setDefaultvalue($data['fieldNumber_standard']); $numberfield->setComboboxvalue($data['fieldNumber_regularexpressioncombo']); $numberfield->setFieldId($id); $numberfield->save(); break; case 'DATE': $datefield = new FieldDate(); $datefield->setRegex($data['fieldDate_regularexpression']); $datefield->setDateformat($data['fieldDate_format']); $datefield->setDefaultvalue($data['fieldDate_date']); $datefield->setFieldId($id); $datefield->save(); break; case 'TEXTAREA': $data['fieldTextarea_content'] = $data['fieldTextarea_contenttype'] == 'plain' ? $data['fieldTextarea_textarea']: $data['fieldTextarea_htmlarea']; $textarea = new FieldTextarea(); $textarea->setContent($data['fieldTextarea_content']); $textarea->setContenttype($data['fieldTextarea_contenttype']); $textarea->setFieldId($id); $textarea->save(); break; case 'RADIOGROUP': $fieldClass->saveRadiogroup($id, $data); // save radiogroup break; case 'CHECKBOXGROUP': $fieldClass->saveCheckboxgroup($id, $data); // save checkboxgroup break; case 'COMBOBOX': $fieldClass->saveCombobox($id, $data); // save combobox break; case 'FILE': $file = new FieldFile(); $file->setRegex($data['fieldFile_regularexpression']); $file->setFieldId($id); $file->save(); break; } $this->renderText('{success:true}'); return sfView::NONE; }