diff options
-rw-r--r-- | app/helpers/custom_fields_helper.rb | 2 | ||||
-rw-r--r-- | app/helpers/issues_helper.rb | 2 | ||||
-rw-r--r-- | app/helpers/timelog_helper.rb | 2 | ||||
-rw-r--r-- | app/views/versions/_overview.html.erb | 2 | ||||
-rw-r--r-- | lib/redmine/export/pdf.rb | 2 | ||||
-rw-r--r-- | test/functional/issues_controller_test.rb | 14 | ||||
-rw-r--r-- | test/functional/timelog_controller_test.rb | 12 |
7 files changed, 30 insertions, 6 deletions
diff --git a/app/helpers/custom_fields_helper.rb b/app/helpers/custom_fields_helper.rb index 639af95fb..7d1368fa8 100644 --- a/app/helpers/custom_fields_helper.rb +++ b/app/helpers/custom_fields_helper.rb @@ -117,7 +117,7 @@ module CustomFieldsHelper # Return a string used to display a custom value def format_value(value, field_format) if value.is_a?(Array) - value.collect {|v| format_value(v, field_format)}.join(', ') + value.collect {|v| format_value(v, field_format)}.compact.sort.join(', ') else Redmine::CustomFieldFormat.format_value(value, field_format) end diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb index 0b33d48fb..b061840fb 100644 --- a/app/helpers/issues_helper.rb +++ b/app/helpers/issues_helper.rb @@ -320,7 +320,7 @@ module IssuesHelper issues.each do |issue| col_values = columns.collect do |column| s = if column.is_a?(QueryCustomFieldColumn) - cv = issue.custom_values.detect {|v| v.custom_field_id == column.custom_field.id} + cv = issue.custom_field_values.detect {|v| v.custom_field_id == column.custom_field.id} show_value(cv) else value = issue.send(column.name) diff --git a/app/helpers/timelog_helper.rb b/app/helpers/timelog_helper.rb index e3c7615b2..e27425acb 100644 --- a/app/helpers/timelog_helper.rb +++ b/app/helpers/timelog_helper.rb @@ -118,7 +118,7 @@ module TimelogHelper entry.hours.to_s.gsub('.', decimal_separator), entry.comments ] - fields += custom_fields.collect {|f| show_value(entry.custom_value_for(f)) } + fields += custom_fields.collect {|f| show_value(entry.custom_field_values.detect {|v| v.custom_field_id == f.id}) } csv << fields.collect {|c| Redmine::CodesetUtil.from_utf8( c.to_s, diff --git a/app/views/versions/_overview.html.erb b/app/views/versions/_overview.html.erb index aea77af12..a57241158 100644 --- a/app/views/versions/_overview.html.erb +++ b/app/views/versions/_overview.html.erb @@ -5,7 +5,7 @@ <% end %> <p><%=h version.description %></p> -<% if version.custom_values.any? %> +<% if version.custom_field_values.any? %> <ul> <% version.custom_field_values.each do |custom_value| %> <% if custom_value.value.present? %> diff --git a/lib/redmine/export/pdf.rb b/lib/redmine/export/pdf.rb index 8ae7575de..b9efd1a33 100644 --- a/lib/redmine/export/pdf.rb +++ b/lib/redmine/export/pdf.rb @@ -214,7 +214,7 @@ module Redmine # fetch all the row values col_values = query.columns.collect do |column| s = if column.is_a?(QueryCustomFieldColumn) - cv = issue.custom_values.detect {|v| v.custom_field_id == column.custom_field.id} + cv = issue.custom_field_values.detect {|v| v.custom_field_id == column.custom_field.id} show_value(cv) else value = issue.send(column.name) diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index aa96156b0..a41340ae6 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -337,6 +337,18 @@ class IssuesControllerTest < ActionController::TestCase assert_equal assigns(:query).available_columns.size + 1, lines[0].split(',').size end + def test_index_csv_with_multi_column_field + CustomField.find(1).update_attribute :multiple, true + issue = Issue.find(1) + issue.custom_field_values = {1 => ['MySQL', 'Oracle']} + issue.save! + + get :index, :format => 'csv', :columns => 'all' + assert_response :success + lines = @response.body.chomp.split("\n") + assert lines.detect {|line| line.include?('"MySQL, Oracle"')} + end + def test_index_csv_big_5 with_settings :default_language => "zh-TW" do str_utf8 = "\xe4\xb8\x80\xe6\x9c\x88" @@ -1086,7 +1098,7 @@ class IssuesControllerTest < ActionController::TestCase assert_response :success # TODO: should display links - assert_tag :td, :content => 'John Smith, Dave Lopper' + assert_tag :td, :content => 'Dave Lopper, John Smith' end def test_show_atom diff --git a/test/functional/timelog_controller_test.rb b/test/functional/timelog_controller_test.rb index b5af1b5b8..d23426c52 100644 --- a/test/functional/timelog_controller_test.rb +++ b/test/functional/timelog_controller_test.rb @@ -563,6 +563,18 @@ class TimelogControllerTest < ActionController::TestCase assert @response.body.include?("\n04/21/2007,redMine Admin,Design,eCookbook,3,Bug,Error 281 when updating a recipe,1.0,\"\",\"\"\n") end + def test_index_csv_export_with_multi_custom_field + field = TimeEntryCustomField.create!(:name => 'Test', :field_format => 'list', + :multiple => true, :possible_values => ['value1', 'value2']) + entry = TimeEntry.find(1) + entry.custom_field_values = {field.id => ['value1', 'value2']} + entry.save! + + get :index, :project_id => 1, :format => 'csv' + assert_response :success + assert_include '"value1, value2"', @response.body + end + def test_csv_big_5 user = User.find_by_id(3) user.language = "zh-TW" |