diff options
author | Dries Buytaert <dries@buytaert.net> | 2010-06-17 13:44:45 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2010-06-17 13:44:45 +0000 |
commit | cb043e8c489f033f7435e7fd5d18325155465c77 (patch) | |
tree | 716cdfe743aa99a01a1dce97cc800c00119af896 /modules/field/tests | |
parent | 3620310d7c8a5d487f7b6826a89f8a4816149333 (diff) | |
download | brdo-cb043e8c489f033f7435e7fd5d18325155465c77.tar.gz brdo-cb043e8c489f033f7435e7fd5d18325155465c77.tar.bz2 |
- Patch #735800 by effulgentsia, fago, Frando: node form triggers form level submit functions on button level submits, without validation. Oh yeah.
Diffstat (limited to 'modules/field/tests')
-rw-r--r-- | modules/field/tests/field_test.entity.inc | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/modules/field/tests/field_test.entity.inc b/modules/field/tests/field_test.entity.inc index b078714b9..b7887c812 100644 --- a/modules/field/tests/field_test.entity.inc +++ b/modules/field/tests/field_test.entity.inc @@ -289,10 +289,15 @@ function field_test_entity_edit($entity) { * Test_entity form. */ function field_test_entity_form($form, &$form_state, $entity, $add = FALSE) { - if (isset($form_state['test_entity'])) { - $entity = $form_state['test_entity'] + (array) $entity; + // During initial form build, add the entity to the form state for use during + // form building and processing. During a rebuild, use what is in the form + // state. + if (!isset($form_state['test_entity'])) { + $form_state['test_entity'] = $entity; + } + else { + $entity = $form_state['test_entity']; } - $entity = (object) $entity; foreach (array('ftid', 'ftvid', 'fttype') as $key) { $form[$key] = array( @@ -327,15 +332,14 @@ function field_test_entity_form($form, &$form_state, $entity, $add = FALSE) { * Validate handler for field_test_entity_form(). */ function field_test_entity_form_validate($form, &$form_state) { - $entity = field_test_create_stub_entity($form_state['values']['ftid'], $form_state['values']['ftvid'], $form_state['values']['fttype']); - field_attach_form_validate('test_entity', $entity, $form, $form_state); + entity_form_field_validate('test_entity', $form, $form_state); } /** * Submit handler for field_test_entity_form(). */ function field_test_entity_form_submit($form, &$form_state) { - $entity = field_test_entity_form_submit_builder($form, $form_state); + $entity = $form['#builder_function']($form, $form_state); $insert = empty($entity->ftid); field_test_entity_save($entity); @@ -343,25 +347,20 @@ function field_test_entity_form_submit($form, &$form_state) { drupal_set_message($message); if ($entity->ftid) { - unset($form_state['rebuild']); $form_state['redirect'] = 'test-entity/' . $entity->ftid . '/edit'; } else { // Error on save. drupal_set_message(t('The entity could not be saved.'), 'error'); + $form_state['rebuild'] = TRUE; } } /** - * Builds a test_entity from submitted form values. + * Updates the form state's entity by processing this submission's values. */ function field_test_entity_form_submit_builder($form, &$form_state) { - $entity = field_test_create_stub_entity($form_state['values']['ftid'], $form_state['values']['ftvid'], $form_state['values']['fttype']); - $entity->revision = !empty($form_state['values']['revision']); - field_attach_submit('test_entity', $entity, $form, $form_state); - - $form_state['test_entity'] = (array) $entity; - $form_state['rebuild'] = TRUE; - + $entity = $form_state['test_entity']; + entity_form_submit_build_entity('test_entity', $entity, $form, $form_state); return $entity; } |