/** * Get form for model prefilled with values for specified instance. * * @param string $modelClass * @param mixed $instance * @param array $options * @return Curry_Form_ModelForm */ public function getEditForm($modelClass, $instance = null, $options = array()) { $options = array_merge(array('action' => (string) url('', $_GET), 'method' => 'post', 'class' => isAjax() ? 'dialog-form' : ''), $options); $form = new \Curry_Form_ModelForm($modelClass, $options); if ($instance !== null) { $form->fillForm($instance); } $form->addElement('submit', 'save', array('label' => 'Save')); return $form; }
/** * Get user form. * * @param User $user * @return Curry_Form_ModelForm */ protected function getUserForm(User $user) { $createHomeFolder = $user->isNew() || self::getUserHome($user) !== null; $validRoles = $this->getValidRoles(); $invalidRoles = UserRoleQuery::create()->filterByUserRoleId(array_keys($validRoles), Criteria::NOT_IN)->select('UserRoleId')->find()->getArrayCopy(); $validLanguages = UserLanguageQuery::create()->_if(!$user->hasAccess('*'))->filterByUser(User::getUser())->_endif()->select('langcode')->find()->getArrayCopy(); $invalidLanguages = LanguageQuery::create()->filterByLangcode($validLanguages, Criteria::NOT_IN)->select('langcode')->find()->getArrayCopy(); $form = new Curry_Form_ModelForm('User', array('method' => 'post', 'action' => url('', $_GET), 'columnElements' => array('password' => array('password', array('required' => $user->isNew())), 'relation__userrole' => array('select', array('label' => 'Role', 'disable' => $invalidRoles, 'validators' => array(array('InArray', true, array(array_keys($validRoles)))))), 'relation__language' => array('multiselect', array('class' => 'chosen', 'disable' => $invalidLanguages, 'validators' => array(array('InArray', true, array($validLanguages)))))))); $form->addElements(array('verify_password' => array('password', array('label' => 'Verify password', 'required' => $user->isNew(), 'validators' => array(array('identical', false, array('token' => 'password'))))), 'create_home_folder' => array('checkbox', array('label' => 'Create home folder', 'description' => 'Creates a folder in /user-content/ for the user and adds file permission for it.', 'value' => $createHomeFolder, 'order' => 5)))); $form->withRelation('UserRole'); $form->withRelation('Language'); $form->addElement('submit', 'save', array('label' => 'Save')); return $form; }
/** * Get form from model. * * @param BaseObject $row * @return Curry_Form_ModelForm */ public static function getRowForm(BaseObject $row) { $form = new Curry_Form_ModelForm($_GET['table'], array('ignorePks' => false, 'ignoreFks' => false, 'action' => url('', array("module", "view", "table", "pk")), 'method' => 'post', 'class' => 'dialog-form')); $form->fillForm($row); $displayGroup = 1; foreach ($form->getElementColumns() as $column) { $element = $form->getElement(strtolower($column->getName())); if (!$element) { continue; } // Remove column if it's auto generated if ($row->isNew() && $column->isPrimaryKey() && $column->getTable()->isUseIdGenerator()) { $form->removeElement($element->getName()); continue; } // Make sure we have an option for foreign keys if ($column->isForeignKey() && !$row->isNew()) { $related = $element->getMultioptions(); if (!array_key_exists($element->getValue(), $related)) { $related[$element->getValue()] = $element->getValue(); $element->setMultioptions($related); } } // Add null checkbox if (!$column->isNotNull()) { $isNull = $element->getValue() === null; if (!$column->isNotNull()) { $name = $element->getName() . '__null__'; $form->addElement('checkbox', $name, array('label' => 'Null', 'title' => 'Is Null?', 'class' => 'trigger-change', 'onchange' => "document.getElementById('" . $element->getId() . "').disabled = this.checked;", 'value' => $isNull)); $form->addDisplayGroup(array($element->getName(), $name), 'displayGroup' . $displayGroup++, array('class' => 'horizontal-group', 'legend' => $element->getLabel())); } } } $form->addElement('submit', 'save', array('label' => $row->isNew() ? 'Insert' : 'Save')); return $form; }