85 lines
2.1 KiB
CoffeeScript
85 lines
2.1 KiB
CoffeeScript
$ = jQuery
|
|
context = window
|
|
context.JK ||= {};
|
|
|
|
context.JK.SiteValidator = class SiteValidator
|
|
|
|
constructor: (site_type) ->
|
|
@EVENTS = context.JK.EVENTS
|
|
@rest = context.JK.Rest()
|
|
@site_type = site_type
|
|
@input_div = $(".site_validator#"+site_type+"_validator")
|
|
@data_input = @input_div.find('input')
|
|
@logger = context.JK.logger
|
|
@site_status = null
|
|
@spinner = @input_div.find('span.spinner-small')
|
|
@checkmark = @input_div.find('.validate-checkmark')
|
|
this.show_format_status()
|
|
|
|
init: () =>
|
|
this.renderErrors({})
|
|
@spinner.hide()
|
|
validator = this
|
|
@data_input.on 'blur', ->
|
|
validator.did_blur()
|
|
@data_input.on 'focus', ->
|
|
validator.show_format_status()
|
|
|
|
data_to_validate: () =>
|
|
url = @data_input.val()
|
|
if 0 < url.length
|
|
url.substring(0,2000)
|
|
else
|
|
null
|
|
|
|
show_format_status: () =>
|
|
data = this.data_to_validate()
|
|
yn = true
|
|
if data && 'url' == @site_type
|
|
regexp = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
|
|
yn = regexp.test(this.data_to_validate())
|
|
if yn
|
|
@checkmark.show()
|
|
else
|
|
@checkmark.hide()
|
|
yn
|
|
|
|
did_blur: () =>
|
|
if this.show_format_status()
|
|
this.validate_site()
|
|
|
|
validate_site: () =>
|
|
@site_status = null
|
|
@spinner.show()
|
|
@checkmark.hide()
|
|
@rest.validateUrlSite(this.data_to_validate(), @site_type)
|
|
.done(this.processSiteCheck)
|
|
.fail(this.processSiteCheckFail)
|
|
|
|
processSiteCheck: (response) =>
|
|
@spinner.hide()
|
|
if 'Valid Site' == response.message
|
|
@site_status = 'valid'
|
|
this.renderErrors({})
|
|
else
|
|
@site_status = 'invalid'
|
|
this.renderErrors(response)
|
|
@logger.debug("site_status = "+@site_status)
|
|
|
|
processSiteCheckFail: (response) =>
|
|
@spinner.hide()
|
|
@checkmark.hide()
|
|
@logger.error("site check error")
|
|
@site_status = 'invalid'
|
|
|
|
renderErrors: (errors) =>
|
|
errdiv = @input_div.find('.error')
|
|
if errmsg = context.JK.format_errors("site", errors)
|
|
@checkmark.hide()
|
|
errdiv.show()
|
|
errdiv.html(errmsg)
|
|
else
|
|
@checkmark.show()
|
|
errdiv.hide()
|
|
errdiv.html('')
|