src/pyams_skin/resources/js/myams-xmlrpc.js
changeset 433 f8b091800256
child 486 48b7cea0d903
equal deleted inserted replaced
432:ab61cf51390a 433:f8b091800256
       
     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);