diff options
Diffstat (limited to 'public/javascripts/admin_interface.js')
| -rw-r--r-- | public/javascripts/admin_interface.js | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/public/javascripts/admin_interface.js b/public/javascripts/admin_interface.js index 5514f3b3..284d2b72 100644 --- a/public/javascripts/admin_interface.js +++ b/public/javascripts/admin_interface.js | |||
| @@ -85,6 +85,44 @@ $(document).ready(function () { | |||
| 85 | desktop_mq.addEventListener('change', sync_metadata); | 85 | desktop_mq.addEventListener('change', sync_metadata); |
| 86 | } | 86 | } |
| 87 | 87 | ||
| 88 | var dropzone = document.getElementById('asset_dropzone'); | ||
| 89 | if (dropzone) { | ||
| 90 | var input = dropzone.querySelector('input[type=file]'); | ||
| 91 | |||
| 92 | // Without these, a drop that misses the zone navigates the browser | ||
| 93 | // to the file, losing the half-filled form. | ||
| 94 | ['dragover', 'drop'].forEach(function(ev) { | ||
| 95 | window.addEventListener(ev, function(e) { e.preventDefault(); }); | ||
| 96 | }); | ||
| 97 | |||
| 98 | ['dragenter', 'dragover'].forEach(function(ev) { | ||
| 99 | dropzone.addEventListener(ev, function(e) { | ||
| 100 | e.preventDefault(); dropzone.classList.add('dragging'); | ||
| 101 | }); | ||
| 102 | }); | ||
| 103 | ['dragleave', 'drop'].forEach(function(ev) { | ||
| 104 | dropzone.addEventListener(ev, function(e) { | ||
| 105 | e.preventDefault(); dropzone.classList.remove('dragging'); | ||
| 106 | }); | ||
| 107 | }); | ||
| 108 | |||
| 109 | dropzone.addEventListener('drop', function(e) { | ||
| 110 | if (!e.dataTransfer.files.length) return; | ||
| 111 | var dt = new DataTransfer(); | ||
| 112 | dt.items.add(e.dataTransfer.files[0]); | ||
| 113 | input.files = dt.files; | ||
| 114 | input.dispatchEvent(new Event('change', { bubbles: true })); | ||
| 115 | }); | ||
| 116 | |||
| 117 | input.addEventListener('change', function() { | ||
| 118 | var name_field = document.getElementById('asset_name'); | ||
| 119 | if (input.files.length && name_field && name_field.value === '') { | ||
| 120 | name_field.value = input.files[0].name.replace(/\.[^.]+$/, ''); | ||
| 121 | } | ||
| 122 | }); | ||
| 123 | } | ||
| 124 | |||
| 125 | |||
| 88 | jQuery.ajaxSetup({ | 126 | jQuery.ajaxSetup({ |
| 89 | 'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript");} | 127 | 'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript");} |
| 90 | }); | 128 | }); |
