base.js 24.9 KB
Newer Older
NoSubject's avatar
NoSubject 已提交
1 2
layout = window.layout || {};
layout.desktop = layout;
NoSubject's avatar
NoSubject 已提交
3
layout.desktop.type = "app";
NoSubject's avatar
NoSubject 已提交
4 5
var locate = window.location;
layout.protocol = locate.protocol;
R
roo00 已提交
6
layout.inBrowser = true;
NoSubject's avatar
NoSubject 已提交
7
layout.session = layout.session || {};
R
roo00 已提交
8 9
layout.debugger = (locate.href.toString().indexOf("debugger") !== -1);
layout.anonymous = (locate.href.toString().indexOf("anonymous") !== -1);
NoSubject's avatar
NoSubject 已提交
10 11 12
o2.xApplication = o2.xApplication || {};

o2.xDesktop = o2.xDesktop || {};
R
roo00 已提交
13
o2.xDesktop.requireApp = function (module, clazz, callback, async) {
NoSubject's avatar
NoSubject 已提交
14 15 16
    o2.requireApp(module, clazz, callback, async);
};

R
roo00 已提交
17
(function (layout) {
NoSubject's avatar
NoSubject 已提交
18
    layout.readys = [];
R
roo00 已提交
19 20 21
    layout.addReady = function () {
        for (var i = 0; i < arguments.length; i++) {
            if (o2.typeOf(arguments[i]) === "function") layout.readys.push(arguments[i]);
NoSubject's avatar
NoSubject 已提交
22 23
        }
    };
R
roo00 已提交
24
    var _requireApp = function (appNames, callback, clazzName) {
NoSubject's avatar
NoSubject 已提交
25 26
        var appPath = appNames.split(".");
        var baseObject = o2.xApplication;
R
roo00 已提交
27 28
        appPath.each(function (path, i) {
            if (i < (appPath.length - 1)) {
NoSubject's avatar
NoSubject 已提交
29
                baseObject[path] = baseObject[path] || {};
R
roo00 已提交
30
            } else {
NoSubject's avatar
NoSubject 已提交
31
                baseObject[path] = baseObject[path] || { "options": Object.clone(o2.xApplication.Common.options) };
NoSubject's avatar
NoSubject 已提交
32 33 34
            }
            baseObject = baseObject[path];
        }.bind(this));
NoSubject's avatar
NoSubject 已提交
35
        if (!baseObject.options) baseObject.options = Object.clone(o2.xApplication.Common.options);
NoSubject's avatar
NoSubject 已提交
36 37

        var _lpLoaded = false;
NoSubject's avatar
NoSubject 已提交
38

NoSubject's avatar
NoSubject 已提交
39
        o2.xDesktop.requireApp(appNames, "lp." + o2.language, {
NoSubject's avatar
NoSubject 已提交
40
            "onFailure": function () {
NoSubject's avatar
NoSubject 已提交
41
                o2.xDesktop.requireApp(appNames, "lp.zh-cn", null, false);
NoSubject's avatar
NoSubject 已提交
42 43
            }.bind(this)
        }, false);
R
roo00 已提交
44

NoSubject's avatar
NoSubject 已提交
45
        o2.xDesktop.requireApp(appNames, clazzName, function () {
NoSubject's avatar
NoSubject 已提交
46 47 48
            if (callback) callback(baseObject);
        });
    };
NoSubject's avatar
NoSubject 已提交
49
    var _createNewApplication = function (e, appNamespace, appName, options, statusObj, inBrowser, taskitem, notCurrent) {
F
fancy 已提交
50
        if (options) { options.event = e; } else { options = { "event": e }; }
NoSubject's avatar
NoSubject 已提交
51 52
        var app = new appNamespace["Main"](layout.desktop, options);
        app.desktop = layout.desktop;
NoSubject's avatar
NoSubject 已提交
53
        app.status = statusObj;
NoSubject's avatar
NoSubject 已提交
54 55
        app.inBrowser = !!(inBrowser || layout.inBrowser);

F
fancy 已提交
56
        if (layout.desktop.type === "layout") {
NoSubject's avatar
NoSubject 已提交
57 58 59 60 61 62 63 64 65 66 67
            app.appId = (options.appId) ? options.appId : ((appNamespace.options.multitask) ? appName + "-" + (new o2.widget.UUID()) : appName);
            app.options.appId = app.appId;

            if (!taskitem) taskitem = layout.desktop.createTaskItem(app);
            app.taskitem = taskitem;
            app.taskitem.app = app;

            app.isLoadApplication = true;
            app.load(!notCurrent);

            if (!layout.desktop.apps) layout.desktop.apps = {};
F
fancy 已提交
68
            if (layout.desktop.apps[app.appId]) {
NoSubject's avatar
NoSubject 已提交
69 70
                var tmpApp = layout.desktop.apps[app.appId];

F
fancy 已提交
71
            } else {
NoSubject's avatar
NoSubject 已提交
72 73
                layout.desktop.apps[app.appId] = app;
            }
R
roo00 已提交
74

NoSubject's avatar
NoSubject 已提交
75 76 77 78 79
            layout.desktop.appArr.push(app);
            layout.desktop.appCurrentList.push(app);
            if (!notCurrent) layout.desktop.currentApp = app;

            //app.taskitem = new MWF.xDesktop.Layout.Taskitem(app, this);
F
fancy 已提交
80
        } else {
NoSubject's avatar
NoSubject 已提交
81 82
            app.load(true);
            layout.app = app;
NoSubject's avatar
NoSubject 已提交
83
        }
NoSubject's avatar
NoSubject 已提交
84 85


NoSubject's avatar
NoSubject 已提交
86 87 88 89 90

        var mask = document.getElementById("appContentMask");
        if (mask) mask.destroy();
    };

R
roo00 已提交
91
    var _openWorkAndroid = function (options) {
NoSubject's avatar
NoSubject 已提交
92 93
        if (window.o2android && window.o2android.openO2Work) {
            if (options.workId) {
NoSubject's avatar
NoSubject 已提交
94
                window.o2android.openO2Work(options.workId, "", options.title || "");
NoSubject's avatar
NoSubject 已提交
95
            } else if (options.workCompletedId) {
NoSubject's avatar
NoSubject 已提交
96
                window.o2android.openO2Work("", options.workCompletedId, options.title || "");
NoSubject's avatar
NoSubject 已提交
97 98 99 100 101
            }
            return true;
        }
        return false;
    };
R
roo00 已提交
102
    var _openWorkIOS = function (options) {
NoSubject's avatar
NoSubject 已提交
103 104 105 106 107
        if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.openO2Work) {
            if (options.workId) {
                window.webkit.messageHandlers.openO2Work.postMessage({
                    "work": options.workId,
                    "workCompleted": "",
NoSubject's avatar
NoSubject 已提交
108
                    "title": options.title || ""
NoSubject's avatar
NoSubject 已提交
109 110 111 112 113
                });
            } else if (options.workCompletedId) {
                window.webkit.messageHandlers.openO2Work.postMessage({
                    "work": "",
                    "workCompleted": options.workCompletedId,
NoSubject's avatar
NoSubject 已提交
114
                    "title": options.title || ""
NoSubject's avatar
NoSubject 已提交
115 116 117 118 119 120
                });
            }
            return true;
        }
        return false;
    };
R
roo00 已提交
121
    var _openWorkHTML = function (options) {
NoSubject's avatar
NoSubject 已提交
122 123 124 125 126 127 128 129
        var uri = new URI(window.location.href);
        var redirectlink = uri.getData("redirectlink");
        if (!redirectlink) {
            redirectlink = encodeURIComponent(locate.pathname + locate.search);
        } else {
            redirectlink = encodeURIComponent(redirectlink);
        }
        if (options.workId) {
130
            window.location = o2.filterUrl("../x_desktop/workmobilewithaction.html?workid=" + options.workId + ((layout.debugger) ? "&debugger" : "") + "&redirectlink=" + redirectlink);
NoSubject's avatar
NoSubject 已提交
131
        } else if (options.workCompletedId) {
132
            window.location = o2.filterUrl("../x_desktop/workmobilewithaction.html?workcompletedid=" + options.workCompletedId + ((layout.debugger) ? "&debugger" : "") + "&redirectlink=" + redirectlink);
NoSubject's avatar
NoSubject 已提交
133 134
        }
    };
R
roo00 已提交
135
    var _openWork = function (options) {
NoSubject's avatar
NoSubject 已提交
136 137
        if (!_openWorkAndroid(options)) if (!_openWorkIOS(options)) _openWorkHTML(options);
    };
R
roo00 已提交
138 139
    var _openDocument = function (appNames, options, statusObj) {
        var title = typeOf(options) === "object" ? (options.docTitle || options.title) : "";
NoSubject's avatar
NoSubject 已提交
140
        title = title || "";
R
roo00 已提交
141 142
        var par = "app=" + encodeURIComponent(appNames) + "&status=" + encodeURIComponent((statusObj) ? JSON.encode(statusObj) : "") + "&option=" + encodeURIComponent((options) ? JSON.encode(options) : "");
        if (window.o2android && window.o2android.openO2CmsDocument) {
NoSubject's avatar
NoSubject 已提交
143
            window.o2android.openO2CmsDocument(options.documentId, title);
R
roo00 已提交
144 145 146
        } else if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.openO2CmsDocument) {
            window.webkit.messageHandlers.openO2CmsDocument.postMessage({ "docId": options.documentId, "docTitle": title });
        } else {
147
            window.location = o2.filterUrl("../x_desktop/appMobile.html?" + par + ((layout.debugger) ? "&debugger" : ""));
NoSubject's avatar
NoSubject 已提交
148 149
        }
    };
R
roo00 已提交
150 151 152
    var _openCms = function (appNames, options, statusObj) {
        var par = "app=" + encodeURIComponent(appNames) + "&status=" + encodeURIComponent((statusObj) ? JSON.encode(statusObj) : "") + "&option=" + encodeURIComponent((options) ? JSON.encode(options) : "");
        if (window.o2android && window.o2android.openO2CmsApplication) {
NoSubject's avatar
NoSubject 已提交
153
            window.o2android.openO2CmsApplication(options.columnId, options.title || "");
R
roo00 已提交
154
        } else if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.openO2CmsApplication) {
NoSubject's avatar
NoSubject 已提交
155
            window.webkit.messageHandlers.openO2CmsApplication.postMessage(options.columnId);
R
roo00 已提交
156
        } else {
157
            window.location = o2.filterUrl("../x_desktop/appMobile.html?" + par + ((layout.debugger) ? "&debugger" : ""));
NoSubject's avatar
NoSubject 已提交
158 159
        }
    };
R
roo00 已提交
160 161 162
    var _openMeeting = function (appNames, options, statusObj) {
        var par = "app=" + encodeURIComponent(appNames) + "&status=" + encodeURIComponent((statusObj) ? JSON.encode(statusObj) : "") + "&option=" + encodeURIComponent((options) ? JSON.encode(options) : "");
        if (window.o2android && window.o2android.openO2Meeting) {
NoSubject's avatar
NoSubject 已提交
163
            window.o2android.openO2Meeting("");
R
roo00 已提交
164
        } else if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.openO2Meeting) {
NoSubject's avatar
NoSubject 已提交
165
            window.webkit.messageHandlers.openO2Meeting.postMessage("");
R
roo00 已提交
166
        } else {
167
            window.location = o2.filterUrl("../x_desktop/appMobile.html?" + par + ((layout.debugger) ? "&debugger" : ""));
NoSubject's avatar
NoSubject 已提交
168 169 170
        }
    };

R
roo00 已提交
171 172 173
    var _openCalendar = function (appNames, options, statusObj) {
        var par = "app=" + encodeURIComponent(appNames) + "&status=" + encodeURIComponent((statusObj) ? JSON.encode(statusObj) : "") + "&option=" + encodeURIComponent((options) ? JSON.encode(options) : "");
        if (window.o2android && window.o2android.openO2Calendar) {
NoSubject's avatar
NoSubject 已提交
174
            window.o2android.openO2Calendar("");
R
roo00 已提交
175
        } else if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.openO2Calendar) {
NoSubject's avatar
NoSubject 已提交
176
            window.webkit.messageHandlers.openO2Calendar.postMessage("");
R
roo00 已提交
177
        } else {
178
            window.location = o2.filterUrl("../x_desktop/appMobile.html?" + par + ((layout.debugger) ? "&debugger" : ""));
NoSubject's avatar
NoSubject 已提交
179 180
        }
    };
R
roo00 已提交
181 182
    var _openTaskCenter = function (appNames, options, statusObj) {
        var par = "app=" + encodeURIComponent(appNames) + "&status=" + encodeURIComponent((statusObj) ? JSON.encode(statusObj) : "") + "&option=" + encodeURIComponent((options) ? JSON.encode(options) : "");
NoSubject's avatar
NoSubject 已提交
183
        var tab = ((options && options.navi) ? options.navi : "task").toLowerCase();
R
roo00 已提交
184 185
        if (tab === "done") tab = "taskCompleted";
        if (tab === "readed") tab = "readCompleted";
NoSubject's avatar
NoSubject 已提交
186

R
roo00 已提交
187
        if (window.o2android && window.o2android.openO2WorkSpace) {
NoSubject's avatar
NoSubject 已提交
188
            window.o2android.openO2WorkSpace(tab);
R
roo00 已提交
189
        } else if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.openO2WorkSpace) {
NoSubject's avatar
NoSubject 已提交
190
            window.webkit.messageHandlers.openO2WorkSpace.postMessage(tab);
R
roo00 已提交
191
        } else {
192
            window.location = o2.filterUrl("../x_desktop/appMobile.html?" + par + ((layout.debugger) ? "&debugger" : ""));
NoSubject's avatar
NoSubject 已提交
193 194 195
        }
    };

R
roo00 已提交
196
    var _openApplicationMobile = function (appNames, options, statusObj) {
NoSubject's avatar
NoSubject 已提交
197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216
        switch (appNames) {
            case "process.Work":
                _openWork(options);
                break;
            case "cms.Document":
                _openDocument(appNames, options, statusObj);
                break;
            case "cms.Module":
                _openCms(appNames, options, statusObj);
                break;
            case "Meeting":
                _openMeeting(appNames, options, statusObj);
                break;
            case "Calendar":
                _openCalendar(appNames, options, statusObj);
                break;
            case "process.TaskCenter":
                _openTaskCenter(appNames, options, statusObj);
                break;
            default:
R
roo00 已提交
217 218 219
                var uri = new URI(window.location.href);
                var optionsStr = uri.getData("option");
                var statusStr = uri.getData("status");
220
                window.location = o2.filterUrl("../x_desktop/appMobile.html?app=" + appNames + "&option=" + (optionsStr || "") + "&status=" + (statusStr || "") + ((layout.debugger) ? "&debugger" : ""));
NoSubject's avatar
NoSubject 已提交
221
        }
NoSubject's avatar
NoSubject 已提交
222 223
    };

NoSubject's avatar
NoSubject 已提交
224
    layout.openApplication = function (e, appNames, options, statusObj, inBrowser, taskitem, notCurrent) {
F
fancy 已提交
225
        if (appNames.substring(0, 4) === "@url") {
NoSubject's avatar
NoSubject 已提交
226
            var url = appNames.replace(/\@url\:/i, "");
F
fancy 已提交
227
            var a = new Element("a", { "href": url, "target": "_blank" });
NoSubject's avatar
NoSubject 已提交
228 229 230 231 232 233
            a.click();
            a.destroy();
            a = null;
            return true;
        }

R
roo00 已提交
234 235
        if (layout.app) {
            if (layout.mobile) {
NoSubject's avatar
NoSubject 已提交
236
                _openApplicationMobile(appNames, options, statusObj);
R
roo00 已提交
237 238 239 240
            } else {
                var par = "app=" + encodeURIComponent(appNames) + "&status=" + encodeURIComponent((statusObj) ? JSON.encode(statusObj) : "") + "&option=" + encodeURIComponent((options) ? JSON.encode(options) : "");

                if (layout.app.$openWithSelf) {
241
                    return window.location = o2.filterUrl("../x_desktop/app.html?" + par + ((layout.debugger) ? "&debugger" : ""));
R
roo00 已提交
242
                } else {
243
                    return window.open(o2.filterUrl("../x_desktop/app.html?" + par + ((layout.debugger) ? "&debugger" : "")), par);
R
roo00 已提交
244
                }
NoSubject's avatar
NoSubject 已提交
245
            }
R
roo00 已提交
246
        } else {
NoSubject's avatar
NoSubject 已提交
247
            var appPath = appNames.split(".");
R
roo00 已提交
248 249
            var appName = appPath[appPath.length - 1];
            _requireApp(appNames, function (appNamespace) {
NoSubject's avatar
NoSubject 已提交
250 251
                var appId = (options && options.appId) ? options.appId : ((appNamespace.options.multitask) ? "" : appName);

252
                //if (appId && layout.desktop.apps && layout.desktop.apps[appId] && layout.desktop.apps[appId].window){
F
fancy 已提交
253
                if (appId && layout.desktop.apps && layout.desktop.apps[appId]) {
NoSubject's avatar
NoSubject 已提交
254
                    layout.desktop.apps[appId].setCurrent();
F
fancy 已提交
255
                } else {
NoSubject's avatar
NoSubject 已提交
256
                    if (options) options.appId = appId;
F
fancy 已提交
257
                    _createNewApplication(e, appNamespace, appName, (options || { "appId": appId }), statusObj, inBrowser, taskitem, notCurrent);
NoSubject's avatar
NoSubject 已提交
258
                }
NoSubject's avatar
NoSubject 已提交
259 260 261 262
            }.bind(this));
        }
    };

R
roo00 已提交
263
    layout.refreshApp = function (app) {
NoSubject's avatar
NoSubject 已提交
264 265 266 267 268 269 270 271 272
        var status = app.recordStatus();

        var uri = new URI(window.location.href);
        var appNames = uri.getData("app");
        var optionsStr = uri.getData("option");
        var statusStr = uri.getData("status");
        if (status) statusStr = JSON.encode(status);

        var port = uri.get("port");
U
unknown 已提交
273
        window.location = o2.filterUrl(uri.get("scheme") + "://" + uri.get("host") + ((port) ? ":" + port + "/" : "") + uri.get("directory ") + "?app=" + encodeURIComponent(appNames) + "&status=" + encodeURIComponent(statusStr) + "&option=" + encodeURIComponent((optionsStr) ? JSON.encode(optionsStr) : "") + ((layout.debugger) ? "&debugger" : ""));
NoSubject's avatar
NoSubject 已提交
274 275
    };

R
roo00 已提交
276
    layout.load = function (appNames, options, statusObj) {
NoSubject's avatar
NoSubject 已提交
277 278
        // layout.message = new o2.xDesktop.MessageMobile();
        // layout.message.load();
NoSubject's avatar
NoSubject 已提交
279 280 281

        layout.apps = [];
        layout.node = $("layout");
R
roo00 已提交
282
        var appName = appNames, m_status = statusObj, option = options;
NoSubject's avatar
NoSubject 已提交
283 284

        var topWindow = window.opener;
R
roo00 已提交
285 286
        if (topWindow) {
            try {
NoSubject's avatar
NoSubject 已提交
287 288
                if (!appName) appName = topWindow.layout.desktop.openBrowserApp;
                if (!m_status) m_status = topWindow.layout.desktop.openBrowserStatus;
R
roo00 已提交
289 290
                if (!option) option = topWindow.layout.desktop.openBrowserOption;
            } catch (e) { }
NoSubject's avatar
NoSubject 已提交
291
        }
R
roo00 已提交
292
        layout.openApplication(null, appName, option || {}, m_status);
NoSubject's avatar
NoSubject 已提交
293
    };
NoSubject's avatar
NoSubject 已提交
294

295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318
    // layout.getAppUrlMapping = function(url){
    //     return this.getUrlMapping(url, "app");
    // };
    // layout.getCenterUrlMapping = function(url){
    //     return this.getUrlMapping(url,"center");
    // };
    // layout.getWebUrlMapping = function(url){
    //     return this.getUrlMapping(url, "web");
    // };
    // layout.getUrlMapping = function(url, type){
    //     var urlContextMapping = layout.config.urlMapping;
    //     if (urlContextMapping && urlContextMapping.app){
    //         var href = url || window.location.href.toString();
    //
    //         for (var k in urlContextMapping[type]){
    //             var regex = new RegExp(k);
    //             if (regex.test(href)){
    //                 return urlContextMapping[type][k];
    //             }
    //         }
    //     }
    //     return "";
    // };

R
roo00 已提交
319
})(layout);
NoSubject's avatar
NoSubject 已提交
320 321 322 323 324 325 326 327 328 329 330

o2.addReady(function () {
    // layout.desktop = new (new Class({Implements: [Options, Events]}))();
    // layout.desktop.openApplication = layout.openApplication;
    // layout.desktop.refreshApp = layout.refreshApp;
    // layout.desktop.load = layout.load;

    //兼容方法
    Element.implement({
        "makeLnk": function (options) { }
    });
F
fancy 已提交
331
    layout.desktop.addEvent = function (type, e, d) {
NoSubject's avatar
NoSubject 已提交
332 333
        window.addEvent(type, e, d);
    };
F
fancy 已提交
334
    layout.desktop.addEvents = function (e) {
NoSubject's avatar
NoSubject 已提交
335 336 337 338 339
        window.addEvents(e);
    };

    var loadingNode = $("loaddingArea");
    var loadeds = 0;
340
    var loadCount = 4;
NoSubject's avatar
NoSubject 已提交
341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370
    var size = document.body.getSize();
    var _closeLoadingNode = function () {
        if (loadingNode) {
            loadingNode.destroy();
            loadingNode = null;
        }

    };
    var _loadProgressBar = function (complete) {
        if (loadingNode) {
            if (complete) {
                loadingNode.setStyles({ "width": "" + size.x + "px" });
                //loadingNode.set('morph', {duration: 100}).morph({"width": ""+size.x+"px"});
                window.setTimeout(_closeLoadingNode, 500);
            } else {
                loadeds++;
                var p = (loadeds / loadCount) * size.x;
                loadingNode.setStyles({ "width": "" + p + "px" });
                //loadingNode.set('morph', {duration: 100}).morph({"width": ""+p+"px"});
                if (loadeds >= loadCount) window.setTimeout(_closeLoadingNode, 500);
            }
        }
    };

    //异步载入必要模块
    layout.config = null;
    var configLoaded = false;
    var lpLoaded = false;
    var commonLoaded = false;
    var lp = o2.session.path + "/lp/" + o2.language + ".js";
371 372 373

    if (o2.session.isDebugger && (o2.session.isMobile || layout.mobile)) o2.load("../o2_lib/eruda/eruda.js");

NoSubject's avatar
NoSubject 已提交
374 375 376
    o2.load(lp, function () {
        _loadProgressBar();
        lpLoaded = true;
377 378 379 380 381 382 383 384 385 386 387 388 389

        var modules = ["o2.xDesktop.$all"];
        o2.require(modules, {
            "onSuccess": function () {
                commonLoaded = true;
                if (configLoaded && commonLoaded && lpLoaded) _getDistribute(function () { _load(); });
            },
            "onEvery": function () {
                _loadProgressBar();
            }
        });

        //if (configLoaded && lpLoaded && commonLoaded) _getDistribute(function () { _load(); });
NoSubject's avatar
NoSubject 已提交
390
    });
391

392
    o2.getJSON("../x_desktop/res/config/config.json", function (config) {
NoSubject's avatar
NoSubject 已提交
393 394
        _loadProgressBar();
        layout.config = config;
395
        configLoaded = true;
NoSubject's avatar
NoSubject 已提交
396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420
        if (configLoaded && commonLoaded && lpLoaded) _getDistribute(function () { _load(); });
    });

    var _getDistribute = function (callback) {
        if (layout.config.app_protocol === "auto") {
            layout.config.app_protocol = window.location.protocol;
        }
        o2.xDesktop.getServiceAddress(layout.config, function (service, center) {
            layout.serviceAddressList = service;
            layout.centerServer = center;
            layout.desktop.serviceAddressList = service;
            layout.desktop.centerServer = center;
            _loadProgressBar();
            if (callback) callback();
        }.bind(this));
    };

    var _load = function () {
        var _loadApp = function (json) {
            //用户已经登录
            layout.user = json.data;
            //layout.session = {};
            layout.session.user = json.data;
            layout.session.token = json.data.token;
            layout.desktop.session = layout.session;
421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451
            //(function (layout) {
                // var _loadResource = function (callback) {
                //     // var isLoadedA = false;
                //     // var isLoadedB = false;
                //     //var isLoadedC = false;
                //
                //     var modules = [
                //         "o2.widget._base",
                //         "o2.xDesktop._base"
                //     ];
                //     //o2.xDesktop.requireApp("Common", "", null, false);
                //     //var _check = function () { if (isLoadedA && isLoadedB) if (callback) callback(); };
                //
                //     //o2.load(["../o2_lib/mootools/plugin/mBox.min.js"], function () { _loadProgressBar(); isLoadedA = true; _check(); });
                //     // o2.require("o2.widget.Common", function () {
                //     //     _loadProgressBar();
                //     o2.require(modules, {
                //         "onSuccess": function () {
                //             _loadProgressBar();
                //             if (callback) callback();
                //             //o2.requireApp("Common", "", function () { _loadProgressBar(); isLoadedB = true; _check(); })
                //         },
                //         "onEvery": function () {
                //             _loadProgressBar();
                //         }
                //     });
                //     // });
                // };

            //    var _loadContent = function () {
                    //_loadResource(function () {
NoSubject's avatar
NoSubject 已提交
452 453 454 455 456
                        _loadProgressBar(true);
                        while (layout.readys && layout.readys.length) {
                            layout.readys.shift().apply(window);
                        }

457 458
                    //});
            //    };
NoSubject's avatar
NoSubject 已提交
459

460 461
            //    _loadContent();
            //})(layout);
NoSubject's avatar
NoSubject 已提交
462
        };
S
st 已提交
463 464 465 466

        //修改支持x-token
        var uri = new URI(window.location.href);
        var options = uri.get("data");
F
fancy 已提交
467
        if (options["x-token"]) {
S
st 已提交
468 469 470
            Cookie.write("x-token", options["x-token"]);
        }

NoSubject's avatar
NoSubject 已提交
471 472 473 474 475 476 477 478 479 480 481
        //先判断用户是否登录
        o2.Actions.get("x_organization_assemble_authentication").getAuthentication(function (json) {
            //已经登录
            _loadProgressBar();
            _loadApp(json);
        }.bind(this), function (json) {
            _loadProgressBar();
            //允许匿名访问
            if (layout.anonymous) {
                _loadProgressBar(true);
                _loadApp({
482 483 484 485 486 487 488
                    data : {
                        user: "anonymous",
                        session: {
                            user: {
                                name: "anonymous",
                                roleList: []
                            }
NoSubject's avatar
NoSubject 已提交
489 490 491 492 493 494
                        }
                    }
                });
            } else {
                //用户未经登录
                //打开登录页面
495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520
                // var _loadResource = function (callback) {
                //     var isLoadedA = false;
                //     var isLoadedB = false;
                //     //var isLoadedC = false;
                //
                //     //var lp = o2.session.path+"/lp/"+o2.language+".js";
                //     var modules = [
                //         "o2.xDesktop.desktopInit"
                //     ];
                //     //o2.xDesktop.requireApp("Common", "", null, false);
                //     var _check = function () { if (isLoadedA && isLoadedB) if (callback) callback(); };
                //
                //     o2.load(["../o2_lib/mootools/plugin/mBox.min.js"], function () { _loadProgressBar(); isLoadedA = true; _check(); });
                //     o2.require("o2.widget.Common", function () {
                //         _loadProgressBar();
                //         o2.require(modules, {
                //             "onSuccess": function () {
                //                 o2.requireApp("Common", "", function () { isLoadedB = true; _check(); })
                //             },
                //             "onEvery": function () {
                //                 _loadProgressBar();
                //             }
                //         });
                //     });
                // };
                //_loadResource(function () {
NoSubject's avatar
NoSubject 已提交
521
                    _loadProgressBar(true);
F
fancy 已提交
522 523 524 525 526
                    if (layout.yqwx) {
                        layout.openLoginQywx();
                    } else {
                        layout.openLogin();
                    }
527
                //});
NoSubject's avatar
NoSubject 已提交
528 529 530 531
            }
        });

        layout.openLogin = function () {
532 533
        //    o2.require("o2.widget.Common", null, false);
        //    o2.require("o2.xDesktop.Authentication", function () {
NoSubject's avatar
NoSubject 已提交
534 535 536 537 538 539 540
                layout.authentication = new o2.xDesktop.Authentication({
                    "style": "flat",
                    "onLogin": _load.bind(layout)
                });
                layout.authentication.loadLogin(document.body);
                var loadingNode = $("browser_loading");
                if (loadingNode) loadingNode.fade("out");
541
        //    });
NoSubject's avatar
NoSubject 已提交
542
        };
F
fancy 已提交
543 544 545 546 547

        layout.openLoginQywx = function () {
            console.log("开始login。。。。。。。。。。。。。");
            var uri = locate.href.toURI();

548
        //    MWF.require("MWF.xDesktop.Actions.RestActions", function () {
F
fancy 已提交
549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569
                console.log("执行单点。。。。。。。。。。");
                var action = new MWF.xDesktop.Actions.RestActions("", "x_organization_assemble_authentication", "");
                action.getActions = function (actionCallback) {
                    this.actions = { "sso": { "uri": "/jaxrs/qiyeweixin/code/{code}", "method": "GET" } };
                    if (actionCallback) actionCallback();
                };
                action.invoke({
                    "name": "sso", "async": true, "parameter": { "code": uri.getData("code") }, "success": function (json) {
                        console.log("单点成功。");
                        console.log(json);
                        //基础数据。。。。
                        layout.session.user = json.data;
                        //
                        _load();

                    }.bind(this), "failure": function (xhr, text, error) {
                        var n = document.getElementById("loaddingArea");
                        if (n) { n.destroy(); }
                        document.id("layout").set("html", "<div>企业微信单点异常!</div>")
                    }.bind(this)
                });
570
        //    });
F
fancy 已提交
571 572
        };

NoSubject's avatar
NoSubject 已提交
573 574
    };
});