summaryrefslogtreecommitdiff
path: root/modules/field/field.default.inc
diff options
context:
space:
mode:
Diffstat (limited to 'modules/field/field.default.inc')
-rw-r--r--modules/field/field.default.inc54
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.