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