: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
* @class elFinder command "hide".
* folders/files to hide as personal setting.
elFinder.prototype.commands.hide = function() {
hideData, hideCnt, cMenuType, sOrigin;
this.syncTitleOnChange = true;
pattern : 'ctrl+shift+dot',
description : this.fm.i18n('toggleHidden')
hideData = fm.storage('hide') || {items: {}};
hideCnt = Object.keys(hideData.items).length;
this.title = fm.i18n(hideData.show? 'hideHidden' : 'showHidden');
self.update(void(0), self.title);
this.fm.bind('select contextmenucreate closecontextmenu', function(e, fm) {
var sel = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected();
if (e.type === 'select' && e.data) {
} else if (e.type === 'contextmenucreate') {
if (!sel.length || (((e.type !== 'contextmenucreate' && sOrigin !== 'navbar') || cMenuType === 'cwd') && sel[0] === fm.cwd().hash)) {
self.title = fm.i18n(hideData.show? 'hideHidden' : 'showHidden');
self.title = fm.i18n('cmdhide');
if (e.type !== 'closecontextmenu') {
self.update(cMenuType === 'cwd'? (hideCnt? 0 : -1) : void(0), self.title);
requestAnimationFrame(function() {
self.update(void(0), self.title);
this.getstate = function(sel) {
return (this.fm.cookieEnabled && cMenuType !== 'cwd' && (sel || this.fm.selected()).length) || hideCnt? 0 : -1;
this.exec = function(hashes, opts) {
fm.trigger('hide', {items: items, opts: opts});
items = o.targets? o.targets : (hashes || fm.selected()),
hideData = fm.storage('hide') || {};
if (!jQuery.isPlainObject(hideData)) {
if (!jQuery.isPlainObject(hideData.items)) {
if (opts._currentType === 'shortcut' || !items.length || (opts._currentType !== 'navbar' && sOrigin !=='navbar' && items[0] === fm.cwd().hash)) {
} else if (Object.keys(hideData.items).length) {
fm.storage('hide', o.reset? null : hideData);
self.title = fm.i18n('hideHidden');
self.update(o.reset? -1 : void(0), self.title);
jQuery.each(hideData.items, function(h) {
var f = fm.file(h, true);
if (f && (fm.searchStatus.state || !f.phash || fm.file(f.phash))) {
fm.updateCache({added: added});
items = Object.keys(hideData.items);
jQuery.each(items, function(i, h) {
if (!hideData.items[h]) {
nameCache[h] = f.i18 || f.name;
hideData.items[h] = nameCache[h]? nameCache[h] : h;
hideCnt = Object.keys(hideData.items).length;
files = this.files(items);
fm.storage('hide', hideData);
fm.remove({removed: items});
this.exec(void(0), {hide: true});
var nData = fm.storage('hide');
jQuery.each(items, function(i, h) {
hideCnt = Object.keys(nData.items).length;
fm.storage('hide', nData);
fm.trigger('hide', {items: items, opts: {}});
self.update(hideCnt? 0 : -1);
fm.updateCache({added: files});
return fm.exec('hide', void(0), {targets: items});
return dfrd.state() == 'rejected' ? dfrd : dfrd.resolve(res);