diff options
| author | Jules Laplace <jules@okfoc.us> | 2014-06-11 13:31:33 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2014-06-11 13:31:33 -0400 |
| commit | 50ba987880d90f40a5bf4d7e9e125b453723882b (patch) | |
| tree | 1f3aa2730e381cb8f7fd872d5ee84fe602b23ca7 /server/lib | |
| parent | 7e72bf7d028c2d95555b1132251103eac4dacec9 (diff) | |
store layouts and retrieve them
Diffstat (limited to 'server/lib')
| -rw-r--r-- | server/lib/api.js | 82 | ||||
| -rw-r--r-- | server/lib/upload.js | 2 | ||||
| -rw-r--r-- | server/lib/util.js | 2 |
3 files changed, 58 insertions, 28 deletions
diff --git a/server/lib/api.js b/server/lib/api.js index 9d14651..f7be925 100644 --- a/server/lib/api.js +++ b/server/lib/api.js @@ -41,11 +41,7 @@ var api = { if (req.files.avatar) { upload.put("avatars", req.files.avatar, { - acceptable: function(){ - console.log("acceptable") - }, unacceptable: function(err){ - console.log("unacceptable") res.json({ error: { errors: { avatar: { message: "Problem saving avatar: " + err } } } }) }, success: function(url){ @@ -133,56 +129,90 @@ var api = { }, show: function(req, res){ - Layout.findOne({ name: req.query.name }, function(err, doc){ + Layout.findOne({ slug: req.params.slug }, function(err, doc){ if (doc) { res.json(doc) + return } else { - var name = util.sanitize(req.query.name) + var name = util.sanitize(req.params.slug) if (name == "new") { name = "" } - res.json({ name: name, isNew: true }) + res.json({ _id: "new", name: name, isNew: true }) } }) }, create: function(req, res){ var data = util.cleanQuery(req.body) - data.name = util.sanitize(data.new_name) - data.displayName = util.sanitize(data.displayName) + data.name = util.sanitize(data.name) + data.slug = util.slugify(data.name) data.user_id = req.user._id - delete data.new_name - new Layout(data).save(function(err, doc){ - if (err || ! doc) { return res.json({ error: err }) } - res.json(doc) + data.rooms = JSON.parse(data.rooms) + data.startPosition = JSON.parse(data.startPosition) + + upload.put("layouts", req.files.thumbnail, { + unacceptable: function(err){ + res.json({ error: { errors: { thumbnail: { message: "Problem saving thumbnail: " + err } } } }) + }, + success: function(url){ + data.photo = url + done() + } }) + + function done() { + new Layout(data).save(function(err, doc){ + if (err || ! doc) { return res.json({ error: err }) } + res.json(doc) + }) + } }, update: function(req, res){ - var data = util.cleanQuery(req.body) - if (data.name == "new") { + var _id = req.body._id + if (_id == "new") { return api.docs.create(req, res) } - Layout.findOne({ name: data.name }, function(err, doc){ - if (err || ! doc) { return res.json({ error: err }) } - data.name = data.new_name - delete data.new_name - _.extend(doc, data) - doc.save(function(err, doc){ + + var data = util.cleanQuery(req.body) + data.name = util.sanitize(data.name) + data.slug = util.slugify(data.name) + data.user_id = req.user._id + + upload.put("layouts", req.files.thumbnail, { + unacceptable: function(err){ + res.json({ error: { errors: { thumbnail: { message: "Problem saving thumbnail: " + err } } } }) + }, + success: function(url){ + data.photo = url + done() + } + }) + + function done() { + Layout.findOne({ _id: _id }, function(err, doc){ if (err || ! doc) { return res.json({ error: err }) } - res.json(doc) + _.extend(doc, data) + doc.rooms = JSON.parse(data.rooms) + doc.startPosition = JSON.parse(data.startPosition) + + doc.save(function(err, doc){ + if (err || ! doc) { return res.json({ error: err }) } + res.json(doc) + }) }) - }) + } }, destroy: function(req, res){ - var name = util.sanitize(req.body.name) - if (! name || ! name.length) { + var _id = req.body._id + if (! id || ! id.length) { res.json({ error: 404 }) return } - Layout.remove({ name: name }, function(err){ + Layout.remove({ _id: _id }, function(err){ res.json({ status: "OK" }) }) }, diff --git a/server/lib/upload.js b/server/lib/upload.js index 4346a99..a5d7871 100644 --- a/server/lib/upload.js +++ b/server/lib/upload.js @@ -20,7 +20,7 @@ module.exports.put = function (key, file, opt) { var fileSize, fileType, filename var err var now = new Date() - + var ts = moment().format('YYYYMMDD') var extension = acceptableuploadTypes[file.mimetype] diff --git a/server/lib/util.js b/server/lib/util.js index c8771dc..2ff4e16 100644 --- a/server/lib/util.js +++ b/server/lib/util.js @@ -13,7 +13,7 @@ var util = {} util.trim = function (s){ return (s || "").replace(whitespaceHead,"").replace(whitespaceTail,"") } util.slugify = function (s){ - return (s || "").replace(whitespace,"-").replace(nonAlphanumerics, '-').replace(consecutiveDashes,"-") + return (s || "").toLowerCase().replace(whitespace,"-").replace(nonAlphanumerics, '-').replace(consecutiveDashes,"-") } util.sanitize = function (s){ |
