summaryrefslogtreecommitdiff
path: root/public/javascripts/admin_interface.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/javascripts/admin_interface.js')
-rw-r--r--public/javascripts/admin_interface.js38
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 });