Merge branch 'develop' into classes

Conflicts:
	public/css/index.styl
	src/models/user.js
	views/options/profile.jade
	views/shared/header/avatar.jade
	views/shared/tasks/lists.jade
	views/shared/tasks/task.jade
This commit is contained in:
Tyler Renelle
2013-12-01 19:51:36 -07:00
81 changed files with 1369 additions and 397 deletions
+59
View File
@@ -1,8 +1,12 @@
var _ = require('lodash');
var csv = require('express-csv');
var express = require('express');
var nconf = require('nconf');
var moment = require('moment');
var dataexport = module.exports;
var js2xmlparser = require("js2xmlparser");
var pd = require('pretty-data').pd;
var User = require('../models/user').model;
/*
@@ -25,3 +29,58 @@ dataexport.history = function(req, res) {
});
return res.csv(output);
}
var userdata = function(user) {
if(user.auth && user.auth.local) {
delete user.auth.local.salt;
delete user.auth.local.hashed_password;
}
return user;
}
dataexport.leanuser = function(req, res, next) {
var user = res.locals.user;
User.findOne({_id: user._id,}).lean().exec(function(err, user) {
if (err) return res.json(500, {err: err});
if (_.isEmpty(user)) return res.json(401, NO_USER_FOUND);
res.locals.user = user;
return next();
});
};
dataexport.userdata = {
xml: function(req, res) {
var user = userdata(res.locals.user);
return res.xml({data: JSON.stringify(user), rootname: 'user'});
},
json: function(req, res) {
var user = userdata(res.locals.user);
return res.jsonstring(user);
},
}
/*
------------------------------------------------------------------------
Express Extensions (should be refactored into a module)
------------------------------------------------------------------------
*/
var expressres = express.response || http.ServerResponse.prototype;
expressres.xml = function(obj, headers, status) {
var body = '';
this.charset = this.charset || 'utf-8';
this.header('Content-Type', 'text/xml');
this.header('Content-Disposition', 'attachment');
body = pd.xml(js2xmlparser(obj.rootname,obj.data));
return this.send(body, headers, status);
};
expressres.jsonstring = function(obj, headers, status) {
var body = '';
this.charset = this.charset || 'utf-8';
this.header('Content-Type', 'application/json');
this.header('Content-Disposition', 'attachment');
body = pd.json(JSON.stringify(obj));
return this.send(body, headers, status);
};
+8 -7
View File
@@ -470,11 +470,13 @@ api.deleteTag = function(req, res){
delete task.tags[tag.id];
})
})
user.markModified('habits');
user.markModified('dailys');
user.markModified('todos');
user.markModified('rewards');
user.save(function(err,saved){
if (err) return res.json(500, {err: err});
// Need to use this until we found a way to update the ui for tasks when a tag is deleted
res.locals.wasModified = true;
res.send(200);
res.send(204);
});
} else {
res.json(400, {err:'Tag not found'});
@@ -628,10 +630,9 @@ api.batchUpdate = function(req, res, next) {
if (err) return res.json(500, {err: err});
var response = user.toJSON();
response.wasModified = res.locals.wasModified;
if (response._tmp && response._tmp.drop) response.wasModified = true;
// Send the response to the server
if(response.wasModified){
if (response._tmp && response._tmp.drop){
res.json(200, {_tmp: {drop: response._tmp.drop}, _v: response._v});
}else if(response.wasModified){
res.json(200, response);
}else{
res.json(200, {_v: response._v});