@@ -79,7 +79,7 class IssuesController < ApplicationController | |||||
79 | Issue.load_visible_relations(@issues) if include_in_api_response?('relations') |
|
79 | Issue.load_visible_relations(@issues) if include_in_api_response?('relations') | |
80 | } |
|
80 | } | |
81 | format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") } |
|
81 | format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") } | |
82 | format.csv { send_data(query_to_csv(@issues, @query, params), :type => 'text/csv; header=present', :filename => 'issues.csv') } |
|
82 | format.csv { send_data(query_to_csv(@issues, @query, params[:csv]), :type => 'text/csv; header=present', :filename => 'issues.csv') } | |
83 | format.pdf { send_file_headers! :type => 'application/pdf', :filename => 'issues.pdf' } |
|
83 | format.pdf { send_file_headers! :type => 'application/pdf', :filename => 'issues.pdf' } | |
84 | end |
|
84 | end | |
85 | else |
|
85 | else |
@@ -184,6 +184,7 module QueriesHelper | |||||
184 | end |
|
184 | end | |
185 |
|
185 | |||
186 | def query_to_csv(items, query, options={}) |
|
186 | def query_to_csv(items, query, options={}) | |
|
187 | options ||= {} | |||
187 | columns = (options[:columns] == 'all' ? query.available_inline_columns : query.inline_columns) |
|
188 | columns = (options[:columns] == 'all' ? query.available_inline_columns : query.inline_columns) | |
188 | query.available_block_columns.each do |column| |
|
189 | query.available_block_columns.each do |column| | |
189 | if options[column.name].present? |
|
190 | if options[column.name].present? |
@@ -79,11 +79,11 | |||||
79 | <h3 class="title"><%= l(:label_export_options, :export_format => 'CSV') %></h3> |
|
79 | <h3 class="title"><%= l(:label_export_options, :export_format => 'CSV') %></h3> | |
80 | <%= form_tag(params.merge({:format => 'csv',:page=>nil}), :method => :get, :id => 'csv-export-form') do %> |
|
80 | <%= form_tag(params.merge({:format => 'csv',:page=>nil}), :method => :get, :id => 'csv-export-form') do %> | |
81 | <p> |
|
81 | <p> | |
82 | <label><%= radio_button_tag 'columns', '', true %> <%= l(:description_selected_columns) %></label><br /> |
|
82 | <label><%= radio_button_tag 'csv[columns]', '', true %> <%= l(:description_selected_columns) %></label><br /> | |
83 | <label><%= radio_button_tag 'columns', 'all' %> <%= l(:description_all_columns) %></label> |
|
83 | <label><%= radio_button_tag 'csv[columns]', 'all' %> <%= l(:description_all_columns) %></label> | |
84 | </p> |
|
84 | </p> | |
85 | <p> |
|
85 | <p> | |
86 | <label><%= check_box_tag 'description', '1', @query.has_column?(:description) %> <%= l(:field_description) %></label> |
|
86 | <label><%= check_box_tag 'csv[description]', '1', @query.has_column?(:description) %> <%= l(:field_description) %></label> | |
87 | </p> |
|
87 | </p> | |
88 | <% if @issue_count > Setting.issues_export_limit.to_i %> |
|
88 | <% if @issue_count > Setting.issues_export_limit.to_i %> | |
89 | <p class="icon icon-warning"> |
|
89 | <p class="icon icon-warning"> |
@@ -449,7 +449,7 class IssuesControllerTest < ActionController::TestCase | |||||
449 | Issue.generate!(:description => 'test_index_csv_with_description') |
|
449 | Issue.generate!(:description => 'test_index_csv_with_description') | |
450 |
|
450 | |||
451 | with_settings :default_language => 'en' do |
|
451 | with_settings :default_language => 'en' do | |
452 | get :index, :format => 'csv', :description => '1' |
|
452 | get :index, :format => 'csv', :csv => {:description => '1'} | |
453 | assert_response :success |
|
453 | assert_response :success | |
454 | assert_not_nil assigns(:issues) |
|
454 | assert_not_nil assigns(:issues) | |
455 | end |
|
455 | end | |
@@ -472,7 +472,7 class IssuesControllerTest < ActionController::TestCase | |||||
472 | end |
|
472 | end | |
473 |
|
473 | |||
474 | def test_index_csv_with_all_columns |
|
474 | def test_index_csv_with_all_columns | |
475 | get :index, :format => 'csv', :columns => 'all' |
|
475 | get :index, :format => 'csv', :csv => {:columns => 'all'} | |
476 | assert_response :success |
|
476 | assert_response :success | |
477 | assert_not_nil assigns(:issues) |
|
477 | assert_not_nil assigns(:issues) | |
478 | assert_equal 'text/csv; header=present', @response.content_type |
|
478 | assert_equal 'text/csv; header=present', @response.content_type | |
@@ -487,7 +487,7 class IssuesControllerTest < ActionController::TestCase | |||||
487 | issue.custom_field_values = {1 => ['MySQL', 'Oracle']} |
|
487 | issue.custom_field_values = {1 => ['MySQL', 'Oracle']} | |
488 | issue.save! |
|
488 | issue.save! | |
489 |
|
489 | |||
490 | get :index, :format => 'csv', :columns => 'all' |
|
490 | get :index, :format => 'csv', :csv => {:columns => 'all'} | |
491 | assert_response :success |
|
491 | assert_response :success | |
492 | lines = @response.body.chomp.split("\n") |
|
492 | lines = @response.body.chomp.split("\n") | |
493 | assert lines.detect {|line| line.include?('"MySQL, Oracle"')} |
|
493 | assert lines.detect {|line| line.include?('"MySQL, Oracle"')} | |
@@ -498,14 +498,14 class IssuesControllerTest < ActionController::TestCase | |||||
498 | issue = Issue.generate!(:project_id => 1, :tracker_id => 1, :custom_field_values => {field.id => '185.6'}) |
|
498 | issue = Issue.generate!(:project_id => 1, :tracker_id => 1, :custom_field_values => {field.id => '185.6'}) | |
499 |
|
499 | |||
500 | with_settings :default_language => 'fr' do |
|
500 | with_settings :default_language => 'fr' do | |
501 | get :index, :format => 'csv', :columns => 'all' |
|
501 | get :index, :format => 'csv', :csv => {:columns => 'all'} | |
502 | assert_response :success |
|
502 | assert_response :success | |
503 | issue_line = response.body.chomp.split("\n").map {|line| line.split(';')}.detect {|line| line[0]==issue.id.to_s} |
|
503 | issue_line = response.body.chomp.split("\n").map {|line| line.split(';')}.detect {|line| line[0]==issue.id.to_s} | |
504 | assert_include '185,60', issue_line |
|
504 | assert_include '185,60', issue_line | |
505 | end |
|
505 | end | |
506 |
|
506 | |||
507 | with_settings :default_language => 'en' do |
|
507 | with_settings :default_language => 'en' do | |
508 | get :index, :format => 'csv', :columns => 'all' |
|
508 | get :index, :format => 'csv', :csv => {:columns => 'all'} | |
509 | assert_response :success |
|
509 | assert_response :success | |
510 | issue_line = response.body.chomp.split("\n").map {|line| line.split(',')}.detect {|line| line[0]==issue.id.to_s} |
|
510 | issue_line = response.body.chomp.split("\n").map {|line| line.split(',')}.detect {|line| line[0]==issue.id.to_s} | |
511 | assert_include '185.60', issue_line |
|
511 | assert_include '185.60', issue_line |
General Comments 0
You need to be logged in to leave comments.
Login now