diff options
| -rw-r--r-- | package.json | 2 | ||||
| -rw-r--r-- | server/index.js | 21 | ||||
| -rw-r--r-- | server/lib/api.js | 100 |
3 files changed, 113 insertions, 10 deletions
diff --git a/package.json b/package.json index bcac5cf..95af2ab 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,6 @@ "express": "~3.4.8", "monk": "~0.7.1", "socket.io": "~0.9.16", - "geocoder": "~0.1.0", - "geolib": "~1.3.5", "connect-mongo": "~0.4.1", "passport": "~0.2.0", "passport-local": "~1.0.0", diff --git a/server/index.js b/server/index.js index 1455068..27d0d8e 100644 --- a/server/index.js +++ b/server/index.js @@ -50,7 +50,7 @@ site.setup = function(){ app.use(express.session({ key: 'vvalls.sid', secret: 'flibbertigibbet', - cookie: { domain: '.' + config.hostName, maxAge: 43200000 }, + cookie: { domain: '.' + config.hostName, maxAge: 432000000 }, store: SessionStore })); app.use(bodyParser()); @@ -60,7 +60,6 @@ site.setup = function(){ app.use(express.methodOverride()); app.use(passport.initialize()); app.use(passport.session()); - // app.use('/api', middleware.ensureAuthenticated, mers({conn: mongoose.connection}).rest()); app.use(app.router); app.get('env') === 'development' && app.use(express.errorHandler()); @@ -111,12 +110,20 @@ site.route = function () { app.get('/builder', middleware.ensureAuthenticated, views.modal) app.get('/builder/:name', middleware.ensureAuthenticated, views.builder) - app.get('/api/layouts', middleware.ensureAuthenticated, api.layout.index) - app.get('/api/layouts/:slug', middleware.ensureAuthenticated, api.layout.show) - app.post('/api/layouts/new', middleware.ensureAuthenticated, api.layout.create) - app.post('/api/layouts/edit', middleware.ensureAuthenticated, api.layout.update) - app.delete('/api/layouts/destroy', middleware.ensureAuthenticated, api.layout.destroy) + app.get('/editor', middleware.ensureAuthenticated, views.modal) + app.get('/editor/:name', middleware.ensureAuthenticated, views.editor) + app.get('/api/layouts', middleware.ensureAuthenticated, api.layouts.index) + app.get('/api/layouts/:slug', middleware.ensureAuthenticated, api.layouts.show) + app.post('/api/layouts/new', middleware.ensureAuthenticated, api.layouts.create) + app.post('/api/layouts/edit', middleware.ensureAuthenticated, api.layouts.update) + app.delete('/api/layouts/destroy', middleware.ensureAuthenticated, api.layouts.destroy) + + app.get('/api/projects', middleware.ensureAuthenticated, api.projects.index) + app.get('/api/projects/:slug', middleware.ensureAuthenticated, api.projects.show) + app.post('/api/projects/new', middleware.ensureAuthenticated, api.projects.create) + app.post('/api/projects/edit', middleware.ensureAuthenticated, api.projects.update) + app.delete('/api/projects/destroy', middleware.ensureAuthenticated, api.projects.destroy) } diff --git a/server/lib/api.js b/server/lib/api.js index f7be925..2ae80b9 100644 --- a/server/lib/api.js +++ b/server/lib/api.js @@ -121,7 +121,7 @@ var api = { } }, - layout: { + layouts: { index: function(req, res){ Layout.find({}, function(err, docs){ res.json(docs) @@ -216,6 +216,104 @@ var api = { res.json({ status: "OK" }) }) }, + }, + + + projects: { + index: function(req, res){ + Project.find({}, function(err, docs){ + res.json(docs) + }) + }, + + show: function(req, res){ + Project.findOne({ slug: req.params.slug }, function(err, doc){ + if (doc) { + res.json(doc) + return + } + else { + var name = util.sanitize(req.params.slug) + if (name == "new") { + name = "" + } + res.json({ _id: "new", name: name, isNew: true }) + } + }) + }, + + create: function(req, res){ + var data = util.cleanQuery(req.body) + data.name = util.sanitize(data.name) + data.slug = util.slugify(data.name) + data.user_id = req.user._id + data.rooms = JSON.parse(data.rooms) + data.startPosition = JSON.parse(data.startPosition) + + upload.put("projects", 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 Project(data).save(function(err, doc){ + if (err || ! doc) { return res.json({ error: err }) } + res.json(doc) + }) + } + }, + + update: function(req, res){ + var _id = req.body._id + if (_id == "new") { + return api.docs.create(req, res) + } + + 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("projects", 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() { + Project.findOne({ _id: _id }, function(err, doc){ + if (err || ! doc) { return res.json({ error: err }) } + _.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 _id = req.body._id + if (! id || ! id.length) { + res.json({ error: 404 }) + return + } + Project.remove({ _id: _id }, function(err){ + res.json({ status: "OK" }) + }) + }, } } |
