function term_reference_tree_field_widget_form in Taxonomy Term Reference Tree Widget 7.2
Same name and namespace in other branches
- 7 term_reference_tree.widget.inc \term_reference_tree_field_widget_form()
Implements hook_field_widget_form().
File
- ./
term_reference_tree.widget.inc, line 512
Code
function term_reference_tree_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
$settings = $instance['widget']['settings'];
$voc = taxonomy_vocabulary_machine_name_load($field['settings']['allowed_values'][0]['vocabulary']);
$path = drupal_get_path('module', 'term_reference_tree');
$value_key = key($field['columns']);
$type = $instance['widget']['type'];
$default_value = array();
foreach ($items as $item) {
$key = $item[$value_key];
if ($key === 0) {
$default_value[$key] = '0';
}
else {
$default_value[$key] = $key;
}
}
$multiple = $field['cardinality'] > 1 || $field['cardinality'] == FIELD_CARDINALITY_UNLIMITED;
$properties = array();
if (!array_key_exists('#value', $element)) {
$element['#value'] = array();
}
// A switch statement, in case we ever add more widgets to this module.
switch ($instance['widget']['type']) {
case 'term_reference_tree':
$element['#attached']['js'] = array(
$path . '/term_reference_tree.js',
);
$element['#attached']['css'] = array(
$path . '/term_reference_tree.css',
);
$element['#type'] = 'checkbox_tree';
$element['#default_value'] = $multiple ? $default_value : array(
reset($default_value) => reset($default_value),
);
$element['#max_choices'] = $field['cardinality'];
$element['#max_depth'] = $settings['max_depth'];
$element['#start_minimized'] = $settings['start_minimized'];
$element['#leaves_only'] = $settings['leaves_only'];
$element['#filter_view'] = module_exists('views') ? $settings['filter_view'] : '';
$element['#select_parents'] = $settings['select_parents'];
$element['#cascading_selection'] = $settings['cascading_selection'];
$element['#track_list'] = $settings['track_list'];
$element['#parent_tid'] = $settings['parent_term_id'] || $field['settings']['allowed_values'][0]['parent'];
$element['#vocabulary'] = $voc ? $voc->vid : NULL;
$element['#token_display'] = module_exists('token') ? $settings['token_display'] : '';
break;
}
$element += array(
'#value_key' => $value_key,
'#element_validate' => array(
'_term_reference_tree_widget_validate',
),
'#properties' => $properties,
);
return $element;
}