summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2009-05-12 19:04:52 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2009-05-12 19:04:52 +0000
commitda2854cf750b2a848a250491aac17751cb596182 (patch)
tree4d50138bda5c2ab7b1c9944077a220eafd689b7f /app
parent3df4df3438f32e302cb45f6bc77c4eb1bc8b98e8 (diff)
downloadredmine-da2854cf750b2a848a250491aac17751cb596182.tar.gz
redmine-da2854cf750b2a848a250491aac17751cb596182.zip
Display all users roles on project overview (#3339).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2734 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r--app/controllers/projects_controller.rb2
-rw-r--r--app/models/project.rb11
-rw-r--r--app/views/projects/show.rhtml8
3 files changed, 15 insertions, 6 deletions
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 3f29e4e4c..0dcc874c6 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -112,7 +112,7 @@ class ProjectsController < ApplicationController
redirect_to_project_menu_item(@project, params[:jump]) && return
end
- @members_by_role = @project.members.find(:all, :include => [:user, :roles], :order => 'position').group_by {|m| m.roles.first}
+ @users_by_role = @project.users_by_role
@subprojects = @project.children.visible
@news = @project.news.find(:all, :limit => 5, :include => [ :author, :project ], :order => "#{News.table_name}.created_on DESC")
@trackers = @project.rolled_up_trackers
diff --git a/app/models/project.rb b/app/models/project.rb
index 64a5e98c8..b022ed96b 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -245,6 +245,17 @@ class Project < ActiveRecord::Base
:order => "#{Tracker.table_name}.position")
end
+ # Returns a hash of project users grouped by role
+ def users_by_role
+ members.find(:all, :include => [:user, :roles]).inject({}) do |h, m|
+ m.roles.each do |r|
+ h[r] ||= []
+ h[r] << m.user
+ end
+ h
+ end
+ end
+
# Deletes all project's members
def delete_all_members
me, mr = Member.table_name, MemberRole.table_name
diff --git a/app/views/projects/show.rhtml b/app/views/projects/show.rhtml
index 304fe5d67..4e068a5d8 100644
--- a/app/views/projects/show.rhtml
+++ b/app/views/projects/show.rhtml
@@ -35,13 +35,11 @@
</div>
<div class="splitcontentright">
- <% if @members_by_role.any? %>
+ <% if @users_by_role.any? %>
<div class="box">
<h3 class="icon22 icon22-users"><%=l(:label_member_plural)%></h3>
- <p><% @members_by_role.keys.sort.each do |role| %>
- <%= role.name %>:
- <%= @members_by_role[role].collect(&:user).sort.collect{|u| link_to_user u}.join(", ") %>
- <br />
+ <p><% @users_by_role.keys.sort.each do |role| %>
+ <%= role.name %>: <%= @users_by_role[role].sort.collect{|u| link_to_user u}.join(", ") %><br />
<% end %></p>
</div>
<% end %>