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-12-06 15:02:48 -05:00
c.isOldBrowser = true if $ . browser . mozilla && majorVersion < 25
2014-12-06 14:33:57 -05:00
c.isOldBrowser = true if $ . browser . chrome && majorVersion < 25
2014-12-06 15:02:48 -05:00
c.isOldBrowser = true if $ . browser . safari && majorVersion < 6 # 6 might have problems with Aether, or maybe just old minors of 6: https://errorception.com/projects/51a79585ee207206390002a2/errors/547a202e1ead63ba4e4ac9fd
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 ' , { }