summaryrefslogtreecommitdiff
path: root/modules/field/tests
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2010-06-17 13:44:45 +0000
committerDries Buytaert <dries@buytaert.net>2010-06-17 13:44:45 +0000
commitcb043e8c489f033f7435e7fd5d18325155465c77 (patch)
tree716cdfe743aa99a01a1dce97cc800c00119af896 /modules/field/tests
parent3620310d7c8a5d487f7b6826a89f8a4816149333 (diff)
downloadbrdo-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.inc29
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;
}