2014-11-28 17:49:41 -08:00
RootView = require ' views/core/RootView '
2014-11-29 12:46:04 -08:00
template = require ' templates/home-view '
2014-01-03 10:32:13 -08:00
2014-07-17 17:16:32 -07:00
module.exports = class HomeView extends RootView
2014-01-03 10:32:13 -08:00
id: ' home-view '
template: template
2014-03-21 17:42:13 -07:00
2014-06-19 13:42:25 -07:00
events:
2014-11-22 17:38:01 -08:00
' click # play-button ' : ' onClickBeginnerCampaign '
2014-01-03 10:32:13 -08:00
2014-10-21 16:49:25 -07:00
constructor: ->
super ( )
2015-02-27 16:07:41 -08:00
window . tracker ? . trackEvent ' Homepage Loaded ' , category: ' Homepage '
2014-11-27 09:44:08 -08: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 16:49:25 -07:00
2014-01-03 10:32:13 -08:00
getRenderData: ->
c = super ( )
if $ . browser
2014-04-13 20:31:23 -07:00
majorVersion = $ . browser . versionNumber
2014-12-06 12:02:48 -08:00
c.isOldBrowser = true if $ . browser . mozilla && majorVersion < 25
2015-04-28 14:49:10 -07:00
c.isOldBrowser = true if $ . browser . chrome && majorVersion < 31 # Noticed Gems in the Deep not loading with 30
2014-12-06 12:02:48 -08: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 10:32:13 -08:00
else
console . warn ' no more jquery browser version... '
2015-01-04 08:05:38 -08:00
c.isEnglish = _ . string . startsWith ( me . get ( ' preferredLanguage ' ) or ' en ' ) , ' en '
2014-04-09 13:50:13 +08:00
c.languageName = me . get ( ' preferredLanguage ' )
2014-11-27 09:44:08 -08:00
c.explainsHourOfCode = @ explainsHourOfCode
2014-11-30 12:27:34 -08:00
c.isMobile = @ isMobile ( )
c.isIPadBrowser = @ isIPadBrowser ( )
2014-01-03 10:32:13 -08:00
c
2014-09-25 15:32:33 -07:00
onClickBeginnerCampaign: (e) ->
2014-11-26 06:58:23 -08:00
@ playSound ' menu-button-click '
2014-09-25 15:32:33 -07:00
e . preventDefault ( )
e . stopImmediatePropagation ( )
2014-11-28 15:05:34 -05:00
window . tracker ? . trackEvent ' Click Play ' , category: ' Homepage '
2014-11-10 15:24:05 -08:00
window . open ' /play ' , ' _blank '
afterInsert: ->
super ( arguments . . . )
2014-11-27 09:44:08 -08: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 ( )
2014-12-28 13:25:20 -08:00
# We may also insert the tracking pixel for everyone on the CampaignView so as to count directly-linked visitors.
2015-04-18 16:02:18 -07:00
$ ( ' body ' ) . append ( $ ( ' <img src= " https://code.org/api/hour/begin_codecombat.png " style= " visibility: hidden; " > ' ) )
2015-02-27 16:07:41 -08:00
application . tracker ? . trackEvent ' Hour of Code Begin '