]> source.dussan.org Git - redmine.git/commitdiff
Adds query params as hidden field tags to the CSV export form (#22108).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 12 Mar 2016 09:54:40 +0000 (09:54 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 12 Mar 2016 09:54:40 +0000 (09:54 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@15202 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/helpers/queries_helper.rb
app/views/issues/index.html.erb
test/functional/issues_controller_test.rb

index 9ad2540e4ca8d9c9085e8a8df840747230a03941..6714562bad11c3d6be04425ac0e6ad91988339f7 100644 (file)
@@ -243,4 +243,34 @@ module QueriesHelper
       @query
     end
   end
+
+  # Returns the query definition as hidden field tags
+  def query_as_hidden_field_tags(query)
+    tags = hidden_field_tag("set_filter", "1", :id => nil)
+
+    if query.filters.present?
+      query.filters.each do |field, filter|
+        tags << hidden_field_tag("f[]", field, :id => nil)
+        tags << hidden_field_tag("op[#{field}]", filter[:operator], :id => nil)
+        filter[:values].each do |value|
+          tags << hidden_field_tag("v[#{field}][]", value, :id => nil)
+        end
+      end
+    end
+    if query.column_names.present?
+      query.column_names.each do |name|
+        tags << hidden_field_tag("c[]", name, :id => nil)
+      end
+    end
+    if query.totalable_names.present?
+      query.totalable_names.each do |name|
+        tags << hidden_field_tag("t[]", name, :id => nil)
+      end
+    end
+    if query.group_by.present?
+      tags << hidden_field_tag("group_by", query.group_by, :id => nil)
+    end
+
+    tags
+  end
 end
index 8310dc73e84f44a7a987e5eb5e8b001513870781..7cc2811f96c776cbd922e44de2a0d3001e616da5 100644 (file)
 <% end %>
 
 <div id="csv-export-options" style="display:none;">
-  <h3 class="title"><%= l(:label_export_options, :export_format => 'CSV') %></h3>  
-  <%= form_tag(params.merge({:format => 'csv',:page=>nil}), :method => :get, :id => 'csv-export-form') do %>
+  <h3 class="title"><%= l(:label_export_options, :export_format => 'CSV') %></h3>
+  <%= form_tag(_project_issues_path(@project, :format => 'csv'), :method => :get, :id => 'csv-export-form') do %>
+  <%= query_as_hidden_field_tags(@query) %>
+  <%= hidden_field_tag 'sort', params[:sort], :id => nil %>
   <p>
     <label><%= radio_button_tag 'csv[columns]', '', true %> <%= l(:description_selected_columns) %></label><br />
     <label><%= radio_button_tag 'csv[columns]', 'all' %> <%= l(:description_all_columns) %></label>
index 0ad26973eb6ae7e8499a4f9f5babbe29a2337ad7..e325e7f3651ed0da0415f285427ae946112f3c0b 100644 (file)
@@ -428,6 +428,26 @@ class IssuesControllerTest < ActionController::TestCase
     end
   end
 
+  def test_index_should_include_query_params_as_hidden_fields_in_csv_export_form
+    get :index, :project_id => 1, :set_filter => "1", :tracker_id => "2", :sort => 'status', :c => ["status", "priority"]
+
+    assert_select '#csv-export-form[action=?]', '/projects/ecookbook/issues.csv'
+    assert_select '#csv-export-form[method=?]', 'get'
+
+    assert_select '#csv-export-form' do
+      assert_select 'input[name=?][value=?]', 'set_filter', '1'
+
+      assert_select 'input[name=?][value=?]', 'f[]', 'tracker_id'
+      assert_select 'input[name=?][value=?]', 'op[tracker_id]', '='
+      assert_select 'input[name=?][value=?]', 'v[tracker_id][]', '2'
+
+      assert_select 'input[name=?][value=?]', 'c[]', 'status'
+      assert_select 'input[name=?][value=?]', 'c[]', 'priority'
+
+      assert_select 'input[name=?][value=?]', 'sort', 'status'
+    end
+  end
+
   def test_index_csv
     get :index, :format => 'csv'
     assert_response :success