File: //home/retile.ru/public_html/admin/view/javascript/d_elfinder/ui/button.js
"use strict"
/**
* @class elFinder toolbar button widget.
* If command has variants - create menu
*
* @author Dmitry (dio) Levashov
**/
$.fn.elfinderbutton = function(cmd) {
return this.each(function() {
var c = 'class',
fm = cmd.fm,
disabled = fm.res(c, 'disabled'),
active = fm.res(c, 'active'),
hover = fm.res(c, 'hover'),
item = 'elfinder-button-menu-item',
selected = 'elfinder-button-menu-item-selected',
menu,
button = $(this).addClass('ui-state-default elfinder-button')
.attr('title', cmd.title)
.append('<span class="elfinder-button-icon elfinder-button-icon-'+cmd.name+'"/>')
.hover(function(e) { !button.is('.'+disabled) && button[e.type == 'mouseleave' ? 'removeClass' : 'addClass'](hover) /**button.toggleClass(hover);*/ })
.click(function(e) {
if (!button.is('.'+disabled)) {
if (menu && cmd.variants.length > 1) {
// close other menus
menu.is(':hidden') && cmd.fm.getUI().click();
e.stopPropagation();
menu.slideToggle(100);
} else {
cmd.exec();
}
}
}),
hideMenu = function() {
menu.hide();
};
// if command has variants create menu
if ($.isArray(cmd.variants)) {
button.addClass('elfinder-menubutton');
menu = $('<div class="ui-widget ui-widget-content elfinder-button-menu ui-corner-all"/>')
.hide()
.appendTo(button)
.zIndex(10+button.zIndex())
.delegate('.'+item, 'hover', function() { $(this).toggleClass(hover) })
.delegate('.'+item, 'click', function(e) {
e.preventDefault();
e.stopPropagation();
button.removeClass(hover);
cmd.exec(cmd.fm.selected(), $(this).data('value'));
});
cmd.fm.bind('disable select', hideMenu).getUI().click(hideMenu);
cmd.change(function() {
menu.html('');
$.each(cmd.variants, function(i, variant) {
menu.append($('<div class="'+item+'">'+variant[1]+'</div>').data('value', variant[0]).addClass(variant[0] == cmd.value ? selected : ''));
});
});
}
cmd.change(function() {
if (cmd.disabled()) {
button.removeClass(active+' '+hover).addClass(disabled);
} else {
button.removeClass(disabled);
button[cmd.active() ? 'addClass' : 'removeClass'](active);
}
})
.change();
});
}