summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/_rooms.js6
-rw-r--r--public/assets/javascripts/ui/builder/BuilderSettings.js41
-rwxr-xr-xpublic/assets/stylesheets/app.css1
-rw-r--r--server/lib/api.js3
-rw-r--r--server/lib/views.js3
-rw-r--r--views/controls/builder/settings.ejs3
6 files changed, 51 insertions, 6 deletions
diff --git a/public/assets/javascripts/rectangles/engine/rooms/_rooms.js b/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
index bcfffcc..9839c68 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
@@ -31,6 +31,12 @@ var Rooms = new function(){
delete base.list[room.id]
}
+ base.removeAll = function(){
+ base.list = {}
+ base.regions = []
+ Rooms.clipper.update()
+ }
+
base.count = function(){
return this.values().length
}
diff --git a/public/assets/javascripts/ui/builder/BuilderSettings.js b/public/assets/javascripts/ui/builder/BuilderSettings.js
index 051bbf4..66bf84b 100644
--- a/public/assets/javascripts/ui/builder/BuilderSettings.js
+++ b/public/assets/javascripts/ui/builder/BuilderSettings.js
@@ -4,10 +4,14 @@ var BuilderSettings = FormView.extend({
createAction: "/api/layouts/new",
updateAction: "/api/layouts/edit",
+ destroyAction: "/api/layouts/destroy",
events: {
"keydown [name=name]": 'enterSubmit',
"click [data-role='save-layout']": 'save',
+ "click [data-role='clone-layout']": 'clone',
+ "click [data-role='clear-layout']": 'clear',
+ "click [data-role='destroy-layout']": 'destroy',
},
initialize: function(opt){
@@ -30,6 +34,40 @@ var BuilderSettings = FormView.extend({
this.action = data.isNew ? this.createAction : this.updateAction
},
+
+ clone: function(){
+ var names = this.$name.val().split(" ")
+ if ( ! isNaN(Number( names[names.length-1] )) ) {
+ names[names.length-1] = Number( names[names.length-1] ) + 1
+ }
+ else {
+ names.push("2")
+ }
+
+ this.$id.val('new')
+ this.$name.val( names.join(" ") )
+ this.action = this.createAction
+
+ window.history.pushState(null, document.title, "/builder/new")
+ },
+
+ clear: function(){
+ Rooms.removeAll()
+ },
+
+ destroy: function(){
+ var msg = "Are you sure you want to delete the layout " + sanitize(this.$name.val()) + "?"
+ ConfirmModal.confirm(msg, $.proxy(function(){
+ $.ajax({
+ url: this.destroyAction,
+ type: "delete",
+ data: { _id: this.$id.val(), _csrf: this.$csrf.val() },
+ success: function(data){
+ window.location.href = "/builder"
+ }
+ })
+ }, this))
+ },
toggle: function(){
this.$el.toggleClass("active")
@@ -39,7 +77,7 @@ var BuilderSettings = FormView.extend({
e.stopPropagation()
var base = this
if (e.keyCode == 13) {
- setTimeout(this.save.bind(this), 100)
+ setTimeout(function(){ base.save(e) }, 100)
}
},
@@ -67,7 +105,6 @@ var BuilderSettings = FormView.extend({
serialize: function(){
map.draw.render()
-
var fd = new FormData()
fd.append( "_csrf", this.$csrf.val() )
fd.append( "_id", this.$id.val() )
diff --git a/public/assets/stylesheets/app.css b/public/assets/stylesheets/app.css
index 49dfd98..b785f54 100755
--- a/public/assets/stylesheets/app.css
+++ b/public/assets/stylesheets/app.css
@@ -462,6 +462,7 @@ h5{
background-position: center;
background-size: contain;
background-repeat: no-repeat;
+ background-color: #fff;
background-image: url(http://upload.wikimedia.org/wikipedia/commons/d/d9/Graceland_Memphis_TN_Floorplan_Basement.jpg);
width: 20vw;
height: 20vh;
diff --git a/server/lib/api.js b/server/lib/api.js
index 2ae80b9..d760ba9 100644
--- a/server/lib/api.js
+++ b/server/lib/api.js
@@ -208,7 +208,8 @@ var api = {
destroy: function(req, res){
var _id = req.body._id
- if (! id || ! id.length) {
+ console.log(_id)
+ if (! _id || ! _id.length) {
res.json({ error: 404 })
return
}
diff --git a/server/lib/views.js b/server/lib/views.js
index bb9e5ae..125908f 100644
--- a/server/lib/views.js
+++ b/server/lib/views.js
@@ -26,7 +26,6 @@ views.builder = function (req, res) {
res.render('builder')
}
-
views.modal = function (req, res) {
res.render('modal', {
});
@@ -66,7 +65,7 @@ views.docs = function (req, res){
}
views.profile = function (req, res) {
- var username = req.params[0] || req.user.username
+ var username = req.params[0] || (req.user && req.user.username)
if (username) {
User.findOne({ username: username }, function (err, user) {
user ? next(user) : done(err, {}, [])
diff --git a/views/controls/builder/settings.ejs b/views/controls/builder/settings.ejs
index bdb8e15..dd2496b 100644
--- a/views/controls/builder/settings.ejs
+++ b/views/controls/builder/settings.ejs
@@ -32,7 +32,8 @@
<div class="setting subButtons">
<a href="#" data-role="clear-layout">Clear</a>
- <a href="#" data-role="delete-layout">Delete</a>
+ <a href="#" data-role="clone-layout">Clone</a>
+ <a href="#" data-role="destroy-layout">Delete</a>
</div>
</div>