field_ui_field_overview_form_submit
- Versions
- 7
field_ui_field_overview_form_submit($form, &$form_state)
Submit handler for the field overview form.
Code
modules/field_ui/field_ui.admin.inc, line 459
<?php
function field_ui_field_overview_form_submit($form, &$form_state) {
$form_values = $form_state['values'];
$obj_type = $form['#object_type'];
$bundle = $form['#bundle'];
$admin_path = _field_ui_bundle_admin_path($obj_type, $bundle);
// Update field weights.
$extra = array();
foreach ($form_values as $key => $values) {
if (in_array($key, $form['#fields'])) {
$instance = field_read_instance($obj_type, $key, $bundle);
$instance['widget']['weight'] = $values['weight'];
foreach($instance['display'] as $build_mode => $display) {
$instance['display'][$build_mode]['weight'] = $values['weight'];
}
field_update_instance($instance);
}
elseif (in_array($key, $form['#extra'])) {
$extra[$key] = $values['weight'];
}
}
if ($extra) {
variable_set("field_extra_weights_$bundle", $extra);
}
else {
variable_del("field_extra_weights_$bundle");
}
$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' => TRUE,
);
$instance = array(
'field_name' => $field['field_name'],
'object_type' => $obj_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'] . '/edit';
// 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())));
}
}
// 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'])));
}
else {
$instance = array(
'field_name' => $field['field_name'],
'object_type' => $obj_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())));
}
}
}
if ($destinations) {
$destination = drupal_get_destination();
$destinations[] = $destination['destination'];
unset($_GET['destination']);
$form_state['redirect'] = field_ui_get_destinations($destinations);
}
}
?>Login or register to post comments 