mirror of
https://github.com/meineerde/redmine.git
synced 2025-12-19 15:01:14 +00:00
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
This commit is contained in:
parent
b90a6a404f
commit
f19c291b59
@ -162,7 +162,7 @@ class ProjectsController < ApplicationController
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@users_by_role = @project.users_by_role
|
@principals_by_role = @project.principals_by_role
|
||||||
@subprojects = @project.children.visible.to_a
|
@subprojects = @project.children.visible.to_a
|
||||||
@news = @project.news.limit(5).includes(:author, :project).reorder("#{News.table_name}.created_on DESC").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
|
@trackers = @project.rolled_up_trackers.visible
|
||||||
|
|||||||
@ -507,17 +507,23 @@ class Project < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Returns a hash of project users grouped by role
|
# Returns a hash of project users/groups grouped by role
|
||||||
def users_by_role
|
def principals_by_role
|
||||||
members.includes(:user, :roles).inject({}) do |h, m|
|
memberships.includes(:principal, :roles).inject({}) do |h, m|
|
||||||
m.roles.each do |r|
|
m.roles.each do |r|
|
||||||
h[r] ||= []
|
h[r] ||= []
|
||||||
h[r] << m.user
|
h[r] << m.principal
|
||||||
end
|
end
|
||||||
h
|
h
|
||||||
end
|
end
|
||||||
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
|
# Adds user as a project member with the default role
|
||||||
# Used for when a non-admin user creates a project
|
# Used for when a non-admin user creates a project
|
||||||
def add_default_member(user)
|
def add_default_member(user)
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
<% if @users_by_role.any? %>
|
<% if @principals_by_role.any? %>
|
||||||
<div class="members box">
|
<div class="members box">
|
||||||
<h3 class="icon icon-group"><%=l(:label_member_plural)%></h3>
|
<h3 class="icon icon-group"><%=l(:label_member_plural)%></h3>
|
||||||
<% @users_by_role.keys.sort.each do |role| %>
|
<% @principals_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>
|
<p><span class="label"><%= role %>:</span> <%= @principals_by_role[role].sort.collect{|p| link_to_user p}.join(", ").html_safe %></p>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@ -455,12 +455,16 @@ class ProjectTest < ActiveSupport::TestCase
|
|||||||
assert Project.find(3).allowed_parents.include?(nil)
|
assert Project.find(3).allowed_parents.include?(nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_users_by_role
|
def test_principals_by_role
|
||||||
users_by_role = Project.find(1).users_by_role
|
group = Group.find(10)
|
||||||
assert_kind_of Hash, users_by_role
|
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)
|
role = Role.find(1)
|
||||||
assert_kind_of Array, users_by_role[role]
|
assert_kind_of Array, principals_by_role[role]
|
||||||
assert users_by_role[role].include?(User.find(2))
|
assert principals_by_role[role].include?(User.find(2))
|
||||||
|
assert principals_by_role[role].include?(group)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_rolled_up_trackers
|
def test_rolled_up_trackers
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user