]> source.dussan.org Git - redmine.git/commitdiff
Add an interface to filter activities by user (#33602).
authorGo MAEDA <maeda@farend.jp>
Sun, 21 Feb 2021 01:45:16 +0000 (01:45 +0000)
committerGo MAEDA <maeda@farend.jp>
Sun, 21 Feb 2021 01:45:16 +0000 (01:45 +0000)
Patch by Mizuki ISHIKAWA.

git-svn-id: http://svn.redmine.org/redmine/trunk@20752 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/helpers/activities_helper.rb
app/views/activities/index.html.erb
test/functional/activities_controller_test.rb
test/helpers/activities_helper_test.rb

index 49074b5617c294b9e9731b7d9c742a9479d78252..8f3e923627d85b3300ca8a98c310f2cfe6a1c8eb 100644 (file)
@@ -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
index f71266004f8303782fc62b7f22c22e463cc703e4..e7f179ebeed1ad286b3e2fa535c77f59551698d6 100644 (file)
   <%= 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 %>
index dbbe33b48160b699d1d98917483e8ab7f72db40d..cab6c34bb61c52353b703e6567f0b4f8543d6edc 100644 (file)
@@ -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)
index 714eab14a03c394963a32a49776b56effeccd367..8f86aca9a999a66f657caa7d62fdd952588af8a4 100644 (file)
@@ -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