portal.js 11 KB

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