Как обнаружить множественный выбор в elFinder

Я добавил новую кнопку панели инструментов и новый пункт контекстного меню в elFinder.

Работает хорошо, но этот элемент должен быть включен, только если выбран один обычный файл. Поэтому он должен быть затемнен, когда не выбран ни один файл, и должен быть затемнен, когда выбрано несколько файлов или если выбран каталог.

Я узнал, что в elFinder.prototype.commands.mycmd я должен установить возвращаемое значение this.getstate на:

  • 0 если элемент панели инструментов/контекстного меню должен быть включен и
  • -1 если его нужно отключить

Итак, теперь есть это:

el

Finder.prototype.commands.mycmd= function() {

    var self  = this,
        fm    = self.fm;

    self.disableOnSearch = true;

    self.title = 'mycmd';

    self.getstate = function() {
            // need help here to add the "directory is selected check"
        return fm.selected().length == 1 ? 0 : -1;
    }

    self.exec = function() {
        alert("hello");
    }
}

К сожалению, я знаю только Perl, поэтому мне немного сложно копаться во всем javascript-коде elFinder, чтобы понять, как справиться с условием.

Знаешь кого-нибудь elFinder достаточно глубоко, чтобы помочь мне с моим состоянием?


person jm666    schedule 27.11.2013    source источник


Ответы (1)


Просто найдите решение в download.js elFinder.

Это работает - по крайней мере, на данный момент .. ;)

elFinder.prototype.commands.mycmd= function() {

    var self  = this,
        fm    = self.fm;

    self.disableOnSearch = true;
    filter = function(hashes) {
        return $.map(self.files(hashes), function(f) { return f.mime == 'directory' ? null : f });
    };

    self.title = 'mycmd';

    self.getstate = function() {
        var sel = self.fm.selected(),
        cnt = sel.length;
        return  !self._disabled && cnt == 1 && cnt == filter(sel).length ? 0 : -1;
    }

    self.exec = function() {
        alert("hello");
    }
}
person jm666    schedule 27.11.2013