src/pyams_skin/resources/js/myams.js
changeset 353 03ff45898cdf
parent 351 5724a7c7a217
child 355 d8f16ba6d9b1
equal deleted inserted replaced
352:2f2968c04355 353:03ff45898cdf
    35 			return false;
    35 			return false;
    36 		}
    36 		}
    37 		return (this.substr(slen-dlen) === str);
    37 		return (this.substr(slen-dlen) === str);
    38 	};
    38 	};
    39 
    39 
       
    40 	String.prototype.unserialize = function(str) {
       
    41 		var str = decodeURIComponent(this);
       
    42 		var chunks = str.split('&'),
       
    43 			obj = {};
       
    44 		for (var c = 0; c < chunks.length; c++) {
       
    45 			var split = chunks[c].split('=', 2);
       
    46 			obj[split[0]] = split[1];
       
    47 		}
       
    48 		return obj;
       
    49 	};
    40 
    50 
    41 	/**
    51 	/**
    42 	 * Array prototype extensions
    52 	 * Array prototype extensions
    43 	 */
    53 	 */
    44 	if (!Array.prototype.indexOf) {
    54 	if (!Array.prototype.indexOf) {
   967 			if (event.loaded >= event.total) {
   977 			if (event.loaded >= event.total) {
   968 				return;
   978 				return;
   969 			}
   979 			}
   970 			if (console) {
   980 			if (console) {
   971 				console.log && console.log(parseInt((event.loaded / event.total * 100), 10) + "%");
   981 				console.log && console.log(parseInt((event.loaded / event.total * 100), 10) + "%");
       
   982 			}
       
   983 		},
       
   984 
       
   985 		/**
       
   986 		 * Post data to given URL and handle result as JSON
       
   987 		 */
       
   988 		getJSON: function() {
       
   989 			return function(options) {
       
   990 				var url = options.url;
       
   991 				delete options.url;
       
   992 				ams.ajax.post(url, options, function(result, status, request) {
       
   993 					ams.ajax.handleJSON(result);
       
   994 				});
   972 			}
   995 			}
   973 		},
   996 		},
   974 
   997 
   975 		/**
   998 		/**
   976 		 * Post data to given URL
   999 		 * Post data to given URL
  6004 				if (!href || href.startsWith('javascript') || link.attr('target') || (link.data('ams-context-menu') === true)) {
  6027 				if (!href || href.startsWith('javascript') || link.attr('target') || (link.data('ams-context-menu') === true)) {
  6005 					return;
  6028 					return;
  6006 				}
  6029 				}
  6007 				e.preventDefault();
  6030 				e.preventDefault();
  6008 				e.stopPropagation();
  6031 				e.stopPropagation();
  6009 				var hrefGetter = ams.getFunctionByName(href);
  6032 
       
  6033 				var url,
       
  6034 					target,
       
  6035 					params;
       
  6036 				if (href.indexOf('?') >= 0) {
       
  6037 					url = href.split('?');
       
  6038 					target = url[0];
       
  6039 					params = url[1].unserialize();
       
  6040 				} else {
       
  6041 					target = href;
       
  6042 					params = undefined;
       
  6043 				}
       
  6044 				var hrefGetter = ams.getFunctionByName(target);
  6010 				if (typeof(hrefGetter) === 'function') {
  6045 				if (typeof(hrefGetter) === 'function') {
  6011 					href = hrefGetter.call(link);
  6046 					href = hrefGetter.call(link, params);
  6012 				}
  6047 				}
  6013 				if (typeof(href) === 'function') {
  6048 				if (typeof(href) === 'function') {
  6014 					// Javascript function call
  6049 					// Javascript function call
  6015 					href.call(link);
  6050 					href.call(link, params);
  6016 				} else {
  6051 				} else {
  6017 					// Standard AJAX or browser URL call
  6052 					// Standard AJAX or browser URL call
  6018 					// Convert %23 chars to #
  6053 					// Convert %23 chars to #
  6019 					href = href.replace(/\%23/, '#');
  6054 					href = href.replace(/\%23/, '#');
  6020 					if (e.ctrlKey) {
  6055 					if (e.ctrlKey) {
  6252 			var link = $(e.target);
  6287 			var link = $(e.target);
  6253 			if (link.exists() && (link.get(0).tagName !== 'A')) {
  6288 			if (link.exists() && (link.get(0).tagName !== 'A')) {
  6254 				link = $('a[href]', link);
  6289 				link = $('a[href]', link);
  6255 			}
  6290 			}
  6256 			var data = link.data();
  6291 			var data = link.data();
  6257 			if (data.amsUrl) {
  6292 			if (data && data.amsUrl) {
  6258 				if (data.amsTabLoaded) {
  6293 				if (data.amsTabLoaded) {
  6259 					return;
  6294 					return;
  6260 				}
  6295 				}
  6261 				link.append('<i class="fa fa-spin fa-cog margin-left-5"></i>');
  6296 				link.append('<i class="fa fa-spin fa-cog margin-left-5"></i>');
  6262 				ams.skin.loadURL(data.amsUrl, link.attr('href'), {
  6297 				ams.skin.loadURL(data.amsUrl, link.attr('href'), {