45 lines
986 B
JavaScript
45 lines
986 B
JavaScript
/**
|
|
* @class elFinder command "copy".
|
|
* Put files in filemanager clipboard.
|
|
*
|
|
* @type elFinder.command
|
|
* @author Dmitry (dio) Levashov
|
|
*/
|
|
elFinder.prototype.commands.copy = function() {
|
|
"use strict";
|
|
this.shortcuts = [{
|
|
pattern : 'ctrl+c ctrl+insert'
|
|
}];
|
|
|
|
this.getstate = function(select) {
|
|
var sel = this.files(select),
|
|
cnt = sel.length,
|
|
filter = function(files) {
|
|
var fres = true;
|
|
return jQuery.grep(files, function(f) {
|
|
fres = fres && f.read ? true : false;
|
|
return fres;
|
|
});
|
|
};
|
|
|
|
return cnt && filter(sel).length == cnt ? 0 : -1;
|
|
};
|
|
|
|
this.exec = function(hashes) {
|
|
var fm = this.fm,
|
|
dfrd = jQuery.Deferred()
|
|
.fail(function(error) {
|
|
fm.error(error);
|
|
});
|
|
|
|
jQuery.each(this.files(hashes), function(i, file) {
|
|
if (! file.read) {
|
|
return !dfrd.reject(['errCopy', file.name, 'errPerm']);
|
|
}
|
|
});
|
|
|
|
return dfrd.state() == 'rejected' ? dfrd : dfrd.resolve(fm.clipboard(this.hashes(hashes)));
|
|
};
|
|
|
|
};
|