You are here

function eck__manage_extra_field_form_submit in Entity Construction Kit (ECK) 7.3

Submit callback.

For editing a property field's settings from a bundle's field management form.

File

./eck.bundle.inc, line 622

Code

function eck__manage_extra_field_form_submit($form, &$form_state) {

  // Load entity_type and bundle in case they have changed since the form was
  // first built.
  $entity_type = entity_type_load($form['#entity_type']->name);
  $bundle = bundle_load($entity_type->name, $form['#bundle']->name);

  // Update the property field settings.
  if (isset($bundle->config['extra_fields'][$form['#property_name']]['form'])) {
    $property_settings = $bundle->config['extra_fields'][$form['#property_name']];
    $widget_info = eck_property_info_widget_types($property_settings['form']['widget']['type']);
    $property_settings['form']['required'] = !empty($form_state['values']['required']);
    $property_settings['form']['label'] = $form_state['values']['label'];
    $property_settings['form']['description'] = $form_state['values']['description'];

    // Update the widget settings if there are any.
    if (isset($form['widget']['settings'])) {
      $property_settings['form']['widget']['settings'] = $form_state['values']['widget']['settings'];
    }

    // Handle the default value.
    if (isset($form['default_value_widget'])) {
      $property_settings['form']['default_value'] = eck_property_widget_extract_value($entity_type, $bundle, $form['#property_name'], $widget_info, $form, $form_state);
    }

    // Now update the bundle config.
    $config = $bundle->config;
    $config['extra_fields'][$form['#property_name']] = $property_settings;
    $bundle->config = $config;

    // Save the bundle.
    $bundle
      ->save();
    Bundle::loadAll(NULL, TRUE);
  }
  else {

    // The extra field form setting was not found in the config so it must no
    // longer be managed. Don't do anything except notify the user.
    drupal_set_message(t('Could not edit the property field settings. The property %name on the %bundle bundle is no selected for management.', array(
      '%name' => $form['#property_name'],
      '%bundle' => $bundle->label,
    )), 'error');
  }
  $form_state['redirect'] = 'admin/structure/entity-type/' . $entity_type->name . '/' . $bundle->name . '/fields';
}