File "search.js"
Full Path: /home/pumpbmko/public_html/wp-content/plugins/wp-file-manager/lib/js/commands/search.js
File size: 4.01 KB
MIME-type: text/plain
Charset: utf-8
/**
* @class elFinder command "search"
* Find files
*
* @author Dmitry (dio) Levashov
**/
elFinder.prototype.commands.search = function() {
"use strict";
this.title = 'Find files';
this.options = {ui : 'searchbutton'};
this.alwaysEnabled = true;
this.updateOnSelect = false;
/**
* Return command status.
* Search does not support old api.
*
* @return Number
**/
this.getstate = function() {
return 0;
};
/**
* Send search request to backend.
*
* @param String search string
* @return jQuery.Deferred
**/
this.exec = function(q, target, mime, type) {
var fm = this.fm,
reqDef = [],
sType = type || '',
onlyMimes = fm.options.onlyMimes,
phash, targetVolids = [],
setType = function(data) {
if (sType && sType !== 'SearchName' && sType !== 'SearchMime') {
data.type = sType;
}
return data;
},
rootCnt;
if (typeof q == 'string' && q) {
if (typeof target == 'object') {
mime = target.mime || '';
target = target.target || '';
}
target = target? target : '';
if (mime) {
mime = jQuery.trim(mime).replace(',', ' ').split(' ');
if (onlyMimes.length) {
mime = jQuery.map(mime, function(m){
m = jQuery.trim(m);
return m && (jQuery.inArray(m, onlyMimes) !== -1
|| jQuery.grep(onlyMimes, function(om) { return m.indexOf(om) === 0? true : false; }).length
)? m : null;
});
}
} else {
mime = [].concat(onlyMimes);
}
fm.trigger('searchstart', setType({query : q, target : target, mimes : mime}));
if (! onlyMimes.length || mime.length) {
if (target === '' && fm.api >= 2.1) {
rootCnt = Object.keys(fm.roots).length;
jQuery.each(fm.roots, function(id, hash) {
reqDef.push(fm.request({
data : setType({cmd : 'search', q : q, target : hash, mimes : mime}),
notify : {type : 'search', cnt : 1, hideCnt : (rootCnt > 1? false : true)},
cancel : true,
preventDone : true
}));
});
} else {
reqDef.push(fm.request({
data : setType({cmd : 'search', q : q, target : target, mimes : mime}),
notify : {type : 'search', cnt : 1, hideCnt : true},
cancel : true,
preventDone : true
}));
if (target !== '' && fm.api >= 2.1 && Object.keys(fm.leafRoots).length) {
jQuery.each(fm.leafRoots, function(hash, roots) {
phash = hash;
while(phash) {
if (target === phash) {
jQuery.each(roots, function() {
var f = fm.file(this);
f && f.volumeid && targetVolids.push(f.volumeid);
reqDef.push(fm.request({
data : setType({cmd : 'search', q : q, target : this, mimes : mime}),
notify : {type : 'search', cnt : 1, hideCnt : false},
cancel : true,
preventDone : true
}));
});
}
phash = (fm.file(phash) || {}).phash;
}
});
}
}
} else {
reqDef = [jQuery.Deferred().resolve({files: []})];
}
fm.searchStatus.mixed = (reqDef.length > 1)? targetVolids : false;
return jQuery.when.apply($, reqDef).done(function(data) {
var argLen = arguments.length,
i;
data.warning && fm.error(data.warning);
if (argLen > 1) {
data.files = (data.files || []);
for(i = 1; i < argLen; i++) {
arguments[i].warning && fm.error(arguments[i].warning);
if (arguments[i].files) {
data.files.push.apply(data.files, arguments[i].files);
}
}
}
// because "preventDone : true" so update files cache
data.files && data.files.length && fm.cache(data.files);
fm.lazy(function() {
fm.trigger('search', data);
}).then(function() {
// fire event with command name + 'done'
return fm.lazy(function() {
fm.trigger('searchdone');
});
}).then(function() {
// force update content
data.sync && fm.sync();
});
});
}
fm.getUI('toolbar').find('.'+fm.res('class', 'searchbtn')+' :text').trigger('focus');
return jQuery.Deferred().reject();
};
};