"use strict"; //requires SubmitOnChange and Linker $(function () { if (!ModernJs.isDefined(ModernJs.SubmitConfirm)) { ModernJs.SubmitConfirm = {}; ModernJs.LinkConfirm = ModernJs.SubmitConfirm; ModernJs.SubmitConfirm.confirm = function (node, dialog, form) { form.submit(); }; ModernJs.SubmitConfirm.cancel = function (node, dialog, form) {}; ModernJs.SubmitConfirm.buttons = { confirm: "Tak", cancel: "Nie" }; ModernJs.SubmitConfirm.actions = { confirm: function confirm(node, dialog, form) { var confirm = node.data('SubmitConfirmConfirm') || ModernJs.SubmitConfirm.confirm; confirm(node, dialog, form); dialog.dialog("close"); }, cancel: function cancel(node, dialog, form) { var cancel = node.data('SubmitConfirmCancel') || ModernJs.SubmitConfirm.cancel; cancel(node, dialog, form); dialog.dialog("close"); } }; ModernJs.SubmitConfirm.defConfig = { resizable: false, height: "auto", width: 600, modal: true }; ModernJs.SubmitConfirm.dialog = function (linkerAction, dialog) { var target = $(this); var form = null; if (target.is("[link-confirm]") || this == ModernJs.SubmitConfirm) { form = { submit: linkerAction.bind(this) }; } else { form = target.closest("form"); } if (!dialog) { var dialogQuery = target.attr("submit-confirm") || target.attr("link-confirm"); dialog = target.data('SubmitConfirmDialog') || $(dialogQuery); } if (dialog.is("[save-html]")) { var _html = dialog.attr("save-html"); if (!_html) _html = dialog.html(); dialog.html(_html); dialog.attr("save-html", _html); } var html = dialog.html(); var regExp = /!(\w+?)!/g; if (this != ModernJs.SubmitConfirm) { dialog.html(html.replace(regExp, function (match, templateBody) { var attrName = "token-".concat(templateBody); if (target.is("[".concat(attrName, "]"))) { return target.attr(attrName); } return "!".concat(templateBody, "!"); })); } var config = ModernJs.copy(ModernJs.SubmitConfirm.defConfig); var buttons = ModernJs.copy(ModernJs.SubmitConfirm.buttons); var configOwn = target.data('SubmitConfirmConfig') || {}; var buttonsOwn = target.data('SubmitConfirmButtons') || {}; for (var option in configOwn) { config[option] = configOwn[option]; } for (var button in buttonsOwn) { buttons[button] = buttonsOwn[button]; } config.buttons = {}; config.autoOpen = true; for (var _button in buttons) { var text = buttons[_button]; config.buttons[text] = ModernJs.SubmitConfirm.actions[_button].bind(this, target, dialog, form); } dialog.dialog(config); }; ModernJs.SubmitConfirm.loadMain = function () { $('body').on('click', '[submit-confirm]:not([submit-change])', ModernJs.SubmitConfirm.dialog); }; ModernJs.SubmitConfirm.config = function (node) { var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; if (arguments.length < 2) { config = node; for (var arg in config) { if (arg == 'confirm') { ModernJs.SubmitConfirm.confirm = config[arg]; } else if (arg == 'cancel') { ModernJs.SubmitConfirm.cancel = config[arg]; } else if (arg == 'buttons') { if (ModernJs.isDefined(config[arg].confirm)) { ModernJs.SubmitConfirm.buttons.confirm = config[arg].confirm; } if (ModernJs.isDefined(config[arg].cancel)) { ModernJs.SubmitConfirm.buttons.cancel = config[arg].cancel; } } else { ModernJs.SubmitConfirm.config[arg] = config[arg]; } } } else { for (var arg in config) { if (arg == 'confirm') { node.data('SubmitConfirmConfirm', config[arg]); } else if (arg == 'cancel') { node.data('SubmitConfirmCancel', config[arg]); } else if (arg == 'buttons') { if (ModernJs.isDefined(config[arg].confirm)) { var buttons = node.data('SubmitConfirmButtons') || {}; buttons.confirm = config[arg].confirm; node.data('SubmitConfirmButtons', buttons); } if (ModernJs.isDefined(config[arg].cancel)) { var _buttons = node.data('SubmitConfirmButtons') || {}; _buttons.cancel = config[arg].cancel; node.data('SubmitConfirmButtons', _buttons); } } else if (arg == 'dialog') { node.data('SubmitConfirmDialog', config[arg]); } else { var _config = node.data('SubmitConfirmConfig') || {}; _config[arg] = _config[arg]; node.data('SubmitConfirmConfig', _config[arg]); } } } }; $(ModernJs.SubmitConfirm.loadMain); } });