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
|
||||
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
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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 %>
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user