summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGo MAEDA <maeda@farend.jp>2021-02-21 01:45:16 +0000
committerGo MAEDA <maeda@farend.jp>2021-02-21 01:45:16 +0000
commita8072b0d0f201754cfc6f0867b642fdb43af6054 (patch)
tree017985ca1118605da3c0fb51897bd9bea7f2596a
parentf8d96bb3598f4d3ffcdb0c4b8325e80ad9541128 (diff)
downloadredmine-a8072b0d0f201754cfc6f0867b642fdb43af6054.tar.gz
redmine-a8072b0d0f201754cfc6f0867b642fdb43af6054.zip
Add an interface to filter activities by user (#33602).
Patch by Mizuki ISHIKAWA. git-svn-id: http://svn.redmine.org/redmine/trunk@20752 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/helpers/activities_helper.rb7
-rw-r--r--app/views/activities/index.html.erb5
-rw-r--r--test/functional/activities_controller_test.rb1
-rw-r--r--test/helpers/activities_helper_test.rb20
4 files changed, 32 insertions, 1 deletions
diff --git a/app/helpers/activities_helper.rb b/app/helpers/activities_helper.rb
index 49074b561..8f3e92362 100644
--- a/app/helpers/activities_helper.rb
+++ b/app/helpers/activities_helper.rb
@@ -30,4 +30,11 @@ module ActivitiesHelper
end
sorted_events
end
+
+ def activity_authors_options_for_select(project, selected)
+ options = []
+ options += [["<< #{l(:label_me)} >>", User.current.id]] if User.current.logged?
+ options += Query.new(project: project).users.select{|user| user.active?}.map{|user| [user.name, user.id]}
+ options_for_select(options, selected)
+ end
end
diff --git a/app/views/activities/index.html.erb b/app/views/activities/index.html.erb
index f71266004..e7f179ebe 100644
--- a/app/views/activities/index.html.erb
+++ b/app/views/activities/index.html.erb
@@ -36,6 +36,10 @@
<%= t(:label_days_to_html, :days => @days, :date => date_field_tag('from', '', :value => (@date_to - 1), :size => 10)) %>
<%= calendar_for('from') %>
</p>
+<p>
+ <%= l(:label_user) %>
+ <%= select_tag('user_id', activity_authors_options_for_select(@project, params[:user_id]), include_blank: true) %>
+</p>
<ul>
<% @activity.event_types.each do |t| %>
<li>
@@ -51,7 +55,6 @@
<%= hidden_field_tag 'with_subprojects', 0, :id => nil %>
<p><label><%= check_box_tag 'with_subprojects', 1, @with_subprojects %> <%=l(:label_subproject_plural)%></label></p>
<% end %>
-<%= hidden_field_tag('user_id', params[:user_id]) unless params[:user_id].blank? %>
<p><%= submit_tag l(:button_apply), :class => 'button-small', :name => 'submit' %></p>
<% end %>
<% end %>
diff --git a/test/functional/activities_controller_test.rb b/test/functional/activities_controller_test.rb
index dbbe33b48..cab6c34bb 100644
--- a/test/functional/activities_controller_test.rb
+++ b/test/functional/activities_controller_test.rb
@@ -87,6 +87,7 @@ class ActivitiesControllerTest < Redmine::ControllerTest
assert_response :success
assert_select 'h2 a[href="/users/2"]', :text => 'John Smith'
+ assert_select '#sidebar select#user_id option[value="2"][selected=selected]'
i1 = Issue.find(1)
d1 = User.find(1).time_to_date(i1.created_on)
diff --git a/test/helpers/activities_helper_test.rb b/test/helpers/activities_helper_test.rb
index 714eab14a..8f86aca9a 100644
--- a/test/helpers/activities_helper_test.rb
+++ b/test/helpers/activities_helper_test.rb
@@ -109,4 +109,24 @@ class ActivitiesHelperTest < Redmine::HelperTest
sort_activity_events(events).map {|event, grouped| [event.name, grouped]}
)
end
+
+ def test_activity_authors_options_for_select_if_current_user_is_admin
+ User.current = User.find(1)
+ project = Project.find(1)
+
+ options = [["<< #{l(:label_me)} >>", 1], ['Dave Lopper', 3], ['John Smith', 2], ['Redmine Admin', 1], ['User Misc', 8]]
+ assert_equal(
+ options_for_select(options, nil),
+ activity_authors_options_for_select(project, nil))
+ end
+
+ def test_activity_authors_options_for_select_if_current_user_is_anonymous
+ User.current = nil
+ project = Project.find(1)
+
+ options = [['Dave Lopper', 3], ['John Smith', 2]]
+ assert_equal(
+ options_for_select(options, nil),
+ activity_authors_options_for_select(project, nil))
+ end
end