diff -r de3ef58c6be8 -r 644d0f6f6503 src/pyams_skin/resources/js/myams-form.js --- a/src/pyams_skin/resources/js/myams-form.js Wed Oct 16 19:34:20 2019 +0200 +++ b/src/pyams_skin/resources/js/myams-form.js Fri Nov 08 10:51:09 2019 +0100 @@ -330,14 +330,22 @@ data: formData, dataType: data.amsFormDatatype, beforeSerialize: function(/*form, options*/) { + form.trigger('myams.form.before-serialize'); if (typeof (globals.tinyMCE) !== 'undefined') { globals.tinyMCE.triggerSave(); } }, beforeSubmit: function(data, form /*, options*/) { + form.trigger('myams.form.before-submit', [data]); form.data('submitted', true); + if (form.data('ams-form-reset-before-submit')) { + setTimeout(function() { + ams.form.resetAfterSubmit(form); + }, 250); + } }, error: function(request, status, error, form) { + form.trigger('myams.form.submit-error', [request, status, error]); if (target) { ams.executeFunctionByName(data.amsFormSubmitError || 'MyAMS.form.finalizeSubmitOnError', form, target); } @@ -359,6 +367,7 @@ iframe: true, iframeTarget: iframe, success: function(result, status, request, form) { + form.trigger('myams.form.after-submit', [result, status, request]); var modal = $(form).parents('.modal-dialog'); if (modal.exists()) { ams.dialog && ams.dialog.close(form); @@ -389,8 +398,9 @@ ams.form.resetAfterSubmit(form); }, success: function(result, status, request, form) { - var callback; - var button = form.data('ams-submit-button'); + form.trigger('myams.form.after-submit', [result, status, request]); + var callback, + button = form.data('ams-submit-button'); if (button) { callback = button.data('ams-form-submit-callback'); } @@ -480,15 +490,18 @@ * @param form: the submitted form */ resetAfterSubmit: function(form) { - if (form.is(':visible')) { - var button = form.data('ams-submit-button'); - if (button) { - button.button('reset'); + if (form.data('submitted')) { + if (form.is(':visible')) { + var button = form.data('ams-submit-button'); + if (button) { + button.button('reset'); + } + ams.form.finalizeSubmitFooter.call(form); } - ams.form.finalizeSubmitFooter.call(form); + form.data('submitted', false); + form.removeData('ams-submit-button'); + form.trigger('myams.form.after-reset'); } - form.data('submitted', false); - form.removeData('ams-submit-button'); }, /**