diff --git a/groups/app/helpers/projects_helper.rb b/groups/app/helpers/projects_helper.rb index 95268c124..0a076be99 100644 --- a/groups/app/helpers/projects_helper.rb +++ b/groups/app/helpers/projects_helper.rb @@ -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('
') - content_tag('div', title + content, :class => 'box') + content_tag('div', title + parts.join('
'), :class => 'box') end end