You are here

function composed_field_field_widget_settings_form in Composed Field 7

Implements hook_field_widget_settings_form().

File

./composed_field.module, line 111
Defines composed field type.

Code

function composed_field_field_widget_settings_form($field, $instance) {
  $widget_form_state_values = $instance['widget']['settings'];
  $number_of_subfields_title = t('Number of subfields');

  // Assume there is no value set for number_of_subfields as yet.
  $number_of_fields_not_set_message = t('You must enter a value into !number_of_subfields', array(
    '!number_of_subfields' => $number_of_subfields_title,
  ));
  if (isset($widget_form_state_values['number_of_subfields'])) {

    // The field is being edited rather than created.
    $number_of_subfields = $widget_form_state_values['number_of_subfields'];
  }
  else {
    $widget_form_state_values['number_of_subfields'] = '';
    $number_of_subfields = 1;
  }
  $form['inline'] = array(
    '#type' => 'checkbox',
    '#title' => t('Display as inline element'),
    '#default_value' => empty($widget_form_state_values['inline']) ? FALSE : $widget_form_state_values['inline'],
  );

  // This element determines how many components our field will have.
  $form['number_of_subfields'] = array(
    '#type' => 'textfield',
    '#title' => $number_of_subfields_title,
    '#description' => t('Enter a numeric value and hit the tab key after that.') . '<br />' . t('This value determines how many subfields this field will have.'),
    '#default_value' => $widget_form_state_values['number_of_subfields'],
    '#maxlength' => 2,
    '#size' => 2,
    '#element_validate' => array(
      'element_validate_integer_positive',
    ),
    '#required' => TRUE,
    '#ajax' => array(
      'callback' => '_composed_field_vertical_tabs_ajax_callback',
    ),
  );
  $form['composed_field'] = array(
    '#type' => 'vertical_tabs',
    '#prefix' => "<div id='composed_field_tabs_ajax_wrapper'>",
    '#suffix' => '</div>',
  );

  // Build the form elements in each tab.
  $form['#composed_field'] = array(
    'vertical_tab_settings' => array(
      'subfield_start_from' => 1,
      'number_of_subfields' => $number_of_subfields,
      'number_of_fields_not_set_message' => $number_of_fields_not_set_message,
    ),
  );
  _composed_field_build_form_controls_in_vertical_tabs($form, $widget_form_state_values);
  return $form;
}