summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2014-06-20 16:57:36 -0400
committerJules Laplace <jules@okfoc.us>2014-06-20 16:57:44 -0400
commit850c4202885867350ecccc88a4f315d6196a7326 (patch)
treecd5d09042b00596c95c2787e6fab29309a8b522c
parent1668d6e2e20c9bd53f3f6a299541c582da9742b4 (diff)
delete/resize media
-rw-r--r--public/assets/javascripts/app.js5
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/_rooms.js14
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/_scenery.js27
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/move.js14
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/resize.js2
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/types/_object.js27
-rw-r--r--public/assets/javascripts/rectangles/util/permissions.js17
-rw-r--r--public/assets/javascripts/rectangles/util/uid.js14
-rw-r--r--public/assets/javascripts/ui/SiteRouter.js2
-rw-r--r--public/assets/javascripts/ui/builder/BuilderToolbar.js10
-rw-r--r--public/assets/javascripts/ui/editor/EditorSettings.js3
-rw-r--r--public/assets/javascripts/ui/editor/EditorToolbar.js24
-rwxr-xr-xpublic/assets/stylesheets/app.css2
-rw-r--r--server/lib/api/projects.js4
-rw-r--r--views/controls/builder/toolbar.ejs2
-rw-r--r--views/controls/editor/toolbar.ejs8
-rw-r--r--views/docs.ejs2
-rw-r--r--views/partials/scripts.ejs2
18 files changed, 126 insertions, 53 deletions
diff --git a/public/assets/javascripts/app.js b/public/assets/javascripts/app.js
index 2d7961b..3d0d3c4 100644
--- a/public/assets/javascripts/app.js
+++ b/public/assets/javascripts/app.js
@@ -68,8 +68,8 @@ app.launch = function () {
var loader = new Loader(function(){
$("#loader").hide()
window.environment && window.environment.init()
- window.editor && window.editor.init()
- window.path && window.path.init()
+ // window.editor && window.editor.init()
+ // window.path && window.path.init()
animate()
})
@@ -93,7 +93,6 @@ app.position = function(obj){
rotationX: obj.rotationX,
rotationY: obj.rotationY
}
- console.log(obj.scale)
if (obj.scale !== 1) {
pos.scale = obj.scale
}
diff --git a/public/assets/javascripts/rectangles/engine/rooms/_rooms.js b/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
index 0d6c267..0186e9a 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
@@ -82,19 +82,7 @@ var Rooms = new function(){
return []
}
- base.uid = (function(){
- var id = 0
- return function(s){
- s = s || ""
- var ss
- while (1) {
- ss = s + (id++)
- if (! (ss in base.list)) {
- return ss
- }
- }
- }
- })()
+ base.uid = UidGenerator(base.list)
base.sorted_by_position = function(){
return sort_rooms_by_position( base.values() )
diff --git a/public/assets/javascripts/rectangles/engine/scenery/_scenery.js b/public/assets/javascripts/rectangles/engine/scenery/_scenery.js
index 3fe6b66..143a4d9 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/_scenery.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/_scenery.js
@@ -3,7 +3,7 @@ var Scenery = new function(){
var base = this;
- base.media = []
+ base.list = {}
base.nextMedia = null
base.mouse = new mouse ({ use_offset: false })
@@ -25,7 +25,7 @@ var Scenery = new function(){
break
}
- base.media.push(scene_media)
+ base.list[scene_media.id] = scene_media
return scene_media
}
@@ -35,14 +35,27 @@ var Scenery = new function(){
}
base.remove = function(id){
- var removed = _.remove(base.media, function(media){ return media.id == id })
- removed.forEach(function(media){
- // cleanup
- })
+ var media = base.list[id]
+ delete base.list[id]
+ media && media.destroy()
+ }
+
+ base.uid = UidGenerator(base.list)
+
+ base.forEach = function(f){
+ return base.values().forEach(f)
+ }
+
+ base.map = function(f){
+ return base.values().map(f)
+ }
+
+ base.values = function(){
+ return _.values(base.list)
}
base.serialize = function(){
- var scenery = base.media.map(function(media){
+ var scenery = base.map(function(media){
return media.serialize()
})
return scenery
diff --git a/public/assets/javascripts/rectangles/engine/scenery/move.js b/public/assets/javascripts/rectangles/engine/scenery/move.js
index 8acc1c2..f38a740 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/move.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/move.js
@@ -22,6 +22,10 @@ Scenery.move = function(base){
function down (e, cursor){
if (e.target != base.mx.el) return;
+ if (editor.permissions.destroy) {
+ Scenery.remove(base.id)
+ return
+ }
dragging = true
x = base.mx.x
y = base.mx.y
@@ -45,7 +49,9 @@ Scenery.move = function(base){
break
}
- Scenery.resize.move_dots()
+ if (editor.permissions.resize) {
+ Scenery.resize.move_dots()
+ }
}
function up (e, cursor){
@@ -92,8 +98,10 @@ Scenery.move = function(base){
rotationY: wall_rotation[ new_wall.side ]
})
- Scenery.resize.rotate_dots()
- Scenery.resize.move_dots()
+ if (editor.permissions.resize) {
+ Scenery.resize.rotate_dots()
+ Scenery.resize.move_dots()
+ }
}
return this
diff --git a/public/assets/javascripts/rectangles/engine/scenery/resize.js b/public/assets/javascripts/rectangles/engine/scenery/resize.js
index ac13326..df058bb 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/resize.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/resize.js
@@ -106,6 +106,7 @@ Scenery.resize = new function(){
Scenery.resize.hide()
}, dot_hide_delay)
}
+
base.hide = function () {
obj = null
dots.forEach(function(dot){
@@ -187,6 +188,7 @@ Scenery.resize = new function(){
function up (e, cursor){
dragging = false
selected_dot = null
+ if (! editor.permissions.resize) { return }
obj.scale = obj.mx.ops.scale = obj.mx.scale
obj.set_wall()
document.body.classList.remove("dragging")
diff --git a/public/assets/javascripts/rectangles/engine/scenery/types/_object.js b/public/assets/javascripts/rectangles/engine/scenery/types/_object.js
index 1aa037c..4367efc 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/types/_object.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/types/_object.js
@@ -5,6 +5,7 @@ Scenery.types.base = Fiber.extend(function(base){
init: function(opt){
_.bindAll(this, 'enter', 'leave')
+ this.id = Scenery.uid("scenery")
this.move = new Scenery.move (this)
this.media = opt.media
this.dimensions = new vec2(this.media.width, this.media.height)
@@ -30,15 +31,30 @@ Scenery.types.base = Fiber.extend(function(base){
mouseleave: this.leave,
})
},
+
+ destroy: function(){
+ this.unbind()
+ scene.remove(this.mx)
+ this.move = null
+ this.media = null
+ this.dimensions = null
+ this.wall = null
+ this.bounds = null
+ this.center = null
+ },
enter: function(e){
- Scenery.resize.show(this)
- Scenery.hovering = true
+ if (editor.permissions.resize) {
+ Scenery.resize.show(this)
+ Scenery.hovering = true
+ }
},
leave: function(e){
- Scenery.resize.defer_hide(this)
- Scenery.hovering = false
+ if (editor.permissions.resize) {
+ Scenery.resize.defer_hide(this)
+ Scenery.hovering = false
+ }
},
set_wall: function(wall){
@@ -46,7 +62,7 @@ Scenery.types.base = Fiber.extend(function(base){
this.bounds = this.wall.bounds_for(this.media, this.scale)
this.center = this.wall.center()
},
-
+
recenter: function(){
this.mx.move({
x: this.center.a,
@@ -59,6 +75,7 @@ Scenery.types.base = Fiber.extend(function(base){
serialize: function(){
var data = {
+ id: this.id,
room_id: this.wall.room_id,
wall_id: this.wall.id,
side: this.wall.side,
diff --git a/public/assets/javascripts/rectangles/util/permissions.js b/public/assets/javascripts/rectangles/util/permissions.js
new file mode 100644
index 0000000..22a6079
--- /dev/null
+++ b/public/assets/javascripts/rectangles/util/permissions.js
@@ -0,0 +1,17 @@
+
+var Permissions = function(ops){
+ var base = this
+ base.keys = _.keys(ops)
+ base.keys.forEach(function(op){
+ base[op] = ops[op]
+ })
+}
+
+Permissions.prototype.toggle = function (key) {
+ var base = this
+ var state = ! base[key]
+ base.keys.forEach(function(op){
+ base[op] = op == key ? state : false
+ })
+ return state
+}
diff --git a/public/assets/javascripts/rectangles/util/uid.js b/public/assets/javascripts/rectangles/util/uid.js
new file mode 100644
index 0000000..ca22fb3
--- /dev/null
+++ b/public/assets/javascripts/rectangles/util/uid.js
@@ -0,0 +1,14 @@
+
+var UidGenerator = function(list){
+ var id = 0
+ return function(s){
+ s = s || ""
+ var ss
+ while (1) {
+ ss = s + (id++)
+ if (! (ss in list)) {
+ return ss
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/public/assets/javascripts/ui/SiteRouter.js b/public/assets/javascripts/ui/SiteRouter.js
index dae2131..3a6b589 100644
--- a/public/assets/javascripts/ui/SiteRouter.js
+++ b/public/assets/javascripts/ui/SiteRouter.js
@@ -10,7 +10,7 @@ var SiteRouter = Router.extend({
"click [data-role='edit-profile-modal']": 'editProfile',
"click [data-role='new-document-modal']": 'newDocument',
"click [data-role='edit-document-modal']": 'editDocument',
- "click [data-role='delete-document-modal']": 'destroyDocument',
+ "click [data-role='destroy-document-modal']": 'destroyDocument',
"click [data-role='show-layouts-modal']": 'layoutPicker',
"click [data-role='show-projects-modal']": 'projectPicker',
},
diff --git a/public/assets/javascripts/ui/builder/BuilderToolbar.js b/public/assets/javascripts/ui/builder/BuilderToolbar.js
index 42d4306..4ca2e6c 100644
--- a/public/assets/javascripts/ui/builder/BuilderToolbar.js
+++ b/public/assets/javascripts/ui/builder/BuilderToolbar.js
@@ -6,10 +6,10 @@ var BuilderToolbar = View.extend({
"click [data-role='toggle-map-view']": 'toggleMap',
"click [data-role='toggle-layout-settings']": 'toggleSettings',
"click [data-role='undo']": 'undo',
- "click [data-role='draw']": 'draw',
- "click [data-role='resize']": 'resize',
- "click [data-role='move']": 'move',
- "click [data-role='delete']": 'delete',
+ "click [data-role='draw-mode']": 'draw',
+ "click [data-role='resize-mode']": 'resize',
+ "click [data-role='move-mode']": 'move',
+ "click [data-role='destroy-mode']": 'destroy',
},
initialize: function(opt){
@@ -36,7 +36,7 @@ var BuilderToolbar = View.extend({
move: function(){
},
- delete: function(){
+ destroy: function(){
},
})
diff --git a/public/assets/javascripts/ui/editor/EditorSettings.js b/public/assets/javascripts/ui/editor/EditorSettings.js
index 58a37b8..b9f4560 100644
--- a/public/assets/javascripts/ui/editor/EditorSettings.js
+++ b/public/assets/javascripts/ui/editor/EditorSettings.js
@@ -30,7 +30,7 @@ var EditorSettings = FormView.extend({
data.rooms && Rooms.deserialize(data.rooms)
data.startPosition && scene.camera.move(data.startPosition)
-
+
if (! data.isNew) {
console.log(data)
@@ -39,7 +39,6 @@ var EditorSettings = FormView.extend({
this.$description.val( data.description )
data.privacy && this.$privacy.find("[value=" + data.privacy + "]").prop('checked', "checked")
- console.log(data.media)
data.media && Scenery.deserialize(data.media)
}
},
diff --git a/public/assets/javascripts/ui/editor/EditorToolbar.js b/public/assets/javascripts/ui/editor/EditorToolbar.js
index f966ab6..5382187 100644
--- a/public/assets/javascripts/ui/editor/EditorToolbar.js
+++ b/public/assets/javascripts/ui/editor/EditorToolbar.js
@@ -6,8 +6,8 @@ var EditorToolbar = View.extend({
"click [data-role='toggle-map-view']": 'toggleMap',
"click [data-role='toggle-project-settings']": 'toggleSettings',
"click [data-role='open-media-viewer']": 'openMediaViewer',
- "click [data-role='resize-media']": 'resize',
- "click [data-role='delete-media']": 'deleteMedia',
+ "click [data-role='resize-media']": 'resizeMedia',
+ "click [data-role='destroy-media']": 'destroyMedia',
"click [data-role='toggle-wallpaper-panel']": 'toggleWallpaper',
"click [data-role='toggle-light-control']": 'toggleLightControl',
"click [data-role='edit-wall-text']": 'editWallText',
@@ -32,10 +32,19 @@ var EditorToolbar = View.extend({
},
resizeMedia: function(){
+ var state = editor.permissions.toggle("resize")
+ $(".inuse").removeClass("inuse")
+ $("[data-role='resize-media']").toggleClass("inuse", state)
+ if (state) {
+ Scenery.resize.hide()
+ }
},
- deleteMedia: function(){
- $("body").toggleClass("deleteActive", isActive);
+ destroyMedia: function(){
+ var state = editor.permissions.toggle("destroy")
+ $(".inuse").removeClass("inuse")
+ $("[data-role='destroy-media']").toggleClass("inuse", state)
+ $("body").toggleClass("destroyActive", state)
},
toggleWallpaper: function(){
@@ -51,4 +60,9 @@ var EditorToolbar = View.extend({
})
-// $(".icon-close").removeClass("icon-close")
+var editor = new function(){
+ this.permissions = new Permissions({
+ 'resize': false,
+ 'destroy': false,
+ })
+} \ No newline at end of file
diff --git a/public/assets/stylesheets/app.css b/public/assets/stylesheets/app.css
index 4152a1e..77b1d04 100755
--- a/public/assets/stylesheets/app.css
+++ b/public/assets/stylesheets/app.css
@@ -659,7 +659,7 @@ h5 {
background: rgba(255,255,255,0.9);
margin-left: -180px;
display: inline-block;
- width: 90px;
+ width: 120px;
text-align: right;
padding: 17px 13px;
margin-top: -16px;
diff --git a/server/lib/api/projects.js b/server/lib/api/projects.js
index ff8bcbb..32be88c 100644
--- a/server/lib/api/projects.js
+++ b/server/lib/api/projects.js
@@ -8,7 +8,7 @@ var _ = require('lodash'),
var projects = {
index: function(req, res){
- Project.find({}, function(err, docs){
+ Project.find({ user_id: req.user._id }, function(err, docs){
res.json(docs)
})
},
@@ -67,7 +67,7 @@ var projects = {
var data = util.cleanQuery(req.body)
- data.user_id = req.user._id
+ // data.user_id = req.user._id
data.name = util.sanitize(data.name)
data.slug = util.slugify(data.name)
data.description = util.sanitize(data.description)
diff --git a/views/controls/builder/toolbar.ejs b/views/controls/builder/toolbar.ejs
index b05f314..b55911b 100644
--- a/views/controls/builder/toolbar.ejs
+++ b/views/controls/builder/toolbar.ejs
@@ -16,7 +16,7 @@
data-info="resize"
class="icon-arrow-resize"></span>
<span
- data-role='delete-mode'
+ data-role='destroy-mode'
data-info="delete"
class="icon-close"></span>
<!--
diff --git a/views/controls/editor/toolbar.ejs b/views/controls/editor/toolbar.ejs
index f380cc8..e073df4 100644
--- a/views/controls/editor/toolbar.ejs
+++ b/views/controls/editor/toolbar.ejs
@@ -8,6 +8,10 @@
data-info="resize media"
class="icon-arrow-resize"></span>
<span
+ data-role='destroy-media'
+ data-info="delete media"
+ class="icon-ios7-trash-outline"></span>
+ <span
data-role='toggle-wallpaper-panel'
data-info="add wallpaper"
class="icon-ios7-keypad-outline"></span>
@@ -16,10 +20,6 @@
data-info="light control"
class="icon-ios7-sunny-outline"></span>
<span
- data-role='delete-media'
- data-info="delete media"
- class="icon-ios7-trash-outline"></span>
- <span
data-role='edit-wall-text'
data-info="edit wall text"
class="icon-ios7-compose-outline"></span>
diff --git a/views/docs.ejs b/views/docs.ejs
index e3f0823..5662133 100644
--- a/views/docs.ejs
+++ b/views/docs.ejs
@@ -21,7 +21,7 @@
<div class="options">
<a href="#" data-role="new-document-modal">New Document</a> |
<a href="#" data-role="edit-document-modal" data-name="[[- doc.name ]]">Edit</a> |
- <a href="#" data-role="delete-document-modal" data-name="[[- doc.name ]]">Delete</a>
+ <a href="#" data-role="destroy-document-modal" data-name="[[- doc.name ]]">Delete</a>
[[ include partials/edit-documentation ]]
</div>
[[ } ]]
diff --git a/views/partials/scripts.ejs b/views/partials/scripts.ejs
index abc9623..fa75efa 100644
--- a/views/partials/scripts.ejs
+++ b/views/partials/scripts.ejs
@@ -13,7 +13,9 @@
<script type="text/javascript" src="/assets/javascripts/rectangles/util/constants.js"></script>
<script type="text/javascript" src="/assets/javascripts/rectangles/util/colors.js"></script>
<script type="text/javascript" src="/assets/javascripts/rectangles/util/debug.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/util/permissions.js"></script>
<script type="text/javascript" src="/assets/javascripts/rectangles/util/sort.js"></script>
+<script type="text/javascript" src="/assets/javascripts/rectangles/util/uid.js"></script>
<script type="text/javascript" src="/assets/javascripts/rectangles/util/wheel.js"></script>
<script type="text/javascript" src="/assets/javascripts/rectangles/util/mouse.js"></script>
<script type="text/javascript" src="/assets/javascripts/rectangles/util/keys.js"></script>