|
1 /** |
|
2 * MyAMS XML-RPC features |
|
3 */ |
|
4 (function($, globals) { |
|
5 |
|
6 var MyAMS = globals.MyAMS, |
|
7 ams = MyAMS; |
|
8 |
|
9 MyAMS.xmlrpc = { |
|
10 |
|
11 /** |
|
12 * Get address relative to current page |
|
13 */ |
|
14 getAddr: function(addr) { |
|
15 var href = addr || $('HTML HEAD BASE').attr('href') || window.location.href; |
|
16 var target = href.replace(/\+\+skin\+\+\w+\//, ''); |
|
17 return target.substr(0, target.lastIndexOf("/") + 1); |
|
18 }, |
|
19 |
|
20 /** |
|
21 * Execute given XML-RPC post on given method |
|
22 * |
|
23 * Parameters: |
|
24 * - @url: base method URL |
|
25 * - @method: name of JSON-RPC procedure to call |
|
26 * - @options: additional JSON-RPC procedure parameters |
|
27 * - @callback: name of a callback which will be called on server response |
|
28 */ |
|
29 post: function(url, method, data, options, callback) { |
|
30 ams.ajax.check($.xmlrpc, |
|
31 ams.baseURL + 'ext/jquery-xmlrpc' + ams.devext + '.js', |
|
32 function() { |
|
33 if (typeof(options) === 'function') { |
|
34 callback = options; |
|
35 options = {}; |
|
36 } |
|
37 else if (!options) { |
|
38 options = {}; |
|
39 } |
|
40 if (typeof(callback) === 'undefined') { |
|
41 callback = options.callback; |
|
42 } |
|
43 if (typeof(callback) === 'string') { |
|
44 callback = ams.getFunctionByName(callback); |
|
45 } |
|
46 delete options.callback; |
|
47 |
|
48 var result; |
|
49 var defaults = { |
|
50 url: ams.xmlrpc.getAddr(url), |
|
51 methodName: method, |
|
52 params: data, |
|
53 success: callback || function(response /*, status, xhr*/) { |
|
54 result = response; |
|
55 }, |
|
56 error: ams.error.show |
|
57 }; |
|
58 var settings = $.extend({}, defaults, options); |
|
59 $.xmlrpc(settings); |
|
60 return result; |
|
61 }); |
|
62 } |
|
63 }; |
|
64 |
|
65 })(jQuery, this); |