function field_default_token_form_field_ui_field_edit_form_alter in Field default token 7
Implements hook_form_FORM_ID_alter().
File
- ./
field_default_token.module, line 114 - Enables to use tokens as field default values.
Code
function field_default_token_form_field_ui_field_edit_form_alter(&$form, &$form_state, $form_id) {
$field = $form['#field'];
$instance = $form['#instance'];
if (!isset($form['instance']['default_value_widget'])) {
if (field_behaviors_widget('default value', $instance) == FIELD_BEHAVIOR_DEFAULT && !empty($instance['default_value_function']) && $instance['default_value_function'] === 'field_default_token_default_value_function') {
// Read default value widget hidden by core.
$form['instance']['default_value_widget'] = field_ui_default_value_widget($field, $instance, $form, $form_state);
}
}
$options_widgets = array(
'options_select',
'options_buttons',
'options_onoff',
);
if (isset($instance['widget']['type']) && in_array($instance['widget']['type'], $options_widgets)) {
$default_value = '';
if (!empty($instance['default_value'])) {
foreach ($instance['default_value'] as $values) {
foreach ($values as $value) {
if (strpos($value, '[') !== FALSE) {
$default_value = $value;
}
}
}
}
$form['instance']['default_value_widget']['default_value_token'] = array(
'#type' => 'textfield',
'#title' => t('Token for default value'),
'#description' => t('If set, this token will be used as the field default value instead.'),
'#maxlength' => 1024,
'#default_value' => $default_value,
'#weight' => 100,
);
}
if (isset($form['instance']['default_value_widget'])) {
field_default_token_enlarge_max_length($form['instance']['default_value_widget']);
field_default_token_fix_number_validation($form['instance']['default_value_widget']);
// Allow tokens to be field value labels, not just field values.
if (isset($field['settings']['allowed_values']) && is_array($field['settings']['allowed_values'])) {
$form['instance']['default_value_label_token'] = array(
'#type' => 'checkbox',
'#title' => t('Token for default value contains field value label, not stored key'),
'#description' => t('If checked, token value must be field value label from allowed values list of key|label pairs.'),
'#default_value' => isset($instance['default_value_label_token']) ? $instance['default_value_label_token'] : FALSE,
'#weight' => 150,
);
}
$entity_type = $form['#instance']['entity_type'];
$token_type = $entity_type;
$entity_info = entity_get_info($entity_type);
if (isset($entity_info['token type'])) {
$token_type = $entity_info['token type'];
}
$form['instance']['default_value_widget']['token_tree'] = array(
'#theme' => 'token_tree',
'#token_types' => array(
$token_type,
),
'#dialog' => TRUE,
'#weight' => 200,
);
}
// Replace validator to disable validation of strings with tokens
// in Field UI forms.
foreach ($form['#validate'] as &$validator) {
if ($validator == 'field_ui_field_edit_form_validate') {
$validator = 'field_default_token_field_ui_field_edit_form_validate';
}
}
}