summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGo MAEDA <maeda@farend.jp>2020-04-22 14:52:58 +0000
committerGo MAEDA <maeda@farend.jp>2020-04-22 14:52:58 +0000
commitf19c291b59ee066fe6a458a8b3bb07e472374da6 (patch)
tree8dbdacf6d8066ddbc6d497851eeaa22d5cdecbbb
parentb90a6a404ffd39e0bc863940839b7c0f613471be (diff)
downloadredmine-f19c291b59ee066fe6a458a8b3bb07e472374da6.tar.gz
redmine-f19c291b59ee066fe6a458a8b3bb07e472374da6.zip
Show groups in members box on project overview page (#33174).
Patch by Mizuki ISHIKAWA. git-svn-id: http://svn.redmine.org/redmine/trunk@19718 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/controllers/projects_controller.rb2
-rw-r--r--app/models/project.rb14
-rw-r--r--app/views/projects/_members_box.html.erb6
-rw-r--r--test/unit/project_test.rb14
4 files changed, 23 insertions, 13 deletions
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..0119b1228 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -507,17 +507,23 @@ 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
end
+ # TODO: Remove this method in Redmine 5.0
+ def members_by_role
+ ActiveSupport::Deprecation.warn "Project#members_by_role will be removed. Use Project#principals_by_role instead."
+ principals_by_role
+ end
+
# Adds user as a project member with the default role
# Used for when a non-admin user creates a project
def add_default_member(user)
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? %>
<div class="members box">
<h3 class="icon icon-group"><%=l(:label_member_plural)%></h3>
- <% @users_by_role.keys.sort.each do |role| %>
- <p><span class="label"><%= role %>:</span> <%= @users_by_role[role].sort.collect{|u| link_to_user u}.join(", ").html_safe %></p>
+ <% @principals_by_role.keys.sort.each do |role| %>
+ <p><span class="label"><%= role %>:</span> <%= @principals_by_role[role].sort.collect{|p| link_to_user p}.join(", ").html_safe %></p>
<% end %>
</div>
<% 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