diff --git a/term_reference_tree.module b/term_reference_tree.module index 7dbcf84..8f8c58b 100644 --- a/term_reference_tree.module +++ b/term_reference_tree.module @@ -139,7 +139,7 @@ function _term_reference_tree_get_children($tid, $vid) { $query = db_select('taxonomy_term_data', 't'); $query->join('taxonomy_term_hierarchy', 'h', 't.tid = h.tid'); $query->join('taxonomy_vocabulary', 'v', 'v.vid = t.vid'); - $query->fields('t', array('tid', 'name')); + $query->fields('t', array('tid', 'vid', 'name')); $query->addField('v', 'machine_name', 'vocabulary_machine_name'); $query->condition('t.vid', $vid); $query->condition('h.parent', $tid); @@ -218,8 +218,14 @@ function _term_reference_tree_get_options(&$terms, &$allowed, $filter) { if (is_array($terms) && count($terms) > 0) { foreach ($terms as $term) { if (!$filter || (is_array($allowed) && $allowed[$term->tid])) { - $options[$term->tid] = entity_label('taxonomy_term', $term); - $options += _term_reference_tree_get_options($term->children, $allowed, $filter); + // do not use entity_label() for non-term elements + if (empty($term->tid)) { + $options[''] = $term->name; + } + else { + $options[$term->tid] = entity_label('taxonomy_term', $term); + $options += _term_reference_tree_get_options($term->children, $allowed, $filter); + } } } } diff --git a/term_reference_tree.widget.inc b/term_reference_tree.widget.inc index 1685a43..0aa3e72 100644 --- a/term_reference_tree.widget.inc +++ b/term_reference_tree.widget.inc @@ -286,9 +286,10 @@ function term_reference_tree_process_checkbox_tree($element, $form_state) { if ($element['#max_choices'] == 1 && !$required) { array_unshift($element['#options_tree'], (object) array( 'tid' => '', - 'name' => 'N/A', + 'name' => t('N/A'), 'depth' => 0, 'vocabulary_machine_name' => $element['#vocabulary']->machine_name, + 'children' => array(), )); } $element['#options'] = _term_reference_tree_get_options($element['#options_tree'], $allowed, $element['#filter_view']);