Display group name in the member list on project overview.

git-svn-id: http://redmine.rubyforge.org/svn/branches/work@1382 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2008-04-29 11:39:29 +00:00
parent 8437cbe69c
commit 2685740e2e

View File

@@ -31,11 +31,20 @@ module ProjectsHelper
# Renders the member list displayed on project overview
def render_member_list(project)
members_by_role = project.members.find(:all, :include => [:user, :role], :order => 'position').group_by {|m| m.role}
if members_by_role.any?
parts = []
memberships_by_role = project.memberships.find(:all, :include => :role, :order => 'position').group_by {|m| m.role}
memberships_by_role.keys.sort.each do |role|
role_parts = []
# Display group name (with its 5 first users) or user name
memberships_by_role[role].select {|m| m.inherited_from.nil?}.collect(&:principal).sort.each do |p|
next if p.is_a?(User) && !p.active?
role_parts << (p.is_a?(Group) ? ("#{p} (#{p.users.sort.slice(0,5).collect {|u| link_to_user(u)}.join(', ')})") : link_to_user(p))
end
parts << "#{role.name}: #{role_parts.join(', ')}" unless role_parts.empty?
end
if !parts.empty?
title = content_tag('h3', l(:label_member_plural), :class => 'icon22 icon22-users')
content = members_by_role.keys.sort.collect { |role| "#{role.name}: " + members_by_role[role].collect(&:user).sort.collect{|u| link_to_user u}.join(", ") }.join('<br />')
content_tag('div', title + content, :class => 'box')
content_tag('div', title + parts.join('<br />'), :class => 'box')
end
end