You are here

function double_field_field_widget_settings_form in Double Field 7.2

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

Implements hook_field_widget_settings_form().

File

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

Code

function double_field_field_widget_settings_form($field, $instance) {
  $settings = $instance['widget']['settings'];
  $form['inline'] = array(
    '#type' => 'checkbox',
    '#title' => t('Display as inline element'),
    '#default_value' => $settings['inline'],
  );
  $subfield_types = explode('_&_', $instance['widget']['type']);
  foreach (array(
    'first',
    'second',
  ) as $key => $subfield) {
    $form[$subfield] = array(
      '#title' => ($subfield == 'first' ? t('First subfield') : t('Second subfield')) . ' (' . double_field_get_subwidgets($subfield_types[$key]) . ')',
      '#type' => 'fieldset',
      '#collapsible' => TRUE,
      '#collapsed' => TRUE,
    );
    switch ($subfield_types[$key]) {
      case 'textfield':
        $form[$subfield]['textfield']['size'] = array(
          '#type' => 'textfield',
          '#title' => t('Size'),
          '#default_value' => $settings[$subfield]['textfield']['size'],
          '#element_validate' => array(
            'element_validate_integer_positive',
          ),
          '#size' => 3,
        );
        $form[$subfield]['textfield']['placeholder'] = array(
          '#type' => 'textfield',
          '#title' => t('Placeholder attribute'),
          '#description' => t('Pre-filled value that serves as a hint for the user regarding what to type.'),
          '#default_value' => $settings[$subfield]['textfield']['placeholder'],
        );
        break;
      case 'checkbox':
        $form[$subfield]['checkbox']['on_value'] = array(
          '#type' => 'textfield',
          '#title' => t('On value'),
          '#default_value' => $settings[$subfield]['checkbox']['on_value'],
          '#required' => TRUE,
          '#subfield_settings' => $field['settings'][$subfield],
          '#element_validate' => array(
            'double_field_validate_number',
          ),
        );
        $form[$subfield]['checkbox']['off_value'] = array(
          '#type' => 'hidden',
          '#title' => t('Off value'),
          '#default_value' => $settings[$subfield]['checkbox']['off_value'],
          '#subfield_settings' => $field['settings'][$subfield],
        );
        if ($field['settings'][$subfield]['type'] == 'varchar') {
          $form[$subfield]['checkbox']['on_value']['#maxlength'] = $field['settings'][$subfield]['maxlength'];
        }
        break;
      case 'select':

        // List is not a core required module.
        module_load_include('module', 'list');
        $form[$subfield]['select']['allowed_values'] = array(
          '#type' => 'textarea',
          '#subfield' => $subfield,
          '#title' => t('Allowed values list'),
          '#default_value' => list_allowed_values_string($settings[$subfield]['select']['allowed_values']),
          '#element_validate' => array(
            'double_field_allowed_values_setting_validate',
          ),
          '#subfield_settings' => $field['settings'][$subfield],
        );
        $form[$subfield]['select']['allowed_values']['#description'] = '<p>' . t('The possible values this field can contain. Enter one value per line, in the format key|label.');
        $form[$subfield]['select']['allowed_values']['#description'] .= '<br/>' . t('The key is the stored value. The label will be used in displayed values and edit forms.');
        $form[$subfield]['select']['allowed_values']['#description'] .= '<br/>' . t('The label is optional: if a line contains a single string, it will be used as key and label.') . '</p>';
        break;
      case 'textarea':
        $form[$subfield]['textarea']['cols'] = array(
          '#type' => 'textfield',
          '#title' => t('Columns'),
          '#default_value' => $settings[$subfield]['textarea']['cols'],
          '#element_validate' => array(
            'element_validate_integer_positive',
          ),
          '#size' => 3,
          '#description' => t('How many columns wide the textarea should be'),
        );
        $form[$subfield]['textarea']['rows'] = array(
          '#type' => 'textfield',
          '#title' => t('Rows'),
          '#default_value' => $settings[$subfield]['textarea']['rows'],
          '#element_validate' => array(
            'element_validate_integer_positive',
          ),
          '#size' => 3,
          '#description' => t('How many rows high the textarea should be.'),
        );
        $form[$subfield]['textarea']['resizable'] = array(
          '#type' => 'checkbox',
          '#title' => t('Resizable'),
          '#default_value' => $settings[$subfield]['textarea']['resizable'],
          '#description' => t('Whether users should be allowed to resize the text area.'),
        );
        $form[$subfield]['textarea']['placeholder'] = array(
          '#type' => 'textfield',
          '#title' => t('Placeholder attribute'),
          '#description' => t('Pre-filled value that serves as a hint for the user regarding what to type.'),
          '#default_value' => $settings[$subfield]['textarea']['placeholder'],
        );
        break;
    }
    $form[$subfield]['general'] = array(
      '#title' => t('Common settings'),
      '#type' => 'fieldset',
      '#collapsible' => TRUE,
      '#collapsed' => TRUE,
    );
    $form[$subfield]['general']['required'] = array(
      '#type' => 'checkbox',
      '#title' => t('Required'),
      '#default_value' => $settings[$subfield]['general']['required'],
    );
    $form[$subfield]['general']['prefix'] = array(
      '#type' => 'textfield',
      '#title' => t('Prefix'),
      '#default_value' => $settings[$subfield]['general']['prefix'],
    );
    $form[$subfield]['general']['suffix'] = array(
      '#type' => 'textfield',
      '#title' => t('Suffix'),
      '#default_value' => $settings[$subfield]['general']['suffix'],
    );
  }
  return $form;
}