Fix HTML validation (#10354)
* Fix HTML validation * Report first HTML error instead on validation error
This commit is contained in:
		
							parent
							
								
									6f6abc369f
								
							
						
					
					
						commit
						0c46bd11aa
					
				@ -3,12 +3,16 @@
 | 
				
			|||||||
class HtmlValidator < ActiveModel::EachValidator
 | 
					class HtmlValidator < ActiveModel::EachValidator
 | 
				
			||||||
  def validate_each(record, attribute, value)
 | 
					  def validate_each(record, attribute, value)
 | 
				
			||||||
    return if value.blank?
 | 
					    return if value.blank?
 | 
				
			||||||
    record.errors.add(attribute, I18n.t('html_validator.invalid_markup')) unless valid_html?(value)
 | 
					    errors = html_errors(value)
 | 
				
			||||||
 | 
					    unless errors.empty?
 | 
				
			||||||
 | 
					      record.errors.add(attribute, I18n.t('html_validator.invalid_markup', error: errors.first.to_s))
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private
 | 
					  private
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def valid_html?(str)
 | 
					  def html_errors(str)
 | 
				
			||||||
    Nokogiri::HTML.fragment(str).to_s == str
 | 
					    fragment = Nokogiri::HTML.fragment(str)
 | 
				
			||||||
 | 
					    fragment.errors
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
				
			|||||||
@ -638,7 +638,7 @@ en:
 | 
				
			|||||||
      one: Something isn't quite right yet! Please review the error below
 | 
					      one: Something isn't quite right yet! Please review the error below
 | 
				
			||||||
      other: Something isn't quite right yet! Please review %{count} errors below
 | 
					      other: Something isn't quite right yet! Please review %{count} errors below
 | 
				
			||||||
  html_validator:
 | 
					  html_validator:
 | 
				
			||||||
    invalid_markup: contains invalid HTML markup
 | 
					    invalid_markup: 'contains invalid HTML markup: %{error}'
 | 
				
			||||||
  identity_proofs:
 | 
					  identity_proofs:
 | 
				
			||||||
    active: Active
 | 
					    active: Active
 | 
				
			||||||
    authorize: Yes, authorize
 | 
					    authorize: Yes, authorize
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user