function double_field_field_widget_settings_form in Double Field 7.2
Same name and namespace in other branches
- 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;
}