summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--server/lib/schemas/Plan.js6
-rw-r--r--server/lib/views/staff.js22
-rw-r--r--views/about/brochure.ejs4
-rw-r--r--views/staff/_nav.ejs6
-rw-r--r--views/staff/media/index.ejs7
-rw-r--r--views/staff/media/show.ejs7
-rw-r--r--views/staff/media/show_404.ejs9
-rw-r--r--views/staff/plans/_form.ejs109
-rw-r--r--views/staff/plans/edit.ejs13
-rw-r--r--views/staff/plans/index.ejs54
-rw-r--r--views/staff/plans/new.ejs15
-rw-r--r--views/staff/projects/index.ejs7
-rw-r--r--views/staff/projects/show.ejs9
-rw-r--r--views/staff/projects/show_404.ejs7
-rw-r--r--views/staff/users/index.ejs7
-rw-r--r--views/staff/users/media.ejs13
-rw-r--r--views/staff/users/show.ejs7
-rw-r--r--views/staff/users/show_404.ejs14
18 files changed, 243 insertions, 73 deletions
diff --git a/server/lib/schemas/Plan.js b/server/lib/schemas/Plan.js
index 1057bb2..1208672 100644
--- a/server/lib/schemas/Plan.js
+++ b/server/lib/schemas/Plan.js
@@ -22,9 +22,9 @@ var PlanSchema = new mongoose.Schema({
basic_layout_limit: { type: Number },
pro_layout_limit: { type: Number },
- stock_layout_project_limit: { type: Number },
- basic_layout_project_limit: { type: Number },
- pro_layout_project_limit: { type: Number },
+ stock_project_limit: { type: Number },
+ basic_project_limit: { type: Number },
+ pro_project_limit: { type: Number },
permissions: {
basic_editor: { type: Boolean, default: false },
diff --git a/server/lib/views/staff.js b/server/lib/views/staff.js
index 49f492b..c3739e9 100644
--- a/server/lib/views/staff.js
+++ b/server/lib/views/staff.js
@@ -4,6 +4,8 @@ var User = require('../schemas/User'),
Project = require('../schemas/Project'),
Media = require('../schemas/Media'),
Collaborator = require('../schemas/Collaborator'),
+ Plan = require('../schemas/Plan'),
+ Subscription = require('../schemas/Subscription'),
config = require('../../../config'),
middleware = require('../middleware'),
util = require('../util'),
@@ -540,6 +542,26 @@ var staff = module.exports = {
res.render('staff/media/show_404')
}
},
+ },
+
+ 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.render('staff/plans/index')
+ },
+ new: function(req, res){
+ res.render('staff/plans/new')
+ },
+ edit: function(req, res){
+ res.render('staff/plans/edit')
+ },
}
}
diff --git a/views/about/brochure.ejs b/views/about/brochure.ejs
index 00083cf..d816dc4 100644
--- a/views/about/brochure.ejs
+++ b/views/about/brochure.ejs
@@ -35,7 +35,7 @@
</ul>
</div>
- <div>
+<div>
<h3>[[- plans.pro.name ]]</h3>
<ul>
<li> $[[- plans.pro.monthly_price ]]/mo or $[[- plans.pro.yearly_price ]]/year
@@ -57,7 +57,7 @@
</div>
<div>
- Pro Floor plan: Trace an arbitrary floorplan.
+ Pro Floor plan: Trace an arbitrary floor plan.
</div>
diff --git a/views/staff/_nav.ejs b/views/staff/_nav.ejs
new file mode 100644
index 0000000..2115e9f
--- /dev/null
+++ b/views/staff/_nav.ejs
@@ -0,0 +1,6 @@
+<nav>
+ <a href="/staff">home</a>
+ <a href="/staff/users">users</a>
+ <a href="/staff/projects">projects</a>
+ <a href="/staff/media">media</a>
+</nav> \ No newline at end of file
diff --git a/views/staff/media/index.ejs b/views/staff/media/index.ejs
index 516af2d..3805c8e 100644
--- a/views/staff/media/index.ejs
+++ b/views/staff/media/index.ejs
@@ -2,12 +2,7 @@
<h1>Media</h1>
- <nav>
- <a href="/staff">home</a>
- <a href="/staff/users">users</a>
- <a href="/staff/projects">projects</a>
- <a href="/staff/media">media</a>
- </nav>
+[[ include ../_nav ]]
<hr>
diff --git a/views/staff/media/show.ejs b/views/staff/media/show.ejs
index 76dcd32..9d05cb9 100644
--- a/views/staff/media/show.ejs
+++ b/views/staff/media/show.ejs
@@ -2,12 +2,7 @@
<h1>Media: [[- media.type ]]</h1>
- <nav>
- <a href="/staff">home</a>
- <a href="/staff/users">users</a>
- <a href="/staff/projects">projects</a>
- <a href="/staff/media">media</a>
- </nav>
+[[ include ../_nav ]]
<hr>
diff --git a/views/staff/media/show_404.ejs b/views/staff/media/show_404.ejs
index f07cef2..c6bac6f 100644
--- a/views/staff/media/show_404.ejs
+++ b/views/staff/media/show_404.ejs
@@ -2,13 +2,8 @@
<h1>Media not found</h1>
- <nav>
- <a href="/staff">home</a>
- <a href="/staff/users">users</a>
- <a href="/staff/projects">projects</a>
- <a href="/staff/media">media</a>
- </nav>
-
+[[ include ../_nav ]]
+
<hr>
[[ include ../_footer ]]
diff --git a/views/staff/plans/_form.ejs b/views/staff/plans/_form.ejs
new file mode 100644
index 0000000..b97716f
--- /dev/null
+++ b/views/staff/plans/_form.ejs
@@ -0,0 +1,109 @@
+
+<div>
+ <label for="plan_name">Name</label>
+ <input id="plan_name" name="name" type="text" value="[[- plan.name ]]">
+</div>
+
+<div>
+ <label for="plan_slug">Slug</label>
+ <input id="plan_slug" name="slug" type="text" value="[[- plan.slug ]]">
+</div>
+
+<!-- - - - - -->
+
+<div>
+ <label for="plan_monthly_price">Monthly Price</label>
+ <input id="plan_monthly_price" name="monthly_price" type="number" value="[[- plan.monthly_price ]]">
+</div>
+
+<div>
+ <label for="plan_yearly_price">Yearly Price</label>
+ <input id="plan_yearly_price" name="yearly_price" type="number" value="[[- plan.yearly_price ]]">
+</div>
+
+<!-- - - - - -->
+
+<div>
+ <label for="plan_basic_layout_monthly_price">Basic Layout Price (Monthly)</label>
+ <input id="plan_basic_layout_monthly_price" name="basic_layout_monthly_price" type="number" value="[[- plan.basic_layout_monthly_price ]]">
+</div>
+
+<div>
+ <label for="plan_basic_layout_yearly_price">Basic Layout Price (Yearly)</label>
+ <input id="plan_basic_layout_yearly_price" name="basic_layout_yearly_price" type="number" value="[[- plan.basic_layout_yearly_price ]]">
+</div>
+
+<div>
+ <label for="plan_pro_layout_monthly_price">Pro Layout Price (Monthly)</label>
+ <input id="plan_pro_layout_monthly_price" name="pro_layout_monthly_price" type="number" value="[[- plan.pro_layout_monthly_price ]]">
+</div>
+
+<div>
+ <label for="plan_pro_layout_yearly_price">Pro Layout Price (Yearly)</label>
+ <input id="plan_pro_layout_yearly_price" name="pro_layout_yearly_price" type="number" value="[[- plan.pro_layout_yearly_price ]]">
+</div>
+
+<!-- - - - - -->
+
+<div>
+ <label for="plan_basic_layout_limit">Basic Layout Limit</label>
+ <input id="plan_basic_layout_limit" name="basic_layout_limit" type="number" value="[[- plan.basic_layout_limit ]]">
+</div>
+
+<div>
+ <label for="plan_pro_layout_limit">Pro Layout Limit</label>
+ <input id="plan_pro_layout_limit" name="pro_layout_limit" type="number" value="[[- plan.pro_layout_limit ]]">
+</div>
+
+<!-- - - - - -->
+
+<div>
+ <label for="plan_stock_project_limit">Stock Project Limit</label>
+ <input id="plan_stock_project_limit" name="stock_project_limit" type="number" value="[[- plan.stock_project_limit ]]">
+</div>
+
+<div>
+ <label for="plan_basic_project_limit">Basic Project Limit</label>
+ <input id="plan_basic_project_limit" name="basic_project_limit" type="number" value="[[- plan.basic_project_limit ]]">
+</div>
+
+<div>
+ <label for="plan_pro_project_limit">Pro Layout Limit</label>
+ <input id="plan_pro_project_limit" name="pro_project_limit" type="number" value="[[- plan.pro_project_limit ]]">
+</div>
+
+<!-- - - - - -->
+
+<div>
+ <label for="plan_permissions_basic_editor">Basic Editor</label>
+ <input id="plan_permissions_basic_editor" name="permissions_basic_editor" type="hidden" value="0">
+ <input id="plan_permissions_basic_editor" name="permissions_basic_editor" type="checkbox" value="1" [[ if (plan.permissions.basic_editor) { ]]checked[[ } ]]>
+</div>
+
+<div>
+ <label for="plan_permissions_pro_editor">Pro Editor</label>
+ <input id="plan_permissions_pro_editor" name="permissions_pro_editor" type="hidden" value="0">
+ <input id="plan_permissions_pro_editor" name="permissions_pro_editor" type="checkbox" value="1" [[ if (plan.permissions.pro_editor) { ]]checked[[ } ]]>
+</div>
+
+<div>
+ <label for="plan_permissions_solids">3D Objects</label>
+ <input id="plan_permissions_solids" name="permissions_solids" type="hidden" value="0">
+ <input id="plan_permissions_solids" name="permissions_solids" type="checkbox" value="1" [[ if (plan.permissions.solids) { ]]checked[[ } ]]>
+</div>
+
+<div>
+ <label for="plan_permissions_collaborators">Collaborators</label>
+ <input id="plan_permissions_collaborators" name="permissions_collaborators" type="hidden" value="0">
+ <input id="plan_permissions_collaborators" name="permissions_collaborators" type="checkbox" value="1" [[ if (plan.permissions.collaborators) { ]]checked[[ } ]]>
+</div>
+
+<div>
+ <label for="plan_permissions_no_logo">No Logo</label>
+ <input id="plan_permissions_no_logo" name="permissions_no_logo" type="hidden" value="0">
+ <input id="plan_permissions_no_logo" name="permissions_no_logo" type="checkbox" value="1" [[ if (plan.permissions.no_logo) { ]]checked[[ } ]]>
+</div>
+
+
+<input type="submit" value="Save Changes">
+
diff --git a/views/staff/plans/edit.ejs b/views/staff/plans/edit.ejs
new file mode 100644
index 0000000..503c97d
--- /dev/null
+++ b/views/staff/plans/edit.ejs
@@ -0,0 +1,13 @@
+[[ include ../_header ]]
+
+ <h1>Edit Plan</h1>
+
+[[ include ../_nav ]]
+
+ <hr>
+
+<form action="" method="post">
+[[- include form ]]
+</form>
+
+[[ include ../_footer ]]
diff --git a/views/staff/plans/index.ejs b/views/staff/plans/index.ejs
new file mode 100644
index 0000000..aa6c35a
--- /dev/null
+++ b/views/staff/plans/index.ejs
@@ -0,0 +1,54 @@
+[[ include ../_header ]]
+
+ <h1>Plans</h1>
+
+[[ include ../_nav ]]
+
+ <hr>
+
+<table>
+ <tr>
+ <td></td>
+ [[ plans.forEach(function(plan){ ]]
+ <td>
+ [[- plan.name ]]
+ </td>
+ [[ }) ]]
+ </tr>
+
+ <tr>
+ <td></td>
+ [[ plans.forEach(function(plan){ ]]
+ <td>
+ <a href="/staff/plans/[[- plan.slug ]]">edit</a>
+ </td>
+ [[ }) ]]
+ </tr>
+
+ [[ fields.forEach(function(field){ ]]
+ <tr>
+ <td>[[- field.replace(/_/," ") ]]</td>
+ [[ plans.forEach(function(plan){ ]]
+ <td>
+ [[- plan[field] ]]
+ </td>
+ [[ }) ]]
+ </tr>
+ [[ }) ]]
+
+ [[ permissions.forEach(function(permission){ ]]
+ <tr>
+ <td>[[- permission.replace(/_/," ") ]]</td>
+ [[ plans.forEach(function(plan){ ]]
+ <td>
+ [[- plan.permissions[permission] ? "x" : " " ]]
+ </td>
+ [[ }) ]]
+ </tr>
+ [[ }) ]]
+
+</table>
+
+ <hr>
+
+[[ include ../_footer ]]
diff --git a/views/staff/plans/new.ejs b/views/staff/plans/new.ejs
new file mode 100644
index 0000000..d56a1c3
--- /dev/null
+++ b/views/staff/plans/new.ejs
@@ -0,0 +1,15 @@
+[[ include ../_header ]]
+
+ <h1>New Plan</h1>
+
+[[ include ../_nav ]]
+
+ <hr>
+
+<form action="" method="post">
+[[- include form ]]
+</form>
+
+[[ include ../_footer ]]
+
+
diff --git a/views/staff/projects/index.ejs b/views/staff/projects/index.ejs
index 482ea25..e4ba469 100644
--- a/views/staff/projects/index.ejs
+++ b/views/staff/projects/index.ejs
@@ -2,12 +2,7 @@
<h1>Projects</h1>
- <nav>
- <a href="/staff">home</a>
- <a href="/staff/users">users</a>
- <a href="/staff/projects">projects</a>
- <a href="/staff/media">media</a>
- </nav>
+[[ include ../_nav ]]
<hr>
diff --git a/views/staff/projects/show.ejs b/views/staff/projects/show.ejs
index 1034b31..b090a41 100644
--- a/views/staff/projects/show.ejs
+++ b/views/staff/projects/show.ejs
@@ -2,13 +2,8 @@
<h1>[[- project.name ]]</h1>
- <nav>
- <a href="/staff">home</a>
- <a href="/staff/users">users</a>
- <a href="/staff/projects">projects</a>
- <a href="/staff/media">media</a>
- </nav>
-
+[[ include ../_nav ]]
+
<hr>
<table>
diff --git a/views/staff/projects/show_404.ejs b/views/staff/projects/show_404.ejs
index 70320c0..f5e1658 100644
--- a/views/staff/projects/show_404.ejs
+++ b/views/staff/projects/show_404.ejs
@@ -2,12 +2,7 @@
<h1>Project not found</h1>
- <nav>
- <a href="/staff">home</a>
- <a href="/staff/users">users</a>
- <a href="/staff/projects">projects</a>
- <a href="/staff/media">media</a>
- </nav>
+[[ include ../_nav ]]
<hr>
diff --git a/views/staff/users/index.ejs b/views/staff/users/index.ejs
index f14d666..1795dde 100644
--- a/views/staff/users/index.ejs
+++ b/views/staff/users/index.ejs
@@ -2,12 +2,7 @@
<h1>Users</h1>
- <nav>
- <a href="/staff">home</a>
- <a href="/staff/users">users</a>
- <a href="/staff/projects">projects</a>
- <a href="/staff/media">media</a>
- </nav>
+[[ include ../_nav ]]
<hr>
diff --git a/views/staff/users/media.ejs b/views/staff/users/media.ejs
index c1097dd..8927c00 100644
--- a/views/staff/users/media.ejs
+++ b/views/staff/users/media.ejs
@@ -1,15 +1,10 @@
[[ include ../_header ]]
- <h1>User Media: [[- profile.username ]]</h1>
+<h1>User Media: [[- profile.username ]]</h1>
- <nav>
- <a href="/staff">home</a>
- <a href="/staff/users">users</a>
- <a href="/staff/projects">projects</a>
- <a href="/staff/media">media</a>
- </nav>
-
- <hr>
+[[ include ../_nav ]]
+
+<hr>
[[ include ../_pagination ]]
[[ include ../_gallery ]]
diff --git a/views/staff/users/show.ejs b/views/staff/users/show.ejs
index 8e9b447..4ce1d9a 100644
--- a/views/staff/users/show.ejs
+++ b/views/staff/users/show.ejs
@@ -1,12 +1,7 @@
[[ include ../_header ]]
<h1>User: [[- profile.username ]]</h1>
- <nav>
- <a href="/staff">home</a>
- <a href="/staff/users">users</a>
- <a href="/staff/projects">projects</a>
- <a href="/staff/media">media</a>
- </nav>
+[[ include ../_nav ]]
<hr>
diff --git a/views/staff/users/show_404.ejs b/views/staff/users/show_404.ejs
index bcd0271..11663fa 100644
--- a/views/staff/users/show_404.ejs
+++ b/views/staff/users/show_404.ejs
@@ -1,13 +1,9 @@
[[ include ../_header ]]
- <h1>User not found</h1>
- <nav>
- <a href="/staff">home</a>
- <a href="/staff/users">users</a>
- <a href="/staff/projects">projects</a>
- <a href="/staff/media">media</a>
- </nav>
-
- <hr>
+<h1>User not found</h1>
+
+[[ include ../_nav ]]
+
+<hr>
[[ include ../_footer ]]