@@ -112,7 +112,7 class ProjectsController < ApplicationController | |||
|
112 | 112 | redirect_to_project_menu_item(@project, params[:jump]) && return |
|
113 | 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 | 116 | @subprojects = @project.children.visible |
|
117 | 117 | @news = @project.news.find(:all, :limit => 5, :include => [ :author, :project ], :order => "#{News.table_name}.created_on DESC") |
|
118 | 118 | @trackers = @project.rolled_up_trackers |
@@ -245,6 +245,17 class Project < ActiveRecord::Base | |||
|
245 | 245 | :order => "#{Tracker.table_name}.position") |
|
246 | 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 | 259 | # Deletes all project's members |
|
249 | 260 | def delete_all_members |
|
250 | 261 | me, mr = Member.table_name, MemberRole.table_name |
@@ -35,13 +35,11 | |||
|
35 | 35 | </div> |
|
36 | 36 | |
|
37 | 37 | <div class="splitcontentright"> |
|
38 |
|
|
|
38 | <% if @users_by_role.any? %> | |
|
39 | 39 | <div class="box"> |
|
40 | 40 | <h3 class="icon22 icon22-users"><%=l(:label_member_plural)%></h3> |
|
41 |
<p><% @ |
|
|
42 | <%= role.name %>: | |
|
43 | <%= @members_by_role[role].collect(&:user).sort.collect{|u| link_to_user u}.join(", ") %> | |
|
44 | <br /> | |
|
41 | <p><% @users_by_role.keys.sort.each do |role| %> | |
|
42 | <%= role.name %>: <%= @users_by_role[role].sort.collect{|u| link_to_user u}.join(", ") %><br /> | |
|
45 | 43 | <% end %></p> |
|
46 | 44 | </div> |
|
47 | 45 | <% end %> |
@@ -186,6 +186,14 class ProjectTest < Test::Unit::TestCase | |||
|
186 | 186 | assert_equal [5, 6, 3, 4], d.collect(&:id) |
|
187 | 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 | 197 | def test_rolled_up_trackers |
|
190 | 198 | parent = Project.find(1) |
|
191 | 199 | parent.trackers = Tracker.find([1,2]) |
General Comments 0
You need to be logged in to leave comments.
Login now