function field_ui_field_edit_form_submit

Form submission handler for field_ui_field_edit_form().

See also

field_ui_field_edit_form_validate().

File

drupal/core/modules/field_ui/field_ui.admin.inc, line 1104
Administrative interface for custom field type creation.

Code

function field_ui_field_edit_form_submit($form, &$form_state) {
  $instance = $form['#instance'];
  $field = $form['#field'];
  $entity = $form['#entity'];

  // Save field cardinality.
  $cardinality = $form_state['values']['field']['container']['cardinality'];
  $cardinality_other = $form_state['values']['field']['container']['cardinality_other'];
  if ($cardinality == 'other') {
    $cardinality = $cardinality_other;
  }
  $form_state['values']['field']['cardinality'] = $cardinality;
  unset($form_state['values']['field']['container']);

  // Merge incoming values into the field.
  $field = array_merge($field, $form_state['values']['field']);
  try {
    field_update_field($field);
  } catch (Exception $e) {
    drupal_set_message(t('Attempt to update field %label failed: %message.', array(
      '%label' => $instance['label'],
      '%message' => $e
        ->getMessage(),
    )), 'error');
    return;
  }

  // Handle the default value.
  if (isset($form['instance']['default_value_widget'])) {
    $element = $form['instance']['default_value_widget'];

    // Extract field values.
    $items = array();
    $instance
      ->getWidget()
      ->submit($entity, LANGUAGE_NOT_SPECIFIED, $items, $element, $form_state);
    $instance['default_value'] = $items ? $items : NULL;
  }

  // Merge incoming values into the instance.
  foreach ($form_state['values']['instance'] as $key => $value) {
    $instance[$key] = $value;
  }
  field_update_instance($instance);
  drupal_set_message(t('Saved %label configuration.', array(
    '%label' => $instance['label'],
  )));
  $form_state['redirect'] = field_ui_next_destination($instance['entity_type'], $instance['bundle']);
}