--- content_taxonomy.module 2009-06-30 19:26:35.915000000 +0300 +++ content_taxonomy_new.module 2009-06-30 14:27:29.090000000 +0300 @@ -257,21 +257,27 @@ function content_taxonomy_allowed_values $depth = (is_numeric($field['depth'])) ? $field['depth'] : NULL; - $tree = taxonomy_get_tree($field['vid'], content_taxonomy_field_get_parent($field), -1, $depth); - - if (is_array($tree)) { - foreach ($tree as $term) { - _content_taxonomy_localize_term($term); - if ($field['widget']['show_depth']) { - $value = str_repeat(' - ', $term->depth) . $term->name; - } - else { - $value = $term->name; - } - //do a check_plain except for selects because form api does that - $options[$term->tid] = ($field['widget']['type'] == 'content_taxonomy_select') ? $value : check_plain($value); - } + $parents = content_taxonomy_field_get_parent($field); + if (!is_array($parents)) $parents_ids = array($parents); else $parents_ids = $parents; + foreach($parents_ids as $parent) + { + $tree = taxonomy_get_tree($field['vid'], $parent, -1, $depth); + if (is_array($tree)) { + foreach ($tree as $term) { + _content_taxonomy_localize_term($term); + if ($field['widget']['show_depth']) { + $value = str_repeat(' - ', $term->depth) . $term->name; + } + else { + $value = $term->name; + } + //do a check_plain except for selects because form api does that + $options[$term->tid] = ($field['widget']['type'] == 'content_taxonomy_select') ? $value : check_plain($value); + } + } } + if (isset($field['#sorted'])) asort($options); + if (($field['widget']['type'] == 'content_taxonomy_select' && !$field['multiple']) || ($field['widget']['type'] == 'content_taxonomy_options' && !$field['multiple'] && !$field['required'])) { $options = array('' => theme('content_taxonomy_options_widgets_none', $field)) + $options; } @@ -283,14 +289,18 @@ function content_taxonomy_allowed_values */ function content_taxonomy_allowed_values_groups($field) { $options = array(); - $parent = content_taxonomy_field_get_parent($field); + $parents = content_taxonomy_field_get_parent($field); $group_parent = $field['widget']['group_parent']; //if children in no group - $default_terms = taxonomy_get_children($parent); - foreach ($default_terms as $default_term) { - _content_taxonomy_localize_term($default_term); - $options[$default_term->tid] = check_plain($default_term->name); + if (!is_array($parents)) $parents_ids = array($parents); else $parents_ids = $parents; + foreach($parents_ids as $parent) + { + $default_terms = taxonomy_get_children($parent); + foreach ($default_terms as $default_term) { + _content_taxonomy_localize_term($default_term); + $options[$default_term->tid] = check_plain($default_term->name); + } } foreach (taxonomy_get_children($group_parent) as $group) {