src/ztfy/myams/resources/js/myams.js
changeset 178 2c3ba8d90123
parent 174 8d81f90f1d08
child 180 172ddcb92995
--- 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();