summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2014-06-12 12:41:31 -0400
committerJules Laplace <jules@okfoc.us>2014-06-12 12:41:31 -0400
commit9b6f40b0fc85aac41e3fb67a4c38660a56531051 (patch)
treef88f8617471145e1993e06d0645ed493b544389e /server
parent507ee48290b4d1d868de6e8c2518318be90eba2b (diff)
stub in editor api
Diffstat (limited to 'server')
-rw-r--r--server/index.js21
-rw-r--r--server/lib/api.js100
2 files changed, 113 insertions, 8 deletions
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" })
+ })
+ },
}
}