function field_ui_field_overview_form_submit
field_ui_field_overview_form_submit($form, &$form_state)
Form submission handler for field_ui_field_overview_form().
See also
field_ui_field_overview_form_validate()
File
- modules/field_ui/field_ui.admin.inc, line 774
- Administrative interface for custom field type creation.
Code
function field_ui_field_overview_form_submit($form, &$form_state) { $form_values = $form_state['values']['fields']; $entity_type = $form['#entity_type']; $bundle = $form['#bundle']; $admin_path = _field_ui_bundle_admin_path($entity_type, $bundle); $bundle_settings = field_bundle_settings($entity_type, $bundle); // Update field weights. foreach ($form_values as $key => $values) { if (in_array($key, $form['#fields'])) { $instance = field_read_instance($entity_type, $key, $bundle); $instance['widget']['weight'] = $values['weight']; field_update_instance($instance); } elseif (in_array($key, $form['#extra'])) { $bundle_settings['extra_fields']['form'][$key]['weight'] = $values['weight']; } } field_bundle_settings($entity_type, $bundle, $bundle_settings); $destinations = array(); // Create new field. $field = array(); if (!empty($form_values['_add_new_field']['field_name'])) { $values = $form_values['_add_new_field']; $field = array( 'field_name' => $values['field_name'], 'type' => $values['type'], 'translatable' => $values['translatable'], ); $instance = array( 'field_name' => $field['field_name'], 'entity_type' => $entity_type, 'bundle' => $bundle, 'label' => $values['label'], 'widget' => array( 'type' => $values['widget_type'], 'weight' => $values['weight'], ), ); // Create the field and instance. try { field_create_field($field); field_create_instance($instance); $destinations[] = $admin_path . '/fields/' . $field['field_name'] . '/field-settings'; $destinations[] = $admin_path . '/fields/' . $field['field_name']; // Store new field information for any additional submit handlers. $form_state['fields_added']['_add_new_field'] = $field['field_name']; } catch (Exception $e) { drupal_set_message(t('There was a problem creating field %label: !message', array('%label' => $instance['label'], '!message' => $e->getMessage())), 'error'); } } // Add existing field. if (!empty($form_values['_add_existing_field']['field_name'])) { $values = $form_values['_add_existing_field']; $field = field_info_field($values['field_name']); if (!empty($field['locked'])) { drupal_set_message(t('The field %label cannot be added because it is locked.', array('%label' => $values['label'])), 'error'); } else { $instance = array( 'field_name' => $field['field_name'], 'entity_type' => $entity_type, 'bundle' => $bundle, 'label' => $values['label'], 'widget' => array( 'type' => $values['widget_type'], 'weight' => $values['weight'], ), ); try { field_create_instance($instance); $destinations[] = $admin_path . '/fields/' . $instance['field_name'] . '/edit'; // Store new field information for any additional submit handlers. $form_state['fields_added']['_add_existing_field'] = $instance['field_name']; } catch (Exception $e) { drupal_set_message(t('There was a problem creating field instance %label: @message.', array('%label' => $instance['label'], '@message' => $e->getMessage())), 'error'); } } } if ($destinations) { $destination = drupal_get_destination(); $destinations[] = $destination['destination']; unset($_GET['destination']); $form_state['redirect'] = field_ui_get_destinations($destinations); } else { drupal_set_message(t('Your settings have been saved.')); } }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/modules!field_ui!field_ui.admin.inc/function/field_ui_field_overview_form_submit/7.x