File: /home/retile.ru/public_html/admin/view/javascript/d_elfinder/commands/rm.js
"use strict"
/**
* @class elFinder command "rm"
* Delete files
*
* @author Dmitry (dio) Levashov
**/
elFinder.prototype.commands.rm = function() {
this.shortcuts = [{
pattern : 'delete ctrl+backspace'
}];
this.getstate = function(sel) {
var fm = this.fm;
sel = sel || fm.selected();
return !this._disabled && sel.length && $.map(sel, function(h) { var f = fm.file(h); return f && f.phash && !f.locked ? h : null }).length == sel.length
? 0 : -1;
}
this.exec = function(hashes) {
var self = this,
fm = this.fm,
dfrd = $.Deferred()
.fail(function(error) {
error && fm.error(error);
}),
files = this.files(hashes),
cnt = files.length,
cwd = fm.cwd().hash,
goroot = false;
if (!cnt || this._disabled) {
return dfrd.reject();
}
$.each(files, function(i, file) {
if (!file.phash) {
return !dfrd.reject(['errRm', file.name, 'errPerm']);
}
if (file.locked) {
return !dfrd.reject(['errLocked', file.name]);
}
if (file.hash == cwd) {
goroot = fm.root(file.hash);
}
});
if (!dfrd.isRejected()) {
files = this.hashes(hashes);
fm.confirm({
title : self.title,
text : 'confirmRm',
accept : {
label : 'btnRm',
callback : function() {
fm.lockfiles({files : files});
fm.request({
data : {cmd : 'rm', targets : files},
notify : {type : 'rm', cnt : cnt},
preventFail : true
})
.fail(function(error) {
dfrd.reject(error);
})
.done(function(data) {
dfrd.done(data);
goroot && fm.exec('open', goroot)
}
).always(function() {
fm.unlockfiles({files : files});
});
}
},
cancel : {
label : 'btnCancel',
callback : function() { dfrd.reject(); }
}
});
}
return dfrd;
}
}