equal
deleted
inserted
replaced
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'), { |