/* Cached on Thu, 30 Jan 2025 22:27:49 */ (function( $ ) { $.contextMenu = function(config) { if (!config || typeof(config) != 'object') { throw ('Config missed!'); } var cM, _this = this, cMTargetE, itemByKey = {}; this.temp = {}; cM = construct(); function construct() { var list = $('<ul class="contextMenu">') .on('contextmenu', function() { return false; }); $(config.items).each(function(k, item) { $(list) .append(getItem(item)); }); return list; } function getItem(item) { var menuItem = $('<li>'); if (item.key) itemByKey[item.key] = menuItem; if (item == 'stripe') { $(menuItem) .addClass('stripe') } else { $(menuItem).text(item.label) if (item.select) $(menuItem) .mousedown(function(e) { if (! $(this).hasClass('disabled')) { _hideCm(); if (item.select(cMTargetE, _this) === false) _show(cMTargetE); } }) .addClass('click_me'); if (item.subItems) { var subMenu = $('<ul>'); $(item.subItems).each(function(k, itm) { $(subMenu) .append(getItem(itm)); }); $(menuItem).append('<span>»</span>'); $(menuItem).append(subMenu); } if (item.disabled) $(menuItem).addClass('disabled'); if (item.hidden) $(menuItem) .hide(); } return menuItem; } function findByKey(key) { return $.grep(config.items, function(item) {return item.key == key})[0]; } function _addItem(item, after) { if (!item) throw ('Item required'); if (after != -1) { after = (after && $(cM).children().length >= after) ? after : $(cM).children().length; } var menuItem = getItem(item); if (after != -1) $(cM) .children(':nth-child('+after+')') .after(menuItem); else $(cM).prepend(menuItem); } this.addItem = function(item, after) { after = after || false; _addItem(item, after); } function _disable(key) { $(itemByKey[key]) .addClass('disabled'); } this.disable = function(item) { _disable(item); } function _enable(key) { $(itemByKey[key]) .removeClass('disabled'); } this.enable = function(item) { _enable(item); } function _hideItem(key) { $(itemByKey[key]) .hide(); } this.hideItem = function(item) { _hideItem(item); } function _hideAll() { $(cM).children('li').hide(); } this.hideAll = function() { _hideAll(); } function _showItem(key) { $(itemByKey[key]) .show(); } this.showItem = function(item) { _showItem(item); } function _showAll() { $(cM).children('li').show(); } this.showAll = function() { _showAll(); } function _show(e) { cMTargetE = e; if (!$('body').find(cM).length) $(cM) .appendTo('body'); if (config.onOpen) config.onOpen(e, _this); $(cM) .position({ my: 'left top', of: e, collision: 'fit' }) } this.show = function(e) { _show(e); } function _hideCm() { $(cM).css('left', '-1000px'); } this.getWidget = function() { return cM; } } $.fn.contextMenu = function(menu) { if (!menu || !menu instanceof $.contextMenu) { console.error('$.contextMenu object is required'); return false; } return this.each(function() { $(this).on('contextmenu', function(e){ menu.show(e); return false; }) }) } $.contextMenu.hideAll = function(e) { var cM = $('.contextMenu:not([style*=1000])'); if (cM.length && !$(e.target).closest(cM).length) { e.stopPropagation(); //$(cM).remove(); $(cM).css('left','-1000px'); } } $.contextMenu.addBaseForLink = function(menu) { var base = [ 'stripe', { label: 'Открыть ссылку в новой вкладке', select: function(e) { window.open(e.target.href, '_blank'); } } ]; if (menu.length == undefined) menu = [menu]; for(var i in menu) for (var p in base) menu[i].addItem(base[p], -1); } $(document).click(function(e) { $.contextMenu.hideAll(e); }) $(window).on('contextmenu',function(e) { $.contextMenu.hideAll(e); }) $.contextMenuForm = function(formName, data, callback) { var form; $.ajax({ url: '/cp/etc/cMForm/' + formName + '.php', type: 'GET', data: { data: data }, async: false, success: function(r) { form = $(r); } }); if (callback) form.find('.cMFormSubmit,.cMFormCancel') .click(function(e) { callback(e); }) function _show(e) { $(form) .appendTo('body') .position({ my: 'left center', of: e, collision: 'fit' }) } this.show = function(e) { _show(e); } return this; } })(jQuery)