Fixed: Custom fields of type version not proper handled in receiving e-mails (#11571).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10157 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
3f1c35b71e
commit
1949f61d0c
|
@ -126,6 +126,16 @@ class CustomField < ActiveRecord::Base
|
||||||
casted
|
casted
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def value_from_keyword(keyword, customized)
|
||||||
|
possible_values_options = possible_values_options(customized)
|
||||||
|
if possible_values_options.present?
|
||||||
|
keyword = keyword.to_s.downcase
|
||||||
|
possible_values_options.detect {|text, id| text.downcase == keyword}.try(:last)
|
||||||
|
else
|
||||||
|
keyword
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Returns a ORDER BY clause that can used to sort customized
|
# Returns a ORDER BY clause that can used to sort customized
|
||||||
# objects by their value of the custom field.
|
# objects by their value of the custom field.
|
||||||
# Returns nil if the custom field can not be used for sorting.
|
# Returns nil if the custom field can not be used for sorting.
|
||||||
|
|
|
@ -342,8 +342,8 @@ class MailHandler < ActionMailer::Base
|
||||||
# Returns a Hash of issue custom field values extracted from keywords in the email body
|
# Returns a Hash of issue custom field values extracted from keywords in the email body
|
||||||
def custom_field_values_from_keywords(customized)
|
def custom_field_values_from_keywords(customized)
|
||||||
customized.custom_field_values.inject({}) do |h, v|
|
customized.custom_field_values.inject({}) do |h, v|
|
||||||
if value = get_keyword(v.custom_field.name, :override => true)
|
if keyword = get_keyword(v.custom_field.name, :override => true)
|
||||||
h[v.custom_field.id.to_s] = value
|
h[v.custom_field.id.to_s] = v.custom_field.value_from_keyword(keyword, customized)
|
||||||
end
|
end
|
||||||
h
|
h
|
||||||
end
|
end
|
||||||
|
|
|
@ -182,6 +182,18 @@ class MailHandlerTest < ActiveSupport::TestCase
|
||||||
assert !issue.description.match(/^searchable field:/i)
|
assert !issue.description.match(/^searchable field:/i)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_add_issue_with_version_custom_fields
|
||||||
|
field = IssueCustomField.create!(:name => 'Affected version', :field_format => 'version', :is_for_all => true, :tracker_ids => [1,2,3])
|
||||||
|
|
||||||
|
issue = submit_email('ticket_with_custom_fields.eml', :issue => {:project => 'ecookbook'}) do |email|
|
||||||
|
email << "Affected version: 1.0\n"
|
||||||
|
end
|
||||||
|
assert issue.is_a?(Issue)
|
||||||
|
assert !issue.new_record?
|
||||||
|
issue.reload
|
||||||
|
assert_equal '2', issue.custom_field_value(field)
|
||||||
|
end
|
||||||
|
|
||||||
def test_add_issue_with_cc
|
def test_add_issue_with_cc
|
||||||
issue = submit_email('ticket_with_cc.eml', :issue => {:project => 'ecookbook'})
|
issue = submit_email('ticket_with_cc.eml', :issue => {:project => 'ecookbook'})
|
||||||
assert issue.is_a?(Issue)
|
assert issue.is_a?(Issue)
|
||||||
|
|
Loading…
Reference in New Issue