function select2widget_field_widget_form in Select2 Field Widget 7
Same name and namespace in other branches
- 7.2 select2widget.module \select2widget_field_widget_form()
Implements hook_field_widget_form().
File
- ./
select2widget.module, line 49 - Select2Widget module functionality.
Code
function select2widget_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
// Abstract over the actual field columns, to allow different field types to
// reuse those widgets.
$value_key = key($field['columns']);
$type = str_replace('options_', '', $instance['widget']['type']);
$multiple = $field['cardinality'] > 1 || $field['cardinality'] == FIELD_CARDINALITY_UNLIMITED;
$required = $element['#required'];
$has_value = isset($items[0][$value_key]);
$properties = _select2widget_options_properties($type, $multiple, $required, $has_value);
$entity_type = $element['#entity_type'];
$entity = $element['#entity'];
// Prepare the list of options.
$options = _select2widget_options_get_options($field, $instance, $properties, $entity_type, $entity);
// Put current field values in shape.
$default_value = _options_storage_to_form($items, $options, $value_key, $properties);
switch ($type) {
case 'select2widget':
$element += array(
'#type' => 'select',
'#default_value' => $default_value,
// Do not display a 'multiple' select box if there is only one option.
'#multiple' => $multiple && count($options) > 1,
'#options' => $options,
'#process' => array(
'select2widget_process_callback',
'ajax_process_form',
),
);
break;
}
$element += array(
'#value_key' => $value_key,
'#element_validate' => array(
'select2widget_field_widget_validate',
),
'#properties' => $properties,
);
return $element;
}