codecombat/app/views/core/ContactModal.coffee

52 lines
1.6 KiB
CoffeeScript
Raw Normal View History

ModalView = require 'views/core/ModalView'
template = require 'templates/core/contact'
2014-01-03 13:32:13 -05:00
forms = require 'core/forms'
{sendContactMessage} = require 'core/contact'
2014-01-03 13:32:13 -05:00
contactSchema =
additionalProperties: false
required: ['email', 'message']
2014-01-03 13:32:13 -05:00
properties:
email:
type: 'string'
maxLength: 100
minLength: 1
format: 'email'
message:
type: 'string'
minLength: 1
module.exports = class ContactModal extends ModalView
2014-06-30 22:16:26 -04:00
id: 'contact-modal'
2014-01-03 13:32:13 -05:00
template: template
2014-01-10 20:32:29 -05:00
closeButton: true
2014-01-03 13:32:13 -05:00
events:
2014-06-30 22:16:26 -04:00
'click #contact-submit-button': 'contact'
2014-01-03 13:32:13 -05:00
contact: ->
@playSound 'menu-button-click'
2014-01-03 13:32:13 -05:00
forms.clearFormAlerts @$el
contactMessage = forms.formToObject @$el
res = tv4.validateMultiple contactMessage, contactSchema
return forms.applyErrorsToForm @$el, res.errors unless res.valid
@populateBrowserData contactMessage
contactMessage.country = me.get('country')
2014-01-03 13:32:13 -05:00
window.tracker?.trackEvent 'Sent Feedback', message: contactMessage
sendContactMessage contactMessage, @$el
$.post "/db/user/#{me.id}/track/contact_codecombat"
populateBrowserData: (context) ->
if $.browser
context.browser = "#{$.browser.platform} #{$.browser.name} #{$.browser.versionNumber}"
context.screenSize = "#{screen?.width ? $(window).width()} x #{screen?.height ? $(window).height()}"
context.screenshotURL = @screenshotURL
updateScreenshot: ->
return unless @screenshotURL
screenshotEl = @$el.find('#contact-screenshot').removeClass('secret')
screenshotEl.find('a').prop('href', @screenshotURL)
screenshotEl.find('img').prop('src', @screenshotURL)