private function _assertPostedValue($postValue, $savedValue, $language, $frontendValue, $allowDecimals = null) { $m1 = new Kwf_Form_NumberField_TestModel(); $form = new Kwf_Form(); $form->setModel($m1); $form->setId(1); $nrField = $form->add(new Kwf_Form_Field_NumberField('nr', 'Number')); $nrField->setAllowDecimals($allowDecimals); $form->trlStaticExecute($language); $post = array($nrField->getFieldName() => $postValue); if ($frontendValue !== false) { $post[$nrField->getFieldName() . '-format'] = 'fe'; } $post = $form->processInput(null, $post); if (!$form->validate(null, $post)) { $form->prepareSave(null, $post); $form->save(null, $post); } $testRow = $m1->getRow(1); $this->assertEquals($savedValue, $testRow->nr); $values = $form->load(null, $post); $this->assertEquals($values['nr'], $postValue); if ($frontendValue !== false) { $html = $nrField->getTemplateVars($values); $this->assertTrue(!!preg_match('#name="nr" value="(.*?)"#', $html['html'], $m)); $this->assertEquals($frontendValue, $m[1]); } }
public function processInput($parentRow, $postData = array()) { $id = $this->_getIdByParentRow($parentRow); if ($id === 0 || $id === '0' || is_null($id)) { $this->_newUserRow = $this->_model->createUserRow($postData[$this->getByName('email')->getFieldName()]); } return parent::processInput($parentRow, $postData); }
public function processInput($parentRow, $postData = array()) { if ($this->_model instanceof Kwf_User_EditModel) { $id = $this->_getIdByParentRow($parentRow); if ($id === 0 || $id === '0' || is_null($id)) { $email = null; if ($this->getByName('email') && isset($postData[$this->getByName('email')->getFieldName()])) { $email = $postData[$this->getByName('email')->getFieldName()]; } $this->_newUserRow = $this->_model->createUserRow($email); } } return parent::processInput($parentRow, $postData); }
public function testUrl() { $m1 = new Kwf_Model_FnF(); $form = new Kwf_Form(); $form->setModel($m1); $field1 = $form->add(new Kwf_Form_Field_UrlField('test')); $post = array($field1->getFieldName() => 'http://www.örf.at'); $post = $form->processInput($form->getRow(), $post); $form->validate($form->getRow(), $post); $form->prepareSave(null, $post); $form->save(null, $post); $row = $m1->getRow($m1->select()); $this->assertEquals('http://www.xn--rf-eka.at', $row->test); $loadData = $field1->load($row); $this->assertEquals('http://www.örf.at', $loadData['test']); }
public function testEMail() { $m1 = new Kwf_Model_FnF(); $form = new Kwf_Form(); $form->setModel($m1); $field1 = $form->add(new Kwf_Form_Field_EMailField('test')); $post = array($field1->getFieldName() => 'ufx@vüvüd-planet.com'); $post = $form->processInput($form->getRow(), $post); $form->validate($form->getRow(), $post); $form->prepareSave(null, $post); $form->save(null, $post); $row = $m1->getRow($m1->select()); $this->assertEquals('*****@*****.**', $row->test); $loadData = $field1->load($row); $this->assertEquals('ufx@vüvüd-planet.com', $loadData['test']); }
public function testWithRelModel() { $m1 = new Kwf_Form_MultiCheckbox_DataModelNoRel(); $m2 = new Kwf_Form_MultiCheckbox_RelationModelNoRel(); $form = new Kwf_Form(); $form->setModel($m1); $mcb = $form->add(new Kwf_Form_Field_MultiCheckbox($m2, 'Value', 'MultiCheck2')); $post = array($mcb->getFieldName() . '_1' => 1, $mcb->getFieldName() . '_2' => 0, $mcb->getFieldName() . '_3' => 0); $post = $form->processInput($form->getRow(), $post); $form->validate($form->getRow(), $post); $form->prepareSave(null, $post); $form->save(null, $post); $form->afterSave(null, $post); $rows = $m2->getRows($m2->select()->whereEquals('data_id', 1))->toArray(); $expected = array('id' => 1, 'data_id' => 1, 'values_id' => 1); $this->assertEquals(1, count($rows)); $this->assertEquals($expected, $rows[0]); }
public function testDateTime() { $m1 = new Kwf_Model_FnF(); $form = new Kwf_Form(); $form->setModel($m1); $field1 = $form->add(new Kwf_Form_Field_DateTimeField('dtftest1', 'dtf label'))->setAllowBlank(false); $field2 = $form->add(new Kwf_Form_Field_DateTimeField('dtftest2', 'dtf label2'))->setAllowBlank(false); $field3 = $form->add(new Kwf_Form_Field_DateTimeField('dtftest3', 'dtf label2'))->setAllowBlank(false); $post = array($field1->getFieldName() => '2009-12-15T13:43:00', $field2->getFieldName() => '"2009-12-01T13:43:59"', $field3->getFieldName() => '"209-12-1'); $post = $form->processInput($form->getRow(), $post); $form->validate($form->getRow(), $post); $form->prepareSave(null, $post); $form->save(null, $post); $form->afterSave(null, $post); $row = $m1->getRow($m1->select()); $this->assertEquals('2009-12-15 13:43:00', $row->{$field1->getFieldName()}); $this->assertEquals('2009-12-01 13:43:59', $row->{$field2->getFieldName()}); $this->assertNull($row->{$field3->getFieldName()}); }
public function testBam() { $m1 = new Kwf_Model_FnF(); $m2 = new Kwf_Model_FnF(); $m3 = new Kwf_Model_FnF(); $form = new Kwf_Form(); $form->setModel($m1); $form->add(new Kwf_Form_Field_TextField('test1')); $form->add(new Kwf_Form_Field_MultiFields($m2))->setReferences(array('columns' => array('test1_id'), 'refColumns' => array('id')))->fields->add(new Kwf_Form('child'))->setCreateMissingRow(true)->setIdTemplate('{id}')->setModel($m3)->add(new Kwf_Form_Field_TextField('test2')); $post = array('test1' => 'blub', 'Kwf_Model_FnF' => array(array('child_test2' => 'bab'))); $post = $form->processInput($form->getRow(), $post); $form->validate($form->getRow(), $post); $form->prepareSave(null, $post); $form->save(null, $post); $form->afterSave(null, $post); $r = $m1->getRow(1); $this->assertEquals('blub', $r->test1); $r = $m3->getRow(1); $this->assertEquals('bab', $r->test2); }
public function testDate() { $m1 = new Kwf_Model_FnF(); $form = new Kwf_Form(); $form->setModel($m1); $field1 = $form->add(new Kwf_Form_Field_DateField('test1')); $field2 = $form->add(new Kwf_Form_Field_DateField('test2')); $field3 = $form->add(new Kwf_Form_Field_DateField('test3')); $form->trlStaticExecute(); $field1->trlStaticExecute(); $field2->trlStaticExecute(); $field3->trlStaticExecute(); $post = array($field1->getFieldName() => '"2009-12-01T00:00:00"', $field2->getFieldName() => trlKwf('yyyy-mm-dd'), $field3->getFieldName() => date(trlKwf('Y-m-d'), strtotime('2010-01-10'))); $post = $form->processInput($form->getRow(), $post); $form->validate($form->getRow(), $post); $form->prepareSave(null, $post); $form->save(null, $post); $form->afterSave(null, $post); $row = $m1->getRow($m1->select()); $this->assertEquals('2009-12-01', $row->{$field1->getFieldName()}); $this->assertEquals(null, $row->{$field2->getFieldName()}); $this->assertEquals('2010-01-10', $row->{$field3->getFieldName()}); }
public function jsonSaveAction() { ignore_user_abort(true); $db = Zend_Registry::get('db'); if ($db) { $db->beginTransaction(); } // zuvor war statt diesem kommentar das $row = $this->_form->getRow(); // drin und wurde bei processInput und validate übergeben, aber die form // weiß selbst das model, deshalb passt NULL // Runtergeschoben wurde das $this->_form->getRow() weil bei der Kwf_User_Form // die row im processInput gefaket wird, da hier ->createUserRow() aufgerufen // wird anstatt ->createRow() und diese dann im _form->getRow() zurück kommt $postData = $this->_form->processInput(null, $this->getRequest()->getParams()); $this->_beforeValidate($postData); $invalid = $this->_form->validate(null, $postData); if ($invalid) { $invalid = Kwf_Form::formatValidationErrors($invalid); throw new Kwf_ClientException(implode("<br />", $invalid)); } $data = $this->_form->prepareSave(null, $postData); $row = $this->_form->getRow(); $insert = false; $primaryKey = $this->_form->getPrimaryKey(); $skip = false; if ($row && $primaryKey) { if (is_array($primaryKey)) { $primaryKey = $primaryKey[1]; } if (!$row->{$primaryKey}) { $insert = true; } if ($insert) { $sessionFormId = new Kwf_Session_Namespace('avoid_reinsert_id'); if ($this->_getParam('avoid_reinsert_id') && isset($sessionFormId->avoid[$this->_getParam('avoid_reinsert_id')])) { $skip = true; } if (!isset($this->_permissions['add']) || !$this->_permissions['add']) { throw new Kwf_Exception('Add is not allowed.'); } if (!$skip) { $this->_beforeInsert($row); } } else { if (!isset($this->_permissions['save']) || !$this->_permissions['save']) { throw new Kwf_Exception('Save is not allowed.'); } } if (!$skip) { $this->_beforeSave($row); } } if (!$skip) { //erst hier unten Berechtigungen überprüfen, damit beforeInsert usw vorher noch ausgeführt //wird und eventuelle Daten gesetzt werden if (!$this->_hasPermissions($row, 'save')) { throw new Kwf_Exception("Save is not allowed for this row."); } $data = $this->_form->save(null, $postData); $this->_form->afterSave(null, $postData); if ($row) { if ($insert) { $this->_afterInsert($row); } $this->_afterSave($row); } if ($db) { $db->commit(); } $this->view->data = $data; $sessionFormId = new Kwf_Session_Namespace('avoid_reinsert_id'); if (!isset($sessionFormId->avoid)) { $avoid = array(); } else { $avoid = $sessionFormId->avoid; } $avoid[$this->_getParam('avoid_reinsert_id')] = $data; $sessionFormId->avoid = $avoid; } else { $this->view->data = $sessionFormId->avoid[$this->_getParam('avoid_reinsert_id')]; } }
public function testDeleteWithFieldRows() { $form = new Kwf_Form(); $model = new Kwf_Model_FnF(array('dependentModels' => array('Model2' => new Kwf_Model_FieldRows(array('fieldName' => 'data'))), 'data' => array(array('id' => 1, 'data' => serialize(array('data' => array(array('id' => 1, 'foo' => 'foo1', 'pos' => 1), array('id' => 2, 'foo' => 'foo2', 'pos' => 2), array('id' => 3, 'foo' => 'foo3', 'pos' => 3)), 'autoId' => 4)))))); $form->setModel($model); $form->add(new Kwf_Form_Field_MultiFields('Model2'))->fields->add(new Kwf_Form_Field_TextField('foo')); $post = array('Model2' => array(array('id' => 1, 'foo' => 'foo1.'), array('id' => 3, 'foo' => 'foo3.'))); $form->setId(1); $post = $form->processInput(null, $post); $form->validate(null, $post); $form->prepareSave(null, $post); $form->save(null, $post); $form->afterSave(null, $post); $data = $model->getData(); $data = unserialize($data[0]['data']); $data = array_values($data['data']); $this->assertEquals(2, count($data)); $this->assertEquals('foo1.', $data[0]['foo']); $this->assertEquals('foo3.', $data[1]['foo']); }