patch_commit_f4fc36431c1f.patch 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. diff --git a/term_reference_tree.widget.inc b/term_reference_tree.widget.inc
  2. index 8bae7a1fb46632d924d2625b9897235506b7da0f..3159b4a0ee0067512d08e36efe12c494c47676bb 100644
  3. --- a/term_reference_tree.widget.inc
  4. +++ b/term_reference_tree.widget.inc
  5. @@ -22,6 +22,7 @@ function term_reference_tree_field_widget_info() {
  6. 'token_display' => '',
  7. 'parent_term_id' => '',
  8. 'max_depth' => '',
  9. + 'starting_depth' => 1,
  10. ),
  11. ),
  12. );
  13. @@ -181,6 +182,15 @@ function term_reference_tree_field_widget_settings_form($field, $instance) {
  14. '#return_value' => 1,
  15. );
  16. + $form['starting_depth'] = array(
  17. + '#type' => 'textfield',
  18. + '#title' => t('Starting Depth'),
  19. + '#description' => t("Only items equal and down this level will be selectable. First level is 1"),
  20. + '#default_value' => $settings['starting_depth'],
  21. + '#size' => 2,
  22. + '#return_value' => 1,
  23. + );
  24. +
  25. $form['parent_term_id'] = array(
  26. '#type' => 'textfield',
  27. '#title' => t('Parent Term ID'),
  28. @@ -300,9 +310,10 @@ function term_reference_tree_process_checkbox_tree($element, $form_state) {
  29. if ($max_choices != 1)
  30. $element['#tree'] = TRUE;
  31. + $starting_depth = !empty($element['#starting_depth']) ? $element['#starting_depth'] : 0;
  32. $tree = new stdClass;
  33. $tree->children = $terms;
  34. - $element[] = _term_reference_tree_build_level($element, $tree, $form_state, $value, $max_choices, array(), 1);
  35. + $element[] = _term_reference_tree_build_level($element, $tree, $form_state, $value, $max_choices, $starting_depth, array(), 1);
  36. //Add a track list element?
  37. $track_list = !empty($element['#track_list']) && $element['#track_list'];
  38. @@ -506,6 +517,7 @@ function term_reference_tree_field_widget_form(&$form, &$form_state, $field, $in
  39. $element['#default_value'] = $multiple ? $default_value : array(reset($default_value) => reset($default_value));
  40. $element['#max_choices'] = $field['cardinality'];
  41. $element['#max_depth'] = $settings['max_depth'];
  42. + $element['#starting_depth'] = $settings['starting_depth'];
  43. $element['#start_minimized'] = $settings['start_minimized'];
  44. $element['#leaves_only'] = $settings['leaves_only'];
  45. $element['#filter_view'] = module_exists('views') ? $settings['filter_view'] : '';
  46. @@ -649,7 +661,7 @@ function _term_reference_tree_get_allowed_values($filter) {
  47. * A completed checkbox_tree_item element, which contains a checkbox and
  48. * possibly a checkbox_tree_level element as well.
  49. */
  50. -function _term_reference_tree_build_item(&$element, &$term, &$form_state, &$value, $max_choices, $parent_tids, $parent, $depth) {
  51. +function _term_reference_tree_build_item(&$element, &$term, &$form_state, &$value, $max_choices, $starting_depth, $parent_tids, $parent, $depth) {
  52. $start_minimized = FALSE;
  53. if (array_key_exists('#start_minimized', $element)) {
  54. $start_minimized = $element['#start_minimized'];
  55. @@ -676,7 +688,7 @@ function _term_reference_tree_build_item(&$element, &$term, &$form_state, &$valu
  56. '#depth' => $depth,
  57. );
  58. - if (!$element['#leaves_only'] || count($term->children) == 0) {
  59. + if ((!$element['#leaves_only'] || count($term->children) == 0) && $depth >= $element['#starting_depth']) {
  60. $name = "edit-" . str_replace('_', '-', $element['#field_name']);
  61. $e = array(
  62. '#type' => ($max_choices == 1) ? 'radio' : 'checkbox',
  63. @@ -716,7 +728,7 @@ function _term_reference_tree_build_item(&$element, &$term, &$form_state, &$valu
  64. if (($depth + 1 <= $element['#max_depth'] || !$element['#max_depth']) && property_exists($term, 'children') && count($term->children) > 0) {
  65. $parents = $parent_tids;
  66. $parents[] = $term->tid;
  67. - $container[$term->tid . '-children'] = _term_reference_tree_build_level($element, $term, $form_state, $value, $max_choices, $parents, $depth+1);
  68. + $container[$term->tid . '-children'] = _term_reference_tree_build_level($element, $term, $form_state, $value, $max_choices, $starting_depth, $parents, $depth+1);
  69. $container['#level_start_minimized'] = $container[$term->tid . '-children']['#level_start_minimized'];
  70. }
  71. @@ -744,7 +756,7 @@ function _term_reference_tree_build_item(&$element, &$term, &$form_state, &$valu
  72. * @return
  73. * A completed checkbox_tree_level element.
  74. */
  75. -function _term_reference_tree_build_level(&$element, &$term, &$form_state, &$value, $max_choices, $parent_tids, $depth) {
  76. +function _term_reference_tree_build_level(&$element, &$term, &$form_state, &$value, $max_choices, $starting_depth, $parent_tids, $depth) {
  77. $start_minimized = FALSE;
  78. if (array_key_exists('#start_minimized', $element)) {
  79. $start_minimized = $element['#start_minimized'];
  80. @@ -766,7 +778,7 @@ function _term_reference_tree_build_level(&$element, &$term, &$form_state, &$val
  81. $container['#level_start_minimized'] = $depth > 1 && $element['#start_minimized'] && !($term->children_selected);
  82. foreach($term->children as $t) {
  83. - $container[$t->tid] = _term_reference_tree_build_item($element, $t, $form_state, $value, $max_choices, $parent_tids, $container, $depth);
  84. + $container[$t->tid] = _term_reference_tree_build_item($element, $t, $form_state, $value, $max_choices, $starting_depth, $parent_tids, $container, $depth);
  85. }
  86. return $container;