Merge branch 'develop' into challenges

Conflicts:
	views/app/filters.html
	views/app/tasks.html
This commit is contained in:
Tyler Renelle
2013-05-31 17:18:26 -04:00
5 changed files with 71 additions and 11 deletions
+1 -3
View File
@@ -14,9 +14,7 @@ module.exports.app = (appExports, model) ->
model.set '_newTag', ''
appExports.toggleEditingTags = ->
before = model.get('_editingTags')
model.set '_editingTags', !before, ->
location.reload() if before is true #when they're done, refresh the page
model.set '_editingTags', !model.get('_editingTags')
appExports.clearFilters = ->
user.set 'filters', {}
+61
View File
@@ -0,0 +1,61 @@
express = require 'express'
router = new express.Router()
util = require('util')
_ = require 'lodash'
algos = require 'habitrpg-shared/script/algos'
helpers = require 'habitrpg-shared/script/helpers'
validator = require 'derby-auth/node_modules/validator'
check = validator.check
sanitize = validator.sanitize
misc = require '../app/misc'
NO_TOKEN_OR_UID = err: "You must include a token and uid (user id) in your request"
NO_USER_FOUND = err: "No user found."
# ---------- /api/v1 API ------------
# Every url added beneath router is prefaced by /api/v2
###
API Status
###
router.get '/status', (req, res) ->
res.json status: 'up'
###
beforeEach auth interceptor
###
auth = (req, res, next) ->
uid = req.headers['x-api-user']
token = req.headers['x-api-key']
return res.json 401, NO_TOKEN_OR_UID unless uid || token
model = req.getModel()
query = model.query('users').withIdAndToken(uid, token)
query.fetch (err, user) ->
return res.json err: err if err
req.user = user
req.userObj = user.get()
return res.json 401, NO_USER_FOUND if !req.userObj || _.isEmpty(req.userObj)
req._isServer = true
next()
###
POST new actions
###
router.post '/', auth, (req, res) ->
actions = req.body
if _.isArray actions
actions.forEach (action)->
switch action.op
when score
{}
when newTask
req.user.set "tasks.#{req.task.id}", action.task
console.log util.inspect req.body
res.json 200, req.userObj
module.exports = router
+1
View File
@@ -80,6 +80,7 @@ mongo_store = new MongoStore {url: process.env.NODE_DB_URI}, ->
.use(middleware.translate)
# API should be hit before all other routes
.use('/api/v1', require('./api').middleware)
.use('/api/v2', require('./apiv2').middleware)
.use(require('./deprecated').middleware)
# Show splash page for newcomers
.use(middleware.splash)
+7 -7
View File
@@ -8,7 +8,7 @@
<a rel=tooltip title='Edit Tags' x-bind="click:toggleEditingTags"><i class='{#if _editingTags}icon-ok{else}icon-pencil{/}'></i></a>
</li>
{#each _user.tags as :tag}
<li class="{#if _user.filters[:tag.id]}active{/}" style='position:relative;'>
<li class="{#if users[_userId].filters[:tag.id]}active{/}" style='position:relative;'>
{#if and(_editingTags,not(:tag.challenge))}
<div class="input-append option-group tag-editing" >
<input class="input input-small option-content tag-editing-pill" type="text" value='{:tag.name}' />
@@ -29,7 +29,7 @@
</form>
{/}
</li>
<!--<li class="{#unless activeFilters(_user.filters)}hidden{/}">-->
<!--<li class="{#unless activeFilters(users[_userId].filters)}hidden{/}">-->
<li>
<a rel=tooltip title='Clear Filters' x-bind="click:clearFilters"><i class='icon-remove-sign'></i></a>
</li>
@@ -37,15 +37,15 @@
</div>
<applied-filters:>
<i rel=tooltip title="{appliedTags(_user.tags, :task.tags)}" class='{#if noTags(:task.tags)}hidden{/} icon-tags'></i>
<i rel=tooltip title="{appliedTags(users[_userId].tags, :task.tags)}" class='{#if noTags(:task.tags)}hidden{/} icon-tags'></i>
<!-- At first we showed all applied tags, but it gets really cluttered: http://gyazo.com/fce50f91fd0f1d64cab9774f755e95c1 -->
<!-- There's a very strange bug where live-bound #each here loses model.at reference on _{type}List alter -->
<!--&nbsp;
{{#each _user.tags as :tag}}
{{#each users[_userId].tags as :tag}}
<small>
{#if :task.tags[:tag.id]}
<small data-tag-id="{{:tag.id}}" x-bind="click:toggleFilterByTag" class="label tag-label {#if _user.filters[:tag.id]}label-info{/}">{:tag.name}</small>
<small data-tag-id="{{:tag.id}}" x-bind="click:toggleFilterByTag" class="label tag-label {#if users[_userId].filters[:tag.id]}label-info{/}">{:tag.name}</small>
{/}
</small>
{{/}}-->
@@ -53,9 +53,9 @@
<filter-fieldgroup:>
<fieldset class='option-group'>
<legend class="option-title">Tags</legend>
{{#each _user.tags as :tag}}
{#each users[_userId].tags as :tag}
<label class="checkbox">
<input type="checkbox" checked="{:task.tags[:tag.id]}"> {:tag.name}
</label>
{{/}}
{/}
</fieldset>
+1 -1
View File
@@ -163,7 +163,7 @@
<!-- all the parts of a single task -->
<task:>
<li data-id={{:task.id}} class="task {taskClasses(:task, _user.filters, _user.preferences.dayStart, _user.lastCron, _showCompleted, @main)}">
<li data-id={{:task.id}} class="task {taskClasses(:task, users[_userId].filters, _user.preferences.dayStart, _user.lastCron, _showCompleted, @main)}">
<!-- right-hand side control buttons -->
<div class="task-meta-controls">