app.js 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. layout = window.layout || {};
  2. layout.desktop = layout;
  3. o2.addReady(function(){
  4. var locate = window.location;
  5. layout.protocol = locate.protocol;
  6. var href = locate.href;
  7. if (href.indexOf("debugger")!=-1) layout["debugger"] = true;
  8. layout.session = layout.session || {};
  9. var uri = new URI(href);
  10. var appNames = uri.getData("app");
  11. var optionsStr = uri.getData("option");
  12. var statusStr = uri.getData("status");
  13. var options = (optionsStr) ? JSON.decode(optionsStr) : null;
  14. var statusObj = (statusStr) ? JSON.decode(statusStr) : null;
  15. o2.load(["../o2_lib/mootools/plugin/mBox.Notice.js", "../o2_lib/mootools/plugin/mBox.Tooltip.js"], {"sequence": true}, function(){
  16. //MWF.defaultPath = "/x_desktop"+MWF.defaultPath;
  17. MWF.loadLP("zh-cn");
  18. // MWF.require("MWF.widget.Mask", null, false);
  19. // layout.mask = new MWF.widget.Mask({"style": "desktop"});
  20. // layout.mask.load();
  21. MWF.require("MWF.xDesktop.Layout", function(){
  22. MWF.require("MWF.xDesktop.Authentication", null, false);
  23. MWF.xDesktop.requireApp("Common", "", null, false);
  24. (function(){
  25. layout.requireApp = function(appNames, callback, clazzName){
  26. var appPath = appNames.split(".");
  27. var appName = appPath[appPath.length-1];
  28. var appObject = "MWF.xApplication."+appNames;
  29. var className = clazzName || "Main";
  30. var appClass = appObject+"."+className;
  31. var appLp = appObject+".lp."+MWF.language;
  32. var baseObject = MWF.xApplication;
  33. appPath.each(function(path, i){
  34. if (i<(appPath.length-1)){
  35. baseObject[path] = baseObject[path] || {};
  36. }else {
  37. baseObject[path] = baseObject[path] || {"options": Object.clone(MWF.xApplication.Common.options)};
  38. }
  39. baseObject = baseObject[path];
  40. }.bind(this));
  41. if (!baseObject.options) baseObject.options = Object.clone(MWF.xApplication.Common.options);
  42. //MWF.xDesktop.requireApp(appNames, "lp."+MWF.language, null, false);
  43. MWF.xDesktop.requireApp(appNames, "lp."+MWF.language, {
  44. "onRequestFailure": function(){
  45. MWF.xDesktop.requireApp(appNames, "lp.zh-cn", null, false);
  46. }.bind(this),
  47. "onSuccess": function(){}.bind(this)
  48. }, false);
  49. MWF.xDesktop.requireApp(appNames, clazzName, function(){
  50. if (callback) callback(baseObject);
  51. });
  52. //
  53. //MWF.require(appLp, null, false);
  54. //MWF.require(appClass, function(){
  55. // if (callback) callback(baseObject);
  56. //});
  57. };
  58. layout.refreshApp = function(app){
  59. var status = app.recordStatus();
  60. var topWindow = window.opener;
  61. if (topWindow){
  62. try{
  63. topWindow.layout.desktop.openBrowserStatus = status;
  64. var appName = topWindow.layout.desktop.openBrowserApp || appNames;
  65. var m_status = status;
  66. var option = topWindow.layout.desktop.openBrowserOption || options;
  67. window.location.reload();
  68. }catch(e){
  69. statusStr = JSON.encode(status);
  70. var port = uri.get("port");
  71. var url = uri.get("scheme")+"://"+uri.get("host")+((port) ? ":"+port+"/" : "")+uri.get("directory ")+"?app="+appNames+"&status="+statusStr;
  72. window.location = url;
  73. }
  74. }else{
  75. statusStr = JSON.encode(status);
  76. var port = uri.get("port");
  77. var url = uri.get("scheme")+"://"+uri.get("host")+((port) ? ":"+port+"/" : "")+uri.get("directory ")+"?app="+appNames+"&status="+statusStr;
  78. window.location = url;
  79. }
  80. //layout.openApplication(null, appName, option||{}, m_status);
  81. };
  82. layout.openApplication = function(e, appNames, options, statusObj){
  83. if (layout.app){
  84. layout.desktop.openBrowserApp = appNames;
  85. layout.desktop.openBrowserStatus = statusObj;
  86. layout.desktop.openBrowserOption = options;
  87. return window.open("app.html", "_blank");
  88. }else{
  89. var appPath = appNames.split(".");
  90. var appName = appPath[appPath.length-1];
  91. layout.requireApp(appNames, function(appNamespace){
  92. this.createNewApplication(e, appNamespace, appName, options, statusObj);
  93. }.bind(this));
  94. }
  95. };
  96. layout.createNewApplication = function(e, appNamespace, appName, options, statusObj){
  97. var app = new appNamespace["Main"](this, options);
  98. app.desktop = layout;
  99. app.inBrowser = true;
  100. app.status = statusObj;
  101. app.load(true);
  102. var appId = appName;
  103. if (options.appId){
  104. appId = options.appId;
  105. }else{
  106. if (appNamespace.options.multitask) appId = appId+"-"+(new MWF.widget.UUID());
  107. }
  108. app.appId = appId;
  109. layout.app = app;
  110. };
  111. layout.load = function(){
  112. this.isAuthentication(function(){
  113. //layout.desktop = layout;
  114. MWF.require("MWF.xDesktop.MessageMobile", function(){
  115. layout.message = new MWF.xDesktop.MessageMobile();
  116. layout.message.load();
  117. }.bind(this));
  118. layout.apps = [];
  119. this.node = $("layout");
  120. var topWindow = window.opener;
  121. if (topWindow){
  122. try{
  123. var appName = topWindow.layout.desktop.openBrowserApp || appNames;
  124. var m_status = topWindow.layout.desktop.openBrowserStatus || statusObj;
  125. var option = topWindow.layout.desktop.openBrowserOption || options;
  126. layout.openApplication(null, appName, option||{}, m_status);
  127. }catch(e){
  128. var appName = appNames;
  129. var m_status = statusObj;
  130. var option = options;
  131. layout.openApplication(null, appName, option||{}, m_status);
  132. }
  133. //topWindow.layout.desktop.openBrowserApp = null;
  134. //topWindow.layout.desktop.openBrowserStatus = null;
  135. //topWindow.layout.desktop.openBrowserOption = null;
  136. }else{
  137. var appName = appNames;
  138. var m_status = statusObj;
  139. var option = options;
  140. layout.openApplication(null, appName, option||{}, m_status);
  141. }
  142. //layout.mask.hide();
  143. }.bind(this));
  144. };
  145. layout.isAuthentication = function(callback){
  146. this.authentication = new MWF.xDesktop.Authentication({
  147. "onLogin": layout.load.bind(layout)
  148. });
  149. var returnValue = true;
  150. this.authentication.isAuthenticated(function(json){
  151. this.user = json.data;
  152. this.session = {};
  153. this.session.user = json.data;
  154. if (callback) callback();
  155. }.bind(this), function(){
  156. // if (layout.config.loginPage && layout.config.loginPage.enable && layout.config.loginPage.portal){
  157. // MWF.xDesktop.loadPortal(layout.config.loginPage.portal);
  158. // //window.location = "portal.html?portal="+layout.config.loginPage.portal;
  159. // }else{
  160. // //this.getPublicStyleLoad(node);
  161. // this.authentication.loadLogin(document.body);
  162. // }
  163. this.authentication.loadLogin(document.body);
  164. //if (layout.mask) layout.mask.hide();
  165. returnValue = false;
  166. }.bind(this));
  167. return returnValue;
  168. };
  169. MWF.getJSON("res/config/config.json", function(config){
  170. layout.config = config;
  171. if (layout.config.app_protocol=="auto"){
  172. layout.config.app_protocol = window.location.protocol;
  173. }
  174. MWF.xDesktop.getServiceAddress(layout.config, function(service, center){
  175. layout.serviceAddressList = service;
  176. layout.centerServer = center;
  177. layout.load();
  178. }.bind(this));
  179. //layout.getServiceAddress(function(){
  180. // layout.load();
  181. //});
  182. });
  183. })();
  184. });
  185. });
  186. });