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-18 22:11:45 +00:00
|
|
|
# temporary view variables, so we don't call model.set() too fast
|
|
|
|
|
_view = model.get '_view' || {}
|
2012-11-15 15:26:35 +00:00
|
|
|
|
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())
|
|
|
|
|
|
|
|
|
|
# Remove corrupted tasks
|
|
|
|
|
tasks = user.get('tasks')
|
|
|
|
|
_.each tasks, (task, key) -> user.del("tasks.#{key}") unless task?
|
|
|
|
|
|
2013-04-04 20:44:54 +00:00
|
|
|
require('./items').server(model)
|
2013-02-18 17:49:53 +00:00
|
|
|
model.set '_view', _view
|
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-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-02-08 18:57:00 +00:00
|
|
|
require('./debug').app(exports, model) if model.get('_view.nodeEnv') != 'production'
|
2013-04-04 20:44:54 +00:00
|
|
|
require('./browser').app(exports, model, app)
|
2013-02-06 07:42:48 +00:00
|
|
|
|