diff options
Diffstat (limited to 'public/assets/js/drag.js')
| -rw-r--r-- | public/assets/js/drag.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/public/assets/js/drag.js b/public/assets/js/drag.js new file mode 100644 index 0000000..b73c459 --- /dev/null +++ b/public/assets/js/drag.js @@ -0,0 +1,61 @@ +var DragView = UploadView.extend({ + + el: "body", + + uploadAction: "/upload", + + selfDrag: false, + + events: { + 'dragover': 'dragover', + 'dragstart': 'dragstart', + 'drop': 'handleDrop', + }, + + drop: function(){ + $("#droparea").hide() + $("#loading").show() + }, + + dragover: function(e){ + e.stopPropagation() + e.preventDefault() + if (this.selfDrag) { + $("#droparea").hide() + } + else { + $("#droparea").show() + } + }, + + // set if we're dragging an image from the page, versus from another window + dragstart: function(e){ + this.selfDrag = true + }, + + handleDrop: function(e){ + var base = this + e.stopPropagation() + e.preventDefault() + + e = e.originalEvent + + if (e.dataTransfer && ! this.selfDrag) { + if (e.dataTransfer.files.length) { + this.handleFileSelect(e) + } + } + else { + this.handleFileSelect(e) + } + this.selfDrag = false + this.drop() + }, + + add: function(data){ + $("#loading").hide() + app.view.display(data) + history.pushState(data, document.title, "/p/" + data.id) + }, + +}) |
