You are here

function field_jquery_tabs_field_widget_form in jQuery Tabs Field 7

Same name and namespace in other branches
  1. 7.4 field_jquery_tabs.module \field_jquery_tabs_field_widget_form()
  2. 7.2 field_jquery_tabs.module \field_jquery_tabs_field_widget_form()
  3. 7.3 field_jquery_tabs.module \field_jquery_tabs_field_widget_form()

Implements hook_field_widget_form().

File

./field_jquery_tabs.module, line 37
jQuery Tabs Field module allows you to create jQuery tabs field.

Code

function field_jquery_tabs_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
  $base = $element;
  $settings = $instance['settings'];
  $element += array(
    '#type' => 'fieldset',
    '#tree' => TRUE,
    '#title' => isset($instance['label']) ? $instance['label'] : NULL,
    '#description' => isset($instance['description']) ? $instance['description'] : NULL,
    '#prefix' => '<div id="jquery-tabs-wrapper">',
    '#suffix' => '</div>',
  );
  $field_name = $field['field_name'];
  $field_data = array(
    'field_name' => $field_name,
    'langcode' => $langcode,
    'delta' => $delta,
  );
  $form_state['jquery_tabs']['field_data'] = $field_data;

  // Build the fieldset with the proper number of names. We'll use
  // $form_state['num_names'] to determine the number of textfields to build.
  if (empty($form_state['num_names'])) {
    if (isset($items[$delta])) {
      $form_state['num_names'] = _field_jquery_tabs_entered_tab_count($items[$delta]);
    }
    else {
      $form_state['num_names'] = 1;
    }
  }
  for ($i = 1; $i <= $form_state['num_names']; $i++) {
    $element['tab_title_' . $i] = array(
      '#type' => 'textfield',
      '#title' => t('Tab @value Title', array(
        '@value' => $i,
      )),
      '#size' => 50,
      '#maxlength' => 50,
      '#description' => t('Enter title for the Tab @value', array(
        '@value' => $i,
      )),
      '#required' => $delta == 0 && $instance['required'] && $i == 1 ? TRUE : FALSE,
      '#default_value' => isset($items[$delta]['tab_title_' . $i]) ? $items[$delta]['tab_title_' . $i] : NULL,
    );
    $element['tab_body_' . $i] = array(
      '#type' => 'textarea',
      '#title' => t('Tab @value Body', array(
        '@value' => $i,
      )),
      '#cols' => 60,
      '#rows' => 5,
      '#description' => t('Enter body for the Tab @value', array(
        '@value' => $i,
      )),
      '#default_value' => isset($items[$delta]['tab_body_' . $i]) ? $items[$delta]['tab_body_' . $i] : NULL,
    );
  }
  if ($form_state['num_names'] < 7) {
    $element['add_jquery_tab'] = array(
      '#type' => 'submit',
      '#value' => t('Add one more'),
      '#submit' => array(
        '_field_jquery_tabs_add_more_add_one',
      ),
      '#ajax' => array(
        'callback' => '_field_jquery_tabs_add_more_callback',
        'wrapper' => 'jquery-tabs-wrapper',
      ),
    );
  }
  if ($form_state['num_names'] > 1) {
    $element['remove_jquery_tab'] = array(
      '#type' => 'submit',
      '#value' => t('Remove one'),
      '#submit' => array(
        '_field_jquery_tabs_add_more_remove_one',
      ),
      '#ajax' => array(
        'callback' => '_field_jquery_tabs_add_more_callback',
        'wrapper' => 'jquery-tabs-wrapper',
      ),
    );
  }
  return $element;
}