jQuery.fn.actionButton = function (parameters, $popupButton, $popup) { $(this).each(function () { let $button = $(this); let on = 'hover'; if ($button.data('on')) { on = $button.data('on'); } if ($button.hasClass('inactive')) { on = 'hover'; } if (!$button.data('html') && !$button.hasClass('inactive')) { for (let idClass in parameters) { if ($button.hasClass(idClass)) { $button.rebind('click', function(e) { e.preventDefault(); e.stopPropagation(); let data = {}; for (let name in $button.data()) { if (name == 'modulePopup' || name == 'module_popup') { continue; } data[_.snakeCase(name)] = $button.data(name); } delete data.parameters; parameters[idClass].call($button, data); return false; }); break; } } } $button.delayedActivation(); for (let idClass in parameters) { if ($button.hasClass(idClass) && !$button.hasClass('inactive')) { $button.rebind('click', function (e) { e.preventDefault(); e.stopPropagation(); let data = {}; if ($popup) { let $form = $popup.find('form'); for (let name in $form.form('get values')) { data[name] = $form.form('get value', name); } } for (let name in $button.data()) { if (name == 'modulePopup' || name == 'module_popup') { continue; } data[_.snakeCase(name)] = $button.data(name); } delete data.parameters; parameters[idClass].call($button, data); if ($popupButton) { $popupButton.popup('hide'); } return false; }); break; } } $button.data('parameters', parameters); $button.popup({ on: on, content: Page.getPageSegment(), onShow: function () { if ($button.hasClass('inactive')) { return true; } let $popup = $(this); Core.UI.Bind.get($popup); $popup.find('.action.button').actionButton( $button.data('parameters'), { $popup: $popup } ); //if (Page.keys.control) { // $popup.find('.action.button').first().trigger('click'); // return false; //} return true; }, onVisible: function () { if ($button.hasClass('inactive')) { return true; } let $popup = $(this); let $form = $popup.find('form'); if ($form.isVisible()) { $form.rebind('submit', function (e) { e.preventDefault(); $popup.find('.action.button').first().trigger('click'); return false; }); } } }); }); };