Browse Source

abpAjaxForm enhancements

pull/279/head
Halil İbrahim Kalkan 9 years ago
parent
commit
bc96419540
  1. 29
      src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore.mvc.ui.theme.shared/bootstrap/dom-event-handlers.js
  2. 17
      src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore.mvc.ui.theme.shared/bootstrap/modal-manager.js
  3. 30
      src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore.mvc.ui.theme.shared/jquery-form/jquery-form-extensions.js

29
src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore.mvc.ui.theme.shared/bootstrap/dom-event-handlers.js

@ -1,5 +1,21 @@
(function($) { (function ($) {
function enableAjaxForm($forms, validate) {
if ($forms.length) {
$forms.each(function () {
var $form = $(this);
if (validate === true) {
$.validator.unobtrusive.parse($form);
}
if ($form.attr('data-ajaxForm') === 'true') {
$form.abpAjaxForm();
}
});
}
}
abp.dom.onNodeAdded(function (args) { abp.dom.onNodeAdded(function (args) {
args.$el.findWithSelf('[data-toggle="tooltip"]').tooltip({ args.$el.findWithSelf('[data-toggle="tooltip"]').tooltip({
container: 'body' container: 'body'
@ -9,12 +25,7 @@
container: 'body' container: 'body'
}); });
var $forms = args.$el.findWithSelf('form'); enableAjaxForm(args.$el.findWithSelf('form'), true);
if ($forms.length) {
$forms.each(function() {
$.validator.unobtrusive.parse($(this));
});
}
}); });
abp.dom.onNodeRemoved(function (args) { abp.dom.onNodeRemoved(function (args) {
@ -31,6 +42,8 @@
$('[data-toggle="popover"]').popover({ $('[data-toggle="popover"]').popover({
container: 'body' container: 'body'
}); });
enableAjaxForm($('form'));
}); });
})(jQuery); })(jQuery);

17
src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore.mvc.ui.theme.shared/bootstrap/modal-manager.js

@ -66,18 +66,19 @@ $.validator.defaults.ignore = ''; //TODO: Would be better if we can apply only f
_$modal = _$modalContainer.find('.modal'); _$modal = _$modalContainer.find('.modal');
_$form = _$modalContainer.find('form'); _$form = _$modalContainer.find('form');
if (_$form.length) { if (_$form.length) {
if (_$form.attr('data-ajaxForm') !== 'false') { if (_$form.attr('data-ajaxForm') === undefined || _$form.attr('data-ajaxForm') === false) {
_$form.abpAjaxForm({ _$form.abpAjaxForm();
success: function() {
_publicApi.setResult.apply(_publicApi, arguments);
_$modal.modal('hide');
}
});
} }
_$form.on('abp-ajax-success',
function() {
_publicApi.setResult.apply(_publicApi, arguments);
_$modal.modal('hide');
});
} else { } else {
_$form = null; _$form = null;
} }
_$modal.modal({ _$modal.modal({
backdrop: 'static' backdrop: 'static'
}); });

30
src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore.mvc.ui.theme.shared/jquery-form/jquery-form-extensions.js

@ -4,12 +4,13 @@
} }
$.fn.abpAjaxForm = function (userOptions) { $.fn.abpAjaxForm = function (userOptions) {
var $form = $(this);
userOptions = userOptions || {}; userOptions = userOptions || {};
var options = $.extend({}, $.fn.abpAjaxForm.defaults, userOptions); var options = $.extend({}, $.fn.abpAjaxForm.defaults, userOptions);
options.beforeSubmit = function (arr, $form) { options.beforeSubmit = function (arr, $form) {
if (userOptions.beforeSubmit && userOptions.beforeSubmit.apply(this, arguments) === false) { if ((userOptions.beforeSubmit && userOptions.beforeSubmit.apply(this, arguments)) === false) {
return false; return false;
} }
@ -19,10 +20,26 @@
$form.find("button[type='submit']").buttonBusy(true); $form.find("button[type='submit']").buttonBusy(true);
//TODO: Disable other buttons..? //TODO: Disable other buttons..?
return true; return true;
}; };
options.success = function (responseText, statusText, xhr, $form) {
userOptions.success && userOptions.success.apply(this, arguments);
$form.trigger('abp-ajax-success',
{
responseText: responseText,
statusText: statusText,
xhr: xhr,
$form: $form
});
};
options.error = function (jqXhr) { options.error = function (jqXhr) {
if ((userOptions.error && userOptions.error.apply(this, arguments)) === false) {
return;
}
if (jqXhr.getResponseHeader('_AbpErrorFormat') === 'true') { if (jqXhr.getResponseHeader('_AbpErrorFormat') === 'true') {
abp.ajax.logError(jqXhr.responseJSON.error); abp.ajax.logError(jqXhr.responseJSON.error);
var messagePromise = abp.ajax.showError(jqXhr.responseJSON.error); var messagePromise = abp.ajax.showError(jqXhr.responseJSON.error);
@ -34,18 +51,23 @@
} }
}; };
//TODO: Error?
options.complete = function (jqXhr, status, $form) { options.complete = function (jqXhr, status, $form) {
if ($.contains(document, $form[0])) { if ($.contains(document, $form[0])) {
$form.find("button[type='submit']").buttonBusy(false); $form.find("button[type='submit']").buttonBusy(false);
//TODO: Re-enable other buttons..? //TODO: Re-enable other buttons..?
} }
$form.trigger('abp-ajax-complete',
{
status: status,
jqXhr: jqXhr,
$form: $form
});
userOptions.complete && userOptions.complete.apply(this, arguments); userOptions.complete && userOptions.complete.apply(this, arguments);
}; };
return this.ajaxForm(options); return $form.ajaxForm(options);
}; };
$.fn.abpAjaxForm.defaults = { $.fn.abpAjaxForm.defaults = {

Loading…
Cancel
Save