Fix HTML validation (#10354)
* Fix HTML validation * Report first HTML error instead on validation error
This commit is contained in:
		
							parent
							
								
									6f6abc369f
								
							
						
					
					
						commit
						0c46bd11aa
					
				
					 2 changed files with 8 additions and 4 deletions
				
			
		|  | @ -3,12 +3,16 @@ | |||
| class HtmlValidator < ActiveModel::EachValidator | ||||
|   def validate_each(record, attribute, value) | ||||
|     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 | ||||
| 
 | ||||
|   private | ||||
| 
 | ||||
|   def valid_html?(str) | ||||
|     Nokogiri::HTML.fragment(str).to_s == str | ||||
|   def html_errors(str) | ||||
|     fragment = Nokogiri::HTML.fragment(str) | ||||
|     fragment.errors | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -638,7 +638,7 @@ en: | |||
|       one: Something isn't quite right yet! Please review the error below | ||||
|       other: Something isn't quite right yet! Please review %{count} errors below | ||||
|   html_validator: | ||||
|     invalid_markup: contains invalid HTML markup | ||||
|     invalid_markup: 'contains invalid HTML markup: %{error}' | ||||
|   identity_proofs: | ||||
|     active: Active | ||||
|     authorize: Yes, authorize | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue