Extract code to render nested listed of projects in an helper (#11539).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10188 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
e52219f09d
commit
0a6c1d9c13
|
@ -195,6 +195,39 @@ module ApplicationHelper
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Renders a tree of projects as a nested set of unordered lists
|
||||||
|
# The given collection may be a subset of the whole project tree
|
||||||
|
# (eg. some intermediate nodes are private and can not be seen)
|
||||||
|
def render_project_nested_lists(projects)
|
||||||
|
s = ''
|
||||||
|
if projects.any?
|
||||||
|
ancestors = []
|
||||||
|
original_project = @project
|
||||||
|
projects.each do |project|
|
||||||
|
# set the project environment to please macros.
|
||||||
|
@project = project
|
||||||
|
if (ancestors.empty? || project.is_descendant_of?(ancestors.last))
|
||||||
|
s << "<ul class='projects #{ ancestors.empty? ? 'root' : nil}'>\n"
|
||||||
|
else
|
||||||
|
ancestors.pop
|
||||||
|
s << "</li>"
|
||||||
|
while (ancestors.any? && !project.is_descendant_of?(ancestors.last))
|
||||||
|
ancestors.pop
|
||||||
|
s << "</ul></li>\n"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
classes = (ancestors.empty? ? 'root' : 'child')
|
||||||
|
s << "<li class='#{classes}'><div class='#{classes}'>"
|
||||||
|
s << h(block_given? ? yield(project) : project.name)
|
||||||
|
s << "</div>\n"
|
||||||
|
ancestors << project
|
||||||
|
end
|
||||||
|
s << ("</li></ul>\n" * ancestors.size)
|
||||||
|
@project = original_project
|
||||||
|
end
|
||||||
|
s.html_safe
|
||||||
|
end
|
||||||
|
|
||||||
def render_page_hierarchy(pages, node=nil, options={})
|
def render_page_hierarchy(pages, node=nil, options={})
|
||||||
content = ''
|
content = ''
|
||||||
if pages[node]
|
if pages[node]
|
||||||
|
|
|
@ -51,38 +51,15 @@ module ProjectsHelper
|
||||||
content_tag('select', options.html_safe, :name => 'project[parent_id]', :id => 'project_parent_id')
|
content_tag('select', options.html_safe, :name => 'project[parent_id]', :id => 'project_parent_id')
|
||||||
end
|
end
|
||||||
|
|
||||||
# Renders a tree of projects as a nested set of unordered lists
|
# Renders the projects index
|
||||||
# The given collection may be a subset of the whole project tree
|
|
||||||
# (eg. some intermediate nodes are private and can not be seen)
|
|
||||||
def render_project_hierarchy(projects)
|
def render_project_hierarchy(projects)
|
||||||
s = ''
|
render_project_nested_lists(projects) do |project|
|
||||||
if projects.any?
|
s = link_to_project(project, {}, :class => "#{project.css_classes} #{User.current.member_of?(project) ? 'my-project' : nil}")
|
||||||
ancestors = []
|
if project.description.present?
|
||||||
original_project = @project
|
s << content_tag('div', textilizable(project.short_description, :project => project), :class => 'wiki description')
|
||||||
projects.each do |project|
|
|
||||||
# set the project environment to please macros.
|
|
||||||
@project = project
|
|
||||||
if (ancestors.empty? || project.is_descendant_of?(ancestors.last))
|
|
||||||
s << "<ul class='projects #{ ancestors.empty? ? 'root' : nil}'>\n"
|
|
||||||
else
|
|
||||||
ancestors.pop
|
|
||||||
s << "</li>"
|
|
||||||
while (ancestors.any? && !project.is_descendant_of?(ancestors.last))
|
|
||||||
ancestors.pop
|
|
||||||
s << "</ul></li>\n"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
classes = (ancestors.empty? ? 'root' : 'child')
|
|
||||||
s << "<li class='#{classes}'><div class='#{classes}'>" +
|
|
||||||
link_to_project(project, {}, :class => "#{project.css_classes} #{User.current.member_of?(project) ? 'my-project' : nil}")
|
|
||||||
s << "<div class='wiki description'>#{textilizable(project.short_description, :project => project)}</div>" unless project.description.blank?
|
|
||||||
s << "</div>\n"
|
|
||||||
ancestors << project
|
|
||||||
end
|
end
|
||||||
s << ("</li></ul>\n" * ancestors.size)
|
s
|
||||||
@project = original_project
|
|
||||||
end
|
end
|
||||||
s.html_safe
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns a set of options for a select field, grouped by project.
|
# Returns a set of options for a select field, grouped by project.
|
||||||
|
|
Loading…
Reference in New Issue