diff options
Diffstat (limited to 'modules/field/field.default.inc')
-rw-r--r-- | modules/field/field.default.inc | 54 |
1 files changed, 26 insertions, 28 deletions
diff --git a/modules/field/field.default.inc b/modules/field/field.default.inc index 1d01286d4..98d7cc371 100644 --- a/modules/field/field.default.inc +++ b/modules/field/field.default.inc @@ -10,46 +10,44 @@ * types. Those functions take care of default stuff common to all field types. */ -function field_default_validate($obj_type, $object, $field, $instance, $items, $form) { - // TODO: here we could validate that required fields are filled in (for programmatic save) -} - -function field_default_submit($obj_type, &$object, $field, $instance, &$items, $form, &$form_state) { - // Get field values from the submitted form values. Assigning them to $items - // populates $object->field_name when we return from _field_invoke_default(). - - // TODO D7: Allow the values to be form_altered to another location, like we - // do for the form definition ($form['#fields'][$field_name]['form_path']) ? +function field_default_extract_form_values($obj_type, $object, $field, $instance, &$items, $form, &$form_state) { + $field_name = $field['field_name']; - if (isset($form_state['values'][$field['field_name']])) { - $items = $form_state['values'][$field['field_name']]; + if (isset($form_state['values'][$field_name])) { + $items = $form_state['values'][$field_name]; // Remove the 'value' of the 'add more' button. - unset($items[$field['field_name'] . '_add_more']); - - // TODO: the above should be moved to validate time (and values saved back - // using form_set_value() ), so that hook_field_validate() works on clean data. - // Not sure we'll want what's below in validate too. - - // Reorder items to account for drag-n-drop reordering. - if (field_behaviors_widget('multiple values', $instance) == FIELD_BEHAVIOR_DEFAULT) { - $items = _field_sort_items($field, $items); - } - - // Filter out empty values. - $items = field_set_empty($field, $items); + unset($items[$field_name . '_add_more']); // _field_invoke() does not add back items for fields not present in the - // original $object, so add them manually. - $object->{$field['field_name']} = $items; + // original $object, so we add them manually. + $object->{$field_name} = $items; } else { // The form did not include this field, for instance because of access // rules: make sure any existing value for the field stays unchanged. - unset($object->{$field['field_name']}); + unset($object->{$field_name}); } } +function field_default_validate($obj_type, $object, $field, $instance, $items) { + // TODO: here we could validate that required fields are filled in (for programmatic save) +} + +function field_default_submit($obj_type, &$object, $field, $instance, &$items, $form, &$form_state) { + $field_name = $field['field_name']; + + // TODO: should me move what's below to __extract_form_values ? + + // Reorder items to account for drag-n-drop reordering. + if (field_behaviors_widget('multiple values', $instance) == FIELD_BEHAVIOR_DEFAULT) { + $items = _field_sort_items($field, $items); + } + + // Filter out empty values. + $items = field_set_empty($field, $items); +} + /** * The 'view' operation constructs the $object in a way that you can use * drupal_render() to display the formatted output for an individual field. |