| 59 | |
| 60 | // Helper function to create drag handlers for dragover/dragenter/dragleave: |
| 61 | function getDragHandler(type) { |
| 62 | var isDragOver = type === 'dragover'; |
| 63 | return function (e) { |
| 64 | e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer; |
| 65 | var dataTransfer = e.dataTransfer; |
| 66 | if (dataTransfer && $.inArray('Files', dataTransfer.types) !== -1 && |
| 67 | this._trigger( |
| 68 | type, |
| 69 | $.Event(type, {delegatedEvent: e}) |
| 70 | ) !== false) { |
| 71 | e.preventDefault(); |
| 72 | if (isDragOver) { |
| 73 | dataTransfer.dropEffect = 'copy'; |
| 74 | } |
| 75 | } |
| 76 | }; |
| 77 | } |
| 78 | |
| 79 | // The fileupload widget listens for change events on file input fields defined |
| 80 | // via fileInput setting and paste or drop events of the given dropZone. |