forked from Studio-42/elFinder
-
Notifications
You must be signed in to change notification settings - Fork 0
/
uploadButton.js
41 lines (39 loc) · 1.02 KB
/
uploadButton.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/**
* @class elFinder toolbar's button tor upload file
*
* @author Dmitry (dio) Levashov
**/
$.fn.elfinderuploadbutton = function(cmd) {
"use strict";
return this.each(function() {
var fm = cmd.fm,
button = $(this).elfinderbutton(cmd)
.off('click'),
form = $('<form/>').appendTo(button),
input = $('<input type="file" multiple="true" title="'+cmd.fm.i18n('selectForUpload')+'"/>')
.on('change', function() {
var _input = $(this);
if (_input.val()) {
fm.exec('upload', {input : _input.remove()[0]}, void(0), fm.cwd().hash);
input.clone(true).appendTo(form);
}
})
.on('dragover', function(e) {
e.originalEvent.dataTransfer.dropEffect = 'copy';
}),
tm;
form.append(input.clone(true));
cmd.change(function() {
tm && cancelAnimationFrame(tm);
tm = requestAnimationFrame(function() {
var toShow = cmd.disabled();
if (form.is('visible')) {
!toShow && form.hide();
} else {
toShow && form.show();
}
});
})
.change();
});
};