MWF.xAction = MWF.xAction || {}; MWF.require("MWF.xDesktop.Actions.RestActions", null, false); MWF.xAction.RestActions = MWF.Actions = { "actions": {}, "get": function(root){ if (this.actions[root]) return this.actions[root]; var actions = null; var url = o2.session.path+"/xAction/services/"+root+".json"; MWF.getJSON(url, function(json){actions = json;}.bind(this), false, false, false); if (!MWF.xAction.RestActions.Action[root] && actions.clazz) MWF.require("MWF.xAction.services."+actions.clazz, null, false); if (!MWF.xAction.RestActions.Action[root]) MWF.xAction.RestActions.Action[root] = new Class({Extends: MWF.xAction.RestActions.Action}); this.actions[root] = new MWF.xAction.RestActions.Action[root](root, actions); return this.actions[root]; }, "getHost": function(root){ var addressObj = layout.desktop.serviceAddressList[root]; var address = ""; if (addressObj){ address = layout.config.app_protocol+"//"+addressObj.host+(addressObj.port==80 ? "" : ":"+addressObj.port); }else{ var host = layout.desktop.centerServer.host || window.location.hostname; var port = layout.desktop.centerServer.port; address = layout.config.app_protocol+"//"+host+(port=="80" ? "" : ":"+port); } return address; }, "invokeAsync": function(actions, callback){ var len = actions.length; var parlen = arguments.length-2; var res = []; var jsons = new Array(len-1); var args = arguments; var cbs = (o2.typeOf(callback)==="function") ? callback : callback.success; var cbf = (o2.typeOf(callback)==="function") ? null : callback.failure; var cb = function(){ if (res.length===len) cbs.apply(this, jsons); }; var _doError = function(xhr, text, error){ if (xhr.status!=0){ var errorText = error; if (xhr){ var json = JSON.decode(xhr.responseText); if (json){ errorText = json.message.trim() || "request json error"; }else{ errorText = "request json error: "+xhr.responseText; } } MWF.xDesktop.notice("error", {x: "right", y:"top"}, errorText); } }; debugger; actions.each(function(action, i){ var par = (i++i) ? functionArguments[i] : null; failure = (n>++i) ? functionArguments[i] : null; parameters.each(function(p, x){ parameter[p] = (n>++i) ? functionArguments[i] : null; }); if (service.method && (service.method.toLowerCase()==="post" || service.method.toLowerCase()==="put")){ if ((!service.enctype) || service.enctype.toLowerCase()!=="formdata"){ data = (n>++i) ? functionArguments[i] : null; }else{ data = (n>++i) ? functionArguments[i] : null; file = (n>++i) ? functionArguments[i] : null; } } async = (n>++i) ? functionArguments[i] : null; urlEncode = (n>++i) ? functionArguments[i] : true; cache = (n>++i) ? functionArguments[i] : false; }else{ parameters.each(function(p, x){ parameter[p] = (n>x) ? functionArguments[x] : null; }); if (service.method && (service.method.toLowerCase()==="post" || service.method.toLowerCase()==="put")){ if ((!service.enctype) || service.enctype.toLowerCase()!=="formdata"){ data = (n>++i) ? functionArguments[i] : null; }else{ data = (n>++i) ? functionArguments[i] : null; file = (n>++i) ? functionArguments[i] : null; } } success = (n>++i) ? functionArguments[i] : null; failure = (n>++i) ? functionArguments[i] : null; async = (n>++i) ? functionArguments[i] : null; urlEncode = (n>++i) ? functionArguments[i] : true; cache = (n>++i) ? functionArguments[i] : false; } return this.action.invoke({"name": key, "async": async, "data": data, "file": file, "parameter": parameter, "success": success, "failure": failure, "urlEncode": urlEncode, "cache": cache}); }.bind(this); } });