diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 39c2ebd..38d43e5 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -238,15 +238,10 @@ module ApplicationHelper end # Yields the given block for each project with its level in the tree + # + # Wrapper for Project#project_tree def project_tree(projects, &block) - ancestors = [] - projects.sort_by(&:lft).each do |project| - while (ancestors.any? && !project.is_descendant_of?(ancestors.last)) - ancestors.pop - end - yield project, ancestors.size - ancestors << project - end + Project.project_tree(projects, &block) end def project_nested_ul(projects, &block) diff --git a/app/models/project.rb b/app/models/project.rb index 000efa7..16c9744 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -565,6 +565,18 @@ class Project < ActiveRecord::Base return nil end end + + # Yields the given block for each project with its level in the tree + def self.project_tree(projects, &block) + ancestors = [] + projects.sort_by(&:lft).each do |project| + while (ancestors.any? && !project.is_descendant_of?(ancestors.last)) + ancestors.pop + end + yield project, ancestors.size + ancestors << project + end + end private