Feature #16207 » file_naming.diff
| app/controllers/issues_controller.rb | ||
|---|---|---|
| 65 | 65 |
if params[:columns] == 'all' |
| 66 | 66 |
@query.column_names = @query.available_inline_columns.map(&:name) |
| 67 | 67 |
end |
| 68 |
filename = @query.name.blank? || @query.name == '_' ? "issues" : @query.name.parameterize.underscore |
|
| 69 |
filename += ".#{params[:format]}"
|
|
| 68 | 70 |
when 'atom' |
| 69 | 71 |
@limit = Setting.feeds_limit.to_i |
| 70 | 72 |
when 'xml', 'json' |
| ... | ... | |
| 89 | 91 |
Issue.load_visible_relations(@issues) if include_in_api_response?('relations')
|
| 90 | 92 |
} |
| 91 | 93 |
format.atom { render_feed(@issues, :title => "#{@project || Setting.app_title}: #{l(:label_issue_plural)}") }
|
| 92 |
format.csv { send_data(query_to_csv(@issues, @query, params), :type => 'text/csv; header=present', :filename => 'issues.csv') }
|
|
| 93 |
format.pdf { send_data(issues_to_pdf(@issues, @project, @query), :type => 'application/pdf', :filename => 'issues.pdf') }
|
|
| 94 |
format.csv { send_data(query_to_csv(@issues, @query, params), :type => 'text/csv; header=present', :filename => filename) }
|
|
| 95 |
format.pdf { send_data(issues_to_pdf(@issues, @project, @query), :type => 'application/pdf', :filename => filename) }
|
|
| 94 | 96 |
end |
| 95 | 97 |
else |
| 96 | 98 |
respond_to do |format| |
| test/functional/issues_controller_test.rb | ||
|---|---|---|
| 397 | 397 |
assert_equal assigns(:query).columns.size, lines[0].split(',').size
|
| 398 | 398 |
end |
| 399 | 399 | |
| 400 |
def test_index_csv_filename_without_query |
|
| 401 |
get :index, :format => 'csv' |
|
| 402 |
assert_response :success |
|
| 403 |
assert_match /issues.csv/, @response.headers['Content-Disposition'] |
|
| 404 |
end |
|
| 405 | ||
| 406 |
def test_index_csv_filename_with_query |
|
| 407 |
q = IssueQuery.create!(:name => 'My Query Name 1', :visibility => IssueQuery::VISIBILITY_PUBLIC) |
|
| 408 |
get :index, :query_id => q.id, :format => 'csv' |
|
| 409 |
assert_response :success |
|
| 410 |
assert_match /my_query_name_1\.csv/, @response.headers['Content-Disposition'] |
|
| 411 |
end |
|
| 412 | ||
| 400 | 413 |
def test_index_csv_with_project |
| 401 | 414 |
get :index, :project_id => 1, :format => 'csv' |
| 402 | 415 |
assert_response :success |
| ... | ... | |
| 599 | 612 |
end |
| 600 | 613 |
end |
| 601 | 614 | |
| 615 |
def test_index_pdf_filename_without_query |
|
| 616 |
get :index, :format => 'pdf' |
|
| 617 |
assert_response :success |
|
| 618 |
assert_match /issues.pdf/, @response.headers['Content-Disposition'] |
|
| 619 |
end |
|
| 620 | ||
| 621 |
def test_index_pdf_filename_with_query |
|
| 622 |
q = IssueQuery.create!(:name => 'My Query Name 1', :visibility => IssueQuery::VISIBILITY_PUBLIC) |
|
| 623 |
get :index, :query_id => q.id, :format => 'pdf' |
|
| 624 |
assert_response :success |
|
| 625 |
assert_match /my_query_name_1\.pdf/, @response.headers['Content-Disposition'] |
|
| 626 |
end |
|
| 627 | ||
| 602 | 628 |
def test_index_pdf_with_query_grouped_by_list_custom_field |
| 603 | 629 |
get :index, :project_id => 1, :query_id => 9, :format => 'pdf' |
| 604 | 630 |
assert_response :success |