base.js 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. layout = window.layout || {};
  2. layout.desktop = layout;
  3. var locate = window.location;
  4. layout.protocol = locate.protocol;
  5. layout.session = layout.session || {};
  6. layout.debugger = (locate.href.toString().indexOf("debugger")!==-1);
  7. o2.xApplication = o2.xApplication || {};
  8. o2.xDesktop = o2.xDesktop || {};
  9. o2.xDesktop.requireApp = function(module, clazz, callback, async){
  10. o2.requireApp(module, clazz, callback, async);
  11. };
  12. o2.addReady(function(){
  13. //兼容方法
  14. Element.implement({
  15. "makeLnk": function(options){}
  16. });
  17. //异步载入必要模块
  18. layout.config = null;
  19. var modules = [ "MWF.xDesktop.Common", "MWF.xAction.RestActions" ];
  20. MWF.require(modules, function(){
  21. if (layout.serviceAddressList) _getDistribute(function(){ _load(); });
  22. });
  23. o2.getJSON("res/config/config.json", function(config){
  24. layout.config = config;
  25. if (MWF.xDesktop.getServiceAddress) _getDistribute(function(){ _load(); });
  26. });
  27. var _getDistribute = function(callback){
  28. if (layout.config.app_protocol==="auto"){
  29. layout.config.app_protocol = window.location.protocol;
  30. }
  31. MWF.xDesktop.getServiceAddress(layout.config, function(service, center){
  32. layout.serviceAddressList = service;
  33. layout.centerServer = center;
  34. if (callback) callback();
  35. }.bind(this));
  36. };
  37. var _load = function(){
  38. //先判断用户是否登录
  39. MWF.Actions.get("x_organization_assemble_authentication").getAuthentication(function(json){
  40. //用户已经登录
  41. layout.user = json.data;
  42. layout.session = {};
  43. layout.session.user = json.data;
  44. (function(layout){
  45. var _loadResource = function(callback){
  46. var isLoadedA = false;
  47. var isLoadedB = false
  48. //var isLoadedC = false;
  49. var lp = o2.session.path+"/lp/"+o2.language+".js";
  50. var modules = [
  51. "o2.xDesktop.Dialog",
  52. "MWF.xDesktop.UserData",
  53. "MWF.xDesktop.Access",
  54. "MWF.widget.UUID",
  55. "MWF.xDesktop.Menu",
  56. "MWF.xDesktop.shortcut",
  57. "MWF.widget.PinYin",
  58. "MWF.xDesktop.Access",
  59. "MWF.xDesktop.MessageMobile"
  60. ];
  61. //MWF.xDesktop.requireApp("Common", "", null, false);
  62. var _check = function(){ if (isLoadedA && isLoadedB) if (callback) callback(); };
  63. o2.load(["../o2_lib/mootools/plugin/mBox.min.js",lp], function(){isLoadedA = true; _check();});
  64. o2.require("MWF.widget.Common", function(){
  65. o2.require(modules, function(){
  66. o2.requireApp("Common", "", function(){isLoadedB = true; _check();})
  67. });
  68. });
  69. };
  70. var _loadContent =function(){
  71. _loadResource(function(){
  72. for (var i=0; i<layout.readys.length; i++){
  73. layout.readys[i].apply(window);
  74. }
  75. });
  76. };
  77. _loadContent();
  78. })(layout);
  79. }, function(){
  80. //用户未经登录
  81. //打开登录页面
  82. var _loadResource = function(callback){
  83. var isLoadedA = false;
  84. var isLoadedB = false
  85. //var isLoadedC = false;
  86. var lp = o2.session.path+"/lp/"+o2.language+".js";
  87. var modules = [
  88. "o2.xDesktop.Dialog",
  89. "MWF.xDesktop.UserData",
  90. "MWF.xDesktop.Access",
  91. "MWF.widget.UUID",
  92. "MWF.xDesktop.Menu",
  93. "MWF.xDesktop.shortcut",
  94. "MWF.widget.PinYin",
  95. "MWF.xDesktop.Access",
  96. "MWF.xDesktop.MessageMobile"
  97. ];
  98. //MWF.xDesktop.requireApp("Common", "", null, false);
  99. var _check = function(){ if (isLoadedA && isLoadedB) if (callback) callback(); };
  100. o2.load(["../o2_lib/mootools/plugin/mBox.min.js",lp], function(){isLoadedA = true; _check();});
  101. o2.require("MWF.widget.Common", function(){
  102. debugger;
  103. o2.require(modules, function(){
  104. o2.requireApp("Common", "", function(){isLoadedB = true; _check();})
  105. });
  106. });
  107. };
  108. _loadResource(function(){
  109. layout.openLogin();
  110. });
  111. });
  112. layout.openLogin = function(){
  113. MWF.require("MWF.widget.Common", null, false);
  114. MWF.require("MWF.xDesktop.Authentication", function(){
  115. var authentication = new MWF.xDesktop.Authentication({
  116. "onLogin": _load.bind(layout)
  117. });
  118. authentication.loadLogin(document.body);
  119. });
  120. };
  121. };
  122. });
  123. (function(layout){
  124. layout.readys = [];
  125. layout.addReady = function(){
  126. for (var i = 0; i<arguments.length; i++){
  127. if (o2.typeOf(arguments[i])==="function") layout.readys.push(arguments[i]);
  128. }
  129. };
  130. var _requireApp = function(appNames, callback, clazzName){
  131. var appPath = appNames.split(".");
  132. var baseObject = o2.xApplication;
  133. appPath.each(function(path, i){
  134. if (i<(appPath.length-1)){
  135. baseObject[path] = baseObject[path] || {};
  136. }else {
  137. baseObject[path] = baseObject[path] || {"options": Object.clone(MWF.xApplication.Common.options)};
  138. }
  139. baseObject = baseObject[path];
  140. }.bind(this));
  141. if (!baseObject.options) baseObject.options = Object.clone(MWF.xApplication.Common.options);
  142. var _lpLoaded = false;
  143. MWF.xDesktop.requireApp(appNames, "lp."+o2.language, {
  144. "failure": function(){
  145. MWF.xDesktop.requireApp(appNames, "lp.zh-cn", null, false);
  146. }.bind(this)
  147. }, false);
  148. MWF.xDesktop.requireApp(appNames, clazzName, function(){
  149. if (callback) callback(baseObject);
  150. });
  151. };
  152. var _createNewApplication = function(e, appNamespace, appName, options, statusObj){
  153. var app = new appNamespace["Main"](this, options);
  154. app.desktop = layout;
  155. app.inBrowser = true;
  156. app.status = statusObj;
  157. app.load(true);
  158. var appId = appName;
  159. if (options.appId){
  160. appId = options.appId;
  161. }else{
  162. if (appNamespace.options.multitask) appId = appId+"-"+(new MWF.widget.UUID());
  163. }
  164. app.appId = appId;
  165. layout.app = app;
  166. layout.desktop.currentApp = app;
  167. };
  168. layout.openApplication = function(e, appNames, options, statusObj){
  169. if (layout.app){
  170. var par = "app="+encodeURIComponent(appNames)+"&status="+encodeURIComponent((statusObj)? JSON.encode(statusObj) : "")+"&option="+encodeURIComponent((options)? JSON.encode(options) : "");
  171. return window.open("app.html?"+par, "_blank");
  172. }else{
  173. var appPath = appNames.split(".");
  174. var appName = appPath[appPath.length-1];
  175. _requireApp(appNames, function(appNamespace){
  176. _createNewApplication(e, appNamespace, appName, options, statusObj);
  177. }.bind(this));
  178. }
  179. };
  180. layout.refreshApp = function(app){
  181. var status = app.recordStatus();
  182. var uri = new URI(window.location.href);
  183. var appNames = uri.getData("app");
  184. var optionsStr = uri.getData("option");
  185. var statusStr = uri.getData("status");
  186. if (status) statusStr = JSON.encode(status);
  187. var port = uri.get("port");
  188. window.location = uri.get("scheme") + "://" + uri.get("host") + ((port) ? ":" + port + "/" : "") + uri.get("directory ") + "?app=" + encodeURIComponent(appNames) + "&status=" + encodeURIComponent(statusStr) + "&option=" + encodeURIComponent((options) ? JSON.encode(options) : "");
  189. };
  190. layout.load =function(appNames, options, statusObj){
  191. layout.message = new MWF.xDesktop.MessageMobile();
  192. layout.message.load();
  193. layout.apps = [];
  194. layout.node = $("layout");
  195. var appName=appNames, m_status=statusObj, option=options;
  196. var topWindow = window.opener;
  197. if (topWindow){
  198. try{
  199. if (!appName) appName = topWindow.layout.desktop.openBrowserApp;
  200. if (!m_status) m_status = topWindow.layout.desktop.openBrowserStatus;
  201. if (!option) option = topWindow.layout.desktop.openBrowserOption;
  202. }catch(e){}
  203. }
  204. layout.openApplication(null, appName, option||{}, m_status);
  205. }
  206. })(layout);