diff -r 88ada40a3fa4 -r 2c3ba8d90123 src/ztfy/myams/resources/js/myams.js --- a/src/ztfy/myams/resources/js/myams.js Wed Oct 05 17:33:07 2016 +0200 +++ b/src/ztfy/myams/resources/js/myams.js Wed Oct 05 17:35:51 2016 +0200 @@ -1400,7 +1400,8 @@ function _submitAjaxForm(form, options) { var button, - button_data; + button_data, + button_target; var data = form.data(); var form_options = data.amsFormOptions; var form_data; @@ -1480,6 +1481,7 @@ button = $(form.data('ams-submit-button')); if (button && button.exists()) { button_data = button.data(); + button_target = button_data.amsFormSubmitTarget; } else { button_data = {}; } @@ -1509,7 +1511,7 @@ ams.executeFunctionByName(submit_options.initSubmitTarget, form); } else { if (data.amsFormInitSubmitTarget) { - target = $(buttonTarget || data.amsFormSubmitTarget || '#content'); + target = $(button_target || data.amsFormSubmitTarget || '#content'); ams.executeFunctionByName(data.amsFormInitSubmit || 'MyAMS.form.initSubmit', form, target); } else if (!data.amsFormHideSubmitFooter) { ams.executeFunctionByName(data.amsFormInitSubmit || 'MyAMS.form.initSubmitFooter', form); @@ -1522,11 +1524,12 @@ } // Check progress handler + var hasUpload; if (progress_handler) { form_data.progress_id = ams.generateUUID(); } else { // Check progress meter via Apache progress module - var hasUpload = typeof(options.uuid) !== 'undefined'; + hasUpload = typeof(options.uuid) !== 'undefined'; if (hasUpload) { if (url.indexOf('X-Progress-ID') < 0) { url += "?X-Progress-ID=" + options.uuid; @@ -1554,15 +1557,7 @@ if (target) { ams.executeFunctionByName(data.amsFormSubmitError || 'MyAMS.form.finalizeSubmitOnError', form, target); } - if (form.is(':visible')) { - var button = form.data('ams-submit-button'); - if (button) { - button.button('reset'); - } - ams.form.finalizeSubmitFooter.call(form); - } - form.data('submitted', false); - form.removeData('ams-submit-button'); + ams.form.resetAfterSubmit(form); }, iframe: hasUpload }; @@ -1595,11 +1590,7 @@ try { callback.call(form, result, status, request, form); } finally { - if (form.is(':visible') && button) { - button.button('reset'); - } - form.data('submitted', false); - form.removeData('ams-submit-button'); + ams.form.resetAfterSubmit(form); ams.form.resetChanged(form); } } @@ -1611,15 +1602,7 @@ if (target) { ams.executeFunctionByName(data.amsFormSubmitError || 'MyAMS.form.finalizeSubmitOnError', form, target); } - if (form.is(':visible')) { - var button = form.data('ams-submit-button'); - if (button) { - button.button('reset'); - } - ams.form.finalizeSubmitFooter.call(form); - } - form.data('submitted', false); - form.removeData('ams-submit-button'); + ams.form.resetAfterSubmit(form); }, success: function(result, status, request, form) { var callback; @@ -1633,11 +1616,7 @@ try { callback.call(form, result, status, request, form); } finally { - if (form.is(':visible') && button) { - button.button('reset'); - } - form.data('submitted', false); - form.removeData('ams-submit-button'); + ams.form.resetAfterSubmit(form); ams.form.resetChanged(form); } }, @@ -1657,17 +1636,12 @@ // If external download target is specified, reset form submit button and footer if (download_target) { var modal = $(form).parents('.modal-dialog'); - var keep_modal = modal.exists() && button && button.data('ams-keep-modal'); - if (keep_modal !== true) { + var keep_modal = modal.exists() && button.exists() && button.data('ams-keep-modal'); + if (modal.exists() && (keep_modal !== true)) { ams.dialog.close(form); } else { setTimeout(function() { - ams.form.finalizeSubmitFooter.call(form); - if (button) { - button.button('reset'); - } - form.data('submitted', false); - form.removeData('ams-submit-button'); + ams.form.resetAfterSubmit(form, button); ams.form.resetChanged(form); }, button.data('ams-form-reset-timeout') || 2000); } @@ -1715,6 +1689,23 @@ }, /** + * Reset form status after submit + * + * @param form: the submitted form + */ + resetAfterSubmit: function(form) { + if (form.is(':visible')) { + var button = form.data('ams-submit-button'); + if (button) { + button.button('reset'); + } + ams.form.finalizeSubmitFooter.call(form); + } + form.data('submitted', false); + form.removeData('ams-submit-button'); + }, + + /** * Finalize AJAX submit call * * @param target: the form submit container target @@ -1818,6 +1809,7 @@ case 'text': /* falls through */ default: + ams.form.resetChanged(form); if (button && (button.data('ams-keep-modal') !== true)) { ams.dialog.close(form); } @@ -2109,6 +2101,9 @@ .on('shown', ams.dialog.shown) .on('hidden', ams.dialog.hidden); ams.initContent(content); + if (source_data.amsLogEvent !== false) { + ams.stats.logPageview(url); + } } } }); @@ -4455,6 +4450,7 @@ if (options && options.afterLoadCallback) { ams.executeFunctionByName(options.afterLoadCallback, this); } + ams.stats.logPageview(); } }, error: function(request, options, error) { @@ -4505,6 +4501,17 @@ MyAMS.stats = { /** + * Log current or specified page load + */ + logPageview: function(url) { + if (typeof(globals._gaq) === 'undefined') { + return; + } + var location = globals.window.location; + globals._gaq.push(['_trackPageview', url || location.pathname + location.hash]); + }, + + /** * Send event to Google Analytics platform * * @param category @@ -4782,7 +4789,11 @@ }); $(document).on('click', 'a[target="_blank"]', function(e) { e.preventDefault(); - window.open($(e.currentTarget).attr('href')); + var target = $(e.currentTarget); + window.open(target.attr('href')); + ams.stats.logEvent(target.data('ams-stats-category') || 'Navigation', + target.data('ams-stats-action') || 'External', + target.data('ams-stats-label') || target.attr('href')); }); $(document).on('click', 'a[target="_top"]', function(e) { e.preventDefault();