You are here

function multifield_form_field_ui_field_edit_form_alter in Multifield 7

Same name and namespace in other branches
  1. 7.2 multifield.module \multifield_form_field_ui_field_edit_form_alter()

Implements hook_form_FORM_ID_alter() for field_ui_field_edit_form().

File

./multifield.module, line 539

Code

function multifield_form_field_ui_field_edit_form_alter(&$form, &$form_state) {
  _multifield_warn_no_subfields($form['#field']);
  if ($form['#instance']['entity_type'] != 'multifield') {
    return;
  }

  // Show a notice that multifield subfields have a cardinality of one value
  // enforced in the widget.
  $form['field']['cardinality']['#disabled'] = TRUE;
  $form['field']['cardinality']['#field_prefix'] = '<div class="messages warning">' . t('Field cardinality in multifields is limited to one value despite this setting.') . '</div>';

  // Hide the default value widget since we want the user to set the default
  // value for this entire multifield instead.
  if (isset($form['instance']['default_value_widget'])) {
    $form['instance']['default_value_widget']['#access'] = FALSE;
  }

  // If this multifield has instances, make sure that no field settings that
  // could change the field schema can be edited by re-invoking
  // hook_field_settings_form() with $has_data forced to be TRUE.
  if (multifield_type_has_data($form['#instance']['bundle'])) {
    $field = $form['#field'];
    $instance = $form['#instance'];
    $has_data = field_has_data($field);
    if (!$has_data) {
      $additions = module_invoke($field['module'], 'field_settings_form', $field, $instance, TRUE);
      if (is_array($additions)) {
        $form['field']['settings'] = $additions;
        $form['field']['#description'] = '<p>' . t('These settings apply to the %field field everywhere it is used.', array(
          '%field' => $instance['label'],
        )) . ' ' . t('Because the multifield already has data, some settings can no longer be changed.') . '</p>';
      }
    }
  }
}