summaryrefslogtreecommitdiff
path: root/views
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2016-10-28 18:07:56 -0400
committerJules Laplace <jules@okfoc.us>2016-10-28 18:07:56 -0400
commita9c9d6adf470d0966e6c6bef0803e298fd2d4117 (patch)
tree6ccec2a448992a5f43226532051a6df09afbc203 /views
parent343b0b3dc5bb7dbe762182a486e63a4aff6ef8fc (diff)
parent9e7bacd46c1e5d0e1c24433690d421ab3f3a11f2 (diff)
merge
Diffstat (limited to 'views')
-rw-r--r--views/about/_blank.ejs4
-rw-r--r--views/about/_old_plans.ejs63
-rw-r--r--views/about/_plans.ejs121
-rw-r--r--views/about/about.ejs18
-rw-r--r--views/about/brochure.ejs25
-rw-r--r--views/about/howto.ejs2
-rw-r--r--views/blueprint.ejs30
-rw-r--r--views/builder.ejs18
-rw-r--r--views/controls/blueprint/editor.ejs36
-rw-r--r--views/controls/blueprint/info.ejs30
-rw-r--r--views/controls/blueprint/notice.ejs4
-rw-r--r--views/controls/blueprint/scaler.ejs48
-rw-r--r--views/controls/blueprint/settings.ejs18
-rw-r--r--views/controls/blueprint/toolbar.ejs42
-rw-r--r--views/controls/builder/info.ejs4
-rw-r--r--views/controls/builder/settings.ejs2
-rw-r--r--views/controls/builder/toolbar.ejs6
-rw-r--r--views/controls/editor/media-drawer.ejs4
-rw-r--r--views/controls/editor/media-editor.ejs8
-rw-r--r--views/controls/editor/sculpture.ejs42
-rw-r--r--views/controls/editor/settings.ejs6
-rw-r--r--views/controls/editor/toolbar.ejs14
-rw-r--r--views/controls/editor/wallpaper.ejs2
-rw-r--r--views/controls/reader/about-room.ejs2
-rw-r--r--views/docs.ejs2
-rwxr-xr-xviews/editor.ejs3
-rwxr-xr-xviews/home.ejs26
-rw-r--r--views/modal.ejs4
-rw-r--r--views/partials/edit-profile.ejs2
-rw-r--r--views/partials/edit-subscription.ejs78
-rw-r--r--views/partials/footer.ejs10
-rw-r--r--views/partials/header.ejs7
-rw-r--r--views/partials/scripts.ejs49
-rw-r--r--views/profile.ejs86
-rw-r--r--views/projects/layouts-modal.ejs5
-rw-r--r--views/reader.ejs2
-rw-r--r--views/staff/_blueprints.ejs21
-rw-r--r--views/staff/_header.ejs2
-rw-r--r--views/staff/_layouts.ejs22
-rw-r--r--views/staff/_nav.ejs10
-rw-r--r--views/staff/_pagination.ejs2
-rw-r--r--views/staff/_users.ejs21
-rw-r--r--views/staff/blueprints/index.ejs13
-rw-r--r--views/staff/blueprints/show.ejs59
-rw-r--r--views/staff/blueprints/show_404.ejs9
-rw-r--r--views/staff/index.ejs6
-rw-r--r--views/staff/layouts/index.ejs13
-rw-r--r--views/staff/layouts/show.ejs61
-rw-r--r--views/staff/layouts/show_404.ejs9
-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.ejs154
-rw-r--r--views/staff/plans/edit.ejs13
-rw-r--r--views/staff/plans/index.ejs65
-rw-r--r--views/staff/plans/new.ejs13
-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/subscriptions/index.ejs39
-rw-r--r--views/staff/subscriptions/show.ejs12
-rw-r--r--views/staff/users/index.ejs7
-rw-r--r--views/staff/users/media.ejs13
-rw-r--r--views/staff/users/show.ejs46
-rw-r--r--views/staff/users/show_404.ejs14
65 files changed, 1289 insertions, 204 deletions
diff --git a/views/about/_blank.ejs b/views/about/_blank.ejs
index 0e9ea7e..732ea3f 100644
--- a/views/about/_blank.ejs
+++ b/views/about/_blank.ejs
@@ -1,14 +1,14 @@
<!doctype html>
<html>
<head>
- <title>vvalls</title>
+ <title>VValls</title>
[[ include ../partials/meta ]]
</head>
<body class="loading">
<div class="rapper page home">
[[ include ../partials/header ]]
-
+ <h1 class="leader">Hallo</h1>
<!-- put stuff here -->
diff --git a/views/about/_old_plans.ejs b/views/about/_old_plans.ejs
new file mode 100644
index 0000000..e4b07be
--- /dev/null
+++ b/views/about/_old_plans.ejs
@@ -0,0 +1,63 @@
+ <div class="about_plan planbox free_plan_info">
+ <h3>[[- plans.free.name ]]</h3>
+ <ul>
+ <li> [[- plans.free.stock_project_limit ]] exhibition with pre-designed template floor plan
+ </ul>
+ </div>
+
+ <div class="about_plan planbox">
+ <h3>[[- plans.basic.name ]]</h3>
+ <ul>
+ <li> $[[- plans.basic.monthly_price ]]/mo or $[[- plans.basic.yearly_price ]]/year
+ <li> Comes with [[- plans.basic.basic_layout_limit ]] basic floor plan and [[- plans.basic.basic_project_limit ]] exhibitions
+ <li> Each new basic floor plan costs $[[- plans.basic.basic_layout_monthly_price ]]/mo
+ or $[[- plans.basic.basic_layout_yearly_price ]]/year, minimum 3 months
+ <li> Each new floor plan can have up to [[- plans.basic.basic_project_limit ]] exhibitions
+ <li> VValls logo appears when embedding an exhibition on a web page
+ <li>
+ [[ if (! logged_in) { ]]
+ <button data-role="show-signup-modal">Sign Up</button>
+ [[ } else if (! user.plan_level) { ]]
+ <a href="https://vvalls.recurly.com/subscribe/basic-monthly/[[- user._id ]]/[[- user.username ]]"><button>Buy Now</button></a>
+ [[ } else if (user.plan_level == plans.basic.level) { ]]
+ Current Level
+ [[ } ]]
+ </ul>
+ </div>
+
+ <div class="about_plan planbox">
+ <h3>[[- plans.pro.name ]]</h3>
+ <ul>
+ <li> $[[- plans.pro.monthly_price ]]/mo or $[[- plans.pro.yearly_price ]]/year
+ <li> Comes with [[- plans.pro.pro_layout_limit ]] pro floor plan and [[- plans.pro.pro_project_limit ]] exhibitions
+ <li> Each new pro floor plan costs $[[- plans.pro.pro_layout_monthly_price ]]/mo
+ or $[[- plans.pro.pro_layout_yearly_price ]]/year, minimum 3 months
+ <li> Each new pro floor plan can have up to [[- plans.pro.pro_project_limit ]] exhibitions
+ <li> Includes planning for 3D objects in the room
+ <li> No VValls logo on embed
+ <li>
+ [[ if (! logged_in) { ]]
+ <button data-role="show-signup-modal">Sign Up</button>
+ [[ } else if (! user.plan_level) { ]]
+ <a href="https://vvalls.recurly.com/subscribe/pro-monthly/[[- user._id ]]/[[- user.username ]]"><button>Buy Now</button></a>
+ [[ } else if (user.plan_level == plans.pro.level) { ]]
+ Current Level
+ [[ } else if (user.plan_level < plans.pro.level) { ]]
+ <a href="/profile/billing"><button>Upgrade Now</button></a>
+ [[ } ]]
+ </ul>
+ </div>
+
+ <div class="about_custom planbox miscbox">
+ <ul>
+ <li> Buying any extra floor plan unlocks collaboration.<br>Invite an artist or curator to work on the exhibition with you.
+ <li> Basic Floor plan: Rectangle-based design of any dimension.
+ <li> Pro Floor plan: Trace an arbitrary floor plan from image.
+ </ul>
+ </div>
+
+ <div class="about_custom custombox planbox">
+ <h3>Want Something Custom?</h3>
+ <li> We offer customized white-label options for business and educational uses.
+ <li> <a href="mailto:hello@vvalls.com">Contact us</a> for more information.
+ </div>
diff --git a/views/about/_plans.ejs b/views/about/_plans.ejs
new file mode 100644
index 0000000..95b8d2f
--- /dev/null
+++ b/views/about/_plans.ejs
@@ -0,0 +1,121 @@
+<ul id="plans">
+ <li class="most-popular">
+ <div class="top">
+ <h2>[[- plans.pro.name ]]</h2>
+ <h3><span class="dollar">$</span><span class="price large">[[- plans.pro.monthly_price ]]</span> <span class="month large">/ mo </span></h3>
+ <h4>Ideal for large galleries<br>and small businesses.</h4>
+ </div>
+ <ul>
+ <li>
+ [[- plans.pro.pro_layout_limit ]] Pro Floor Plans and [[- plans.pro.pro_project_limit ]] Exhibitions
+ </li>
+ <li>
+ Trace a Floor Plan from a Drawing
+ </li>
+ <li>
+ Image Hosting For Artworks
+ </li>
+ <li>
+ Planning for 3D Objects
+ </li>
+ <li>
+ Everything the Medium Plan Contains
+ </li>
+ <li>
+ No Branding!
+ </li>
+ </ul>
+ <div class="signup">
+ [[ if (! logged_in) { ]]
+ <a class="button" href="#" data-role="show-signup-modal">Sign Up for [[- plans.pro.name ]]</a>
+ [[ } else if (! user.plan_level || user.plan_level < plans.pro.level) { ]]
+ <a class="button" href="https://vvalls.recurly.com/subscribe/pro-monthly/[[- user._id ]]/[[- user.username ]]">Sign Up for [[- plans.pro.name ]]</a>
+ [[ } else if (user.plan_level == plans.pro.level) { ]]
+ <div class="current">Current Level</div>
+ [[ } ]]
+ </div>
+ </li>
+ <li>
+ <div class="top">
+ <h2>[[- plans.basic.name ]]</h2>
+ <h3><span class="dollar">$</span><span class="price medium">[[- plans.basic.monthly_price ]]</span> <span class="month medium">/ mo </span></h3>
+ <h4>Great for small galleries<br>and art projects.</h4>
+ </div>
+ <ul>
+ <li>
+ [[- plans.basic.basic_layout_limit ]] Basic Floor Plan and [[- plans.basic.basic_project_limit ]] Exhibitions
+ </li>
+ <li>
+ Add More Basic Floor Plans for $[[- plans.basic.basic_layout_monthly_price ]]/mo
+ </li>
+ <li>
+ Invite Artists to Collaborate
+ </li>
+ <li>
+ Prepay a Year and Get Two Months Free
+ </li>
+ <li>
+ Everything the Small Plan Contains
+ </li>
+ <li>
+ VValls Branding
+ </li>
+ </ul>
+ <div class="signup">
+ [[ if (! logged_in) { ]]
+ <a class="button" href="#" data-role="show-signup-modal">Sign Up for [[- plans.basic.name ]]</a>
+ [[ } else if (! user.plan_level || user.plan_level < plans.basic.level) { ]]
+ <a class="button" href="https://vvalls.recurly.com/subscribe/basic-monthly/[[- user._id ]]/[[- user.username ]]">Sign Up for [[- plans.basic.name ]]</a>
+ [[ } else if (user.plan_level == plans.basic.level) { ]]
+ <div class="current">Current Level</div>
+ [[ } else { ]]
+ <div class="current">&nbsp;</div>
+ [[ } ]]
+ </div>
+ </li>
+ <li>
+ <div class="top">
+ <h2>[[- plans.free.name ]]</h2>
+ <h3><span class="dollar">$</span><span class="price small">0</span> <span class="month small">/ mo </span></h3>
+ <h4>Free forever.</h4>
+ </div>
+ <ul>
+ <li>
+ [[- plans.free.stock_project_limit ]] Basic Exhibition
+ </li>
+ <li>
+ Use Any of our Built-In Floor Plans
+ </li>
+ <li>
+ Embed Images and Videos in your Room
+ </li>
+ <li>
+ Custom Color and Wallpaper
+ </li>
+ <li>
+ Embed Room on Your Website
+ </li>
+ <li>
+ VValls Branding
+ </li>
+ </ul>
+
+ <div class="signup">
+ [[ if (! logged_in) { ]]
+ <a class="button" href="#" data-role="show-signup-modal">Sign Up for Small</a>
+ [[ } else if (! user.plan_level || user.plan_level == plans.free.level) { ]]
+ <div class="current">Current Level</div>
+ [[ } else { ]]
+ <div class="current">&nbsp;</div>
+ [[ } ]]
+ </div>
+ </li>
+</ul>
+
+<br>
+<div class="about_custom custombox planbox">
+ <h3>Want Something Custom?</h3>
+ <li> We offer customized white-label options for business and educational uses.
+ <br>
+ <a href="mailto:hello@vvalls.com">Contact us</a> for more information.
+</div>
diff --git a/views/about/about.ejs b/views/about/about.ejs
index dd536be..6d5f011 100644
--- a/views/about/about.ejs
+++ b/views/about/about.ejs
@@ -1,14 +1,14 @@
<!doctype html>
<html>
<head>
- <title>vvalls</title>
+ <title>About VValls</title>
[[ include ../partials/meta ]]
</head>
<body class="loading">
<div class="rapper page">
[[ include ../partials/header ]]
- <h1>About VValls</h1>
+ <h1 class="leader">About VValls</h1>
<div class="projectList about aboutintro">
<div class="inner">
@@ -50,17 +50,3 @@
</body>
[[ include ../partials/scripts ]]
</html>
-<style>
-.aboutintro {
- text-align: center;
- line-height: 43px;
- font-size: 24px;
- padding: 5% 0;
- font-weight: 300;
-}
-.aboutintro .inner {
- max-width: 800px;
- margin: 0 auto;
- text-align: center;
-}
-</style> \ No newline at end of file
diff --git a/views/about/brochure.ejs b/views/about/brochure.ejs
new file mode 100644
index 0000000..e34d3d3
--- /dev/null
+++ b/views/about/brochure.ejs
@@ -0,0 +1,25 @@
+<!doctype html>
+<html>
+<head>
+ <title>VValls Subscriptions</title>
+ [[ include ../partials/meta ]]
+</head>
+<body class="loading">
+ <div class="rapper page">
+ [[ include ../partials/header ]]
+
+ <h1 class="leader">Subscriptions</h1>
+
+ <div class="projectList about aboutintro">
+ [[ include _plans ]]
+ </div>
+
+ [[ include ../partials/confirm-modal ]]
+ [[ include ../projects/layouts-modal ]]
+ [[ include ../partials/sign-in ]]
+ [[ include ../partials/footer ]]
+
+ </div>
+</body>
+[[ include ../partials/scripts ]]
+</html>
diff --git a/views/about/howto.ejs b/views/about/howto.ejs
index 5278a40..914c3b3 100644
--- a/views/about/howto.ejs
+++ b/views/about/howto.ejs
@@ -1,7 +1,7 @@
<!doctype html>
<html>
<head>
- <title>vvalls</title>
+ <title>How to Use VValls</title>
[[ include ../partials/meta ]]
</head>
<body class="loading">
diff --git a/views/blueprint.ejs b/views/blueprint.ejs
new file mode 100644
index 0000000..13e8182
--- /dev/null
+++ b/views/blueprint.ejs
@@ -0,0 +1,30 @@
+<!doctype html>
+<html>
+<head>
+ <title>VValls</title>
+ [[ include partials/meta ]]
+</head>
+<body class="editing loading">
+
+ <div id="scene"></div>
+
+ <div class="rapper">
+ [[ include partials/header ]]
+
+ <div id="builderView">
+ [[ include controls/blueprint/info ]]
+ [[ include controls/blueprint/toolbar ]]
+ [[ include controls/blueprint/settings ]]
+ [[ include controls/blueprint/editor ]]
+ [[ include controls/blueprint/scaler ]]
+ [[ include controls/blueprint/notice ]]
+ </div>
+ </div>
+
+ [[ include partials/confirm-modal ]]
+ [[ include projects/layouts-modal ]]
+ [[ include partials/sign-in ]]
+
+</body>
+[[ include partials/scripts ]]
+</html>
diff --git a/views/builder.ejs b/views/builder.ejs
index afb8c66..6a31e22 100644
--- a/views/builder.ejs
+++ b/views/builder.ejs
@@ -1,7 +1,7 @@
<!doctype html>
<html>
<head>
- <title>vvalls</title>
+ <title>VValls</title>
[[ include partials/meta ]]
</head>
<body class="editing loading">
@@ -17,22 +17,6 @@
[[ include controls/builder/settings ]]
</div>
- <!--
- <div id="minimap" class="vvbox">
- <span class="el"></span>
- </div>
-
- <select id="palette">
- <option>colors</option>
- <option>redblue</option>
- <option>gray</option>
- <option selected>bone</option>
- <option>alpha</option>
- <option>white</option>
- <option>black</option>
- </select>
- -->
-
<div id="hud">
<div id="map" style="display: block">
</div>
diff --git a/views/controls/blueprint/editor.ejs b/views/controls/blueprint/editor.ejs
new file mode 100644
index 0000000..0dbac8e
--- /dev/null
+++ b/views/controls/blueprint/editor.ejs
@@ -0,0 +1,36 @@
+<style type="text/css">
+#perspective,
+#perspective .mx-scene {
+ position: absolute;
+ left:0%;
+ top:0px;
+ -webkit-transform: translateZ(0);
+ transform: translateZ(0);
+}
+#orthographic {
+ position: absolute;
+ left:50%;
+ top:0px
+}
+.blueprintInfo {
+ bottom: 14px;
+ left: 10px;
+ width: 270px;
+ font-size: 13px;
+ font-weight: 300;
+ padding: 10px;
+}
+.blueprintInfo .setting {
+ margin-bottom: 20px;
+}
+.blueprintInfo .setting.number input[type=text] {
+ width: 100px;
+ font-size: 16px;
+}
+</style>
+
+<div id="blueprintView">
+ <div id="perspective"></div>
+ <div id="orthographic"></div>
+</div>
+
diff --git a/views/controls/blueprint/info.ejs b/views/controls/blueprint/info.ejs
new file mode 100644
index 0000000..a86481b
--- /dev/null
+++ b/views/controls/blueprint/info.ejs
@@ -0,0 +1,30 @@
+<div class="vvbox settings info" id="blueprintInfo">
+ <h4>Blueprint Editor</h4>
+
+ <div class="setting number twoline">
+ <label for="room-height">ceiling height</label>
+ <input type="text" class="units" name="height" id="room-height">
+ </div>
+
+ <div class="setting number twoline">
+ <label for="viewHeight">camera height</label>
+ <input type="text" class="units" name="viewHeight" id="viewHeight">
+ </div>
+
+ <div class="setting number twoline">
+ <label for="builder-units">units</label>
+ <select id="builder-units" name="units">
+ <option value="px">pixels</option>
+ <option value="ft">feet</option>
+ <option value="m">meters</option>
+ </select>
+ </div>
+
+ <div class="setting number scale">
+ <label>scale</label>
+ <span id="blueprintScaleDisplay"></span>
+ px/<span class="units"></span>
+ <span class="openScaler">[edit scale]</span>
+ </div>
+
+</div>
diff --git a/views/controls/blueprint/notice.ejs b/views/controls/blueprint/notice.ejs
new file mode 100644
index 0000000..bf1a310
--- /dev/null
+++ b/views/controls/blueprint/notice.ejs
@@ -0,0 +1,4 @@
+<div class="vvbox settings" id="blueprintNotice">
+ <div class="notice"></div>
+ <span class="next">Next</span>
+</div>
diff --git a/views/controls/blueprint/scaler.ejs b/views/controls/blueprint/scaler.ejs
new file mode 100644
index 0000000..82fd2b2
--- /dev/null
+++ b/views/controls/blueprint/scaler.ejs
@@ -0,0 +1,48 @@
+<div class="mediaDrawer fixed animate active blueprintScaler">
+ <div class="box">
+
+ <div class="blueprintUploader">
+ <h2>Upload your Blueprint</h2>
+ <p>
+ Upload an image which you will trace to make a floor plan.
+ Images should be at least 1000x1000.
+ </p>
+ <input type="hidden" name="_csrf" value="[[- token ]]">
+ <input type="text" class="url" placeholder="Enter an image URL or...">
+ <div class="wallpaperUpload toolButton">
+ <form>
+ <span class="ion-ios-upload-outline upload-icon"></span>
+ <label>Upload a File</label>
+ <input type="file" accept="image/*" multiple>
+ </form>
+ </div>
+ <div class="blueprints">
+ <h5>Your uploaded blueprints</h5>
+ </div>
+ </div>
+
+ <div class="blueprintInfo vvbox">
+ Please tell us the scale of your blueprint.
+ Click two corners of a wall, and then enter how long the wall is.
+ <br><br>
+ You can also <span class="uploadNewBlueprint">upload another blueprint</span>.
+ <br><br>
+
+ <form>
+ <div class="setting number">
+ <label for="blueprint-dimensions">length</label>
+ <input type="text" class="units" name="blueprint-dimensions" id="blueprint-dimensions">
+ <select id="blueprint-units" name="blueprint-units">
+ <option value="ft">feet</option>
+ <option value="m">meters</option>
+ </select>
+ </div>
+ <button id="saveBlueprint">Save</button>
+ </form>
+ </div>
+
+ <div id="blueprintMap">
+ </div>
+
+ </div>
+</div> \ No newline at end of file
diff --git a/views/controls/blueprint/settings.ejs b/views/controls/blueprint/settings.ejs
new file mode 100644
index 0000000..9c615ea
--- /dev/null
+++ b/views/controls/blueprint/settings.ejs
@@ -0,0 +1,18 @@
+<div class="vvbox settings active" id="blueprintSettings">
+ <input type="hidden" name="_csrf" value="[[- token ]]">
+ <input type="hidden" name="_id" value="new">
+
+ <div class="setting">
+ <input type="text" name="name" placeholder="Blueprint name">
+ </div>
+
+ <div class="setting">
+ <button data-role="save-layout">Save</button>
+ </div>
+
+ <div class="setting subButtons">
+ <a href="#" data-role="clear-layout">Clear</a>
+ <a href="#" data-role="destroy-layout">Delete</a>
+ </div>
+
+</div>
diff --git a/views/controls/blueprint/toolbar.ejs b/views/controls/blueprint/toolbar.ejs
new file mode 100644
index 0000000..ba795e3
--- /dev/null
+++ b/views/controls/blueprint/toolbar.ejs
@@ -0,0 +1,42 @@
+<div class="edit menu vvbox" id="blueprintToolbar">
+
+ <span
+ data-role='upload-floorplan'
+ data-info="upload a new floorplan"
+ class="ion-ios-upload-outline"></span>
+
+ <span
+ data-role='toggle-orbit-mode'
+ data-info="toggle 3D mode"
+ class="ion-ios-photos-outline"></span>
+
+ <span
+ data-role="arrow-mode"
+ data-info="move endpoints"
+ class="ion-navigate mode"></span>
+<!--
+ <span
+ data-role="polyline-mode"
+ data-info="draw walls"
+ class="ion-ios-pulse mode"></span>
+-->
+ <span
+ data-role="ortho-polyline-mode"
+ data-info="draw right-angled walls"
+ class="ion-ios-grid-view-outline mode"></span>
+
+ <span
+ data-role="eraser-mode"
+ data-info="remove walls"
+ class="ion-scissors mode"></span>
+
+ <span
+ data-role="start-position-mode"
+ data-info="set starting position"
+ class="ion-ios-home-outline mode"></span>
+
+ <span
+ data-role='toggle-layout-settings'
+ data-info="save blueprint"
+ class="ion-ios-compose-outline"></span>
+</div>
diff --git a/views/controls/builder/info.ejs b/views/controls/builder/info.ejs
index 8a0e0d5..11e995a 100644
--- a/views/controls/builder/info.ejs
+++ b/views/controls/builder/info.ejs
@@ -34,8 +34,8 @@
<label for="builder-units">units</label>
<select id="builder-units" name="units">
<option value="px">pixels</option>
- <option value="ft">foot</option>
- <option value="m">meter</option>
+ <option value="ft">feet</option>
+ <option value="m">meters</option>
</select>
</div>
diff --git a/views/controls/builder/settings.ejs b/views/controls/builder/settings.ejs
index aae67d0..f7642ae 100644
--- a/views/controls/builder/settings.ejs
+++ b/views/controls/builder/settings.ejs
@@ -4,7 +4,7 @@
<div class="setting">
<a href="#" id="startpoint">
- <span class="ion-ios7-navigate-outline"></span>
+ <span class="ion-ios-navigate-outline"></span>
<span id="startText">Select Startpoint</span>
<span id="moveText">Move to Desired Point</span></a>
</div>
diff --git a/views/controls/builder/toolbar.ejs b/views/controls/builder/toolbar.ejs
index 8b2e9b8..ad51f0e 100644
--- a/views/controls/builder/toolbar.ejs
+++ b/views/controls/builder/toolbar.ejs
@@ -2,7 +2,7 @@
<span
data-role='toggle-map-view'
data-info="toggle map view"
- class="ion-ios7-photos-outline"></span>
+ class="ion-ios-photos-outline"></span>
<!--
<span
data-role='create-mode'
@@ -20,7 +20,7 @@
<span
data-role='destroy-mode'
data-info="delete"
- class="ion-ios7-trash-outline"></span>
+ class="ion-ios-trash-outline"></span>
<!--
<span
data-role='undo'
@@ -30,5 +30,5 @@
<span
data-role='toggle-layout-settings'
data-info="save layout"
- class="ion-ios7-compose-outline"></span>
+ class="ion-ios-compose-outline"></span>
</div>
diff --git a/views/controls/editor/media-drawer.ejs b/views/controls/editor/media-drawer.ejs
index f9bce61..8070941 100644
--- a/views/controls/editor/media-drawer.ejs
+++ b/views/controls/editor/media-drawer.ejs
@@ -3,8 +3,6 @@
<img class="floatingImg">
</div>
-<span class="close" id="fixed_close">X</span>
-
<div class="mediaDrawer fixed animate mediaViewer">
<h2>
<a href="#" class="userToggle active">Your Media</a>
@@ -35,7 +33,7 @@
<span class="fileUpload" id="fileUpload">
<input type="hidden" name="_csrf" value="[[- token ]]">
<form>
- <span class="ion-ios7-upload-outline upload-icon"></span><br>
+ <span class="ion-ios-upload-outline upload-icon"></span><br>
Upload File
<input type="file" accept="image/*" multiple>
</form>
diff --git a/views/controls/editor/media-editor.ejs b/views/controls/editor/media-editor.ejs
index 99746e8..225bdc8 100644
--- a/views/controls/editor/media-editor.ejs
+++ b/views/controls/editor/media-editor.ejs
@@ -13,8 +13,8 @@
<div class="video audio setting">
<span class="playButton" data-role="play-media">
- <span class="on ion-ios7-play-outline"></span>
- <span class="off ion-ios7-pause-outline"></span>
+ <span class="on ion-ios-play-outline"></span>
+ <span class="off ion-ios-pause-outline"></span>
</span>
<!--
ion-volume-high
@@ -49,8 +49,8 @@
<div class="setting number">
<select id="builder-units" name="units">
<option value="px">pixels</option>
- <option value="ft">foot</option>
- <option value="m">meter</option>
+ <option value="ft">feet</option>
+ <option value="m">meters</option>
</select>
</div>
-->
diff --git a/views/controls/editor/sculpture.ejs b/views/controls/editor/sculpture.ejs
new file mode 100644
index 0000000..dfe917f
--- /dev/null
+++ b/views/controls/editor/sculpture.ejs
@@ -0,0 +1,42 @@
+<div class="vvbox settings" id="sculptureEditor">
+ <h4>3D Object</h4>
+
+ <input type="hidden" name="_csrf" value="[[- token ]]">
+ <input type="hidden" name="_id" value="new">
+
+ <div class="setting">
+ <input type="text" name="name" placeholder="media title">
+ </div>
+
+ <div class="setting">
+ <textarea name="description" placeholder="short description"></textarea>
+ </div>
+
+ <div class="setting">
+ <input type="checkbox" name="outline" value="1" id="sculpture-outline">
+ <label for="sculpture-outline">Show outline?</label>
+ <input type="color" name="outlineColor" value="#000000">
+ </div>
+
+ <div class="setting">
+ <input type="checkbox" name="billboard" value="1" id="sculpture-billboard">
+ <label for="sculpture-billboard">Billboard?</label>
+ </div>
+
+ <div class="setting number">
+ <label for="sculpture-width">width</label>
+ <input type="text" class="units" name="width" id="sculpture-width">
+ </div>
+ <div class="setting number">
+ <label for="sculpture-height">height</label>
+ <input type="text" class="units" name="height" id="sculpture-height">
+ </div>
+ <div class="setting number">
+ <label for="sculpture-height">depth</label>
+ <input type="text" class="units" name="depth" id="sculpture-depth">
+ </div>
+ <div class="setting">
+ <a href="#" class="warn btn" data-role="destroy-sculpture">remove object</a>
+ </div>
+
+</div>
diff --git a/views/controls/editor/settings.ejs b/views/controls/editor/settings.ejs
index cd915c5..0ee00de 100644
--- a/views/controls/editor/settings.ejs
+++ b/views/controls/editor/settings.ejs
@@ -7,7 +7,7 @@
<div class="setting" id="startpoint">
<a href="#" class="modalLink">
- <span class="ion-ios7-navigate-outline"></span>
+ <span class="ion-ios-navigate-outline"></span>
<span id="startText">Set Startpoint</span>
<span id="moveText">Move to Desired Point <span class="done">done</span></span>
<span id="confirmText">Set Startpoint</span>
@@ -17,7 +17,7 @@
<div class="setting">
<a href="#" class="modalLink" data-role='show-collaborators'>
- <span class="ion-ios7-plus-outline"></span>
+ <span class="ion-ios-plus-outline"></span>
Add Collaborators
</a>
</div>
@@ -29,7 +29,7 @@
</a>
<a href="#" class="modalLink" data-role='view-project' style="margin-left: 40px;">
- <span class="ion-ios7-search-strong"></span>
+ <span class="ion-ios-search-strong"></span>
View project
</a>
diff --git a/views/controls/editor/toolbar.ejs b/views/controls/editor/toolbar.ejs
index 6960cbc..1a3e2d7 100644
--- a/views/controls/editor/toolbar.ejs
+++ b/views/controls/editor/toolbar.ejs
@@ -9,11 +9,11 @@
<span
data-role='open-media-viewer'
data-info="add media"
- class="ion-ios7-photos-outline"></span>
+ class="ion-ios-photos-outline"></span>
<span
data-role='toggle-presets'
data-info="preset styles"
- class="ion-ios7-briefcase-outline"></span>
+ class="ion-ios-briefcase-outline"></span>
<!--
<span
data-role='resize-media'
@@ -22,25 +22,25 @@
<span
data-role='destroy-media'
data-info="delete media"
- class="ion-ios7-trash-outline"></span>
+ class="ion-ios-trash-outline"></span>
-->
<span
data-role='toggle-wallpaper-panel'
data-info="add wallpaper"
- class="ion-ios7-keypad-outline"></span>
+ class="ion-ios-keypad-outline"></span>
<span
data-role='toggle-color-control'
data-info="edit room colors"
- class="ion-ios7-sunny-outline"></span>
+ class="ion-ios-sunny-outline"></span>
<span
data-role='toggle-text-editor'
data-info="add text to wall"
- class="ion-ios7-compose-outline"></span>
+ class="ion-ios-compose-outline"></span>
<!--
<span
data-role='toggle-map-view'
data-info="toggle map view"
- class="ion-ios7-world-outline"></span>
+ class="ion-ios-world-outline"></span>
-->
<span
data-role='toggle-project-settings'
diff --git a/views/controls/editor/wallpaper.ejs b/views/controls/editor/wallpaper.ejs
index 3168f1c..a53f462 100644
--- a/views/controls/editor/wallpaper.ejs
+++ b/views/controls/editor/wallpaper.ejs
@@ -19,7 +19,7 @@
<div class="wallpaperUpload toolButton">
<form>
- <span class="ion-ios7-upload-outline upload-icon"></span>
+ <span class="ion-ios-upload-outline upload-icon"></span>
<label>Upload</label>
<input type="file" accept="image/*" multiple>
</form>
diff --git a/views/controls/reader/about-room.ejs b/views/controls/reader/about-room.ejs
index 974fe0f..a9ef738 100644
--- a/views/controls/reader/about-room.ejs
+++ b/views/controls/reader/about-room.ejs
@@ -5,7 +5,7 @@
[[ if (authorpic) { ]]
<a href="[[- authorlink ]]" class="authorName"><div class="profilePic" style="background-image:url([[- authorpic ]])"></div></a>
[[ } else { ]]
- <a href="[[- authorlink ]]" class="authorName"><span class="ion-ios7-person-outline"></span></a>
+ <a href="[[- authorlink ]]" class="authorName"><span class="ion-ios-person-outline"></span></a>
[[ } ]]
<a href="[[- authorlink ]]" class="authorName">[[- author ]]</a>
</h1>
diff --git a/views/docs.ejs b/views/docs.ejs
index b3ead82..a1f081f 100644
--- a/views/docs.ejs
+++ b/views/docs.ejs
@@ -1,7 +1,7 @@
<!doctype html>
<html>
<head>
- <title>vvalls</title>
+ <title>VValls</title>
[[ include partials/meta ]]
</head>
<body class="loading">
diff --git a/views/editor.ejs b/views/editor.ejs
index 656615c..08959a0 100755
--- a/views/editor.ejs
+++ b/views/editor.ejs
@@ -1,7 +1,7 @@
<!doctype html>
<html>
<head>
- <title>vvalls</title>
+ <title>VValls</title>
[[ include partials/meta ]]
</head>
<body class="editing loading">
@@ -16,6 +16,7 @@
[[ include controls/builder/info ]]
[[ include controls/editor/media-drawer ]]
[[ include controls/editor/media-editor ]]
+ [[ include controls/editor/sculpture ]]
[[ include controls/editor/wallpaper ]]
[[ include controls/editor/color-control ]]
[[ include controls/editor/text-editor ]]
diff --git a/views/home.ejs b/views/home.ejs
index 36fc2fc..e3303ed 100755
--- a/views/home.ejs
+++ b/views/home.ejs
@@ -1,18 +1,18 @@
<!doctype html>
<html>
<head>
- <title>vvalls</title>
+ <title>VValls</title>
[[ include partials/meta ]]
</head>
<body class="loading">
<div class="rapper page home">
[[ include partials/header ]]
- <div class="hero" style="background-image:url(http://okfocus.s3.amazonaws.com/images/vvalls-video-still1.jpg)">
+ <div class="hero" style="background-image:url(http://okfocus.s3.amazonaws.com/images/vvalls-video-still2.jpg)">
<div class="holder">
<span class="circle">
<span class="videoTitle">Create 3D Rooms</span><br>
- <span class="ion-ios7-play"></span><br>
+ <span class="ion-ios-play"></span><br>
<span class="videoTitle">Watch video.</span>
</span>
</div>
@@ -38,7 +38,7 @@
</span>
<span>
<h3>Defy The Status Quo</h3>
- <words>There is no platform on the internet quite like VValls. VValls opens up the possibilities of expression online. Go crazy, make otherworldly rooms.</words>
+ <words>There is no platform on the Internet quite like VValls. VValls opens up the possibilities of expression online. Go crazy, make otherworldly rooms.</words>
</span>
</div>
</div>
@@ -60,17 +60,13 @@
<h1>Room Showcase</h1>
[[ include projects/list-projects ]]
+
+ [[ if (! logged_in) { ]]
+ <div class="projectList about makeAccountSingleton">
+ <a href="/about/howto" class="greenbtn learn">Make an Account</a>
+ </div>
+ [[ } ]]
-
- <div class="projectList about gopro">
-
- <span>
- <h3>Ready To Go Pro?</h3>
- Use VValls as part of your product, service, or marketing campaign.
- We offer many types of customizations, including automation of layouts, more elaborate floor plans, enhanced video, interactivity, and other features.
- <a href="mailto:info@vvalls.com?subject=VValls platform" class="greenbtn">Contact</a>
- </span>
- </div>
[[ include partials/confirm-modal ]]
[[ include projects/layouts-modal ]]
[[ include partials/sign-in ]]
@@ -78,7 +74,7 @@
</div>
<div class="videoModal">
-<span class="ion-ios7-close-empty"></span>
+<span class="ion-ios-close-empty"></span>
<div class="holder">
<div class="video" style="width: 960px; margin: 0 auto; height: 540px; overflow: hidden; position: relative;"><iframe frameborder="0" scrolling="no" seamless="seamless" webkitallowfullscreen="webkitAllowFullScreen" mozallowfullscreen="mozallowfullscreen" allowfullscreen="allowfullscreen" id="okplayer" src="http://player.vimeo.com/video/109947131?api=1&player_id=okplayer" width="960" height="540" style="width: 960px; height: 800px; margin-top: -130px;"></iframe></div>
</div>
diff --git a/views/modal.ejs b/views/modal.ejs
index 7ca869c..dfc5573 100644
--- a/views/modal.ejs
+++ b/views/modal.ejs
@@ -1,7 +1,7 @@
<!doctype html>
<html>
<head>
- <title>vvalls</title>
+ <title>VValls</title>
[[ include partials/meta ]]
</head>
<body class="loading">
@@ -10,7 +10,7 @@
<div style="height: 70%; clear: both;" id="content"></div>
- [[ include partials/confirm-modal ]]
+ [[ include partials/confirm-modal ]]
[[ include partials/sign-in ]]
[[ include projects/layouts-modal ]]
[[ include projects/edit-project ]]
diff --git a/views/partials/edit-profile.ejs b/views/partials/edit-profile.ejs
index 5775ca5..5720bc8 100644
--- a/views/partials/edit-profile.ejs
+++ b/views/partials/edit-profile.ejs
@@ -83,7 +83,7 @@
</li>
</div>
<li class="buttons">
- <input id="saveForm" class="button_text" type="submit" value="Submit" />
+ <input id="saveForm" class="button_text" type="submit" value="Save Changes">
</li>
<div class="errors">
<div>There was a problem with your submission:</div>
diff --git a/views/partials/edit-subscription.ejs b/views/partials/edit-subscription.ejs
new file mode 100644
index 0000000..f3c3589
--- /dev/null
+++ b/views/partials/edit-subscription.ejs
@@ -0,0 +1,78 @@
+<div class="mediaDrawer fixed animate editSubscription">
+ <span class="close">X</span>
+ <div id="form_container">
+ <form>
+ <input type="hidden" name="_csrf" value="[[- token ]]">
+ <ul>
+ <li class="section_break">
+ <h3>Edit Subscription</h3>
+ </li>
+ <li class="freePlan">
+ You are currently using the free version of VValls. For access to all of VValls features,
+ consider upgrading to a paid plan.
+ <br><br>
+ <div class="planList"></div>
+ <br><br><br>
+ </li>
+ <li class="paidPlan">
+ <div class="currentPlanLevel">
+ Your current plan level is <span data-role="planName"></span>
+ </div>
+ <div class="planMenu">
+ <h3>Select desired plan:</h3>
+ <div>
+ <input type="radio" id="chooseBasicPlan" data-role="basicPlanInput" name="planRadio" value="basic">
+ <label for="chooseBasicPlan" data-role="basicPlanName"></label>
+ $<span data-role="basicPlanCost"></span>/<span data-role="billingInterval"></span>
+ </div>
+ <div>
+ <input type="radio" id="chooseProPlan" data-role="proPlanInput" name="planRadio" value="pro">
+ <label for="chooseProPlan" data-role="proPlanName"></label>
+ $<span data-role="proPlanCost"></span>/<span data-role="billingInterval"></span>
+ </div>
+ </div>
+ <table class="planInfo">
+ <tr class="planRow">
+ <th><span data-role="planName"></span></th>
+ <td></td>
+ <td></td>
+ <td>$<span data-role="planCost"></span>/<span data-role="billingInterval"></span></td>
+ </tr>
+ <tr class="basicLayoutRow">
+ <th>Basic layouts</th>
+ <td><input type="number" min="0" max="100" step="1" data-role="basicLayoutInput"><span data-role="basicLayoutQuantity"></span></td>
+ <td>each $<span data-role="basicLayoutCost"></span>/<span data-role="billingInterval"></span></td>
+ <td>$<span data-role="basicLayoutTotal"></span>/<span data-role="billingInterval"></span></td>
+ </tr>
+ <tr class="proLayoutRow">
+ <th>Pro layouts</th>
+ <td><input type="number" min="0" max="100" data-role="proLayoutInput"><span data-role="proLayoutQuantity"></span></td>
+ <td>each $<span data-role="proLayoutCost"></span>/<span data-role="billingInterval"></span></td>
+ <td>$<span data-role="proLayoutTotal"></span>/<span data-role="billingInterval"></span></td>
+ </tr>
+ <tr class="totalRow">
+ <td></td>
+ <td></td>
+ <th>Total</th>
+ <td>$<span data-role="planTotal"></span>/<span data-role="billingInterval"></span></td>
+ </tr>
+ </table>
+ <div class="billingMenu">
+ <button data-role="showEditMenu">Edit Your Plan</button><br>
+ <button data-role="cancelSubscription">Cancel your subscription</button>
+ </div>
+ <div class="editMenu">
+ <div class="fineprint">
+ Your credit card will be charged the difference of XXXX for this month.
+ Your subscription will renew at XXXX at the start of your next billing cycle.
+ We thank you for your support!
+ </div>
+ <button data-role="saveChanges">Save Subscription</button>
+ <button data-role="closeMenu">Cancel</button>
+ </div>
+ </li>
+ <div class="gear"><span class="ion-gear-a"></span></div>
+ </ul>
+ </form>
+ </div>
+</div>
diff --git a/views/partials/footer.ejs b/views/partials/footer.ejs
index e3c572f..2d9fb59 100644
--- a/views/partials/footer.ejs
+++ b/views/partials/footer.ejs
@@ -2,7 +2,7 @@
[[ if (logged_in) { ]]
<span>
- signed in as &rarr;
+ signed in as
<a href="/profile/[[- user.username ]]"><b>[[- user.displayName ]]</b></a>
[[ if (user.isStaff) { ]]
<a href="/staff">Staff Area</a>
@@ -15,11 +15,17 @@
<a href="/about">About</a>
<a href="/about/howto">How To</a>
+
+ [[ if (logged_in && user.plan_level > 0) { ]]
+ <a href="/profile/billing">Billing</a>
+ [[ } else { ]]
+ <a href="/about/brochure">Subscribe</a>
+ [[ } ]]
<a href="/about/terms">Terms</a>
<a href="/about/privacy">Privacy</a>
<a href="mailto:hello@vvalls.com">Contact</a>
<br><br>
- <span>©2014 Dot Dash 3, Inc.</span>
+ <span>&copy; 2016 Dot Dash 3, Inc.</span>
<a href="http://okfoc.us/">Site by OKFocus</a>
</div>
diff --git a/views/partials/header.ejs b/views/partials/header.ejs
index ce5bab9..ce9ffae 100644
--- a/views/partials/header.ejs
+++ b/views/partials/header.ejs
@@ -64,6 +64,9 @@
[[ if (profile && String(user._id) == String(profile._id)) { ]]
<a href="/profile" data-role="edit-profile-modal" class="topLink editProfile">Settings</a>
+<!--
+ <a href="/profile" data-role="edit-subscription-modal" class="topLink editSubscription">Subscription</a>
+ -->
[[ } else if (! profile) { ]]
<a href="/profile" class="topLink profileLink">Profile</a>
[[ } ]]
@@ -77,4 +80,6 @@
<a href="/signin" data-role="show-signin-modal" class="signIn topLink">Sign In</a>
[[ } ]]
</span>
-</div> \ No newline at end of file
+</div>
+
+<span class="close" id="fixed_close">X</span> \ No newline at end of file
diff --git a/views/partials/scripts.ejs b/views/partials/scripts.ejs
index fc94992..da3f0ba 100644
--- a/views/partials/scripts.ejs
+++ b/views/partials/scripts.ejs
@@ -2,9 +2,10 @@
<script type="text/javascript" src="/assets/javascripts/app.min.js"></script>
[[ } else { ]]
<script type="text/javascript" src="/assets/javascripts/vendor/bower_components/jquery/dist/jquery.min.js"></script>
-<script type="text/javascript" src="/assets/javascripts/vendor/bower_components/lodash/dist/lodash.min.js"></script>
+<script type="text/javascript" src="/assets/javascripts/vendor/bower_components/lodash/lodash.min.js"></script>
<script type="text/javascript" src="/assets/javascripts/vendor/bower_components/momentjs/min/moment.min.js"></script>
<script type="text/javascript" src="/assets/javascripts/vendor/bower_components/fiber/src/fiber.min.js"></script>
+<script type="text/javascript" src="/assets/javascripts/vendor/bower_components/hidpi-canvas/dist/hidpi-canvas.js"></script>
<!-- <script type="text/javascript" src="/assets/javascripts/vendor/bower_components/prefixfree/prefixfree.min.js"></script> -->
<script type="text/javascript" src="/assets/javascripts/vendor/bower_components/marked/lib/marked.js"></script>
<script type="text/javascript" src="/assets/javascripts/vendor/tube.js"></script>
@@ -18,15 +19,21 @@
<script type="text/javascript" src="/assets/javascripts/util.js"></script>
<script type="text/javascript" src="/assets/javascripts/mx/mx.js"></script>
+
<script type="text/javascript" src="/assets/javascripts/mx/extensions/mx.scene.js"></script>
<script type="text/javascript" src="/assets/javascripts/mx/extensions/mx.movements.js"></script>
<script type="text/javascript" src="/assets/javascripts/mx/extensions/mx.movementsMobile.js"></script>
+<script type="text/javascript" src="/assets/javascripts/mx/extensions/mx.orbitCamera.js"></script>
+
<script type="text/javascript" src="/assets/javascripts/mx/primitives/mx.image.js"></script>
<script type="text/javascript" src="/assets/javascripts/mx/primitives/mx.text.js"></script>
<script type="text/javascript" src="/assets/javascripts/mx/primitives/mx.video.js"></script>
<script type="text/javascript" src="/assets/javascripts/mx/primitives/mx.youtube.js"></script>
<script type="text/javascript" src="/assets/javascripts/mx/primitives/mx.vimeo.js"></script>
<script type="text/javascript" src="/assets/javascripts/mx/primitives/mx.soundcloud.js"></script>
+<script type="text/javascript" src="/assets/javascripts/mx/primitives/mx.grid.js"></script>
+<script type="text/javascript" src="/assets/javascripts/mx/primitives/mx.point.js"></script>
+<script type="text/javascript" src="/assets/javascripts/mx/primitives/mx.polyline.js"></script>
<script type="text/javascript" src="/assets/javascripts/rectangles/_env.js"></script>
@@ -64,6 +71,7 @@
<script type="text/javascript" src="/assets/javascripts/rectangles/engine/scenery/move.js"></script>
<script type="text/javascript" src="/assets/javascripts/rectangles/engine/scenery/resize.js"></script>
<script type="text/javascript" src="/assets/javascripts/rectangles/engine/scenery/randomize.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/scenery/sound.js"></script>
<script type="text/javascript" src="/assets/javascripts/rectangles/engine/scenery/undo.js"></script>
<script type="text/javascript" src="/assets/javascripts/rectangles/engine/scenery/types/_object.js"></script>
<script type="text/javascript" src="/assets/javascripts/rectangles/engine/scenery/types/audio.js"></script>
@@ -71,16 +79,38 @@
<script type="text/javascript" src="/assets/javascripts/rectangles/engine/scenery/types/text.js"></script>
<script type="text/javascript" src="/assets/javascripts/rectangles/engine/scenery/types/video.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/sculpture/_sculpture.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/sculpture/move.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/sculpture/resize.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/sculpture/types/_object.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/sculpture/types/image.js"></script>
+
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/shapes/polyline.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/shapes/ortho.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/shapes/shapelist.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/shapes/regionlist.js"></script>
+
<script type="text/javascript" src="/assets/javascripts/rectangles/engine/map/_map.js"></script>
-<script type="text/javascript" src="/assets/javascripts/rectangles/engine/map/ui_editor.js"></script>
-<script type="text/javascript" src="/assets/javascripts/rectangles/engine/map/ui_minimap.js"></script>
<script type="text/javascript" src="/assets/javascripts/rectangles/engine/map/draw.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/map/ui/editor.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/map/ui/minimap.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/map/ui/ortho.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/map/tools/_base.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/map/tools/arrow.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/map/tools/line.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/map/tools/eraser.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/map/tools/ortho.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/map/tools/polyline.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/map/tools/position.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/engine/map/tools/start.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/lib/View.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/lib/Router.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/lib/ModalView.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/lib/FormView.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/lib/UploadView.js"></script>
+<script type="text/javascript" src="/assets/javascripts/ui/lib/AnimatedView.js"></script>
+<script type="text/javascript" src="/assets/javascripts/ui/lib/ToggleableView.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/lib/AlertModal.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/lib/ConfirmModal.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/lib/ErrorModal.js"></script>
@@ -92,9 +122,12 @@
<script type="text/javascript" src="/assets/javascripts/ui/site/UsernameTaken.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/site/PasswordForgot.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/site/PasswordReset.js"></script>
+<script type="text/javascript" src="/assets/javascripts/ui/site/LayoutsIndex.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/site/LayoutsModal.js"></script>
+<script type="text/javascript" src="/assets/javascripts/ui/site/NewProjectModal.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/site/EditProjectModal.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/site/EditProfileModal.js"></script>
+<script type="text/javascript" src="/assets/javascripts/ui/site/EditSubscriptionModal.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/site/DocumentModal.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/site/HomeView.js"></script>
@@ -106,6 +139,15 @@
<script type="text/javascript" src="/assets/javascripts/ui/builder/BuilderToolbar.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/builder/BuilderInfo.js"></script>
+<script type="text/javascript" src="/assets/javascripts/ui/blueprint/BlueprintView.js"></script>
+<script type="text/javascript" src="/assets/javascripts/ui/blueprint/BlueprintInfo.js"></script>
+<script type="text/javascript" src="/assets/javascripts/ui/blueprint/BlueprintSettings.js"></script>
+<script type="text/javascript" src="/assets/javascripts/ui/blueprint/BlueprintEditor.js"></script>
+<script type="text/javascript" src="/assets/javascripts/ui/blueprint/BlueprintScaler.js"></script>
+<script type="text/javascript" src="/assets/javascripts/ui/blueprint/BlueprintToolbar.js"></script>
+<script type="text/javascript" src="/assets/javascripts/ui/blueprint/BlueprintUploader.js"></script>
+<script type="text/javascript" src="/assets/javascripts/ui/blueprint/BlueprintNotice.js"></script>
+
<script type="text/javascript" src="/assets/javascripts/ui/editor/EditorView.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/editor/EditorSettings.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/editor/EditorToolbar.js"></script>
@@ -117,6 +159,7 @@
<script type="text/javascript" src="/assets/javascripts/ui/editor/MediaUpload.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/editor/MediaViewer.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/editor/Presets.js"></script>
+<script type="text/javascript" src="/assets/javascripts/ui/editor/SculptureEditor.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/editor/TextEditor.js"></script>
<script type="text/javascript" src="/assets/javascripts/ui/editor/WallpaperPicker.js"></script>
diff --git a/views/profile.ejs b/views/profile.ejs
index a62652c..d3ae10e 100644
--- a/views/profile.ejs
+++ b/views/profile.ejs
@@ -1,7 +1,7 @@
<!doctype html>
<html>
<head>
- <title>vvalls</title>
+ <title>VValls | [[- profile.displayName ]]</title>
[[ include partials/meta ]]
</head>
<body class="loading">
@@ -9,48 +9,53 @@
[[- include partials/header ]]
<div class="profilepage">
- [[ if (profile.photo && profile.photo.length) { ]]
- <div class="profilePic" style="background-image:url([[- profile.photo ]])">
- </div>
- [[ } else { ]]
- <div class="profilePic noPic">
- <span class="holder">
- <span class="ion-ios7-person-outline"></span>
- [[ if (isOwnProfile) { ]]
- <div>click to add profile pic</div>
- <input id="profile_avatar" name="avatar" class="element file" type="file">
- [[ } ]]
- </span>
- </div>
+ [[ if (profile.photo && profile.photo.length) { ]]
+ <div class="profilePic" style="background-image:url([[- profile.photo ]])">
+ </div>
+ [[ } else { ]]
+ <div class="profilePic noPic">
+ <span class="holder">
+ <span class="ion-ios-person-outline"></span>
+ [[ if (isOwnProfile) { ]]
+ <div>click to add profile pic</div>
+ <input id="profile_avatar" name="avatar" class="element file" type="file">
[[ } ]]
- <div class="bio">
- <div class="holder">
- <h2>[[- profile.displayName ]]</h2>
- [[ if (profile.location) { ]]
- <span>
- [[- profile.location ]]
- </span>
- [[ } ]]
- [[ if (profile.website && profile.website.length) { ]]
- <span>
- <a href="[[- profile.website ]]" target="_blank">[[- profile.website ]]</a>
- </span>
- [[ } ]]
- [[ if (profile.twitterName && profile.twitterName.length) { ]]
- <span>
- <a href="https://twitter.com/[[- profile.twitterName ]]" target="_blank">@[[- profile.twitterName ]]</a>
- </span>
- [[ } ]]
- </div>
- </div>
-
+ </span>
+ </div>
+ [[ } ]]
+ <div class="bio">
+ <div class="holder">
+ <h2>[[- profile.displayName ]]</h2>
+ [[ if (profile.location) { ]]
+ <span>
+ [[- profile.location ]]
+ </span>
+ [[ } ]]
+ [[ if (profile.website && profile.website.length) { ]]
+ <span>
+ <a href="[[- profile.website ]]" target="_blank">[[- profile.website ]]</a>
+ </span>
+ [[ } ]]
+ [[ if (profile.twitterName && profile.twitterName.length) { ]]
+ <span>
+ <a href="https://twitter.com/[[- profile.twitterName ]]" target="_blank">@[[- profile.twitterName ]]</a>
+ </span>
+ [[ } ]]
+ [[ if (profile.plan_level == 1) { ]]
+ <span class="plan_level premium">PREMIUM</span>
+ [[ } else if (profile.plan_level == 2) { ]]
+ <span class="plan_level pro">PRO</span>
+ [[ } ]]
+ </div>
+ </div>
[[ if (projects.length) { ]]
+
<h1>[[- profile.username ]] has [[- projectCount ]] project[[- projectCount != 1 ? "s" : "" ]]</h1>
-
[[ include projects/list-projects ]]
+
[[ } else { ]]
-
+
<h1>Welcome to VVALLS</h1>
<div class="projectList about">
<h2>
@@ -69,8 +74,13 @@
<h3>This person has no projects.</h3>
[[ } ]]
</div>
+
[[ } ]]
- </div>
+
+ </div>
+<!--
+ [[ include partials/edit-subscription ]]
+ -->
[[ include partials/edit-profile ]]
[[ include projects/layouts-modal ]]
[[ include projects/edit-project ]]
diff --git a/views/projects/layouts-modal.ejs b/views/projects/layouts-modal.ejs
index 6f60d81..0d648cd 100644
--- a/views/projects/layouts-modal.ejs
+++ b/views/projects/layouts-modal.ejs
@@ -7,7 +7,8 @@
<div class="templates-list">
</div>
<form>
- <input data-role="create-new-layout" class="button_text" type="submit" value="New Layout">
+ <input data-role="create-new-blueprint" class="button_text" type="submit" value="Trace a Blueprint">
+ <input data-role="create-new-layout" class="button_text" type="submit" value="Make a Standard Layout">
</form>
</div>
<div class="no-templates">
@@ -43,7 +44,9 @@
<div class="templates-list">
</div>
+
<form>
+ <input data-role="create-new-blueprint" class="button_text" type="submit" value="trace a blueprint">
<input data-role="create-new-layout" class="button_text" type="submit" value="or make your own template">
</form>
</div>
diff --git a/views/reader.ejs b/views/reader.ejs
index 6c9856a..7035356 100644
--- a/views/reader.ejs
+++ b/views/reader.ejs
@@ -1,7 +1,7 @@
<!doctype html>
<html>
<head>
- <title>vvalls</title>
+ <title>VValls</title>
[[ include partials/meta ]]
</head>
<body class="loading reader">
diff --git a/views/staff/_blueprints.ejs b/views/staff/_blueprints.ejs
new file mode 100644
index 0000000..58fe2a3
--- /dev/null
+++ b/views/staff/_blueprints.ejs
@@ -0,0 +1,21 @@
+<table id="users">
+[[ blueprints.forEach(function(blueprint){ ]]
+ <tr>
+ <td>
+ <a href="/staff/blueprints/[[- blueprint.slug ]]">[[- blueprint.name ]]</a>
+ </td>
+ <td class="editLinks">
+ <a href="/blueprint/[[- blueprint.slug ]]">[view]</a>
+<!--
+ <a href="/api/rooms/[[- blueprint.slug ]]">[api]</a>
+ -->
+ </td>
+ <td>
+ <a href="/staff/users/[[- blueprint.user.username ]]">[[- blueprint.user.username ]]</a>
+ </td>
+ <td>
+ [[- blueprint.date ]]
+ </td>
+ </tr>
+[[ }) ]]
+</table>
diff --git a/views/staff/_header.ejs b/views/staff/_header.ejs
index 3bbf4f1..a73c12e 100644
--- a/views/staff/_header.ejs
+++ b/views/staff/_header.ejs
@@ -1,7 +1,7 @@
<!doctype html>
<html>
<head>
- <title>vvalls | staff</title>
+ <title>VValls | staff</title>
[[ include ../partials/meta ]]
<link rel="stylesheet" href="/assets/javascripts/vendor/bower_components/jquery-jsonview/dist/jquery.jsonview.css"></script>
<link rel="stylesheet" href="/assets/stylesheets/staff.css"></script>
diff --git a/views/staff/_layouts.ejs b/views/staff/_layouts.ejs
new file mode 100644
index 0000000..d97883b
--- /dev/null
+++ b/views/staff/_layouts.ejs
@@ -0,0 +1,22 @@
+<table id="users">
+[[ layouts.forEach(function(layout){ ]]
+ <tr>
+ <td>
+ <a href="/staff/layouts/[[- layout.slug ]]">[[- layout.name ]]</a>
+ </td>
+ <td class="editLinks">
+ <a href="/layout/[[- layout.slug ]]">[view]</a>
+ <a href="/layout/[[- layout.slug ]]/edit">[edit]</a>
+<!--
+ <a href="/api/rooms/[[- layout.slug ]]">[api]</a>
+ -->
+ </td>
+ <td>
+ <a href="/staff/users/[[- layout.user.username ]]">[[- layout.user.username ]]</a>
+ </td>
+ <td>
+ [[- layout.date ]]
+ </td>
+ </tr>
+[[ }) ]]
+</table>
diff --git a/views/staff/_nav.ejs b/views/staff/_nav.ejs
new file mode 100644
index 0000000..702a374
--- /dev/null
+++ b/views/staff/_nav.ejs
@@ -0,0 +1,10 @@
+<nav>
+ <a href="/staff">home</a>
+ <a href="/staff/users">users</a>
+ <a href="/staff/projects">projects</a>
+ <a href="/staff/layouts">layouts</a>
+ <a href="/staff/blueprints">blueprints</a>
+ <a href="/staff/media">media</a>
+ <a href="/staff/plans">plans</a>
+<!-- <a href="/staff/subscriptions">subscriptions</a> -->
+</nav> \ No newline at end of file
diff --git a/views/staff/_pagination.ejs b/views/staff/_pagination.ejs
index 6c3bfb1..7d85c71 100644
--- a/views/staff/_pagination.ejs
+++ b/views/staff/_pagination.ejs
@@ -10,7 +10,7 @@
[[ if (pagination.next_page !== -1) { ]]
<a href="?[[- pagination.query ]]&offset=[[- pagination.next_page ]]">Next page &rarr;</a>
[[ } else { ]]
- &rarr;
+ ->
[[ } ]]
</div>
diff --git a/views/staff/_users.ejs b/views/staff/_users.ejs
index d46058f..ee988ab 100644
--- a/views/staff/_users.ejs
+++ b/views/staff/_users.ejs
@@ -1,3 +1,18 @@
+<nav class="subnav">
+ sort by <a href="?sort=date">join date</a> ... <a href="?sort=last_seen">recent</a> ... <a href="?sort=name">name</a> ... jump to a letter:
+ <span class="alphabet">
+ [[ "abcdefghijklmnopqrstuvwxyz?".split("").forEach(function(letter){ ]]
+ <a href="?sort=name&initial=[[- letter ]]">[[- letter.toUpperCase() ]]</a>
+ [[ }) ]]
+ </span>
+</nav>
+
+[[ if (! users.length || opt.error) { ]]
+<div class="error">
+ [[- opt.error ]]
+</div>
+[[ } ]]
+
<table id="users">
[[ users.forEach(function(user){ ]]
<tr>
@@ -5,6 +20,10 @@
<a href="/staff/users/[[- user.username ]]"><div style="background-image:url([[- user.photo ]])" class="avatar"></div></a>
</td>
<td>
+ [[- user.plan_type ]]
+ [[- user.last_charged ]]
+ </td>
+ <td>
<a href="/staff/users/[[- user.username ]]">[[- user.username ]]</a>
</td>
<td>
@@ -12,6 +31,8 @@
</td>
<td class="editLinks">
<a href="/profile/[[- user.username ]]">[view profile]</a>
+ <a href="/staff/users/[[- user.username ]]/media">[view media]</a>
+ <a href="https://vvalls.recurly.com/accounts/[[- user._id ]]">[recurly]</a>
</td>
<td>
[[- user.last_seen ]]
diff --git a/views/staff/blueprints/index.ejs b/views/staff/blueprints/index.ejs
new file mode 100644
index 0000000..2206a1c
--- /dev/null
+++ b/views/staff/blueprints/index.ejs
@@ -0,0 +1,13 @@
+[[ include ../_header ]]
+
+ <h1>Blueprints</h1>
+
+[[ include ../_nav ]]
+
+ <hr>
+
+[[ include ../_pagination ]]
+[[ include ../_blueprints ]]
+[[ include ../_pagination ]]
+
+[[ include ../_footer ]]
diff --git a/views/staff/blueprints/show.ejs b/views/staff/blueprints/show.ejs
new file mode 100644
index 0000000..5fd9db6
--- /dev/null
+++ b/views/staff/blueprints/show.ejs
@@ -0,0 +1,59 @@
+[[ include ../_header ]]
+
+ <h1>[[- blueprint.name ]]</h1>
+
+[[ include ../_nav ]]
+
+ <hr>
+
+ <table>
+ <tr>
+ <td>
+ <a href="/staff/blueprints/[[- blueprint.slug ]]">[[- blueprint.name ]]</a>
+ </td>
+ <td class="editLinks">
+ <a href="/blueprint/[[- blueprint.slug ]]">[view]</a>
+ <a href="/blueprint/[[- blueprint.slug ]]/edit">[edit]</a>
+<!--
+ <a href="/api/rooms/[[- blueprint.slug ]]">[api]</a>
+ -->
+ </td>
+ <td>
+ [[- blueprint.date ]]
+ </td>
+ </tr>
+ <tr>
+ <td>
+ [[ if (blueprintUser.photo) { ]]
+ <a href="/staff/users/[[- blueprintUser.username ]]"><div style="background-image:url([[- blueprintUser.photo ]])" class="avatar"></div></a>
+ [[ } ]]
+ <a href="/staff/users/[[- blueprintUser.username ]]">[[- blueprintUser.username ]]</a>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="999">
+ <img src="[[- blueprint.url ]]" style="max-width: 400px">
+ </td>
+ </tr>
+ <tr>
+ <td>Width</td>
+ <td>[[- blueprint.width ]]</td>
+ </tr>
+ <tr>
+ <td>Height</td>
+ <td>[[- blueprint.height ]]</td>
+ </tr>
+ <tr>
+ <td>Scale</td>
+ <td>[[- blueprint.scale ]]</td>
+ </tr>
+ </table>
+
+ <br><br>
+ <div id="actions">
+ </div>
+
+ <br>
+ <br>
+
+[[ include ../_footer ]]
diff --git a/views/staff/blueprints/show_404.ejs b/views/staff/blueprints/show_404.ejs
new file mode 100644
index 0000000..0ffca86
--- /dev/null
+++ b/views/staff/blueprints/show_404.ejs
@@ -0,0 +1,9 @@
+[[ include ../_header ]]
+
+ <h1>Blueprint not found</h1>
+
+[[ include ../_nav ]]
+
+ <hr>
+
+[[ include ../_footer ]]
diff --git a/views/staff/index.ejs b/views/staff/index.ejs
index 5ca7269..1b73641 100644
--- a/views/staff/index.ejs
+++ b/views/staff/index.ejs
@@ -2,11 +2,7 @@
<h1>Staff Area</h1>
- <nav>
- <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/layouts/index.ejs b/views/staff/layouts/index.ejs
new file mode 100644
index 0000000..71f5dc7
--- /dev/null
+++ b/views/staff/layouts/index.ejs
@@ -0,0 +1,13 @@
+[[ include ../_header ]]
+
+ <h1>Layouts</h1>
+
+[[ include ../_nav ]]
+
+ <hr>
+
+[[ include ../_pagination ]]
+[[ include ../_layouts ]]
+[[ include ../_pagination ]]
+
+[[ include ../_footer ]]
diff --git a/views/staff/layouts/show.ejs b/views/staff/layouts/show.ejs
new file mode 100644
index 0000000..2742c1f
--- /dev/null
+++ b/views/staff/layouts/show.ejs
@@ -0,0 +1,61 @@
+[[ include ../_header ]]
+
+ <h1>[[- layout.name ]]</h1>
+
+[[ include ../_nav ]]
+
+ <hr>
+
+ <table>
+ <tr>
+ <td>
+ <a href="/staff/layouts/[[- layout.slug ]]">[[- layout.name ]]</a>
+ </td>
+ <td class="editLinks">
+ <a href="/layout/[[- layout.slug ]]">[view]</a>
+ <a href="/layout/[[- layout.slug ]]/edit">[edit]</a>
+<!--
+ <a href="/api/rooms/[[- layout.slug ]]">[api]</a>
+ -->
+ </td>
+ <td>
+ [[- layout.date ]]
+ </td>
+<!--
+ <td>
+ [[- layout.privacy ? "private" : "" ]]
+ </td>
+ -->
+ </tr>
+ <tr>
+ <td>
+ [[ if (layoutUser.photo) { ]]
+ <a href="/staff/users/[[- layoutUser.username ]]"><div style="background-image:url([[- layoutUser.photo ]])" class="avatar"></div></a>
+ [[ } ]]
+ <a href="/staff/users/[[- layoutUser.username ]]">[[- layoutUser.username ]]</a>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="999" class="description">
+ "[[- layout.description ]]"
+ </td>
+ </tr>
+ <tr>
+ <th>
+ stock layout?
+ </th>
+ <td id="isStockLayout">
+ [[- layout.is_stock ? "yes" : "no" ]]
+ </td>
+ </tr>
+ </table>
+
+ <br><br>
+ <div id="actions">
+ <button id="toggle-stock" data-stock="[[- !! (layout.is_stock) ]]">Make this layout Stock</button>
+ </div>
+
+ <br>
+ <br>
+
+[[ include ../_footer ]]
diff --git a/views/staff/layouts/show_404.ejs b/views/staff/layouts/show_404.ejs
new file mode 100644
index 0000000..5d24aa8
--- /dev/null
+++ b/views/staff/layouts/show_404.ejs
@@ -0,0 +1,9 @@
+[[ include ../_header ]]
+
+ <h1>Layout not found</h1>
+
+[[ include ../_nav ]]
+
+ <hr>
+
+[[ include ../_footer ]]
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..85375fa
--- /dev/null
+++ b/views/staff/plans/_form.ejs
@@ -0,0 +1,154 @@
+<input type="hidden" id="_csrf" name="_csrf" value="[[- token ]]">
+
+<ul>
+
+<li class="section_break">
+ <h3>New Plan</h3>
+</li>
+
+<li>
+ <label for="plan_name">Name</label>
+ <div><input id="plan_name" name="name" type="text" value="[[- plan.name ]]"></div>
+</li>
+
+<li>
+ <label for="plan_slug">Slug</label>
+ <div><input id="plan_slug" name="slug" type="text" value="[[- plan.slug ]]"></div>
+</li>
+
+<li>
+ <label for="plan_level">Level</label>
+ <div><input id="plan_level" name="level" type="number" min="0" value="[[- plan.level ]]"></div>
+</li>
+
+<!-- - - - - -->
+
+<li class="section_break">
+ <h3>Plan Pricing</h3>
+</li>
+
+<li>
+ <label for="plan_monthly_price">Monthly Price</label>
+ <div><input id="plan_monthly_price" name="monthly_price" type="number" min="0" value="[[- plan.monthly_price ]]"></div>
+</li>
+
+<li>
+ <label for="plan_yearly_price">Yearly Price</label>
+ <div><input id="plan_yearly_price" name="yearly_price" type="number" min="0" value="[[- plan.yearly_price ]]"></div>
+</li>
+
+<p>
+ <i>Note:</i> Pricing should be in cents, i.e. a price of $10.00 should be entered as 1000.
+</p>
+
+<!-- - - - - -->
+
+<li class="section_break">
+ <h3>Additional Template Pricing</h3>
+</li>
+
+<li>
+ <label for="plan_basic_layout_monthly_price">Basic Template Price (Monthly)</label>
+ <div><input id="plan_basic_layout_monthly_price" name="basic_layout_monthly_price" type="number" min="0" value="[[- plan.basic_layout_monthly_price ]]"></div>
+</li>
+
+<li>
+ <label for="plan_basic_layout_yearly_price">Basic Template Price (Yearly)</label>
+ <div><input id="plan_basic_layout_yearly_price" name="basic_layout_yearly_price" type="number" min="0" value="[[- plan.basic_layout_yearly_price ]]"></div>
+</li>
+
+<li>
+ <label for="plan_pro_layout_monthly_price">Pro Template Price (Monthly)</label>
+ <div><input id="plan_pro_layout_monthly_price" name="pro_layout_monthly_price" type="number" min="0" value="[[- plan.pro_layout_monthly_price ]]"></div>
+</li>
+
+<li>
+ <label for="plan_pro_layout_yearly_price">Pro Template Price (Yearly)</label>
+ <div><input id="plan_pro_layout_yearly_price" name="pro_layout_yearly_price" type="number" min="0" value="[[- plan.pro_layout_yearly_price ]]"></div>
+</li>
+
+<!-- - - - - -->
+
+<li class="section_break">
+ <h3>Per-Plan Template Limits</h3>
+</li>
+
+<li>
+ <label for="plan_basic_layout_limit">Basic Template Limit</label>
+ <div><input id="plan_basic_layout_limit" name="basic_layout_limit" type="number" min="0" value="[[- plan.basic_layout_limit ]]"></div>
+</li>
+
+<li>
+ <label for="plan_pro_layout_limit">Pro Template Limit</label>
+ <div><input id="plan_pro_layout_limit" name="pro_layout_limit" type="number" min="0" value="[[- plan.pro_layout_limit ]]"></div>
+</li>
+
+<!-- - - - - -->
+
+<li class="section_break">
+ <h3>Per-Plan Project Limits</h3>
+</li>
+
+<li>
+ <label for="plan_stock_project_limit">Stock Project Limit</label>
+ <div><input id="plan_stock_project_limit" name="stock_project_limit" type="number" min="0" value="[[- plan.stock_project_limit ]]"></div>
+</li>
+
+<li>
+ <label for="plan_basic_project_limit">Basic Project Limit</label>
+ <div><input id="plan_basic_project_limit" name="basic_project_limit" type="number" min="0" value="[[- plan.basic_project_limit ]]"></div>
+</li>
+
+<li>
+ <label for="plan_pro_project_limit">Pro Project Limit</label>
+ <div><input id="plan_pro_project_limit" name="pro_project_limit" type="number" min="0" value="[[- plan.pro_project_limit ]]"></div>
+</li>
+
+<!-- - - - - -->
+
+<li class="section_break">
+ <h3>Permissions</h3>
+</li>
+
+<div>
+<li>
+ <input 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[[ } ]]>
+ <label for="plan_permissions_basic_editor">Basic Editor</label>
+</li>
+
+<li>
+ <input 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[[ } ]]>
+ <label for="plan_permissions_pro_editor">Pro Editor</label>
+</li>
+
+<li>
+ <input name="permissions_sculpture" type="hidden" value="0">
+ <input id="plan_permissions_sculpture" name="permissions_sculpture" type="checkbox" value="1" [[ if (plan.permissions.sculpture) { ]]checked[[ } ]]>
+ <label for="plan_permissions_sculpture">3D Objects</label>
+</li>
+
+<li>
+ <input name="permissions_collaborators" type="hidden" value="0">
+ <input id="plan_permissions_collaborators" name="permissions_collaborators" type="checkbox" value="1" [[ if (plan.permissions.collaborators) { ]]checked[[ } ]]>
+ <label for="plan_permissions_collaborators">Collaborators</label>
+</li>
+
+<li>
+ <input 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[[ } ]]>
+ <label for="plan_permissions_no_logo">No Logo</label>
+</li>
+
+<p>
+ These permissions should harmonize with the restrictions on layouts set above.
+</p>
+
+</div>
+
+<li>
+ <input type="submit" value="Save Changes">
+</li>
+
+</ul>
diff --git a/views/staff/plans/edit.ejs b/views/staff/plans/edit.ejs
new file mode 100644
index 0000000..9848873
--- /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..16fcf14
--- /dev/null
+++ b/views/staff/plans/index.ejs
@@ -0,0 +1,65 @@
+[[ include ../_header ]]
+
+ <h1>Plans</h1>
+
+[[ include ../_nav ]]
+
+ <hr>
+
+<table>
+ <tr>
+ <td>
+ </td>
+ [[ plans.forEach(function(plan){ ]]
+ <td style="text-align:right; min-width: 100px;">
+ <b style="text-transform:uppercase">[[- plan.name ]]</b>
+ </td>
+ [[ }) ]]
+ </tr>
+
+ <tr class="editLinks">
+ <td>
+ <a href="/staff/plans/new">New Plan</a>
+ </td>
+ [[ plans.forEach(function(plan){ ]]
+ <td style="text-align:right">
+ [<a href="/staff/plans/[[- plan.slug ]]">edit</a>]
+ </td>
+ [[ }) ]]
+ </tr>
+
+ [[ fields.forEach(function(field){ ]]
+ <tr>
+ <td style="text-transform:capitalize">[[- field.replace(/_/g," ") ]]</td>
+ [[ plans.forEach(function(plan){ ]]
+ <td style="text-align:right">
+ [[ if (field.indexOf("_price") != -1) { ]]
+ [[- plan[field] == 0 ? "" : "$" + (plan[field]/100).toFixed(2) ]]
+ [[ } else { ]]
+ [[- plan[field] ]]
+ [[ } ]]
+ </td>
+ [[ }) ]]
+ </tr>
+ [[ }) ]]
+
+ <tr>
+ <td style="border-bottom: 1px dotted #888;" colspan='10'></td>
+ </tr>
+
+ [[ permissions.forEach(function(permission){ ]]
+ <tr>
+ <td style="text-transform:capitalize">[[- permission.replace(/_/g," ") ]]</td>
+ [[ plans.forEach(function(plan){ ]]
+ <td style="text-align:right">
+ [[- plan.permissions[permission] ? "<b>x</b>" : " " ]]
+ </td>
+ [[ }) ]]
+ </tr>
+ [[ }) ]]
+</table>
+<br clear="all">
+
+ <hr>
+
+[[ include ../_footer ]]
diff --git a/views/staff/plans/new.ejs b/views/staff/plans/new.ejs
new file mode 100644
index 0000000..297d3d6
--- /dev/null
+++ b/views/staff/plans/new.ejs
@@ -0,0 +1,13 @@
+[[ 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/subscriptions/index.ejs b/views/staff/subscriptions/index.ejs
new file mode 100644
index 0000000..adf148c
--- /dev/null
+++ b/views/staff/subscriptions/index.ejs
@@ -0,0 +1,39 @@
+[[ include ../_header ]]
+
+ <h1>Subscriptions</h1>
+
+[[ include ../_nav ]]
+
+ <hr>
+
+[[ include ../_pagination ]]
+
+<table id="users">
+[[ subscriptions.forEach(function(subscription){ ]]
+ <tr>
+ <td>
+ <a href="/staff/subscriptions/[[- subscription._id ]]"><div style="background-image:url([[- subscription.user.photo ]])" class="avatar"></div></a>
+ </td>
+ <td>
+ <a href="/staff/subscriptions/[[- subscription._id ]]">[[- subscription.user.username ]]</a>
+ </td>
+ <td>
+ [[- subscription.user.displayName ]]
+ </td>
+ <td class="editLinks">
+ <a href="/profile/[[- user.username ]]">[view profile]</a>
+ </td>
+ <td>
+ [[- subscription.user.last_seen ]]
+ </td>
+ <td>
+ [[- subscription.plan_code ]]
+ </td>
+ </tr>
+[[ }) ]]
+</table>
+
+
+[[ include ../_pagination ]]
+
+[[ include ../_footer ]]
diff --git a/views/staff/subscriptions/show.ejs b/views/staff/subscriptions/show.ejs
new file mode 100644
index 0000000..e2839a6
--- /dev/null
+++ b/views/staff/subscriptions/show.ejs
@@ -0,0 +1,12 @@
+[[ include ../_header ]]
+ <h1>User: [[- subscription.user.username ]]</h1>
+
+[[ include ../_nav ]]
+
+ <hr>
+
+<pre>
+info to show..
+- link to recurly profile
+- link to vvalls profile
+- subscription tier + add-ons
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..a434b57 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>
@@ -22,12 +17,38 @@
[[- profile.displayName ]]
</td>
<td class="editLinks">
- <a href="/profile/[[- profile.username ]]">[view profile]</a>
- <a href="/staff/users/[[- profile.username ]]/media">[view media]</a>
+ <a href="/profile/[[- profile.username ]]">[profile]</a>
+ <a href="/staff/users/[[- profile.username ]]/media">[media]</a>
+ [[ if (profile.subscription) { ]]
+ <a href="https://vvalls.recurly.com/accounts/[[- profile._id ]]">[recurly]</a>
+ [[ } ]]
</td>
</tr>
</table>
+
+ [[ if (profile.subscription) { ]]
+ <h2>Subscription</h2>
+ <table>
+ <tr>
+ <th>
+ plan
+ </th>
+ <td>
+ [[- profile.plan_code ]]
+ </td>
+ </tr>
+ <tr>
+ <th>
+ last charged
+ </th>
+ <td>
+ [[- profile.last_charged ]]
+ </td>
+ </tr>
+ </table>
+ [[ } ]]
+
<h2>Profile</h2>
<table>
@@ -80,12 +101,21 @@
[[- profile.isStaff ? "yes" : "no" ]]
</td>
</tr>
+ <tr>
+ <th>
+ is artist?
+ </th>
+ <td id="is-artist">
+ [[- profile.isArtist ? "yes" : "no" ]]
+ </td>
+ </tr>
</table>
<br><br>
<div id="actions">
[[ if (String(user._id) != String(profile._id)) { ]]
<button id="toggle-staff" data-isStaff="[[- !! profile.isStaff ]]">Make Staff</button>
+ <button id="toggle-artist" data-isArtist="[[- !! profile.isArtist ]]">Make Artist</button>
[[ } ]]
</div>
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 ]]