diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index c2a17e359..aa2927c83 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -162,7 +162,7 @@ class ProjectsController < ApplicationController return end - @users_by_role = @project.users_by_role + @principals_by_role = @project.principals_by_role @subprojects = @project.children.visible.to_a @news = @project.news.limit(5).includes(:author, :project).reorder("#{News.table_name}.created_on DESC").to_a @trackers = @project.rolled_up_trackers.visible diff --git a/app/models/project.rb b/app/models/project.rb index 526d479f3..e68e44054 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -507,12 +507,12 @@ class Project < ActiveRecord::Base end end - # Returns a hash of project users grouped by role - def users_by_role - members.includes(:user, :roles).inject({}) do |h, m| + # Returns a hash of project users/groups grouped by role + def principals_by_role + memberships.includes(:principal, :roles).inject({}) do |h, m| m.roles.each do |r| h[r] ||= [] - h[r] << m.user + h[r] << m.principal end h end diff --git a/app/views/projects/_members_box.html.erb b/app/views/projects/_members_box.html.erb index 1a088ead4..e915ab910 100644 --- a/app/views/projects/_members_box.html.erb +++ b/app/views/projects/_members_box.html.erb @@ -1,8 +1,8 @@ - <% if @users_by_role.any? %> + <% if @principals_by_role.any? %>

<%=l(:label_member_plural)%>

- <% @users_by_role.keys.sort.each do |role| %> -

<%= role %>: <%= @users_by_role[role].sort.collect{|u| link_to_user u}.join(", ").html_safe %>

+ <% @principals_by_role.keys.sort.each do |role| %> +

<%= role %>: <%= @principals_by_role[role].sort.collect{|p| link_to_user p}.join(", ").html_safe %>

<% end %>
<% end %> diff --git a/test/unit/project_test.rb b/test/unit/project_test.rb index 9475e764a..5fc3743d5 100644 --- a/test/unit/project_test.rb +++ b/test/unit/project_test.rb @@ -455,12 +455,16 @@ class ProjectTest < ActiveSupport::TestCase assert Project.find(3).allowed_parents.include?(nil) end - def test_users_by_role - users_by_role = Project.find(1).users_by_role - assert_kind_of Hash, users_by_role + def test_principals_by_role + group = Group.find(10) + Member.create!(:principal => group, :project_id => 1, :role_ids => [1]) + + principals_by_role = Project.find(1).principals_by_role + assert_kind_of Hash, principals_by_role role = Role.find(1) - assert_kind_of Array, users_by_role[role] - assert users_by_role[role].include?(User.find(2)) + assert_kind_of Array, principals_by_role[role] + assert principals_by_role[role].include?(User.find(2)) + assert principals_by_role[role].include?(group) end def test_rolled_up_trackers