2012-09-24 20:45:37 +00:00
derby = require ' derby '
2013-03-04 16:17:17 +00:00
app = derby . createApp module
2013-03-23 20:03:12 +00:00
2013-03-04 16:17:17 +00:00
{ get , view , ready } = app
2013-03-17 04:48:00 +00:00
derby . use require ( ' derby-ui-boot ' ) , { styles: [ ] }
2013-02-12 00:27:35 +00:00
derby . use require ' ../../ui '
derby . use require ' derby-auth/components '
2012-07-27 23:38:28 +00:00
2013-03-23 20:03:12 +00:00
# Translations
i18n = require ' ./i18n '
i18n . localize app ,
availableLocales: [ ' en ' , ' he ' ]
defaultLocale: ' en '
2012-09-24 20:45:37 +00:00
helpers = require ' ./helpers '
2013-02-05 05:20:58 +00:00
helpers . viewHelpers view
2013-02-08 07:01:48 +00:00
2013-01-21 00:35:31 +00:00
_ = require ( ' underscore ' )
2012-06-20 21:30:10 +00:00
2012-07-28 01:11:53 +00:00
# ========== ROUTES ==========
2012-07-08 20:59:07 +00:00
2013-02-25 23:59:14 +00:00
get ' / ' , (page, model, params, next) ->
2013-02-21 18:40:03 +00:00
return page . redirect ' / ' if page . params ? . query ? . play ?
2013-01-17 21:30:09 +00:00
# Force SSL # NOTE handled by ngix now
#req = page._res.req
#if req.headers['x-forwarded-proto']!='https' and process.env.NODE_ENV=='production'
# return page.redirect 'https://' + req.headers.host + req.url
2012-09-15 19:06:51 +00:00
2013-04-04 20:44:54 +00:00
require ( ' ./party ' ) . partySubscribe page , model , params , next , ->
2013-04-04 19:36:52 +00:00
user = model . at ( ' _user ' )
user . setNull ( ' apiToken ' , derby . uuid ( ) )
2013-04-04 20:44:54 +00:00
require ( ' ./items ' ) . server ( model )
2013-04-04 19:36:52 +00:00
#refLists
_ . each [ ' habit ' , ' daily ' , ' todo ' , ' reward ' ] , (type) ->
model . refList " _ #{ type } List " , " _user.tasks " , " _user. #{ type } Ids "
2013-04-10 21:30:50 +00:00
# Cleanup some task-corruption (null tasks, rogue/invisible tasks, etc)
# Obviously none of this should be happening, but we'll stop-gap until we can find & fix
tasks = user . get ( ' tasks ' )
_ . each tasks , (task, key) ->
# Remove null tasks
unless task ? . type ?
user . del ( " tasks. #{ key } " )
# Put rogue tasks back into their lists. We could alternatively delete them (they're rogue because they weren't properly deleted), but that's dangerous
else if user . get ( " #{ task . type } Ids " ) . indexOf ( task . id ) is - 1
user . push " #{ task . type } Ids " , task . id
2013-02-18 17:49:53 +00:00
page . render ( )
2012-04-27 02:19:31 +00:00
2012-07-28 01:11:53 +00:00
# ========== CONTROLLER FUNCTIONS ==========
2012-04-27 02:19:31 +00:00
ready (model) ->
2013-01-21 17:06:12 +00:00
user = model . at ( ' _user ' )
2013-01-29 05:02:30 +00:00
#set cron immediately
2013-02-05 03:35:07 +00:00
lastCron = user . get ( ' lastCron ' )
user . set ( ' lastCron ' , + new Date ) if ( ! lastCron ? or lastCron == ' new ' )
2013-01-21 17:06:12 +00:00
2013-04-04 20:44:54 +00:00
require ( ' ./scoring ' ) . cron ( model )
2013-01-21 19:36:26 +00:00
2013-04-04 20:44:54 +00:00
require ( ' ./character ' ) . app ( exports , model )
require ( ' ./tasks ' ) . app ( exports , model )
require ( ' ./items ' ) . app ( exports , model )
require ( ' ./party ' ) . app ( exports , model )
require ( ' ./profile ' ) . app ( exports , model )
require ( ' ./pets ' ) . app ( exports , model )
2013-01-15 19:35:10 +00:00
require ( ' ../server/private ' ) . app ( exports , model )
2013-04-08 15:24:45 +00:00
require ( ' ./debug ' ) . app ( exports , model ) if model . flags . nodeEnv != ' production '
2013-04-04 20:44:54 +00:00
require ( ' ./browser ' ) . app ( exports , model , app )
2013-02-06 07:42:48 +00:00