From 6a35c52c4a278ccc4dd97a25dfd8a831e6753d02 Mon Sep 17 00:00:00 2001 From: Marius BALTEANU Date: Sat, 9 Jan 2021 21:00:07 +0200 Subject: [PATCH] Add class 'error' to custom fields with validation errors --- app/helpers/custom_fields_helper.rb | 3 ++- app/models/custom_field_value.rb | 2 +- app/models/issue.rb | 2 +- test/functional/issues_controller_test.rb | 6 ++++++ 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/helpers/custom_fields_helper.rb b/app/helpers/custom_fields_helper.rb index 41b20c46a..2845c8673 100644 --- a/app/helpers/custom_fields_helper.rb +++ b/app/helpers/custom_fields_helper.rb @@ -111,7 +111,8 @@ module CustomFieldsHelper content_tag( "label", content + (required ? " *".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 diff --git a/app/models/custom_field_value.rb b/app/models/custom_field_value.rb index c670b30bd..d906454a6 100644 --- a/app/models/custom_field_value.rb +++ b/app/models/custom_field_value.rb @@ -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 diff --git a/app/models/issue.rb b/app/models/issue.rb index 2c6437311..1c0554f98 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -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) diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index cb04adad6..83b5a911f 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -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 -- 2.22.0