o2TestLoader.js 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. function o2TestLoader() {
  2. //o2.base = "base/";
  3. layout.debugger = true;
  4. o2.session.isDebugger = true;
  5. //兼容方法
  6. if (window.Element){
  7. Element.implement({
  8. "makeLnk": function (options) { }
  9. });
  10. }
  11. layout.desktop.addEvent = function (type, e, d) {
  12. window.addEvent(type, e, d);
  13. };
  14. layout.desktop.addEvents = function (e) {
  15. window.addEvents(e);
  16. };
  17. // var loadingNode = (window.$) ? $("loaddingArea") : null;
  18. var loadeds = 0;
  19. var loadCount = 4;
  20. var size = (window.document && document.body) ? document.body.getSize() : null;
  21. var _setLayoutService = function(service, center){
  22. layout.serviceAddressList = service;
  23. layout.centerServer = center;
  24. layout.desktop.serviceAddressList = service;
  25. layout.desktop.centerServer = center;
  26. };
  27. var _getDistribute = function (callback) {
  28. if (layout.config.app_protocol === "auto") {
  29. layout.config.app_protocol = window.location.protocol;
  30. }
  31. if (layout.config.configMapping && (layout.config.configMapping[window.location.host] || layout.config.configMapping[window.location.hostname])){
  32. var mapping = layout.config.configMapping[window.location.host] || layout.config.configMapping[window.location.hostname];
  33. if (mapping.servers){
  34. layout.serviceAddressList = mapping.servers;
  35. layout.desktop.serviceAddressList = mapping.servers;
  36. if (mapping.center) center = (o2.typeOf(mapping.center)==="array") ? mapping.center[0] : mapping.center;
  37. layout.centerServer = center;
  38. layout.desktop.centerServer = center;
  39. if (callback) callback();
  40. }else{
  41. if (mapping.center) layout.config.center = (o2.typeOf(mapping.center)==="array") ? mapping.center : [mapping.center];
  42. o2.xDesktop.getServiceAddress(layout.config, function (service, center) {
  43. _setLayoutService(service, center);
  44. if (callback) callback();
  45. }.bind(this));
  46. }
  47. }else{
  48. o2.xDesktop.getServiceAddress(layout.config, function (service, center) {
  49. _setLayoutService(service, center);
  50. if (callback) callback();
  51. }.bind(this));
  52. }
  53. };
  54. var _load = function () {
  55. var _loadApp = function (json) {
  56. //用户已经登录
  57. if (json){
  58. layout.user = json.data;
  59. layout.session = layout.session || {};
  60. layout.session.user = json.data;
  61. layout.session.token = json.data.token;
  62. layout.desktop.session = layout.session;
  63. }
  64. while (layout.readys && layout.readys.length) {
  65. layout.readys.shift().apply(window);
  66. }
  67. };
  68. layout.sessionPromise = new Promise(function(resolve, reject){
  69. o2.Actions.get("x_organization_assemble_authentication").getAuthentication(function (json) {
  70. if (resolve) resolve(json.data);
  71. }.bind(this), function (xhr, text, error) {
  72. if (reject) reject({"xhr": xhr, "text": text, "error": error});
  73. }.bind(this));
  74. });
  75. layout.sessionPromise.then(function(data){
  76. //已经登录
  77. layout.user = data;
  78. layout.session = layout.session || {};
  79. layout.session.user = data;
  80. layout.session.token = data.token;
  81. layout.desktop.session = layout.session;
  82. _loadApp();
  83. }, function(){
  84. //允许匿名访问
  85. if (layout.anonymous) {
  86. var data = { name: "anonymous", roleList: [] };
  87. layout.user = data;
  88. layout.session = layout.session || {};
  89. layout.session.user = data;
  90. layout.session.token = data.token;
  91. layout.desktop.session = layout.session;
  92. _loadApp();
  93. } else {
  94. if (o2Unit.username){
  95. o2.Actions.load("x_organization_assemble_authentication").AuthenticationAction.login({"credential":o2Unit.username,"password":o2Unit.password}, function (json) {
  96. _loadApp(json);
  97. }.bind(this), function (xhr, text, error) {
  98. layout.openLogin();
  99. }.bind(this));
  100. }else{
  101. layout.openLogin();
  102. }
  103. }
  104. });
  105. //_loadApp();
  106. layout.openLogin = function () {
  107. layout.desktop.type = "app";
  108. layout.app = null;
  109. var content = $("appContent") || $("layout");
  110. if (content) content.empty();
  111. layout.authentication = new o2.xDesktop.Authentication({
  112. "style": "flat",
  113. "onLogin": _load.bind(layout)
  114. });
  115. layout.authentication.loadLogin(document.body);
  116. var loadingNode = $("browser_loading");
  117. if (loadingNode) loadingNode.fade("out");
  118. };
  119. };
  120. //异步载入必要模块
  121. var configLoaded = false;
  122. var lpLoaded = false;
  123. var commonLoaded = false;
  124. var appLoaded = false;
  125. var lp = o2.session.path + "/lp/" + o2.language + ".js";
  126. if (o2.session.isDebugger && (o2.session.isMobile || layout.mobile)) o2.load("../o2_lib/eruda/eruda.js");
  127. var loadModuls = function () {
  128. lpLoaded = true;
  129. var modules = [
  130. 'o2.widget.Common',
  131. 'o2.widget.Dialog',
  132. 'o2.widget.UUID',
  133. 'o2.xDesktop.Common',
  134. 'o2.xDesktop.Actions.RestActions',
  135. 'o2.xAction.RestActions',
  136. 'o2.xDesktop.Access',
  137. 'o2.xDesktop.Dialog',
  138. 'o2.xDesktop.Menu',
  139. 'o2.xDesktop.UserData',
  140. 'o2.xDesktop.Authentication',
  141. 'o2.xDesktop.Dialog',
  142. 'o2.xDesktop.Window'
  143. ];
  144. o2.require(modules, {
  145. "onSuccess": function () {
  146. commonLoaded = true;
  147. if (configLoaded && commonLoaded && lpLoaded && appLoaded) _getDistribute(function () { _load(); });
  148. }
  149. });
  150. var apps = [
  151. ["Template", "MPopupForm"],
  152. ["Common", ""]
  153. ];
  154. o2.requireApp(apps, null, function(){
  155. appLoaded = true;
  156. if (configLoaded && commonLoaded && lpLoaded && appLoaded) _getDistribute(function () { _load(); });
  157. });
  158. }
  159. if (!o2.LP){
  160. o2.load(lp, loadModuls);
  161. }else{
  162. loadModuls();
  163. }
  164. //o2.getJSON("../x_desktop/res/config/config.json", function (config) {
  165. configLoaded = true;
  166. if (configLoaded && commonLoaded && lpLoaded && appLoaded) _getDistribute(function () { _load(); });
  167. //});
  168. };
  169. o2Unit = {
  170. //options: {
  171. // "username": "",
  172. // "password": "",
  173. // "anonymous": false (default) or true,
  174. // "mode": "spa"(default) or "mpa"
  175. // }
  176. init: function(options, fn){
  177. this.username = options.username;
  178. this.password = options.password;
  179. layout.anonymous = (options.anonymous===true);
  180. this.mode = options.mode || "spa";
  181. o2.addReady(o2TestLoader);
  182. layout.addReady(function(){
  183. this["load_"+this.mode](function(){
  184. if (fn) fn.apply(window);
  185. });
  186. }.bind(this));
  187. //if (fn) layout.addReady(fn);
  188. },
  189. load_spa: function(fn){
  190. var html = "<div id=\"layout_main\" style=\"overflow: hidden; height: 100%; background-position-x: center; background-size: cover;\">\n" +
  191. " <div id=\"layout_top_shim\"></div>\n" +
  192. " <div id=\"layout_top\"></div>\n" +
  193. " <div id=\"layout_desktop\">\n" +
  194. " <div id=\"desktop_content\"></div>\n" +
  195. " <div id=\"desktop_navi\"></div>\n" +
  196. " </div>\n" +
  197. " </div>"
  198. document.body.appendHTML(html);
  199. layout.inBrowser = false;
  200. debugger;
  201. layout.desktop.type = "layout";
  202. layout.viewMode = "Default";
  203. var _load = function(){
  204. layout.userLayout = {};
  205. layout.userLayout.apps = {};
  206. MWF.require("MWF.xDesktop.Default", function(){
  207. layout.desktop = new MWF.xDesktop.Default("layout_main", {});
  208. layout.desktop.load(function(){
  209. if (fn) fn();
  210. });
  211. if (!layout.desktop.openApplication) layout.desktop.openApplication = layout.openApplication;
  212. if (!layout.desktop.refreshApp) layout.desktop.refreshApp = layout.refreshApp;
  213. });
  214. };
  215. if (layout.session && layout.session.user){
  216. _load();
  217. }else{
  218. if (layout.sessionPromise){
  219. layout.sessionPromise.then(function(){
  220. _load();
  221. },function(){});
  222. }
  223. }
  224. },
  225. load_mpa: function(fn){
  226. var html = "<div id=\"appContent\" style=\"overflow: hidden; height:100%; background-color:#EEE\"></div>";
  227. document.body.appendHTML(html);
  228. if (fn) fn();
  229. },
  230. openApplication: function(fn, appNames, options){
  231. var option = options || {};
  232. option.onPostLoadApplication = function(){
  233. this.runPostLoadApplication = true;
  234. if (fn) fn();
  235. };
  236. option.postLoad = function(){
  237. if (!this.runPostLoadApplication) if (fn) fn();
  238. }
  239. var args = Array.from(arguments);
  240. args.shift();
  241. args.unshift(null);
  242. if (!options) args.push(option);
  243. layout.openApplication.apply(layout, args);
  244. }
  245. };