You are here

function double_field_field_settings_form in Double Field 7.2

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

Implements hook_field_settings_form().

File

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

Code

function double_field_field_settings_form($field, $instance, $has_data) {
  $settings = $field['settings'];
  $type_options = array(
    'varchar' => t('Varchar'),
    'text' => t('Text'),
    'int' => t('Integer'),
    'float' => t('Float'),
    'decimal' => t('Decimal'),
  );
  $size_options = array(
    'tiny' => t('Tiny'),
    'small' => t('Small'),
    'medium' => t('Medium'),
    'normal' => t('Normal'),
    'big' => t('Big'),
  );
  foreach (array(
    'first',
    'second',
  ) as $subfield) {
    $form[$subfield] = array(
      '#type' => 'fieldset',
      '#title' => $subfield == 'first' ? t('First subfield') : t('Second subfield'),
      '#collapsible' => TRUE,
    );
    $form[$subfield]['type'] = array(
      '#type' => 'select',
      '#title' => t('Field type'),
      '#default_value' => $settings[$subfield]['type'],
      '#required' => TRUE,
      '#options' => $type_options,
      '#disabled' => $has_data,
    );
    $form[$subfield]['maxlength'] = array(
      '#type' => 'textfield',
      '#title' => t('Maximum length'),
      '#default_value' => $settings[$subfield]['maxlength'],
      '#required' => TRUE,
      '#description' => t('The maximum length of the subfield in characters.'),
      '#element_validate' => array(
        'element_validate_integer_positive',
      ),
      '#disabled' => $has_data,
      '#size' => 10,
      '#states' => array(
        'visible' => array(
          ":input[name='field[settings][{$subfield}][type]']" => array(
            'value' => 'varchar',
          ),
        ),
      ),
    );
    $form[$subfield]['size'] = array(
      '#type' => 'select',
      '#title' => t('Size'),
      '#default_value' => $settings[$subfield]['size'],
      '#required' => TRUE,
      '#options' => $size_options,
      '#disabled' => $has_data,
      '#states' => array(
        'visible' => array(
          ":input[name='field[settings][{$subfield}][type]']" => array(
            array(
              'value' => 'int',
            ),
            array(
              'value' => 'float',
            ),
          ),
        ),
      ),
    );
    $form[$subfield]['precision'] = array(
      '#type' => 'select',
      '#title' => t('Precision'),
      '#options' => drupal_map_assoc(range(10, 32)),
      '#default_value' => $settings[$subfield]['precision'],
      '#description' => t('The total number of digits to store in the database, including those to the right of the decimal.'),
      '#disabled' => $has_data,
      '#states' => array(
        'visible' => array(
          ":input[name='field[settings][{$subfield}][type]']" => array(
            'value' => 'decimal',
          ),
        ),
      ),
    );
    $form[$subfield]['scale'] = array(
      '#type' => 'select',
      '#title' => t('Scale'),
      '#options' => drupal_map_assoc(range(0, 10)),
      '#default_value' => $settings[$subfield]['scale'],
      '#description' => t('The number of digits to the right of the decimal.'),
      '#disabled' => $has_data,
      '#states' => array(
        'visible' => array(
          ":input[name='field[settings][{$subfield}][type]']" => array(
            'value' => 'decimal',
          ),
        ),
      ),
    );
  }
  return $form;
}