diff --git a/app/views/shared/categories_menu.rhtml b/app/views/shared/categories_menu.rhtml
index f517ad8..fc9bc3d 100644
--- a/app/views/shared/categories_menu.rhtml
+++ b/app/views/shared/categories_menu.rhtml
@@ -4,7 +4,7 @@
>
<%= item.name %>
- <% item.children.each do |child| %>
+ <% item.all_children.each do |child| %>
<% if (params[:controller] == 'search') && (params[:action] == 'assets') %>
- <%= link_to(content_tag('span', child.name), :controller => 'search', :action => 'assets', :asset => params[:asset], :category_path => child.explode_path) %>
<% else %>
diff --git a/lib/acts_as_filesystem.rb b/lib/acts_as_filesystem.rb
index a536c77..8febdd3 100644
--- a/lib/acts_as_filesystem.rb
+++ b/lib/acts_as_filesystem.rb
@@ -164,7 +164,7 @@ module ActsAsFileSystem
while !stack.empty?
element = stack.pop
result.push(element)
- element.children.each do |item|
+ element.children.reverse.each do |item|
stack.push(item)
end
end
@@ -172,6 +172,12 @@ module ActsAsFileSystem
result.map(&block)
end
+ def all_children
+ res = map_traversal
+ res.shift
+ res
+ end
+
end
end
diff --git a/test/unit/acts_as_filesystem_test.rb b/test/unit/acts_as_filesystem_test.rb
index aa51829..4b715ea 100644
--- a/test/unit/acts_as_filesystem_test.rb
+++ b/test/unit/acts_as_filesystem_test.rb
@@ -35,6 +35,20 @@ class ActsAsFilesystemTest < Test::Unit::TestCase
assert_equivalent [a1, a1_1, a1_2, a1_1_1, a1_1_2], a1.map_traversal
end
+ should 'list the full tree without the root' do
+ profile = create_user('testinguser').person
+
+ a1 = profile.articles.build(:name => 'a1'); a1.save!
+
+ a1_1 = profile.articles.build(:name => 'a1.1'); a1_1.parent = a1; a1_1.save!
+ a1_2 = profile.articles.build(:name => 'a1.2'); a1_2.parent = a1; a1_2.save!
+
+ a1_1_1 = profile.articles.build(:name => 'a1.1.1'); a1_1_1.parent = a1_1; a1_1_1.save!
+ a1_1_2 = profile.articles.build(:name => 'a1.1.2'); a1_1_2.parent = a1_1; a1_1_2.save!
+
+ assert_equivalent [a1_1, a1_2, a1_1_1, a1_1_2].map(&:id), a1.all_children.map(&:id)
+ end
+
should 'be able to traverse with a block' do
profile = create_user('testinguser').person
--
libgit2 0.21.2