##// END OF EJS Templates
Display all users roles on project overview (#3339)....
Jean-Philippe Lang -
r2635:da2854cf750b
parent child
Show More
@@ -112,7 +112,7 class ProjectsController < ApplicationController
112 redirect_to_project_menu_item(@project, params[:jump]) && return
112 redirect_to_project_menu_item(@project, params[:jump]) && return
113 end
113 end
114
114
115 @members_by_role = @project.members.find(:all, :include => [:user, :roles], :order => 'position').group_by {|m| m.roles.first}
115 @users_by_role = @project.users_by_role
116 @subprojects = @project.children.visible
116 @subprojects = @project.children.visible
117 @news = @project.news.find(:all, :limit => 5, :include => [ :author, :project ], :order => "#{News.table_name}.created_on DESC")
117 @news = @project.news.find(:all, :limit => 5, :include => [ :author, :project ], :order => "#{News.table_name}.created_on DESC")
118 @trackers = @project.rolled_up_trackers
118 @trackers = @project.rolled_up_trackers
@@ -245,6 +245,17 class Project < ActiveRecord::Base
245 :order => "#{Tracker.table_name}.position")
245 :order => "#{Tracker.table_name}.position")
246 end
246 end
247
247
248 # Returns a hash of project users grouped by role
249 def users_by_role
250 members.find(:all, :include => [:user, :roles]).inject({}) do |h, m|
251 m.roles.each do |r|
252 h[r] ||= []
253 h[r] << m.user
254 end
255 h
256 end
257 end
258
248 # Deletes all project's members
259 # Deletes all project's members
249 def delete_all_members
260 def delete_all_members
250 me, mr = Member.table_name, MemberRole.table_name
261 me, mr = Member.table_name, MemberRole.table_name
@@ -35,13 +35,11
35 </div>
35 </div>
36
36
37 <div class="splitcontentright">
37 <div class="splitcontentright">
38 <% if @members_by_role.any? %>
38 <% if @users_by_role.any? %>
39 <div class="box">
39 <div class="box">
40 <h3 class="icon22 icon22-users"><%=l(:label_member_plural)%></h3>
40 <h3 class="icon22 icon22-users"><%=l(:label_member_plural)%></h3>
41 <p><% @members_by_role.keys.sort.each do |role| %>
41 <p><% @users_by_role.keys.sort.each do |role| %>
42 <%= role.name %>:
42 <%= role.name %>: <%= @users_by_role[role].sort.collect{|u| link_to_user u}.join(", ") %><br />
43 <%= @members_by_role[role].collect(&:user).sort.collect{|u| link_to_user u}.join(", ") %>
44 <br />
45 <% end %></p>
43 <% end %></p>
46 </div>
44 </div>
47 <% end %>
45 <% end %>
@@ -186,6 +186,14 class ProjectTest < Test::Unit::TestCase
186 assert_equal [5, 6, 3, 4], d.collect(&:id)
186 assert_equal [5, 6, 3, 4], d.collect(&:id)
187 end
187 end
188
188
189 def test_users_by_role
190 users_by_role = Project.find(1).users_by_role
191 assert_kind_of Hash, users_by_role
192 role = Role.find(1)
193 assert_kind_of Array, users_by_role[role]
194 assert users_by_role[role].include?(User.find(2))
195 end
196
189 def test_rolled_up_trackers
197 def test_rolled_up_trackers
190 parent = Project.find(1)
198 parent = Project.find(1)
191 parent.trackers = Tracker.find([1,2])
199 parent.trackers = Tracker.find([1,2])
General Comments 0
You need to be logged in to leave comments. Login now