src/ztfy/myams/resources/js/myams.js
changeset 193 68dd5a05c059
parent 192 d58af89193e3
child 196 bbeb090d73e9
--- a/src/ztfy/myams/resources/js/myams.js	Fri Dec 09 12:55:38 2016 +0100
+++ b/src/ztfy/myams/resources/js/myams.js	Fri Mar 10 13:19:03 2017 +0100
@@ -548,7 +548,7 @@
 		if (!element.exists()) {
 			return false;
 		}
-		return globals.document.contains(element[0]);
+		return globals.document.body.contains(element[0]);
 	};
 
 	/**
@@ -759,12 +759,30 @@
 				async: typeof(callback) === 'function'
 			};
 			var settings = $.extend({}, defaults, options);
-			if (checker === undefined) {
-				ams.getScript(source, function() {
-					if (typeof(callback) === 'function') {
-						callback(true, options);
+			if (checker instanceof Array) {
+				var deferred = [];
+				for (var index = 0; index < checker.length; index++) {
+					if (checker[index] === undefined) {
+						deferred.push(ams.getScript(source[index], {async: true}));
 					}
-				}, settings);
+				}
+				if (deferred.length > 0) {
+					$.when.apply($, deferred).then(function () {
+						if (typeof(callback) === 'function') {
+							callback(true, options);
+						}
+					});
+				} else if (typeof(callback) === 'function') {
+					callback(false, options);
+				}
+			} else if (checker === undefined) {
+				if (typeof(source) === 'string') {
+					ams.getScript(source, function () {
+						if (typeof(callback) === 'function') {
+							callback(true, options);
+						}
+					}, settings);
+				}
 			} else {
 				if (typeof(callback) === 'function') {
 					callback(false, options);
@@ -2555,6 +2573,9 @@
 			}
 
 			for (name in plugins) {
+				if (!plugins.hasOwnProperty(name)) {
+					continue;
+				}
 				plugin = plugins[name];
 				if (ams.plugins.enabled[name] === undefined) {
 					ams.getScript(plugin.src, _loadPlugin, {
@@ -2611,7 +2632,11 @@
 				if (data) {
 					for (var name in data) {
 						if (data.hasOwnProperty(name)) {
-							dataElement.attr('data-' + name, data[name]);
+							var elementData = data[name];
+							if (typeof(elementData) !== 'string') {
+								elementData = JSON.stringify(elementData);
+							}
+							dataElement.attr('data-' + name, elementData);
 						}
 					}
 				}
@@ -4126,6 +4151,8 @@
 								} else {
 									tr.remove();
 								}
+							} else {
+								MyAMS.ajax.handleJSON(result);
 							}
 						});
 					}
@@ -4412,12 +4439,13 @@
 				if (menu.exists()) {
 					updateActiveMenus(menu);
 				}
-				ams.skin.loadURL(url, container);
-				var prefix = $('html head title').data('ams-title-prefix');
-				document.title = (prefix ? prefix + ' > ' : '') +
-								 ($('[data-ams-page-title]:first', container).data('ams-page-title') ||
-								  menu.attr('title') ||
-								  document.title);
+				ams.skin.loadURL(url, container, {afterLoadCallback: function() {
+					var prefix = $('html head title').data('ams-title-prefix');
+					document.title = (prefix ? prefix + ' > ' : '') +
+						($('[data-ams-page-title]:first', container).data('ams-page-title') ||
+						menu.attr('title') ||
+						document.title);
+				}});
 			} else {
 				var activeUrl = $('[data-ams-active-menu]').data('ams-active-menu');
 				if (activeUrl) {
@@ -4484,6 +4512,8 @@
 			if (typeof(options) === 'function') {
 				callback = options;
 				options = {};
+			} else if (options === undefined) {
+				options = {};
 			}
 			container = $(container);
 			var defaults = {
@@ -4493,7 +4523,7 @@
 				cache: false,
 				beforeSend: function() {
 					ams.skin.cleanContainer(container);
-					container.html('<h1 class="loading"><i class="fa fa-cog fa-spin"></i> Loading... </h1>');
+					container.html('<h1 class="loading"><i class="fa fa-cog fa-spin"></i> ' + ams.i18n.LOADING + ' </h1>');
 					if (container[0] === $('#content')[0]) {
 						ams.skin._drawBreadCrumb();
 						var prefix = $('html head title').data('ams-title-prefix');
@@ -4546,7 +4576,7 @@
 								   ams.i18n.ERROR + error + '</h3>' +
 								   request.responseText);
 				},
-				async: false
+				async: options.async === undefined ? true : options.async
 			};
 			var settings = $.extend({}, defaults, options);
 			$.ajax(settings);
@@ -5031,10 +5061,11 @@
 				}
 				try {
 					link.append('<i class="fa fa-spin fa-cog margin-left-5"></i>');
-					ams.skin.loadURL(data.amsUrl, link.attr('href'));
-					if (data.amsTabLoadOnce) {
-						link.data('ams-tab-loaded', true);
-					}
+					ams.skin.loadURL(data.amsUrl, link.attr('href'), {afterLoadCallback: function() {
+						if (data.amsTabLoadOnce) {
+							link.data('ams-tab-loaded', true);
+						}
+					}});
 				}
 				finally {
 					$('i', link).remove();
@@ -5114,6 +5145,7 @@
 		WARNING: "!! WARNING !!",
 		ERROR: "ERROR: ",
 
+		LOADING: "Loading...",
 		WAIT: "Please wait!",
 		FORM_SUBMITTED: "This form was already submitted...",
 		NO_SERVER_RESPONSE: "No response from server!",