diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2014-02-28 10:05:27 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2014-02-28 10:05:27 +0000 |
commit | 4c7a76785d9fb695d1fb9a95e55e301095061084 (patch) | |
tree | 160cd3be4f4f8b7f2e9fc88ae1c532cef5c9337d /lib | |
parent | 0cf7a27b503d03772e4ab26b6ef993f4092d669a (diff) | |
download | redmine-4c7a76785d9fb695d1fb9a95e55e301095061084.tar.gz redmine-4c7a76785d9fb695d1fb9a95e55e301095061084.zip |
Fixed that non-empty blank strings as custom field values are not properly validated (#16169).
git-svn-id: http://svn.redmine.org/redmine/trunk@12938 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'lib')
-rw-r--r-- | lib/redmine/field_format.rb | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/lib/redmine/field_format.rb b/lib/redmine/field_format.rb index 8699b713e..59c6c0090 100644 --- a/lib/redmine/field_format.rb +++ b/lib/redmine/field_format.rb @@ -131,7 +131,8 @@ module Redmine # Returns the validation error messages for custom_value # Should return an empty array if custom_value is valid def validate_custom_value(custom_value) - errors = Array.wrap(custom_value.value).reject(&:blank?).map do |value| + values = Array.wrap(custom_value.value).reject {|value| value.to_s == ''} + errors = values.map do |value| validate_single_value(custom_value.custom_field, value, custom_value.customized) end errors.flatten.uniq @@ -252,16 +253,15 @@ module Redmine class Unbounded < Base def validate_single_value(custom_field, value, customized=nil) errs = super - if value.present? - unless custom_field.regexp.blank? or value =~ Regexp.new(custom_field.regexp) - errs << ::I18n.t('activerecord.errors.messages.invalid') - end - if custom_field.min_length && value.length < custom_field.min_length - errs << ::I18n.t('activerecord.errors.messages.too_short', :count => custom_field.min_length) - end - if custom_field.max_length && custom_field.max_length > 0 && value.length > custom_field.max_length - errs << ::I18n.t('activerecord.errors.messages.too_long', :count => custom_field.max_length) - end + value = value.to_s + unless custom_field.regexp.blank? or value =~ Regexp.new(custom_field.regexp) + errs << ::I18n.t('activerecord.errors.messages.invalid') + end + if custom_field.min_length && value.length < custom_field.min_length + errs << ::I18n.t('activerecord.errors.messages.too_short', :count => custom_field.min_length) + end + if custom_field.max_length && custom_field.max_length > 0 && value.length > custom_field.max_length + errs << ::I18n.t('activerecord.errors.messages.too_long', :count => custom_field.max_length) end errs end @@ -528,8 +528,9 @@ module Redmine end def validate_custom_value(custom_value) - invalid_values = Array.wrap(custom_value.value) - Array.wrap(custom_value.value_was) - custom_value.custom_field.possible_values - if invalid_values.select(&:present?).any? + values = Array.wrap(custom_value.value).reject {|value| value.to_s == ''} + invalid_values = values - Array.wrap(custom_value.value_was) - custom_value.custom_field.possible_values + if invalid_values.any? [::I18n.t('activerecord.errors.messages.inclusion')] else [] |