2014-11-28 20:49:41 -05:00
|
|
|
RootView = require 'views/core/RootView'
|
2014-11-29 15:46:04 -05:00
|
|
|
template = require 'templates/home-view'
|
2014-01-03 13:32:13 -05:00
|
|
|
|
2014-07-17 20:16:32 -04:00
|
|
|
module.exports = class HomeView extends RootView
|
2014-01-03 13:32:13 -05:00
|
|
|
id: 'home-view'
|
|
|
|
template: template
|
2014-03-21 20:42:13 -04:00
|
|
|
|
2014-06-19 16:42:25 -04:00
|
|
|
events:
|
2014-11-22 20:38:01 -05:00
|
|
|
'click #play-button': 'onClickBeginnerCampaign'
|
2014-01-03 13:32:13 -05:00
|
|
|
|
2014-10-21 19:49:25 -04:00
|
|
|
constructor: ->
|
|
|
|
super()
|
2014-11-28 15:05:34 -05:00
|
|
|
window.tracker?.trackEvent 'Homepage Loaded', category: 'Homepage', ['Google Analytics']
|
2014-11-27 12:44:08 -05:00
|
|
|
if not me.get('hourOfCode') and @getQueryVariable 'hour_of_code'
|
|
|
|
@setUpHourOfCode()
|
|
|
|
elapsed = (new Date() - new Date(me.get('dateCreated')))
|
|
|
|
if me.get('hourOfCode') and elapsed < 86400 * 1000 and me.get('preferredLanguage', true) is 'en-US'
|
|
|
|
# Show the Hour of Code footer explanation in English until it's been more than a day
|
|
|
|
@explainsHourOfCode = true
|
2014-10-21 19:49:25 -04:00
|
|
|
|
2014-01-03 13:32:13 -05:00
|
|
|
getRenderData: ->
|
|
|
|
c = super()
|
|
|
|
if $.browser
|
2014-04-13 23:31:23 -04:00
|
|
|
majorVersion = $.browser.versionNumber
|
2014-01-03 13:32:13 -05:00
|
|
|
c.isOldBrowser = true if $.browser.mozilla && majorVersion < 21
|
|
|
|
c.isOldBrowser = true if $.browser.chrome && majorVersion < 17
|
2014-04-14 19:34:11 -04:00
|
|
|
c.isOldBrowser = true if $.browser.safari && majorVersion < 6
|
2014-01-03 13:32:13 -05:00
|
|
|
else
|
|
|
|
console.warn 'no more jquery browser version...'
|
2014-03-16 19:59:48 -04:00
|
|
|
c.isEnglish = (me.get('preferredLanguage') or 'en').startsWith 'en'
|
2014-04-09 01:50:13 -04:00
|
|
|
c.languageName = me.get('preferredLanguage')
|
2014-11-27 12:44:08 -05:00
|
|
|
c.explainsHourOfCode = @explainsHourOfCode
|
2014-11-30 15:27:34 -05:00
|
|
|
c.isMobile = @isMobile()
|
|
|
|
c.isIPadBrowser = @isIPadBrowser()
|
2014-12-03 13:04:50 -05:00
|
|
|
c.playText = $.i18n.t('home.try_it', false)
|
|
|
|
if c.playText is 'home.try_it'
|
|
|
|
c.playText = $.i18n.t 'home.play' # Temporary fallback for not having many try_it translations yet.
|
2014-01-03 13:32:13 -05:00
|
|
|
c
|
|
|
|
|
2014-09-25 18:32:33 -04:00
|
|
|
onClickBeginnerCampaign: (e) ->
|
2014-11-26 09:58:23 -05:00
|
|
|
@playSound 'menu-button-click'
|
2014-09-25 18:32:33 -04:00
|
|
|
e.preventDefault()
|
|
|
|
e.stopImmediatePropagation()
|
2014-11-28 15:05:34 -05:00
|
|
|
window.tracker?.trackEvent 'Click Play', category: 'Homepage'
|
2014-11-10 18:24:05 -05:00
|
|
|
window.open '/play', '_blank'
|
|
|
|
|
|
|
|
afterInsert: ->
|
|
|
|
super(arguments...)
|
2014-11-27 12:44:08 -05:00
|
|
|
@$el.addClass 'hour-of-code' if @explainsHourOfCode
|
|
|
|
|
|
|
|
setUpHourOfCode: ->
|
|
|
|
elapsed = (new Date() - new Date(me.get('dateCreated')))
|
|
|
|
if elapsed < 5 * 60 * 1000
|
|
|
|
me.set 'hourOfCode', true
|
|
|
|
me.patch()
|
|
|
|
# We may also insert the tracking pixel for everyone on the WorldMapView so as to count directly-linked visitors.
|
|
|
|
$('body').append($('<img src="http://code.org/api/hour/begin_codecombat.png" style="visibility: hidden;">'))
|
|
|
|
application.tracker?.trackEvent 'Hour of Code Begin', {}
|