Add class 'error' to custom fields with validation errors (#32764, #34580).

Patch by Marius BALTEANU.


git-svn-id: http://svn.redmine.org/redmine/trunk@20710 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA
2021-01-11 12:26:44 +00:00
parent d64a2934ff
commit 354d30df31
4 changed files with 10 additions and 3 deletions

View File

@@ -111,7 +111,8 @@ module CustomFieldsHelper
content_tag(
"label", content +
(required ? " <span class=\"required\">*</span>".html_safe : ""),
:for => for_tag_id)
:for => for_tag_id,
:class => custom_value.customized && custom_value.customized.errors[custom_value.custom_field.name].present? ? 'error' : nil)
end
# Return custom field tag with its label tag

View File

@@ -65,7 +65,7 @@ class CustomFieldValue
def validate_value
custom_field.validate_custom_value(self).each do |message|
customized.errors.add(:base, custom_field.name + ' ' + message)
customized.errors.add(custom_field.name, message)
end
end
end

View File

@@ -805,7 +805,7 @@ class Issue < ActiveRecord::Base
attribute = attribute.to_i
v = custom_field_values.detect {|v| v.custom_field_id == attribute}
if v && Array(v.value).detect(&:present?).nil?
errors.add :base, v.custom_field.name + ' ' + l('activerecord.errors.messages.blank')
errors.add(v.custom_field.name, l('activerecord.errors.messages.blank'))
end
else
if respond_to?(attribute) && send(attribute).blank? && !disabled_core_fields.include?(attribute)

View File

@@ -4061,6 +4061,8 @@ class IssuesControllerTest < Redmine::ControllerTest
)
end
assert_response :success
assert_select 'label[for=?][class=?]', "issue_custom_field_values_#{field.id}", 'error'
assert_select_error /Database cannot be blank/
end
@@ -4094,6 +4096,10 @@ class IssuesControllerTest < Redmine::ControllerTest
)
assert_response :success
end
assert_select 'label[for=?][class=?]', 'issue_due_date', 'error'
assert_select 'label[for=?][class=?]', "issue_custom_field_values_#{cf2.id}", 'error'
assert_select_error /Due date cannot be blank/i
assert_select_error /Bar cannot be blank/i
end