فهرست منبع

设计搜索功能

huqi 5 سال پیش
والد
کامیت
e07f13893e

+ 1 - 1
o2web/source/o2_core/o2/xAction/services/x_processplatform_assemble_designer.js

@@ -1,4 +1,4 @@
-MWF.xAction.RestActions.Action["x_processplatform_assemble_designer"] = new Class({
+ MWF.xAction.RestActions.Action["x_processplatform_assemble_designer"] = new Class({
     Extends: MWF.xAction.RestActions.Action,
 
     getId: function(count, success, failure, async){

+ 44 - 16
o2web/source/x_component_FindDesigner/FindWorker.js

@@ -417,6 +417,7 @@ _worker.findInDesigner_script = function(formData, key, module, designer, proper
                 "propertyType": propertyDefinition.type || "text",
                 "propertyName": propertyDefinition.name,
                 "name": formData.name || formData.id,
+                "id": formData.id,
                 "key": key,
                 "value": obj.value,
                 "line": preLine+1,
@@ -450,6 +451,7 @@ _worker.findInDesigner_events = function(formData, key, module, designer, proper
                 "propertyType": propertyDefinition.type || "text",
                 "propertyName": propertyDefinition.name,
                 "name": formData.name || formData.id,
+                "id": formData.id,
                 "key": key,
                 "evkey": evkey,
                 "value": obj.value,
@@ -473,6 +475,7 @@ _worker.findInDesigner_map = function(formData, key, module, designer, propertyD
                         "propertyType": propertyDefinition.type || "text",
                         "propertyName": propertyDefinition.name,
                         "name": formData.name || formData.id,
+                        "id": formData.id,
                         "key": key,
                         "value": evkey + ": " + text,
                         "mode": mode,
@@ -489,6 +492,7 @@ _worker.findInDesigner_map = function(formData, key, module, designer, propertyD
                             "propertyType": propertyDefinition.type || "text",
                             "propertyName": propertyDefinition.name+"-"+evkey,
                             "name": formData.name || formData.id,
+                            "id": formData.id,
                             "key": key,
                             "value": stylekey + ": " + text[stylekey],
                             "mode": mode,
@@ -511,6 +515,7 @@ _worker.findInDesigner_array = function(formData, key, module, designer, propert
                 "propertyType": propertyDefinition.type || "text",
                 "propertyName": propertyDefinition.name,
                 "name": formData.name || formData.id,
+                "id": formData.id,
                 "line": i+1,
                 "key": key,
                 "value": text,
@@ -533,6 +538,7 @@ _worker.findInDesigner_objectArray = function(formData, key, module, designer, p
                     "propertyType": propertyDefinition.type || "text",
                     "propertyName": propertyDefinition.name,
                     "name": formData.name || formData.id,
+                    "id": formData.id,
                     "line": i+1,
                     "key": key,
                     "value": evkey+": "+text,
@@ -558,6 +564,7 @@ _worker.findInDesigner_duty = function(formData, key, module, designer, property
                     "propertyType": propertyDefinition.type || "text",
                     "propertyName": propertyDefinition.name,
                     "name": formData.name || formData.id,
+                    "id": formData.id,
                     "key": key,
                     "line": i+1,
                     "valueKey": "name",
@@ -586,6 +593,7 @@ _worker.findInDesigner_duty = function(formData, key, module, designer, property
                         "propertyType": propertyDefinition.type || "text",
                         "propertyName": propertyDefinition.name+"(code) "+idx+"."+duty.name,
                         "name": formData.name || formData.id,
+                        "id": formData.id,
                         "key": key,
                         "valueKey": "code",
                         "idx": i,
@@ -600,9 +608,10 @@ _worker.findInDesigner_duty = function(formData, key, module, designer, property
     }
 };
 
-_worker.findInDesigner_actions = function(formData, key, module, designer, propertyDefinition, option, mode){
+_worker.findInDesigner_actions = function(formData, key, module, designer, propertyDefinition, option, mode, path){
     var arr = formData[key];
     arr.forEach(function(action, i) {
+        var p = path.concat(i);
         this.keywordRegexp.lastIndex = 0;
         var text = action.text;
         if (text) if (this.keywordRegexp.test(text)){
@@ -611,10 +620,12 @@ _worker.findInDesigner_actions = function(formData, key, module, designer, prope
                 "propertyType": propertyDefinition.type || "text",
                 "propertyName": propertyDefinition.name,
                 "name": formData.name || formData.id,
+                "id": formData.id,
                 "key": key,
                 "line": i+1,
                 "value": "text:"+text,
-                "mode": mode
+                "mode": mode,
+                "path": p.concat("text")
             }), option);
         }
 
@@ -637,10 +648,12 @@ _worker.findInDesigner_actions = function(formData, key, module, designer, prope
                     "propertyType": propertyDefinition.type || "text",
                     "propertyName": propertyDefinition.name+"(actionScript) "+action.text,
                     "name": formData.name || formData.id,
+                    "id": formData.id,
                     "key": key,
                     "value": obj.value,
                     "line": preLine+1,
-                    "mode": mode
+                    "mode": mode,
+                    "path": p.concat("actionScript")
                 }), option);
             }
         }
@@ -662,10 +675,12 @@ _worker.findInDesigner_actions = function(formData, key, module, designer, prope
                     "propertyType": propertyDefinition.type || "text",
                     "propertyName": propertyDefinition.name+"(condition) "+action.text,
                     "name": formData.name || formData.id,
+                    "id": formData.id,
                     "key": key,
                     "value": obj.value,
                     "line": preLine+1,
-                    "mode": mode
+                    "mode": mode,
+                    "path": p.concat("condition")
                 }), option);
             }
         }
@@ -683,6 +698,7 @@ _worker.findInDesigner_filter = function(formData, key, module, designer, proper
                 "propertyType": propertyDefinition.type || "text",
                 "propertyName": propertyDefinition.name,
                 "name": formData.name || formData.id,
+                "id": formData.id,
                 "key": key,
                 "line": i+1,
                 "value": "path:"+text,
@@ -697,6 +713,7 @@ _worker.findInDesigner_filter = function(formData, key, module, designer, proper
                 "propertyType": propertyDefinition.type || "text",
                 "propertyName": propertyDefinition.name,
                 "name": formData.name || formData.id,
+                "id": formData.id,
                 "key": key,
                 "line": i+1,
                 "value": "value:"+value,
@@ -711,6 +728,7 @@ _worker.findInDesigner_filter = function(formData, key, module, designer, proper
                 "propertyType": propertyDefinition.type || "text",
                 "propertyName": propertyDefinition.name,
                 "name": formData.name || formData.id,
+                "id": formData.id,
                 "key": key,
                 "line": i+1,
                 "value": "otherValue:"+otherValue,
@@ -738,6 +756,7 @@ _worker.findInDesigner_filter = function(formData, key, module, designer, proper
                     "propertyType": propertyDefinition.type || "text",
                     "propertyName": propertyDefinition.name+"(code) "+filter.path,
                     "name": formData.name || formData.id,
+                    "id": formData.id,
                     "key": key,
                     "value": obj.value,
                     "line": preLine+1,
@@ -765,6 +784,7 @@ _worker.findInDesigner_filter = function(formData, key, module, designer, proper
                     "propertyType": propertyDefinition.type || "text",
                     "propertyName": propertyDefinition.name+"(valueScript) "+filter.path,
                     "name": formData.name || formData.id,
+                    "id": formData.id,
                     "key": key,
                     "value": obj.value,
                     "line": preLine+1,
@@ -792,6 +812,7 @@ _worker.findInDesigner_serial = function(formData, key, module, designer, proper
                             "propertyType": propertyDefinition.type || "text",
                             "propertyName": propertyDefinition.name+"&nbsp"+serial.key+"&nbsp",
                             "name": formData.name || formData.id,
+                            "id": formData.id,
                             "key": key,
                             "value": serial.value
                         }), option);
@@ -817,6 +838,7 @@ _worker.findInDesigner_serial = function(formData, key, module, designer, proper
                                     "propertyType": propertyDefinition.type || "text",
                                     "propertyName": propertyDefinition.name+"&nbsp"+serial.key+"&nbsp",
                                     "name": formData.name || formData.id,
+                                    "id": formData.id,
                                     "key": key,
                                     "value": obj.value,
                                     "line": preLine+1
@@ -846,6 +868,7 @@ _worker.findInDesigner_projection = function(formData, key, module, designer, pr
                     "propertyType": propertyDefinition.type || "text",
                     "propertyName": propertyDefinition.name,
                     "name": formData.name || formData.id,
+                    "id": formData.id,
                     "key": key,
                     "value": text,
                     "line": i
@@ -872,6 +895,7 @@ _worker.findInDesigner_selectConfig_script = function(formData, key, module, des
                 "propertyType": propertyDefinition.type || "text",
                 "propertyName": propertyName,
                 "name": formData.name || formData.id,
+                "id": formData.id,
                 "key": key,
                 "value": obj.value,
                 "line": preLine+1
@@ -898,6 +922,7 @@ _worker.findInDesigner_selectConfig_events = function(formData, key, module, des
                 "propertyType": propertyDefinition.type || "text",
                 "propertyName": propertyName,
                 "name": formData.name || formData.id,
+                "id": formData.id,
                 "key": key,
                 "evkey": evkey,
                 "value": obj.value,
@@ -951,6 +976,7 @@ _worker.findInDesigner_selectConfig = function(formData, key, module, designer,
                         "propertyType": propertyDefinition.type || "text",
                         "propertyName": propertyName,
                         "name": formData.name || formData.id,
+                        "id": formData.id,
                         "line": i+1,
                         "key": key,
                         "value": text,
@@ -974,6 +1000,7 @@ _worker.findInDesigner_text = function(formData, key, module, designer, property
             "propertyType": propertyDefinition.type || "text",
             "propertyName": propertyDefinition.name,
             "name": formData.name || formData.id,
+            "id": formData.id,
             "key": key,
             "value": text,
             "mode": mode
@@ -1057,6 +1084,7 @@ _worker._getDesignerData = function(designer, module){
             break;
         case "widget":
             action = this.findData.actions.getPortalWidget;
+            break;
         case "view":
             action = this.findData.actions.getQueryView;
             break;
@@ -1124,7 +1152,7 @@ _worker._findProcessPlatformParse_view = function(designer, option, module){
                     Object.keys(viewData).forEach(function(key){
                         if (key!=="where" && key!=="selectList" && key!=="actionbarList" && key!=="pagingList" && key!=="type" && key!=="name" ){
                             var propertyDefinition = this.designerPropertysData.view[key];
-                            _worker.findInDesignerProperty(key, propertyDefinition, viewData, option, module, designer);
+                            _worker.findInDesignerProperty(key, propertyDefinition, viewData, option, module, designer, null, ["data", key]);
                         }
                     });
 
@@ -1133,37 +1161,37 @@ _worker._findProcessPlatformParse_view = function(designer, option, module){
                     Object.keys(viewData.where).forEach(function(key){
                         if ( key!=="type" && key!=="name"){
                             var propertyDefinition = this.designerPropertysData.view[key];
-                            _worker.findInDesignerProperty(key, propertyDefinition, viewData.where, option, module, designer);
+                            _worker.findInDesignerProperty(key, propertyDefinition, viewData.where, option, module, designer, null, ["data", "where", key]);
                         }
                     });
 
-                    viewData.selectList.forEach(function(col){
+                    viewData.selectList.forEach(function(col, i){
                         col.type = "column";
                         col.name =  col.displayName;
                         Object.keys(col).forEach(function(key){
                             if (key!=="name" && key!=="type"){
                                 var propertyDefinition = this.designerPropertysData.view[key];
-                                _worker.findInDesignerProperty(key, propertyDefinition, col, option, module, designer);
+                                _worker.findInDesignerProperty(key, propertyDefinition, col, option, module, designer, null, ["data", "selectList", i, key]);
                             }
                         });
                     });
-                    viewData.actionbarList.forEach(function(item){
+                    viewData.actionbarList.forEach(function(item, i){
                         item.type = "actionbar";
                         item.name =  item.type;
                         Object.keys(item).forEach(function(key){
                             if (key!=="name" && key!=="type"){
                                 var propertyDefinition = this.designerPropertysData.view[key];
-                                _worker.findInDesignerProperty(key, propertyDefinition, item, option, module, designer);
+                                _worker.findInDesignerProperty(key, propertyDefinition, item, option, module, designer, null, ["data", "actionbarList", i, key]);
                             }
                         });
                     });
-                    viewData.pagingList.forEach(function(item){
+                    viewData.pagingList.forEach(function(item, i){
                         item.type = "paging";
                         item.name =  item.type;
                         Object.keys(item).forEach(function(key){
                             if (key!=="name" && key!=="type"){
                                 var propertyDefinition = this.designerPropertysData.view[key];
-                                _worker.findInDesignerProperty(key, propertyDefinition, item, option, module, designer);
+                                _worker.findInDesignerProperty(key, propertyDefinition, item, option, module, designer, null, ["data", "pagingList", i, key]);
                             }
                         });
                     });
@@ -1297,7 +1325,7 @@ _worker._findProcessPlatformParse_process = function(designer, option, module){
                         debugger;
                         var propertyDefinition = this.designerPropertysData.process[pattern.property];
                         processData.type = pattern.elementType;
-                        _worker.findInDesignerProperty(pattern.property, propertyDefinition, processData, option, module, designer);
+                        _worker.findInDesignerProperty(pattern.property, propertyDefinition, processData, option, module, designer, null, [pattern.property]);
                     }else if (pattern.elementType === "route") {
                         for (var i=0; i<processData.routeList.length; i++){
                             if (processData.routeList[i].id===pattern.elementId) break;
@@ -1305,7 +1333,7 @@ _worker._findProcessPlatformParse_process = function(designer, option, module){
                         Object.keys(processData.routeList[i]).forEach(function(key){
                             var propertyDefinition = this.designerPropertysData.process[key];
                             processData.routeList[i].type = pattern.elementType;
-                            _worker.findInDesignerProperty(key, propertyDefinition, processData.routeList[i], option, module, designer);
+                            _worker.findInDesignerProperty(key, propertyDefinition, processData.routeList[i], option, module, designer, null,["routeList", i, key]);
                         }.bind(this));
 
 
@@ -1314,7 +1342,7 @@ _worker._findProcessPlatformParse_process = function(designer, option, module){
                             Object.keys(processData.begin).forEach(function(key){
                                 var propertyDefinition = this.designerPropertysData.process[key];
                                 processData.begin.type = pattern.elementType;
-                                _worker.findInDesignerProperty(key, propertyDefinition, processData.begin, option, module, designer);
+                                _worker.findInDesignerProperty(key, propertyDefinition, processData.begin, option, module, designer, null,["begin", key]);
                             }.bind(this));
                         }else{
                             var arrKey = pattern.elementType+"List";
@@ -1324,7 +1352,7 @@ _worker._findProcessPlatformParse_process = function(designer, option, module){
                             Object.keys(processData[arrKey][i]).forEach(function(key){
                                 var propertyDefinition = this.designerPropertysData.process[key];
                                 processData[arrKey][i].type = pattern.elementType;
-                                _worker.findInDesignerProperty(key, propertyDefinition, processData[arrKey][i], option, module, designer);
+                                _worker.findInDesignerProperty(key, propertyDefinition, processData[arrKey][i], option, module, designer, null,[arrKey, i, key]);
                             }.bind(this));
                         }
                     }

+ 453 - 73
o2web/source/x_component_FindDesigner/Main.js

@@ -443,22 +443,51 @@ MWF.xApplication.FindDesigner.Main = new Class({
 						this.scriptDesignerDataObject[this.editor.pattern.designerId].text = this.editor.getValue();
 					}
 				}else{
+					debugger;
 					if (this.designerDataObject && this.designerDataObject[this.editor.pattern.designerId]){
 						var d = this.designerDataObject[this.editor.pattern.designerId];
-						if (this.editor.pattern.pattern.path){
-							var path = this.editor.pattern.pattern.path;
-							for (var i=0; i<path.length-1; i++){
-								d = d[path[i]];
-							}
-						}
-						if (path[path.length-1]=="styles"){
-							d["recoveryStyles"] = this.editor.getValue();
-						}else if (path[path.length-1]=="inputStyles"){
-							d["recoveryInputStyles"] = this.editor.getValue();
+						switch (this.editor.pattern.pattern.propertyType){
+							case "duty":
+								if (this.editor.pattern.pattern.path){
+									var path = this.editor.pattern.pattern.path;
+									for (var i=0; i<path.length-1; i++){
+										if (path[i]==this.editor.pattern.pattern.key){
+											d[path[i]] = JSON.parse(d[path[i]]);
+											d = d[path[i]];
+										}else{
+											d = d[path[i]];
+										}
+									}
+									d[path[path.length-1]] = this.editor.getValue();
+
+									d = this.designerDataObject[this.editor.pattern.designerId];
+									for (var i=0; i<path.length-1; i++){
+										if (path[i]==this.editor.pattern.pattern.key){
+											d[path[i]] = JSON.stringify(d[path[i]]);
+											break;
+										}else{
+											d = d[path[i]];
+										}
+									}
+								}
+								break;
+							default:
+								if (this.editor.getValue){
+									if (this.editor.pattern.pattern.path){
+										var path = this.editor.pattern.pattern.path;
+										for (var i=0; i<path.length-1; i++){
+											d = d[path[i]];
+										}
+									}
+									if (path[path.length-1]=="styles"){
+										d["recoveryStyles"] = this.editor.getValue();
+									}else if (path[path.length-1]=="inputStyles"){
+										d["recoveryInputStyles"] = this.editor.getValue();
+									}
+									d[path[path.length-1]] = this.editor.getValue();
+								}
 						}
-						d[path[path.length-1]] = this.editor.getValue();
 
-						//d[path[path.length-1]] = this.editor.getValue();
 					}
 				}
 				this.editor.destroy();
@@ -554,35 +583,36 @@ MWF.xApplication.FindDesigner.Main = new Class({
 			case "widget":
 			case "view":
 			case "statement":
-				this.createFormPatternNode(data, designerNode, regexp, treeNode);
-				break;
 			case "process":
-				this.createProcessPatternNode(data, designerNode, regexp, treeNode);
+				this.createFormPatternNode(data, designerNode, regexp, treeNode);
 				break;
+			// case "process":
+			// 	this.createProcessPatternNode(data, designerNode, regexp, treeNode);
+			// 	break;
 
 		}
 	},
 
-	createProcessPatternNode: function(data, node, regexp){
-		var text = this.lp.elementPattern.replace("{element}", "&lt;"+data.pattern.type+"&gt;"+data.pattern.name).
-		replace("{property}", "{"+data.pattern.key+"}"+data.pattern.propertyName);
-		text = "<span style='color: #666666'>"+text+"</span>&nbsp;&nbsp;"
-
-		if (data.pattern.line){
-			if (data.pattern.evkey){
-				text += "<b>["+data.pattern.evkey+"]</b>&nbsp;"+((data.pattern.line) ? data.pattern.line+"&nbsp;&nbsp;" : "" )+this.getPatternValue(data.pattern.value, regexp);
-			}else{
-				text += ((data.pattern.line) ? data.pattern.line+"&nbsp;&nbsp;" : "" )+this.getPatternValue(data.pattern.value, regexp);
-			}
-		}else{
-			text += this.getPatternValue(data.pattern.value, regexp);
-		}
-		if (data.pattern.mode){
-			text = "<b>["+data.pattern.mode+"]</b>&nbsp;"+text;
-		}
-
-		patternNode = this.createResultPatternItem(text, "", node, "icon_"+data.pattern.propertyType+".png");
-	},
+	// createProcessPatternNode: function(data, node, regexp){
+	// 	var text = this.lp.elementPattern.replace("{element}", "&lt;"+data.pattern.type+"&gt;"+data.pattern.name).
+	// 	replace("{property}", "{"+data.pattern.key+"}"+data.pattern.propertyName);
+	// 	text = "<span style='color: #666666'>"+text+"</span>&nbsp;&nbsp;"
+	//
+	// 	if (data.pattern.line){
+	// 		if (data.pattern.evkey){
+	// 			text += "<b>["+data.pattern.evkey+"]</b>&nbsp;"+((data.pattern.line) ? data.pattern.line+"&nbsp;&nbsp;" : "" )+this.getPatternValue(data.pattern.value, regexp);
+	// 		}else{
+	// 			text += ((data.pattern.line) ? data.pattern.line+"&nbsp;&nbsp;" : "" )+this.getPatternValue(data.pattern.value, regexp);
+	// 		}
+	// 	}else{
+	// 		text += this.getPatternValue(data.pattern.value, regexp);
+	// 	}
+	// 	if (data.pattern.mode){
+	// 		text = "<b>["+data.pattern.mode+"]</b>&nbsp;"+text;
+	// 	}
+	//
+	// 	patternNode = this.createResultPatternItem(text, "", node, "icon_"+data.pattern.propertyType+".png");
+	// },
 
 	getPatternValueText: function(data, regexp){
 		var text = "";
@@ -674,15 +704,58 @@ MWF.xApplication.FindDesigner.Main = new Class({
 						this.scriptDesignerDataObject[this.editor.pattern.designerId].text = this.editor.getValue();
 					}
 				}else{
+
 					if (this.designerDataObject && this.designerDataObject[this.editor.pattern.designerId]){
 						var d = this.designerDataObject[this.editor.pattern.designerId];
-						if (this.editor.pattern.pattern.path){
-							var path = this.editor.pattern.pattern.path;
-							for (var i=0; i<path.length-1; i++){
-								d = d[path[i]];
-							}
+						switch (this.editor.pattern.pattern.propertyType){
+							case "duty":
+								if (this.editor.pattern.pattern.path){
+									var path = this.editor.pattern.pattern.path;
+									for (var i=0; i<path.length-1; i++){
+										if (path[i]==this.editor.pattern.pattern.key){
+											d[path[i]] = JSON.parse(d[path[i]]);
+											d = d[path[i]];
+										}else{
+											d = d[path[i]];
+										}
+									}
+									d[path[path.length-1]] = this.editor.getValue();
+
+									d = this.designerDataObject[this.editor.pattern.designerId];
+									for (var i=0; i<path.length-1; i++){
+										if (path[i]==this.editor.pattern.pattern.key){
+											d[path[i]] = JSON.stringify(d[path[i]]);
+											break;
+										}else{
+											d = d[path[i]];
+										}
+									}
+								}
+								break;
+							default:
+								if (this.editor.getValue){
+									if (this.editor.pattern.pattern.path){
+										var path = this.editor.pattern.pattern.path;
+										for (var i=0; i<path.length-1; i++){
+											d = d[path[i]];
+										}
+									}
+									if (path[path.length-1]=="styles"){
+										d["recoveryStyles"] = this.editor.getValue();
+									}else if (path[path.length-1]=="inputStyles"){
+										d["recoveryInputStyles"] = this.editor.getValue();
+									}
+									d[path[path.length-1]] = this.editor.getValue();
+								}
 						}
-						d[path[path.length-1]] = this.editor.getValue();
+
+						// if (this.editor.pattern.pattern.path){
+						// 	var path = this.editor.pattern.pattern.path;
+						// 	for (var i=0; i<path.length-1; i++){
+						// 		d = d[path[i]];
+						// 	}
+						// }
+						// d[path[path.length-1]] = this.editor.getValue();
 					}
 				}
 				this.editor.destroy();
@@ -707,8 +780,26 @@ MWF.xApplication.FindDesigner.Main = new Class({
 					//m = o2.Actions.load("x_cms_assemble_control").ScriptAction.get;
 					break;
 				case "portal":
-					//m = o2.Actions.load("x_portal_assemble_designer").ScriptAction.get;
+					if (node.pattern.designerType==="page"){
+						m = o2.Actions.load("x_portal_assemble_designer").PageAction.get;
+						break;
+					}
+					if (node.pattern.designerType==="widget"){
+						m = o2.Actions.load("x_portal_assemble_designer").WidgetAction.get;
+						break;
+					}
+					break;
+				case "query":
+					if (node.pattern.designerType==="view"){
+						m = o2.Actions.load("x_query_assemble_designer").ViewAction.get;
+						break;
+					}
+					if (node.pattern.designerType==="statement"){
+						m = o2.Actions.load("x_portal_assemble_designer").StatementAction.get;
+						break;
+					}
 					break;
+
 				case "service":
 					//m = (node.pattern.appId==="invoke") ? o2.Actions.load("x_program_center").InvokeAction.get : o2.Actions.load("x_program_center").AgentAction.get;
 					break;
@@ -728,6 +819,9 @@ MWF.xApplication.FindDesigner.Main = new Class({
 			case "events":
 				this.reLocationEditor(pattern);
 				break;
+			case "duty":
+				if (pattern.pattern.valueKey=="code") this.reLocationEditor(pattern);
+				break;
 			case "map":
 				this.reLocationMapEditor(pattern);
 				break;
@@ -762,10 +856,19 @@ MWF.xApplication.FindDesigner.Main = new Class({
 		}else{
 			if (m) m(node.pattern.designerId).then(function(json){
 				if (json.data){
-					var data = json.data;
-					var pcData = JSON.decode(MWF.decodeJsonString(json.data.data));
-					var mobileData = (json.data.mobileData) ? JSON.decode(MWF.decodeJsonString(json.data.mobileData)) : null;
-					var d = {"data": pcData, "mobileData": mobileData};
+					var d = json.data;
+					if (node.pattern.designerType=="form" || node.pattern.designerType=="page" || node.pattern.designerType=="widget"){
+						var pcData = JSON.decode(MWF.decodeJsonString(json.data.data));
+						var mobileData = (json.data.mobileData) ? JSON.decode(MWF.decodeJsonString(json.data.mobileData)) : null;
+						d = {"data": pcData, "mobileData": mobileData};
+					}
+					if (node.pattern.designerType=="view"){
+						var dataJson = JSON.decode(json.data.data);
+						d.application = d.query
+						d.applicationName = d.queryName;
+						d.data = dataJson;
+					}
+
 					if (!this.designerDataObject) this.designerDataObject = {};
 					this.designerDataObject[node.pattern.designerId] = d;
 					this.openPatternFormEditor(d, node);
@@ -827,7 +930,7 @@ MWF.xApplication.FindDesigner.Main = new Class({
 			"<div style='height: 40px; line-height: 40px; font-size: 18px'>"+this.lp.findInfor+"</div>" +
 			"<div style='padding-left: 10px; padding: 30px; border: 1px solid #eeeeee; background-color: #f9f9f9; border-radius: 5px; float: left'>" +
 			"<div style='padding-left: 20px; height: 30px; line-height: 30px'><b>"+this.lp[pattern.module]+":&nbsp;<span style='color: #4A90E2'>"+pattern.appName+"</span></b></div>" +
-			"<div style='padding-left: 40px; height: 30px; line-height: 30px'><b>["+pattern.pattern.mode+this.lp[pattern.designerType]+"]</b>&nbsp;"+pattern.designerName+"</div>" +
+			"<div style='padding-left: 40px; height: 30px; line-height: 30px'><b>["+(pattern.pattern.mode || "")+this.lp[pattern.designerType]+"]</b>&nbsp;"+pattern.designerName+"</div>" +
 			"<div style='padding-left: 60px; height: 30px; line-height: 30px'><b>"+this.lp.element+":</b>&nbsp;"+"&lt;"+pattern.pattern.type+"&gt;"+pattern.pattern.name+"</div>" +
 			"<div style='padding-left: 80px; height: 30px; line-height: 30px'><div style='float: left'><b>"+this.lp.property+":</b>&nbsp;"+pattern.pattern.propertyName+"{"+pattern.pattern.key+"}:&nbsp;"+"</div>" +
 			"<div style='margin-left: 10px; float:left; height: 30px; padding: 0px 10px; line-height: 30px; border-radius: 5px; background-color: #eeeeee;'>"+this.getPatternValueText(pattern, this.getFindRegExp())+"</div></div></div>" +
@@ -886,6 +989,7 @@ MWF.xApplication.FindDesigner.Main = new Class({
 		// }
 	 },
 	openPatternFormEditor_duty: function(data, node){
+		debugger;
 		if (node.pattern.pattern.valueKey=="name"){
 			this.openPatternFormEditor_default(data, node)
 		}else {
@@ -900,7 +1004,7 @@ MWF.xApplication.FindDesigner.Main = new Class({
 					this.editor = new o2.widget.JavascriptEditor(this.previewContentNode, {
 						"option": {
 							"value": code,
-							"mode": (!node.pattern.pattern.propertyType || node.pattern.pattern.propertyType==="script" || node.pattern.pattern.propertyType==="events") ? "javascript" : node.pattern.pattern.propertyType
+							"mode": "javascript"
 						}
 					});
 					this.editor.pattern = node.pattern;
@@ -1209,6 +1313,16 @@ debugger;
 					flagNode = removeNodes[0];
 					this.reFindInFormDesigner_script(flagNode, pattern);
 					break;
+				case "duty":
+					if (removeNodes.length>1){
+						for (var i=1; i<removeNodes.length; i++){
+							removeNodes[i].destroy();
+							this.subResultCount(this.editor.pattern);
+						}
+					}
+					flagNode = removeNodes[0];
+					this.reFindInFormDesigner_duty(flagNode, pattern);
+					break;
 				case "map":
 					this.reFindInFormDesigner_map(removeNodes, pattern);
 					break;
@@ -1220,6 +1334,41 @@ debugger;
 		}
 		this.editor.isRefind = false;
 	},
+	reFindInFormDesigner_duty: function(removeNodes, pattern){
+		var code = this.editor.getValue();
+		if (code){
+			var regex = this.getFilterOptionRegex(this.filterOption)
+			regex.lastIndex = 0;
+			var len = code.length;
+
+			var preLine = 0;
+			var preIndex = 0;
+			var result;
+			while ((result = regex.exec(code)) !== null){
+				var obj = this.findScriptLineValue(result, code, preLine, preIndex, len, regex);
+				preLine = obj.preLine;
+				preIndex = obj.preIndex;
+
+				this.showFindResult(this._createFindMessageReplyData( this.editor.pattern.module, this.editor.pattern, "", {
+					"type": pattern.pattern.type,
+					"propertyType": pattern.pattern.propertyType,
+					"propertyName": pattern.pattern.propertyName,
+					"name": pattern.pattern.name,
+					"id": pattern.pattern.id,
+					"key": pattern.pattern.key,
+					"evkey": pattern.pattern.evkey,
+					"idx": pattern.pattern.idx,
+					"valueKey": pattern.pattern.valueKey,
+					"value": obj.value,
+					"line": preLine+1,
+					"mode": pattern.pattern.mode,
+					"path": pattern.pattern.path
+				}), this.filterOption, flagNode);
+			}
+
+		}
+		if (flagNode) flagNode.destroy();
+	},
 	reFindInFormDesigner_array: function(removeNodes, pattern){
 		var arr = this.editor.getValue();
 		if (arr){
@@ -1253,6 +1402,7 @@ debugger;
 							"propertyType": pattern.pattern.propertyType,
 							"propertyName": pattern.pattern.propertyName,
 							"name": pattern.pattern.name,
+							"id": pattern.pattern.id,
 							"line": i+1,
 							"key": pattern.pattern.key,
 							"value": text,
@@ -1298,6 +1448,7 @@ debugger;
 									"propertyType": pattern.pattern.propertyType,
 									"propertyName": pattern.pattern.propertyName,
 									"name": pattern.pattern.name,
+									"id": pattern.pattern.id,
 									"key": pattern.pattern.key,
 									"value": evkey + ": " + text,
 									"mode": pattern.pattern.mode,
@@ -1326,11 +1477,13 @@ debugger;
 				preLine = obj.preLine;
 				preIndex = obj.preIndex;
 
+				var pattern =  this.editor.pattern;
 				this.showFindResult(this._createFindMessageReplyData( this.editor.pattern.module, this.editor.pattern, "", {
 					"type": pattern.pattern.type,
 					"propertyType": pattern.pattern.propertyType,
 					"propertyName": pattern.pattern.propertyName,
 					"name": pattern.pattern.name,
+					"id": pattern.pattern.id,
 					"key": pattern.pattern.key,
 					"evkey": pattern.pattern.evkey,
 					"value": obj.value,
@@ -1405,6 +1558,8 @@ debugger;
 
 					break;
 				case "form":
+				case "page":
+				case "widget":
 					switch (pattern.module){
 						case "processPlatform":
 							var action = MWF.Actions.get("x_processplatform_assemble_designer");
@@ -1414,24 +1569,54 @@ debugger;
 							var action = MWF.Actions.get("x_cms_assemble_control");
 							m = action.saveForm.bind(action);
 							break;
+						case "portal":
+							var action = MWF.Actions.get("x_portal_assemble_designer");
+							m = (pattern.designerType=="page") ? action.savePage.bind(action) : action.saveWidget.bind(action);
+							break;
 					}
 					if (this.designerDataObject && this.designerDataObject[this.editor.pattern.designerId]){
 						var d = this.designerDataObject[this.editor.pattern.designerId];
-						if (this.editor.pattern.pattern.path){
-							var path = this.editor.pattern.pattern.path;
-
-							for (var i=0; i<path.length-1; i++){
-								d = d[path[i]];
-							}
-						}
-
-						var v = this.editor.getValue();
-						if (path[path.length-1]=="styles"){
-							d["recoveryStyles"] = v;
-						}else if (path[path.length-1]=="inputStyles"){
-							d["recoveryInputStyles"] = v;
+						switch (this.editor.pattern.pattern.propertyType){
+							case "duty":
+								if (this.editor.pattern.pattern.path){
+									var path = this.editor.pattern.pattern.path;
+									for (var i=0; i<path.length-1; i++){
+										if (path[i]==this.editor.pattern.pattern.key){
+											d[path[i]] = JSON.parse(d[path[i]]);
+											d = d[path[i]];
+										}else{
+											d = d[path[i]];
+										}
+									}
+									d[path[path.length-1]] = this.editor.getValue();
+
+									d = this.designerDataObject[this.editor.pattern.designerId];
+									for (var i=0; i<path.length-1; i++){
+										if (path[i]==this.editor.pattern.pattern.key){
+											d[path[i]] = JSON.stringify(d[path[i]]);
+											break;
+										}else{
+											d = d[path[i]];
+										}
+									}
+								}
+								break;
+							default:
+								if (this.editor.getValue){
+									if (this.editor.pattern.pattern.path){
+										var path = this.editor.pattern.pattern.path;
+										for (var i=0; i<path.length-1; i++){
+											d = d[path[i]];
+										}
+									}
+									if (path[path.length-1]=="styles"){
+										d["recoveryStyles"] = this.editor.getValue();
+									}else if (path[path.length-1]=="inputStyles"){
+										d["recoveryInputStyles"] = this.editor.getValue();
+									}
+									d[path[path.length-1]] = this.editor.getValue();
+								}
 						}
-						d[path[path.length-1]] = v;
 
 					}
 
@@ -1441,6 +1626,47 @@ debugger;
 
 					break;
 				case "process":
+					var action = MWF.Actions.get("x_processplatform_assemble_designer");
+					m = action.saveProcess.bind(action);
+
+					if (this.designerDataObject && this.designerDataObject[this.editor.pattern.designerId]) {
+						var d = this.designerDataObject[this.editor.pattern.designerId];
+						if (this.editor.getValue){
+							if (this.editor.pattern.pattern.path){
+								var path = this.editor.pattern.pattern.path;
+								for (var i=0; i<path.length-1; i++){
+									d = d[path[i]];
+								}
+							}
+							d[path[path.length-1]] = this.editor.getValue();
+						}
+					}
+
+					if (m) m(data, function(){
+						this.notice(this.lp.notice.save_success, "success", this.previewContentNode, {"x": "left", "y": "bottom"});
+					}.bind(this), function(){});
+
+					break;
+				case "view":
+					var action = MWF.Actions.get("x_query_assemble_designer");
+					m = action.saveView.bind(action);
+
+					if (this.designerDataObject && this.designerDataObject[this.editor.pattern.designerId]) {
+						var d = this.designerDataObject[this.editor.pattern.designerId];
+						if (this.editor.getValue){
+							if (this.editor.pattern.pattern.path){
+								var path = this.editor.pattern.pattern.path;
+								for (var i=0; i<path.length-1; i++){
+									d = d[path[i]];
+								}
+							}
+							d[path[path.length-1]] = this.editor.getValue();
+						}
+					}
+
+					if (m) m(data, function(){
+						this.notice(this.lp.notice.save_success, "success", this.previewContentNode, {"x": "left", "y": "bottom"});
+					}.bind(this), function(){});
 
 					break;
 			}
@@ -1504,21 +1730,75 @@ debugger;
 								"style": layout.desktop.formDesignerStyle || "default",
 								"appId": "process.FormDesigner"+pattern.designerId,
 								"id": pattern.designerId,
-								"onPostLoadApplicationCompleted": function(){
-									debugger;
-									_self.checkSelectDesignerElement(this, pattern, 0);
+								"onPostFormLoad": function(){
+									_self.checkSelectDesignerElement_form(this, pattern, 0);
 								}
 							};
 							layout.openApplication(null, "process.FormDesigner", options);
 							break;
+						case "cms":
+							var _self = this;
+							var options = {
+								"style": layout.desktop.formDesignerStyle || "default",
+								"appId": "cms.FormDesigner"+pattern.designerId,
+								"id": pattern.designerId,
+								"onPostFormLoad": function(){
+									_self.checkSelectDesignerElement_form(this, pattern, 0);
+								}
+							};
+							layout.openApplication(null, "cms.FormDesigner", options);
+							break;
 					}
 					//this.createFormPatternNode(data, designerNode, regexp);
 					break;
 				case "process":
-
+					var _self = this;
+					var options = {
+						"appId": "process.ProcessDesigner"+pattern.designerId,
+						"id": pattern.designerId,
+						"onPostProcessLoad": function(){
+							_self.checkSelectDesignerElement_process(this, pattern, 0);
+						}
+					};
+					layout.openApplication(null, "process.ProcessDesigner", options);
+					break;
+				case "page":
+					var _self = this;
+					var options = {
+						"appId": "portal.PageDesigner"+pattern.designerId,
+						"id": pattern.designerId,
+						"onPostPageLoad": function(){
+							_self.checkSelectDesignerElement_form(this, pattern, 0);
+						}
+					};
+					layout.openApplication(null, "portal.PageDesigner", options);
+					break;
+				case "widget":
+					var _self = this;
+					var options = {
+						"appId": "portal.WidgetDesigner"+pattern.designerId,
+						"id": pattern.designerId,
+						"onPostWidgetLoad": function(){
+							_self.checkSelectDesignerElement_form(this, pattern, 0);
+						}
+					};
+					layout.openApplication(null, "portal.WidgetDesigner", options);
+					break;
+				case "view":
+					debugger;
+					var _self = this;
+					var options = {
+						"appId": "query.ViewDesigner"+pattern.designerId,
+						"id": pattern.designerId,
+						"application": pattern.appId,
+						"onPostViewLoad": function(){
+							_self.checkSelectDesignerElement_view(this, pattern, 0);
+						}
+					};
+					layout.openApplication(null, "query.ViewDesigner", options);
 					break;
 			}
-			window.setTimeout(function(){
+			if (this.editor.getValue) window.setTimeout(function(){
 				if (this.scriptDesignerDataObject && this.scriptDesignerDataObject[this.editor.pattern.designerId]){
 					this.scriptDesignerDataObject[this.editor.pattern.designerId] = null;
 					delete this.scriptDesignerDataObject[this.editor.pattern.designerId];
@@ -1530,24 +1810,124 @@ debugger;
 			}.bind(this), 100);
 		}
 	},
-	checkSelectDesignerElement: function(app, pattern, idx){
+	checkSelectDesignerElement_view: function(app, pattern, idx){
 		var flag = false;
-		if (app.pcForm){
+		var view = app.view;
+		if (view){
+			var type = pattern.pattern.type.toLowerCase();
+			switch (type){
+				case "view":
+					flag = true;
+					break;
+				case "column":
+					for (var i=0; i<view.items.length; i++){
+						var m = view.items[i];
+						if (m.json.id==pattern.pattern.id || m.json.name==pattern.pattern.id){
+							window.setTimeout(function(){m.selected()}, 500);
+							flag = true;
+							break;
+						}
+					}
+					break;
+				case "actionbar":
+					for (var i=0; i<view.actionbarList.length; i++){
+						var m = view.actionbarList[i];
+						if (m.json.id==pattern.pattern.id || m.json.name==pattern.pattern.id){
+							window.setTimeout(function(){m.selected()}, 500);
+							flag = true;
+							break;
+						}
+					}
+					break;
+				case "paging":
+					for (var i=0; i<view.pagingList.length; i++){
+						var m = view.pagingList[i];
+						if (m.json.id==pattern.pattern.id || m.json.name==pattern.pattern.id){
+							window.setTimeout(function(){m.selected()}, 500);
+							flag = true;
+							break;
+						}
+					}
+					break;
+			}
+		}
+
+		if (!flag){
+			idx++;
+			if (idx<10) window.setTimeout(function(){
+				this.checkSelectDesignerElement_view(app, pattern, idx);
+			}.bind(this), 300);
+		}
+	},
+	checkSelectDesignerElement_process: function(app, pattern, idx){
+		var flag = false;
+		var process = app.process;
+		if (process){
+			var type = pattern.pattern.type.toLowerCase();
+			switch (type){
+				case "process":
+					flag = true;
+					break;
+				case "route":
+					if (process.routes && process.routes[pattern.pattern.id]){
+						process.routes[pattern.pattern.id].selected();
+						flag = true;
+					}
+					break;
+				case "begin":
+					if (process.begin){
+						process.begin.selected();
+						flag = true;
+					}
+					break;
+				default:
+					if (process[type+"s"] && process[type+"s"][pattern.pattern.id]){
+						process[type+"s"][pattern.pattern.id].selected();
+						flag = true;
+					}
+			}
+		}
+
+		if (!flag){
+			idx++;
+			if (idx<10) window.setTimeout(function(){
+				this.checkSelectDesignerElement_process(app, pattern, idx);
+			}.bind(this), 300);
+		}
+	},
+	checkSelectDesignerElement_form: function(app, pattern, idx){
+		var flag = false;
+		var form;
+		debugger;
+		try{
+			if (pattern.pattern.mode=="PC"){
+				app.changeDesignerModeToPC();
+				form = app.pcForm || app.pcPage;
+			}else{
+				app.changeDesignerModeToMobile();
+				form = app.mobileForm || app.mobilePage;
+			}
+		}catch(e){}
+
+		if (form && pattern.pattern.mode=="PC"){
 			if (pattern.pattern.type.toLowerCase()!="form"){
-				for (var i=0; i<app.pcForm.moduleList.length; i++){
-					var m = app.pcForm.moduleList[i];
+				for (var i=0; i<form.moduleList.length; i++){
+					var m = form.moduleList[i];
 					if (m.json.id==pattern.pattern.name || m.json.name==pattern.pattern.name){
-						m.selected();
+						window.setTimeout(function(){m.selected()}, 500);
 						flag = true;
 						break;
 					}
 				}
+			}else{
+				flag = true;
 			}
 		}
+
 		if (!flag){
 			idx++;
 			if (idx<10) window.setTimeout(function(){
-				this.checkSelectDesignerElement(app, pattern, idx);
+				this.checkSelectDesignerElement_form(app, pattern, idx);
 			}.bind(this), 300);
 		}
 	},

+ 5 - 1
o2web/source/x_component_portal_PageDesigner/Main.js

@@ -1258,7 +1258,11 @@ MWF.xApplication.portal.PageDesigner.Main = new Class({
 	//loadPage------------------------------------------
 	loadPage: function(){
 		this.getPageData(function(){
-			this.pcPage = new MWF.PCPage(this, this.designNode);
+			this.pcPage = new MWF.PCPage(this, this.designNode, {
+			    "onPostLoad": function(){
+                    this.fireEvent("postPageLoad");
+                }.bind(this)
+            });
 			this.pcPage.load(this.pageData);
 
             this.page = this.pcPage;

+ 2 - 0
o2web/source/x_component_portal_PageDesigner/Module/Page.js

@@ -134,6 +134,8 @@ MWF.xApplication.portal.PageDesigner.Module.Page = MWF.PCPage = new Class({
             this.designer.addEvent("queryClose", function(){
                 if (this.autoSaveTimerID) window.clearInterval(this.autoSaveTimerID);
             }.bind(this));
+
+            this.fireEvent("postLoad");
         }.bind(this));
 	},
     removeStyles: function(from, to){

+ 1 - 0
o2web/source/x_component_portal_PortalManager/WidgetExplorer.js

@@ -221,6 +221,7 @@ MWF.xApplication.portal.PortalManager.WidgetExplorer.Widget= new Class({
 	_open: function(e){
         var _self = this;
         var options = {
+            "appId": "portal.WidgetDesigner"+_self.data.id,
             "onQueryLoad": function(){
                 this.actions = _self.explorer.actions;
                 this.category = _self;

+ 7 - 3
o2web/source/x_component_portal_WidgetDesigner/Main.js

@@ -33,17 +33,21 @@ MWF.xApplication.portal.WidgetDesigner.Main = new Class({
     getPageTemplate: function (templateId, callback) {
         this.actions.getWidgetTemplate(templateId, function (page) {
             if (callback) callback(page);
-        }.bind(this))
+        }.bind(this));
     },
     getPage: function (id, callback) {
         this.actions.getWidget(id, function (page) {
             if (callback) callback(page);
-        }.bind(this))
+        }.bind(this));
     },
     loadPage: function () {
         this.getPageData(function () {
             this.pcPage = new MWF.PCPage(this, this.designNode, {
-                "propertyPath": "../x_component_portal_WidgetDesigner/Module/Page/page.html"
+                "propertyPath": "../x_component_portal_WidgetDesigner/Module/Page/page.html",
+                "onPostLoad": function(){
+                    this.fireEvent("postWidgetLoad");
+                }.bind(this)
+
             });
             this.pcPage.load(this.pageData);
 

+ 1 - 1
o2web/source/x_component_process_FormDesigner/Module/Form.js

@@ -160,7 +160,7 @@ MWF.xApplication.process.FormDesigner.Module.Form = MWF.FCForm = new Class({
 			if (this.autoSaveTimerID) window.clearInterval(this.autoSaveTimerID);
 		}.bind(this));
 
-		this.designer.fireEvent("postLoadApplicationCompleted");
+		this.designer.fireEvent("postFormLoad");
 	},
     removeStyles: function(from, to){
         if (this.json[to]){

+ 6 - 1
o2web/source/x_component_process_ProcessDesigner/Main.js

@@ -716,7 +716,12 @@ MWF.xApplication.process.ProcessDesigner.Main = new Class({
             this.paper.container = this.paperNode;
 
             MWF.xDesktop.requireApp("process.ProcessDesigner", "Process", function(){
-                this.process = new MWF.APPPD.Process(this.paper, this.processData, this, {"style":"flat"});
+                this.process = new MWF.APPPD.Process(this.paper, this.processData, this, {
+                    "style":"flat",
+                    "onPostLoad": function(){
+                        this.fireEvent("postProcessLoad");
+                    }.bind(this)
+                });
                 this.process.load();
             }.bind(this));
         }.bind(this));

+ 6 - 2
o2web/source/x_component_query_ViewDesigner/Main.js

@@ -183,7 +183,7 @@ MWF.xApplication.query.ViewDesigner.Main = new Class({
 	},
     getApplication:function(callback){
         if (!this.application){
-            this.actions.getApplication(this.options.application, function(json){
+            this.actions.getApplication((this.options.application), function(json){
                 this.application = {"name": json.data.name, "id": json.data.id};
                 if (callback) callback();
             }.bind(this));
@@ -703,7 +703,11 @@ MWF.xApplication.query.ViewDesigner.Main = new Class({
             //if (this.options.readMode){
             //    this.view = new MWF.xApplication.process.DictionaryDesigner.DictionaryReader(this, ddata);
             //}else{
-                this.view = new MWF.xApplication.query.ViewDesigner.View(this, vdata);
+                this.view = new MWF.xApplication.query.ViewDesigner.View(this, vdata, {
+                    "onPostLoad": function(){
+                        this.fireEvent("onPostViewLoad");
+                    }.bind(this)
+                });
             //}
 
 			this.view.load();

+ 3 - 0
o2web/source/x_component_query_ViewDesigner/View.js

@@ -137,6 +137,9 @@ MWF.xApplication.query.ViewDesigner.View = new Class({
             this.setViewWidth();
 
             this.designer.addEvent("resize", this.setViewWidth.bind(this));
+
+            this.fireEvent("postLoad");
+
         }.bind(this))
     },
     setEvent: function(){