You are here

function double_field_field_formatter_settings_form in Double Field 7.2

Same name and namespace in other branches
  1. 7 double_field.module \double_field_field_formatter_settings_form()

Implements hook_field_formatter_settings_form().

File

./double_field.module, line 828
Defines "Double field" field type.

Code

function double_field_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
  $settings = $instance['display'][$view_mode]['settings'];
  $element = array(
    '#tree' => TRUE,
  );
  $style_settings = array(
    '#type' => 'select',
    '#title' => t('Style'),
    '#options' => array(
      'inline' => t('Inline'),
      'block' => t('Block'),
      'link' => t('Link'),
      'simple' => t('Simple'),
    ),
    '#default_value' => isset($settings['style']) ? $settings['style'] : 'inline',
    '#states' => array(
      'invisible' => array(
        ":input[name='fields[{$field["field_name"]}][settings_edit_form][settings][list_type]']" => array(
          'value' => 'dl',
        ),
      ),
    ),
  );
  switch ($instance['display'][$view_mode]['type']) {
    case 'double_field_fieldset':
      $element['collapsible'] = array(
        '#type' => 'checkbox',
        '#title' => t('Collapsible'),
        '#default_value' => $settings['collapsible'],
      );
      $element['collapsed'] = array(
        '#type' => 'checkbox',
        '#title' => t('Collapsed'),
        '#default_value' => $settings['collapsed'],
      );
      break;
    case 'double_field_unformatted_list':
      $element['style'] = $style_settings;
      break;
    case 'double_field_html_list':
      $element['list_type'] = array(
        '#type' => 'radios',
        '#title' => t('List type'),
        '#options' => array(
          'ul' => t('Unordered list'),
          'ol' => t('Ordered list'),
          'dl' => t('Definition list'),
        ),
        '#default_value' => $settings['list_type'],
      );
      $element['style'] = $style_settings;
      break;
    case 'double_field_table':
      $element['table'] = array(
        '#title' => t('Table'),
        '#type' => 'fieldset',
        '#collapsible' => TRUE,
        '#collapsed' => TRUE,
      );
      $element['table']['number_column'] = array(
        '#type' => 'checkbox',
        '#title' => t('Enable row number column'),
        '#default_value' => $settings['table']['number_column'],
        '#attributes' => array(
          'id' => 'number_column',
        ),
      );
      $element['table']['number_column_label'] = array(
        '#type' => 'textfield',
        '#title' => t('Number column label'),
        '#size' => 30,
        '#default_value' => $settings['table']['number_column_label'],
        '#states' => array(
          'visible' => array(
            '#number_column' => array(
              'checked' => TRUE,
            ),
          ),
        ),
      );
      foreach (array(
        'first',
        'second',
      ) as $subfield) {
        $element['table'][$subfield]['column_label'] = array(
          '#type' => 'textfield',
          '#title' => $subfield == 'first' ? t('First column label') : t('Second column label'),
          '#size' => 30,
          '#default_value' => $settings['table'][$subfield]['column_label'],
          '#tree' => TRUE,
        );
      }
      break;
  }

  // Get a list of formats.
  $options['_none'] = t('- None -');
  foreach (filter_formats() as $format) {
    $options[$format->format] = $format->name;
  }

  // Common settings.
  foreach (array(
    'first',
    'second',
  ) as $subfield) {
    $element[$subfield] = array(
      '#title' => $subfield == 'first' ? t('First subfield') : t('Second subfield'),
      '#type' => 'fieldset',
      '#collapsible' => TRUE,
      '#collapsed' => TRUE,
    );
    $element[$subfield]['hidden'] = array(
      '#type' => 'checkbox',
      '#title' => t('Hidden'),
      '#default_value' => $settings[$subfield]['hidden'],
    );
    $element[$subfield]['format'] = array(
      '#type' => 'select',
      '#title' => t('Text format'),
      '#options' => $options,
      '#default_value' => $settings[$subfield]['format'],
      '#description' => t('Warning: This setting may have security implications.'),
      '#element_validate' => array(
        'double_field_format_validate',
      ),
    );
    $element[$subfield]['prefix'] = array(
      '#type' => 'textfield',
      '#title' => t('Prefix'),
      '#size' => 30,
      '#default_value' => $settings[$subfield]['prefix'],
    );
    $element[$subfield]['suffix'] = array(
      '#type' => 'textfield',
      '#title' => t('Suffix'),
      '#size' => 30,
      '#default_value' => $settings[$subfield]['suffix'],
    );
  }
  return $element;
}