summaryrefslogtreecommitdiff
path: root/server/lib/views/staff.js
diff options
context:
space:
mode:
Diffstat (limited to 'server/lib/views/staff.js')
-rw-r--r--server/lib/views/staff.js70
1 files changed, 52 insertions, 18 deletions
diff --git a/server/lib/views/staff.js b/server/lib/views/staff.js
index ce676ed..6639137 100644
--- a/server/lib/views/staff.js
+++ b/server/lib/views/staff.js
@@ -18,6 +18,10 @@ var staff = module.exports = {
fields: {
user: "_id username displayName photo created_at updated_at last_seen created_ip last_ip",
project: "_id name slug user_id privacy created_at updated_at",
+ plans: "monthly_price yearly_price basic_layout_monthly_price basic_layout_yearly_price " +
+ "pro_layout_monthly_price pro_layout_yearly_price " +
+ "basic_layout_limit pro_layout_limit stock_project_limit basic_project_limit pro_project_limit",
+ plans_permissions: "basic_editor pro_editor solids collaborators no_logo",
},
defaults: {
@@ -122,8 +126,8 @@ var staff = module.exports = {
},
ensurePlans: function(req, res, next){
- Plan.exec(function (err, plans) {
- res.locals.plans = plans.map(staff.helpers.plan)
+ Plan.find(function (err, plans) {
+ res.locals.plans = (plans || []).map(staff.helpers.plan)
next()
})
},
@@ -132,17 +136,16 @@ var staff = module.exports = {
Plan.findOne({ slug: req.params.slug }, function(err, plan){
if (err || ! plan) {
console.error(err)
- req.plan = null
+ res.redirect("/staff/plans/")
}
else {
req.plan = plan
+ next()
}
- next()
})
}
else {
- req.plan = null
- next()
+ res.redirect("/staff/plans/")
}
},
@@ -326,7 +329,14 @@ var staff = module.exports = {
media.user = {}
media.shortUrl = media.url.replace(/^http.:\/\//,"")
return media
- }
+ },
+
+ plan: function(plan){
+ plan = plan.toObject()
+ plan.date = moment( plan.updated_at || plan.created_at ).format("M/DD/YYYY hh:mm a")
+ plan.user = {}
+ return plan
+ },
},
route: function(app){
@@ -452,7 +462,8 @@ var staff = module.exports = {
//
// plans
- app.get('/staff/plans/',
+
+ app.get('/staff/plans',
middleware.ensureAuthenticated,
middleware.ensureIsStaff,
@@ -484,6 +495,8 @@ var staff = module.exports = {
middleware.ensureAuthenticated,
middleware.ensureIsStaff,
+ staff.middleware.ensurePlan,
+
staff.plans.update
);
},
@@ -607,14 +620,8 @@ var staff = module.exports = {
plans: {
index: function(req, res){
- res.locals.fields = (
- "monthly_price yearly_price basic_layout_monthly_price basic_layout_yearly_price " +
- "pro_layout_monthly_price pro_layout_yearly_price " +
- "basic_layout_limit pro_layout_limit stock_project_limit basic_project_limit pro_project_limit"
- ).split(" ")
-
- res.locals.permissions = "basic_editor pro_editor solids collaborators no_logo".split(" ")
-
+ res.locals.fields = staff.fields.plans.split(" ")
+ res.locals.permissions = staff.fields.plans_permissions.split(" ")
res.render('staff/plans/index')
},
new: function(req, res){
@@ -625,10 +632,37 @@ var staff = module.exports = {
res.render('staff/plans/edit')
},
create: function(req, res){
- res.redirect("/staff/plans/")
+ var plan = new Plan ()
+ var fields = staff.fields.plans.split(" ")
+ var permissions = staff.fields.plans_permissions.split(" ")
+
+ var data = util.cleanQuery(req.body)
+ data.name = util.sanitize(data.name)
+ data.slug = util.sanitize(data.slug.toLowerCase())
+
+ permissions.forEach(function(field){
+ data[field] = data["permissions_" + field]
+ })
+
+ new Plan (data).save(function(err, doc){
+ if (err || ! doc) { return res.json({ error: err }) }
+ res.redirect("/staff/plans/")
+ })
},
update: function(req, res){
- res.redirect("/staff/plans/")
+ var data = util.cleanQuery(req.body)
+ data.name = util.sanitize(data.name)
+ data.slug = util.sanitize(data.slug.toLowerCase())
+
+ _.extend(req.plan, data)
+ permissions.forEach(function(field){
+ req.plan[field] = data["permissions_" + field]
+ })
+
+ req.plan.save(function(err, doc){
+ if (err || ! doc) { return res.json({ error: err }) }
+ res.redirect("/staff/plans/")
+ })
},
}