@@ -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 |
|
|
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><% @ |
|
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