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:
2015-10-21 17:18:13 -04:00
' click # play-button ' : ' onClickPlayButton '
2014-01-03 13:32:13 -05:00
2014-10-21 19:49:25 -04:00
constructor: ->
super ( )
2015-02-27 19:07:41 -05:00
window . tracker ? . trackEvent ' Homepage Loaded ' , category: ' Homepage '
2015-11-13 13:17:05 -05:00
if @ getQueryVariable ' hour_of_code '
application . router . navigate " /hoc " , trigger: true
2015-11-30 19:43:33 -05:00
if @ justPlaysCourses ( )
@playURL = ' /courses '
@alternatePlayURL = ' /play '
@alternatePlayText = ' home.play_campaign_version '
else
@playURL = ' /play '
2014-10-21 19:49:25 -04:00
2015-10-21 17:18:13 -04:00
onClickPlayButton: (e) ->
2014-11-26 09:58:23 -05:00
@ playSound ' menu-button-click '
2015-11-30 19:43:33 -05:00
return if @ playURL isnt ' /play '
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
2015-10-21 20:00:46 -04:00
isOldBrowser: ->
if $ . browser
majorVersion = $ . browser . versionNumber
return true if $ . browser . mozilla && majorVersion < 25
return true if $ . browser . chrome && majorVersion < 31 # Noticed Gems in the Deep not loading with 30
return 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
else
console . warn ' no more jquery browser version... '
return false
2015-11-30 19:43:33 -05:00
justPlaysCourses: ->
# This heuristic could be better, but currently we don't add to me.get('courseInstances') for single-player anonymous intro courses, so they have to beat a level without choosing a hero.
return me . get ( ' stats ' ) ? . gamesCompleted and not me . get ( ' heroConfig ' )