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 | 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…
	
		Reference in a new issue