Explorar el Código

门户页面优化,预加载脚本和嵌入widget

huqi hace 5 años
padre
commit
84906516fb

+ 44 - 3
o2web/source/o2_core/o2/xAction/services/x_portal_assemble_designer.js

@@ -35,6 +35,23 @@ MWF.xAction.RestActions.Action["x_portal_assemble_designer"] = new Class({
         var data, mobileDataStr;
         if (pageData) data = MWF.encodeJsonString(JSON.encode(pageData));
         if (mobileData) mobileDataStr = MWF.encodeJsonString(JSON.encode(mobileData));
+
+        var relatedScriptMap = null;
+        if (pageData && pageData.json.includeScripts && pageData.json.includeScripts.length){
+            relatedScriptMap = {};
+            pageData.json.includeScripts.each(function(s){
+                relatedScriptMap[s.id] = ((s.appType==="process") ? "processPlatform" : s.appType);
+            });
+        };
+
+        var mobileRelatedScriptMap = null;
+        if (mobileData && mobileData.json.includeScripts && mobileData.json.includeScripts.length){
+            mobileRelatedScriptMap = {};
+            mobileData.json.includeScripts.each(function(s){
+                mobileRelatedScriptMap[s.id] = ((s.appType==="process") ? "processPlatform" : s.appType);
+            });
+        }
+
         var json = {
             "id": pageData.json.id,
             "name": pageData.json.name,
@@ -43,7 +60,11 @@ MWF.xAction.RestActions.Action["x_portal_assemble_designer"] = new Class({
             "description": pageData.json.description,
             "portal": pageData.json.application,
             "icon": pageData.json.formIcon,
-            "formFieldList": fieldList
+            "formFieldList": fieldList,
+            "relatedScriptMap": relatedScriptMap,
+            "relatedWidgetList": (pageData && pageData.json.widgetList) ? pageData.json.widgetList : [],
+            "mobileRelatedScriptMap": mobileRelatedScriptMap,
+            "mobileRelatedWidgetList": (mobileData && mobileData.json.widgetList) ? mobileData.json.widgetList : []
         };
         if (mobileData && mobileData.json.moduleList){
             if (Object.keys(mobileData.json.moduleList).length){
@@ -78,6 +99,22 @@ MWF.xAction.RestActions.Action["x_portal_assemble_designer"] = new Class({
                 if (pageData) data = MWF.encodeJsonString(JSON.encode(pageData));
                 if (mobileData) mobileDataStr = MWF.encodeJsonString(JSON.encode(mobileData));
 
+                var relatedScriptMap = null;
+                if (pageData && pageData.json.includeScripts && pageData.json.includeScripts.length){
+                    relatedScriptMap = {};
+                    pageData.json.includeScripts.each(function(s){
+                        relatedScriptMap[s.id] = ((s.appType==="process") ? "processPlatform" : s.appType);
+                    });
+                };
+
+                var mobileRelatedScriptMap = null;
+                if (mobileData && mobileData.json.includeScripts && mobileData.json.includeScripts.length){
+                    mobileRelatedScriptMap = {};
+                    mobileData.json.includeScripts.each(function(s){
+                        mobileRelatedScriptMap[s.id] = ((s.appType==="process") ? "processPlatform" : s.appType);
+                    });
+                }
+
                 var json = {
                     "id": pageData.json.id,
                     "name": pageData.json.name,
@@ -86,7 +123,11 @@ MWF.xAction.RestActions.Action["x_portal_assemble_designer"] = new Class({
                     "description": pageData.json.description,
                     "portal": pageData.json.application,
                     "icon": pageData.json.formIcon,
-                    "formFieldList": fieldList
+                    "formFieldList": fieldList,
+                    "relatedScriptMap": relatedScriptMap,
+                    "relatedWidgetList": (pageData && pageData.json.widgetList) ? pageData.json.widgetList : [],
+                    "mobileRelatedScriptMap": mobileRelatedScriptMap,
+                    "mobileRelatedWidgetList": (mobileData && mobileData.json.widgetList) ? mobileData.json.widgetList : []
                 };
                 if (mobileData && mobileData.json.moduleList){
                     if (Object.keys(mobileData.json.moduleList).length){
@@ -315,4 +356,4 @@ MWF.xAction.RestActions.Action["x_portal_assemble_designer"] = new Class({
     changeApplicationIcon: function(applicationId, success, failure, formData, file){
         this.action.invoke({"name": "updateApplicationIcon", "parameter": {"id": applicationId},"data": formData,"file": file,"success": success,"failure": failure});
     }
-});
+});

+ 8 - 1
o2web/source/o2_core/o2/xAction/services/x_portal_assemble_surface.json

@@ -11,8 +11,15 @@
 
   "getPage": {"uri": "/jaxrs/page/{id}"},
   "getPageMobile": {"uri": "/jaxrs/page/{id}/mobile"},
+  "getPageV2": {"uri": "/jaxrs/page/v2/{id}"},
+  "getPageMobileV2": {"uri": "/jaxrs/page/v2/{id}/mobile"},
+
   "getPageByName": {"uri": "/jaxrs/page/{name}/portal/{id}"},
   "getPageByNameMobile": {"uri": "/jaxrs/page/{name}/portal/{id}/mobile"},
+
+  "getPageByNameV2": {"uri": "/jaxrs/page/v2/{name}/portal/{id}"},
+  "getPageByNameMobileV2": {"uri": "/jaxrs/page/v2/{name}/portal/{id}/mobile"},
+
   "getSource": {"uri": "/jaxrs/source/{id}"},
   "getScript": {"uri": "/jaxrs/script/{id}"},
   //"getScriptByName": {"uri": "/jaxrs/script/portal/{applicationId}/name/{name}"},
@@ -26,4 +33,4 @@
 
   "readFile": {"uri": "/jaxrs/file/{flag}/portal/{applicationFlag}/content"},
   "listFile": {"uri": "/jaxrs/file/list/portal/{applicationFlag}"}
-}
+}

+ 11 - 4
o2web/source/o2_core/o2/xDesktop/Default.js

@@ -44,6 +44,7 @@ o2.xDesktop.Default = new Class({
             this.status.apps[appNames] = options || {};
             this.status.apps[appNames].name = appNames;
             this.status.apps[appNames].appId = appNames;
+            this.status.apps[appNames].isIndex = true;
             this.status.currentApp = appNames;
         }else{
             this.status = layout.userLayout;
@@ -228,7 +229,7 @@ o2.xDesktop.Default = new Class({
                     this.taskitem.destroy();
                 },
                 "setCurrent": function(){
-                    this.taskitem.textNode.click();
+                    if (this.taskitem.textNode) this.taskitem.textNode.click();
                 }
             };
             //layout.openApplication(null, "portal.Portal", options);
@@ -239,7 +240,7 @@ o2.xDesktop.Default = new Class({
                     this.taskitem.destroy();
                 },
                 "setCurrent": function(){
-                    this.taskitem.textNode.click();
+                    if (this.taskitem.textNode) this.taskitem.textNode.click();
                 }
             };
             //layout.openApplication(null, "Homepage");
@@ -247,7 +248,7 @@ o2.xDesktop.Default = new Class({
 
         taskitem = layout.desktop.createTaskItem(app);
         app.taskitem = taskitem;
-        app.isIndex = true;
+        app.options.isIndex = true;
         this.apps[app.options.appId] = app;
         taskitem.textNode.click();
     },
@@ -264,6 +265,7 @@ o2.xDesktop.Default = new Class({
     },
 
     loadStatus: function(){
+        debugger;
         if (this.status){
             var keys = Object.keys(this.status.apps);
             if (this.status.apps && keys.length){
@@ -281,7 +283,7 @@ o2.xDesktop.Default = new Class({
                             this.taskitem.destroy();
                         },
                         "setCurrent": function(){
-                            this.taskitem.textNode.click();
+                            if (this.taskitem.textNode) this.taskitem.textNode.click();
                         }
                     };
                     taskitem = layout.desktop.createTaskItem(app);
@@ -509,6 +511,11 @@ o2.xDesktop.Default = new Class({
                 var appStatus = this.getAppStatusData(app, id);
                 if (appStatus) status.apps[id] = appStatus;
             }
+            debugger;
+            if (app.isIndex){
+                if (!status.apps[id]) status.apps[id] = {};
+                status.apps[id].isIndex = true;
+            }
         }.bind(this));
         this.lnks.each(function(lnk){
             status.flatLnks.push(lnk.data);

+ 1 - 1
o2web/source/o2_core/o2/xDesktop/shortcut.js

@@ -27,7 +27,7 @@ MWF.shortcut = {
     clearDesktop: function(){
         var keys = Array.clone(Object.keys(layout.desktop.apps));
         keys.each(function(key){
-            if (!layout.desktop.apps[key].isIndex) layout.desktop.apps[key].close();
+            if (!layout.desktop.apps[key].isIndex && !layout.desktop.apps[key].options.isIndex) layout.desktop.apps[key].close();
         });
         keys = null;
     },

+ 15 - 0
o2web/source/x_component_portal_PageDesigner/Main.js

@@ -1387,6 +1387,18 @@ MWF.xApplication.portal.PageDesigner.Main = new Class({
         }.bind(this));
         return fieldList;
     },
+    getWidgetList: function(data){
+        widgetList = [];
+
+        Object.each(data.moduleList, function(moudle){
+            if (moudle.moduleName.toLowerCase()=="widget"){
+                if (moudle.widgetType == "select"){
+                    widgetList.push(moudle.widgetSelected);
+                }
+            }
+        }.bind(this));
+        return widgetList;
+    },
     saveForm: function(){
         this.savePage()
     },
@@ -1402,10 +1414,12 @@ MWF.xApplication.portal.PageDesigner.Main = new Class({
             var pcData, mobileData;
             if (this.pcPage){
                 this.pcPage._getPageData();
+                this.pcPage.json.widgetList = this.getWidgetList(this.pcPage.json);
                 pcData = this.pcPage.data;
             }
             if (this.mobilePage){
                 this.mobilePage._getPageData();
+                this.mobilePage.json.widgetList = this.getWidgetList(this.mobilePage.json);
                 mobileData = this.mobilePage.data;
             }else{
                 if (this.pageMobileData) mobileData = this.pageMobileData;
@@ -1413,6 +1427,7 @@ MWF.xApplication.portal.PageDesigner.Main = new Class({
 
             this.isSave = true;
             var fieldList = this.getFieldList();
+
             this._savePage(pcData, mobileData, fieldList, function(responseJSON){
                 this.notice(MWF.APPPD.LP.notice["save_success"], "ok", null, {x: "left", y:"bottom"});
                 if (!this.pcPage.json.name) this.pcPage.treeNode.setText("<"+this.json.type+"> "+this.json.id);

+ 12 - 1
o2web/source/x_component_portal_PageDesigner/Module/Page/page.html

@@ -30,6 +30,17 @@
                 <td class="editTableValue"><div class="MWFIcon" name="formIcon"></div></td>
             </tr>
         </table>
+
+        <div style="height:24px; text-align: center; line-height: 24px; background-color: #EEE; border-top: 1px solid #999;font-weight:bold;">预加载脚本</div>
+        <table width="100%" border="0" cellpadding="5" cellspacing="0" class="editTable">
+            <tr>
+                <td class="editTableTitle">脚本:</td>
+                <td class="editTableValue">
+                    <div class="MWFScriptSelect" data-count=0 name="includeScripts"></div>
+                    <div class="MWFScriptSelectAction"><div style="color: #0b58a2; cursor: pointer; float: left">复制</div><div style="color: #0b58a2; cursor: pointer; float: left; margin-left:10px">粘贴</div></div>
+                </td>
+            </tr>
+        </table>
 		
 		<!--<div class="MWFArraylist" name="cssLinks" title="CSS引用"></div>-->
 		<!--<div class="MWFArraylist" name="scriptSrc" title="JS引用"></div>-->
@@ -49,4 +60,4 @@
 	<div title="JSON"  class="MWFTab">
 		<div class="MWFJSONArea" style="font-family: Verdana, Geneva, sans-serif; font-size:14px"></div>
 	</div>
-</div>
+</div>

+ 15 - 3
o2web/source/x_component_portal_Portal/Main.js

@@ -158,8 +158,17 @@ MWF.xApplication.portal.Portal.Main = new Class({
             if (!!pageJson && loadModuleFlag){
                 layout.sessionPromise.then(function(){
                     this.setTitle(pageJson.data.name);
-                    this.page = (pageJson.data.data) ? JSON.decode(MWF.decodeJsonString(pageJson.data.data)): null;
-                    this.pageInfor = pageJson.data;
+                    if (pageJson.data.page){
+                        this.page = (pageJson.data.page.data) ? JSON.decode(MWF.decodeJsonString(pageJson.data.page.data)): null;
+                        this.relatedFormMap = pageJson.data.relatedWidgetMap;
+                        this.relatedScriptMap = pageJson.data.relatedScriptMap;
+                        delete pageJson.data.page.data;
+                        this.pageInfor = pageJson.data.page;
+                    }else{
+                        this.page = (pageJson.data.data) ? JSON.decode(MWF.decodeJsonString(pageJson.data.data)): null;
+                        delete pageJson.data.data;
+                        this.pageInfor = pageJson.data;
+                    }
                     this.openPortal(par, callback);
                 }.bind(this));
             }
@@ -169,7 +178,7 @@ MWF.xApplication.portal.Portal.Main = new Class({
         if( this.options.widgetId ){
             m = (layout.mobile) ? "getWidgetByNameMobile" : "getWidgetByName";
         }else{
-            m = (layout.mobile) ? "getPageByNameMobile" : "getPageByName";
+            m = (layout.mobile) ? "getPageByNameMobileV2" : "getPageByNameV2";
         }
         this.action[m]( this.options.widgetId || this.options.pageId, this.options.portalId, function(json){
             pageJson = json;
@@ -202,6 +211,7 @@ MWF.xApplication.portal.Portal.Main = new Class({
     },
 
     openPortal: function(par, callback){
+        debugger;
         if (this.page){
             //MWF.xDesktop.requireApp("process.Xform", "Form", function(){
                 this.appForm = new MWF.APPForm(this.formNode, this.page, {
@@ -216,8 +226,10 @@ MWF.xApplication.portal.Portal.Main = new Class({
                     "data": {}
                 };
 
+
                 this.appForm.workAction = this.action;
                 this.appForm.app = this;
+
                 this.appForm.load();
 
                 if (callback) callback();

+ 0 - 4
o2web/source/x_component_process_Work/Main.js

@@ -716,15 +716,11 @@ MWF.xApplication.process.Work.Main = new Class({
                         layout.appForm = this.appForm;
                         window.webkit.messageHandlers.appFormLoaded.postMessage(JSON.stringify(this.appForm.mobileTools));
                     }
-debugger;
-
                     if (this.options.action=="processTask"){
                         this.appForm.processWork();
                         this.options.action = "";
                     }
-
                     this.fireEvent("postLoadForm");
-
                 }.bind(this));
             //}.bind(this));
         }

+ 14 - 5
o2web/source/x_component_process_Xform/Widget.js

@@ -3,6 +3,7 @@ MWF.xApplication.process.Xform.Widget = MWF.APPWidget =  new Class({
     Extends: MWF.APP$Module,
 
     _loadUserInterface: function(){
+        debugger;
         this.node.empty();
         this.getWidget(function(){
             this.loadWidget();
@@ -139,11 +140,19 @@ MWF.xApplication.process.Xform.Widget = MWF.APPWidget =  new Class({
             }
         }else{
             if (this.json.widgetSelected && this.json.widgetSelected!=="none"){
-                var app = this.form.businessData.pageInfor.portal;
-                o2.Actions.get("x_portal_assemble_surface")[method](this.json.widgetSelected, app, function(json){
-                    this.getWidgetData(json.data);
+
+                var widgetData = (this.form.app.relatedFormMap) ? this.form.app.relatedFormMap[this.json.widgetSelected] : null;
+                if (widgetData){
+                    this.getWidgetData({"data": widgetData.data});
                     if (callback) callback();
-                }.bind(this));
+
+                }else{
+                    var app = this.form.businessData.pageInfor.portal;
+                    o2.Actions.get("x_portal_assemble_surface")[method](this.json.widgetSelected, app, function(json){
+                        this.getWidgetData(json.data);
+                        if (callback) callback();
+                    }.bind(this));
+                }
             }else{
                 if (callback) callback();
             }
@@ -175,4 +184,4 @@ MWF.xApplication.process.Xform.Widget = MWF.APPWidget =  new Class({
         }
         return params;
     }
-});
+});