]> source.dussan.org Git - redmine.git/commitdiff
Fixed that CSV Export of Spent Time ignores filters and columns selection (#13618).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 3 Apr 2013 16:48:28 +0000 (16:48 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 3 Apr 2013 16:48:28 +0000 (16:48 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11696 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/helpers/queries_helper.rb
app/views/timelog/index.html.erb
test/functional/timelog_controller_test.rb

index 592bba42ad24129df43c92ec4cd0874d953f1d55..2de6b0c9086d341d31469cfd0930c85d69a08240 100644 (file)
@@ -29,6 +29,30 @@ module QueriesHelper
     end
   end
 
+  def query_filters_hidden_tags(query)
+    tags = ''.html_safe
+    query.filters.each do |field, options|
+      tags << hidden_field_tag("f[]", field, :id => nil)
+      tags << hidden_field_tag("op[#{field}]", options[:operator], :id => nil)
+      options[:values].each do |value|
+        tags << hidden_field_tag("v[#{field}][]", value, :id => nil)
+      end
+    end
+    tags
+  end
+
+  def query_columns_hidden_tags(query)
+    tags = ''.html_safe
+    query.columns.each do |column|
+      tags << hidden_field_tag("c[]", column.name, :id => nil)
+    end
+    tags
+  end
+
+  def query_hidden_tags(query)
+    query_filters_hidden_tags(query) + query_columns_hidden_tags(query)
+  end
+
   def available_block_columns_tags(query)
     tags = ''.html_safe
     query.available_block_columns.each do |column|
index 35ddf81214fdc9d409e8898cb76ea9ad0292383f..fa0c20ff35d644e53acc8f7e336e40eeb580e723 100644 (file)
@@ -27,7 +27,8 @@
 
 <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 %>
+  <%= form_tag(params.slice(:project_id, :issue_id).merge(:format => 'csv', :page=>nil), :method => :get, :id => 'csv-export-form') do %>
+  <%= query_hidden_tags @query %>
   <p>
     <label><%= radio_button_tag 'columns', '', true %> <%= l(:description_selected_columns) %></label><br />
     <label><%= radio_button_tag 'columns', 'all' %> <%= l(:description_all_columns) %></label>
index 021f6624cdcb07bb7d371f90f97e8cf44bcc6340..7b9c9e891b0219e45cfcadf2bef2189b0b798f77 100644 (file)
@@ -548,6 +548,46 @@ class TimelogControllerTest < ActionController::TestCase
     assert assigns(:items).first.is_a?(TimeEntry)
   end
 
+  def test_index_at_project_level_should_include_csv_export_dialog
+    get :index, :project_id => 'ecookbook', 
+      :f => ['spent_on'],
+      :op => {'spent_on' => '>='},
+      :v => {'spent_on' => ['2007-04-01']},
+      :c => ['spent_on', 'user']
+    assert_response :success
+
+    assert_select '#csv-export-options' do
+      assert_select 'form[action=?][method=get]', '/projects/ecookbook/time_entries.csv' do
+        # filter
+        assert_select 'input[name=?][value=?]', 'f[]', 'spent_on'
+        assert_select 'input[name=?][value=?]', 'op[spent_on]', '&gt;='
+        assert_select 'input[name=?][value=?]', 'v[spent_on][]', '2007-04-01'
+        # columns
+        assert_select 'input[name=?][value=?]', 'c[]', 'spent_on'
+        assert_select 'input[name=?][value=?]', 'c[]', 'user'
+        assert_select 'input[name=?]', 'c[]', 2
+      end
+    end
+  end
+
+  def test_index_cross_project_should_include_csv_export_dialog
+    get :index
+    assert_response :success
+
+    assert_select '#csv-export-options' do
+      assert_select 'form[action=?][method=get]', '/time_entries.csv'
+    end
+  end
+
+  def test_index_at_issue_level_should_include_csv_export_dialog
+    get :index, :project_id => 'ecookbook', :issue_id => 3
+    assert_response :success
+
+    assert_select '#csv-export-options' do
+      assert_select 'form[action=?][method=get]', '/projects/ecookbook/issues/3/time_entries.csv'
+    end
+  end
+
   def test_index_csv_all_projects
     Setting.date_format = '%m/%d/%Y'
     get :index, :format => 'csv'