From 747e4ecd3a981e5d48d3028f5cd870b130eb65b4 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 16 Sep 2012 15:24:35 +0000 Subject: Adds a "depth" option to the child_pages macro (#10789). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10401 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lib/plugins/acts_as_tree/lib/active_record/acts/tree.rb | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'lib/plugins') diff --git a/lib/plugins/acts_as_tree/lib/active_record/acts/tree.rb b/lib/plugins/acts_as_tree/lib/active_record/acts/tree.rb index 79d164485..a1c83cf50 100644 --- a/lib/plugins/acts_as_tree/lib/active_record/acts/tree.rb +++ b/lib/plugins/acts_as_tree/lib/active_record/acts/tree.rb @@ -73,15 +73,20 @@ module ActiveRecord # Returns list of descendants. # # root.descendants # => [child1, subchild1, subchild2] - def descendants - children + children.collect(&:descendants).flatten + def descendants(depth=nil) + depth ||= 0 + result = children.dup + unless depth == 1 + result += children.collect {|child| child.descendants(depth-1)}.flatten + end + result end # Returns list of descendants and a reference to the current node. # # root.self_and_descendants # => [root, child1, subchild1, subchild2] - def self_and_descendants - [self] + descendants + def self_and_descendants(depth=nil) + [self] + descendants(depth) end # Returns the root node of the tree. -- cgit v1.2.3