فهرست منبع

Merge branch 'develop' of https://git.o2oa.net/o2oa/o2oa into feature/entityDump

Zhou Rui 5 سال پیش
والد
کامیت
b7e6cdf64b
49فایلهای تغییر یافته به همراه317 افزوده شده و 133 حذف شده
  1. 57 0
      jenkinsLinuxBuildfile
  2. 3 1
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/appinfo/ActionListAllManageableAppType.java
  3. 4 4
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/categoryinfo/CategoryInfoAction.java
  4. 1 1
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/fileinfo/ActionGet.java
  5. 1 1
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/form/ActionGet.java
  6. 1 1
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/log/ActionGet.java
  7. 1 1
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/view/ActionGet.java
  8. 1 1
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/viewcategory/ActionGet.java
  9. 1 1
      o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/viewfieldconfig/ActionGet.java
  10. 8 1
      o2server/x_console/src/main/java/com/x/server/console/NodeAgent.java
  11. 0 3
      o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/query/ActionListAll.java
  12. 5 1
      o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/Plan.java
  13. 2 1
      o2web/package.json
  14. 1 0
      o2web/source/o2_core/o2/lp/zh-cn.js
  15. 7 0
      o2web/source/o2_core/o2/o2.more.js
  16. 1 1
      o2web/source/o2_core/o2/widget/$Menu/flatStyle/css.wcss
  17. 2 1
      o2web/source/o2_core/o2/widget/ImageClipper.js
  18. 17 10
      o2web/source/o2_core/o2/widget/ScrollBar.js
  19. 4 2
      o2web/source/o2_core/o2/xDesktop/$Default/blue/style-pc.css
  20. 3 1
      o2web/source/o2_core/o2/xDesktop/$Default/cyan/style-pc.css
  21. 3 1
      o2web/source/o2_core/o2/xDesktop/$Default/darkgreen/style-pc.css
  22. 3 1
      o2web/source/o2_core/o2/xDesktop/$Default/gray/style-pc.css
  23. 3 1
      o2web/source/o2_core/o2/xDesktop/$Default/green/style-pc.css
  24. 3 1
      o2web/source/o2_core/o2/xDesktop/$Default/navy/style-pc.css
  25. 3 1
      o2web/source/o2_core/o2/xDesktop/$Default/orange/style-pc.css
  26. 3 1
      o2web/source/o2_core/o2/xDesktop/$Default/purple/style-pc.css
  27. 3 1
      o2web/source/o2_core/o2/xDesktop/$Default/red/style-pc.css
  28. 3 1
      o2web/source/o2_core/o2/xDesktop/$Default/tan/style-pc.css
  29. 32 4
      o2web/source/o2_core/o2/xDesktop/Default.js
  30. 11 0
      o2web/source/o2_core/o2/xDesktop/Menu.js
  31. 7 8
      o2web/source/x_component_Homepage/$Main/default/style.css
  32. 1 0
      o2web/source/x_component_Homepage/$Main/default/taskContent.html
  33. 4 0
      o2web/source/x_component_Homepage/InforContent.js
  34. 9 0
      o2web/source/x_component_Homepage/TaskContent.js
  35. 6 0
      o2web/source/x_component_cms_ColumnManager/FormExplorer.js
  36. 1 0
      o2web/source/x_component_cms_Document/Main.js
  37. 1 0
      o2web/source/x_component_cms_FormDesigner/Main.js
  38. 5 2
      o2web/source/x_component_cms_Index/Newer.js
  39. 9 10
      o2web/source/x_component_cms_Module/Main.js
  40. 2 0
      o2web/source/x_component_cms_Xform/Form.js
  41. 1 0
      o2web/source/x_component_portal_PortalExplorer/Main.js
  42. 29 5
      o2web/source/x_component_process_ApplicationExplorer/Main.js
  43. 1 1
      o2web/source/x_component_process_FormDesigner/Module/Form/form.html
  44. 1 0
      o2web/source/x_component_process_FormDesigner/Property.js
  45. 14 0
      o2web/source/x_component_process_FormDesigner/widget/ActionsEditor.js
  46. 21 20
      o2web/source/x_component_process_Xform/Log.js
  47. 2 0
      o2web/source/x_component_query_QueryExplorer/Main.js
  48. 0 27
      o2web/source/x_desktop/js/base.js
  49. 16 16
      package.json

+ 57 - 0
jenkinsLinuxBuildfile

@@ -0,0 +1,57 @@
+pipeline {
+    agent {label '132'}
+    stages {
+		stage('getEnv') {
+            steps {
+                echo 'env.sshServer='+env.sshServer
+				echo 'env.preName='+env.preName
+				echo 'env.isallTag='+env.isallTag
+				echo 'env.qqGroupid='+env.qqGroupid
+				echo 'env.qqUrl='+env.qqUrl
+				sh  "cat /dev/null > gitTag.txt "
+                sh  "git describe --tags  >> gitTag.txt"
+                script {
+            	    json_file = "gitTag.txt"
+	                file_contents = readFile json_file
+
+	                if(file_contents.trim().indexOf("-")!=-1&&env.isallTag.trim().indexOf("true")==-1){
+						env.tag =file_contents.trim().substring(0,file_contents.trim().indexOf("-"))
+					}else{
+						env.tag =file_contents.trim();
+					}
+                }
+                echo 'env.tag='+env.tag
+            }
+        }
+
+        stage('initAndBuildAndSendzip') {
+            steps {
+				script {
+					env.buildResult='FAILURE'
+				}
+				catchError(buildResult: 'SUCCESS'){
+					sh 'npm install'
+					sh 'npm run build_ci'
+					sh 'ant -DVERSION='+env.tag+'   -DpreName='+env.preName
+					sshPublisher(publishers: [sshPublisherDesc(configName: ''+env.sshServer+'', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/o2server/servers/webServer/download', remoteDirectorySDF: false, removePrefix: '', sourceFiles: ''+env.preName+'-'+env.tag+'*.zip')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
+					sshPublisher(publishers: [sshPublisherDesc(configName: ''+env.sshServer+'', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/o2server/servers/webServer/download', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'download-pro.json,download_preview.jsonp')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
+					script {
+						env.buildResult='SUCCESS'
+					}
+				}
+			}
+            
+        }
+		
+		stage('messageNotice') {
+		    steps{
+		        script {
+		            env.messageNotice="%e5%ae%8c%e6%88%90ssh%e6%9c%8d%e5%8a%a1%e5%99%a8%3d"+env.sshServer+",%e5%89%8d%e7%bc%80%3d"+env.preName+",tag%e7%89%88%e6%9c%ac%3d"+env.tag+"%e7%9a%84%e7%89%88%e6%9c%ac%e6%89%93%e5%8c%85%ef%bc%8c%e8%af%b7%e6%a0%b8%e5%ae%9e"+env.buildResult
+		        }
+		         echo 'env.messageNotice='+env.messageNotice
+		         httpRequest responseHandle: 'NONE', url: env.qqUrl+'/send_group_msg?group_id='+env.qqGroupid+'&message='+env.messageNotice, wrapAsMultipart: false
+            }
+		}
+
+	}
+}

+ 3 - 1
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/appinfo/ActionListAllManageableAppType.java

@@ -69,7 +69,9 @@ public class ActionListAllManageableAppType extends BaseAction {
 							if( appIdsForType == null ){
 								appIdsForType = new ArrayList<>();
 							}
-							wos.add( new Wo( appType, Long.parseLong( appIdsForType.size() + "") ));
+							if( appIdsForType.size() > 0 ) {
+								wos.add( new Wo( appType, Long.parseLong( appIdsForType.size() + "") ));
+							}
 						}
 					}
 				}

+ 4 - 4
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/categoryinfo/CategoryInfoAction.java

@@ -233,13 +233,13 @@ public class CategoryInfoAction extends StandardJaxrsAction{
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 	
-	@JaxrsMethodDescribe(value = "根据Flag获取分类信息对象.", action = ActionGet.class)
+	@JaxrsMethodDescribe(value = "根据分类标识Flag获取分类信息对象.", action = ActionGet.class)
 	@GET
 	@Path("{flag}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
 	public void get( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("栏目标识") @PathParam("flag") String flag) {
+			@JaxrsParameterDescribe("分类标识") @PathParam("flag") String flag) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionGet.Wo> result = null;
 		try {
@@ -275,13 +275,13 @@ public class CategoryInfoAction extends StandardJaxrsAction{
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 	
-	@JaxrsMethodDescribe(value = "根据别名获取分类信息对象.", action = ActionGet.class)
+	@JaxrsMethodDescribe(value = "根据分类别名获取分类信息对象.", action = ActionGet.class)
 	@GET
 	@Path("alias/{alias}")
 	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
 	@Consumes(MediaType.APPLICATION_JSON)
 	public void getByAlias( @Suspended final AsyncResponse asyncResponse, @Context HttpServletRequest request, 
-			@JaxrsParameterDescribe("栏目别名") @PathParam("alias") String alias ) {
+			@JaxrsParameterDescribe("分类别名") @PathParam("alias") String alias ) {
 		EffectivePerson effectivePerson = this.effectivePerson( request );
 		ActionResult<ActionGetByAlias.Wo> result = null;
 		try {

+ 1 - 1
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/fileinfo/ActionGet.java

@@ -43,7 +43,7 @@ public class ActionGet extends BaseAction {
 				}
 				FileInfo fileInfo = emc.find(id, FileInfo.class);
 				if ( null == fileInfo ) {
-					throw new Exception("[get]fileInfo{id:" + id + "} 信息不存在.");
+					throw new Exception("需要查询的附件或者文件信息不存在,请联系管理员。ID:" + id );
 				}
 				//如果信息存在,则需要向客户端返回信息,先将查询出来的JPA对象COPY到一个普通JAVA对象里,再进行返回
 				wrap = Wo.copier.copy( fileInfo );

+ 1 - 1
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/form/ActionGet.java

@@ -35,7 +35,7 @@ public class ActionGet extends BaseAction {
 				Business business = new Business(emc);
 				Form form = business.getFormFactory().get(id);
 				if ( null == form ) {
-					throw new Exception("form{id:" + id + "} 信息不存在.");
+					throw new Exception("需要查询的表单信息不存在,请联系管理员。ID:" + id );
 				}
 				wo = new Wo();
 				Wo.copier.copy( form, wo );

+ 1 - 1
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/log/ActionGet.java

@@ -24,7 +24,7 @@ public class ActionGet extends BaseAction {
 			Business business = new Business(emc);
 			Log log = business.getLogFactory().get(id);
 			if ( null == log ) {
-				throw new Exception( "log{id:" + id + "} 信息不存在." );
+				throw new Exception( "需要查询的日志信息不存在,请联系管理员。ID:" + id  );
 			}
 			wo = Wo.copier.copy( log );
 			result.setData( wo );

+ 1 - 1
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/view/ActionGet.java

@@ -34,7 +34,7 @@ public class ActionGet extends BaseAction {
 				Business business = new Business(emc);
 				View view = business.getViewFactory().flag( flag );
 				if ( null == view ) {
-					throw new Exception("view{flag:" + flag + "} 信息不存在.");
+					throw new Exception("需要查询的列表信息不存在,请联系管理员。ID:" + flag );
 				}
 				wrap = Wo.copier.copy( view );
 				//根据FormId补充FormName

+ 1 - 1
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/viewcategory/ActionGet.java

@@ -35,7 +35,7 @@ public class ActionGet extends BaseAction {
 				Business business = new Business(emc);
 				ViewCategory view = business.getViewCategoryFactory().get(id);
 				if (null == view) {
-					throw new Exception("view{id:" + id + "} 信息不存在.");
+					throw new Exception("需要查询的列表信息不存在,请联系管理员。ID:" + id );
 				}
 
 				wrap = Wo.copier.copy(view);

+ 1 - 1
o2server/x_cms_assemble_control/src/main/java/com/x/cms/assemble/control/jaxrs/viewfieldconfig/ActionGet.java

@@ -34,7 +34,7 @@ public class ActionGet extends BaseAction {
 				Business business = new Business(emc);
 				ViewFieldConfig viewFieldConfig = business.getViewFieldConfigFactory().get(id);
 				if ( null == viewFieldConfig ) {
-					throw new Exception("viewFieldConfig{id:" + id + "} 信息不存在.");
+					throw new Exception("需要查询的列表展现列信息不存在,请联系管理员。ID:" + id );
 				}
 				//如果信息存在,则需要向客户端返回信息,先将查询出来的JPA对象COPY到一个普通JAVA对象里,再进行返回
 				wrap = Wo.copier.copy( viewFieldConfig );

+ 8 - 1
o2server/x_console/src/main/java/com/x/server/console/NodeAgent.java

@@ -3,6 +3,7 @@ package com.x.server.console;
 import java.io.*;
 import java.net.ServerSocket;
 import java.net.Socket;
+import java.nio.charset.StandardCharsets;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -48,6 +49,8 @@ public class NodeAgent extends Thread {
 
 	public static final int LOG_MAX_READ_SIZE = 6 * 1024;
 
+	private static final int BUFFER_SIZE = 1024*1024*1000;
+
 	@Override
 	public void run() {
 		try (ServerSocket serverSocket = new ServerSocket(Config.currentNode().nodeAgentPort())) {
@@ -56,7 +59,11 @@ public class NodeAgent extends Thread {
 				try (Socket socket = serverSocket.accept()) {
 					try (DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
 						 DataInputStream dis = new DataInputStream(socket.getInputStream())) {
-						String json = dis.readUTF();
+						//String json = dis.readUTF();
+						final char[] data = new char[BUFFER_SIZE];
+						final BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8));
+						final int len = br.read(data);
+						final String json = String.valueOf(data, 0, len);
 						//logger.info("receive socket json={}",json);
 						CommandObject commandObject = XGsonBuilder.instance().fromJson(json, CommandObject.class);
 						if (BooleanUtils.isTrue(Config.currentNode().nodeAgentEncrypt())) {

+ 0 - 3
o2server/x_query_assemble_designer/src/main/java/com/x/query/assemble/designer/jaxrs/query/ActionListAll.java

@@ -27,9 +27,6 @@ class ActionListAll extends BaseAction {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			logger.debug(effectivePerson, effectivePerson.getDistinguishedName());
 			Business business = new Business(emc);
-			if (!business.controllable(effectivePerson)) {
-				throw new ExceptionAccessDenied(effectivePerson.getDistinguishedName());
-			}
 			ActionResult<List<Wo>> result = new ActionResult<>();
 			List<Wo> wos = this.list(business, effectivePerson);
 			List<String> ids = ListTools.extractProperty(wos, Query.id_FIELDNAME, String.class, true, true);

+ 5 - 1
o2server/x_query_core_express/src/main/java/com/x/query/core/express/plan/Plan.java

@@ -87,7 +87,11 @@ public abstract class Plan extends GsonPropertyObject {
 
 	public Integer count;
 
-	private ScriptEngine scriptEngine;
+	/**
+	 * !!这个类最后要输出.不能gson scriptEngine对象
+	 * 
+	 */
+	private transient ScriptEngine scriptEngine;
 
 	private Table order(Table table) {
 		Comparator<Row> comparator = new Comparator<Row>() {

+ 2 - 1
o2web/package.json

@@ -37,6 +37,7 @@
     "gulp-tm-asset-rev": "0.0.16",
     "gulp-tm-uglify": "3.0.1",
     "merge-stream": "^1.0.1",
-    "minimist": "^1.2.0"
+    "minimist": "^1.2.0",
+    "gulp-sftp-up4": "^0.1.8"
   }
 }

+ 1 - 0
o2web/source/o2_core/o2/lp/zh-cn.js

@@ -123,6 +123,7 @@ o2.LP.process = {
     }
 };
 o2.LP.desktop = {
+    "homepage": "首页",
     "loadding": "正在为您加载系统资源,请稍候......",
     "lowBrowser": "您的浏览器版本过低啦!~系统已经不支持IE8及以下版本了!",
     "upgradeBrowser": "请升级您的浏览器:",

+ 7 - 0
o2web/source/o2_core/o2/o2.more.js

@@ -517,6 +517,13 @@
             h += (this.getStyle("padding-top").toFloat() || 0)+ (this.getStyle("padding-bottom").toFloat() || 0);
             if (!notMargin) h += (this.getStyle("margin-top").toFloat() || 0)+ (this.getStyle("margin-bottom").toFloat() || 0);
             return h;
+        },
+        "getEdgeWidth": function(notMargin){
+            var h = 0;
+            h += (this.getStyle("border-left-width").toFloat() || 0)+ (this.getStyle("border-right-width").toFloat() || 0);
+            h += (this.getStyle("padding-left").toFloat() || 0)+ (this.getStyle("padding-right").toFloat() || 0);
+            if (!notMargin) h += (this.getStyle("margin-left").toFloat() || 0)+ (this.getStyle("margin-right").toFloat() || 0);
+            return h;
         }
     });
     Object.copy = function(from, to){

+ 1 - 1
o2web/source/o2_core/o2/widget/$Menu/flatStyle/css.wcss

@@ -22,7 +22,7 @@
 		"border-radius": "2px",
 		"background-color": "#FFF",
 		"padding": "0px",
-		"overflow": "hidden",
+		"overflow": "auto",
 		"cursor": "default"
 	},
 	"menuItem": {

+ 2 - 1
o2web/source/o2_core/o2/widget/ImageClipper.js

@@ -588,7 +588,8 @@ o2.widget.HTML5ImageClipper = new Class({
 		this.innerNode = new Element("div.innerNode",{ styles :  this.css.innerNode } ).inject(this.editorNode);
 
 		this.imageNode = new Element("img",{
-			styles :  this.css.imageNode
+			styles :  this.css.imageNode,
+			crossOrigin :"use-credentials"
 		}).inject(this.innerNode);
 		this.imageNode.ondragstart = function(){
 			return false;

+ 17 - 10
o2web/source/o2_core/o2/widget/ScrollBar.js

@@ -347,7 +347,7 @@ o2.widget.ScrollBar = new Class({
 		var clientSize = this.node.getSize();
 		var nodePosition = this.node.getPosition(this.node.getOffsetParent());
 
-		this.mousewheel = function(e){
+		if (!this.mousewheel) this.mousewheel = function(e){
 			var delta = 1-e.event.wheelDelta;
 
 			var step = ((this.options.distance.toFloat())/100)*(clientSize.y.toFloat());
@@ -356,7 +356,7 @@ o2.widget.ScrollBar = new Class({
 			this.scroll(delta, null);
 			e.stopPropagation();
 		}.bind(this);
-		this.domMousewheel = function(e){
+		if (!this.domMousewheel) this.domMousewheel = function(e){
 			var delta = e.detail;
 
 			var step = ((this.options.distance.toFloat())/100)*(clientSize.y.toFloat());
@@ -366,7 +366,7 @@ o2.widget.ScrollBar = new Class({
 			e.stopPropagation();
 		}.bind(this);
 
-		this.touchmove = function(e){
+		if (!this.touchmove)  this.touchmove = function(e){
 			var delta = e.event.detail;
 
 			var step = ((this.options.distance.toFloat())/100)*(clientSize.y.toFloat());
@@ -413,12 +413,15 @@ o2.widget.ScrollBar = new Class({
 
 				this.setScrollVNodeMove();
 
-				this.node.addEvent("mousewheel", this.mousewheel);
-				this.node.addEvent("touchmove", this.touchmove);
-
-				if (Browser.name=="firefox"){
-					this.node.addEventListener("DOMMouseScroll", this.domMousewheel, false);
+				if (!this.isAddEvent){
+					this.node.addEvent("mousewheel", this.mousewheel);
+					this.node.addEvent("touchmove", this.touchmove);
+					if (Browser.name=="firefox"){
+						this.node.addEventListener("DOMMouseScroll", this.domMousewheel, false);
+					}
+					this.isAddEvent = true
 				}
+
 				// this.node DOMMouseScroll
 			}
 			if (this.scrollVAreaNode.getStyle("position")=="absolute"){
@@ -469,9 +472,10 @@ o2.widget.ScrollBar = new Class({
 
 				//		this.node.tween("margin-right", margin-scrollVNodeSize.x);
 			}
-			this.node.removeEvents("mousewheel", this.mousewheel);
+			this.node.removeEvent("mousewheel", this.mousewheel);
+			this.node.removeEvent("touchmove", this.touchmove);
 			if (Browser.name=="firefox"){
-				this.node.addEventListener("DOMMouseScroll", this.domMousewheel, false);
+				this.node.removeEventListener("DOMMouseScroll", this.domMousewheel, false);
 			}
 		}
 //		if (scrollSize.x>scrollSize.x){
@@ -496,6 +500,9 @@ o2.widget.ScrollBar = new Class({
 		if (this.checkScrollShowFun) document.body.removeEvent("mousemove", this.checkScrollShowFun);
 		if (this.mousewheel) this.node.removeEvent("mousewheel", this.mousewheel);
 		if (this.touchmove) this.node.removeEvent("touchmove", this.touchmove);
+		if (Browser.name=="firefox"){
+			if (this.domMousewheel) this.node.removeEventListener("DOMMouseScroll", this.domMousewheel, false);
+		}
 		if (this.scrollVAreaNode) this.scrollVAreaNode.destroy();
 		if (this.scrollVNode) this.scrollVNode.destroy();
 		o2.release(this);

+ 4 - 2
o2web/source/o2_core/o2/xDesktop/$Default/blue/style-pc.css

@@ -159,7 +159,9 @@
     background-size: cover;
     border-radius: 20px;
 }
-.layout_content_taskbar_area_user_text {}
+.layout_content_taskbar_area_user_text {
+    display: inline-block;
+}
 
 .layout_content_taskbar_area_action {
     height: 70px;
@@ -179,7 +181,7 @@
     cursor: pointer;
 }
 .layout_content_taskbar_area_action_msg {
- }
+}
 .layout_content_taskbar_area_action_skin {
 }
 .layout_content_taskbar_area_action_skin_focus {

+ 3 - 1
o2web/source/o2_core/o2/xDesktop/$Default/cyan/style-pc.css

@@ -159,7 +159,9 @@
     background-size: cover;
     border-radius: 20px;
 }
-.layout_content_taskbar_area_user_text {}
+.layout_content_taskbar_area_user_text {
+    display: inline-block;
+}
 
 .layout_content_taskbar_area_action {
     height: 70px;

+ 3 - 1
o2web/source/o2_core/o2/xDesktop/$Default/darkgreen/style-pc.css

@@ -159,7 +159,9 @@
     background-size: cover;
     border-radius: 20px;
 }
-.layout_content_taskbar_area_user_text {}
+.layout_content_taskbar_area_user_text {
+    display: inline-block;
+}
 
 .layout_content_taskbar_area_action {
     height: 70px;

+ 3 - 1
o2web/source/o2_core/o2/xDesktop/$Default/gray/style-pc.css

@@ -159,7 +159,9 @@
     background-size: cover;
     border-radius: 20px;
 }
-.layout_content_taskbar_area_user_text {}
+.layout_content_taskbar_area_user_text {
+    display: inline-block;
+}
 
 .layout_content_taskbar_area_action {
     height: 70px;

+ 3 - 1
o2web/source/o2_core/o2/xDesktop/$Default/green/style-pc.css

@@ -159,7 +159,9 @@
     background-size: cover;
     border-radius: 20px;
 }
-.layout_content_taskbar_area_user_text {}
+.layout_content_taskbar_area_user_text {
+    display: inline-block;
+}
 
 .layout_content_taskbar_area_action {
     height: 70px;

+ 3 - 1
o2web/source/o2_core/o2/xDesktop/$Default/navy/style-pc.css

@@ -159,7 +159,9 @@
     background-size: cover;
     border-radius: 20px;
 }
-.layout_content_taskbar_area_user_text {}
+.layout_content_taskbar_area_user_text {
+    display: inline-block;
+}
 
 .layout_content_taskbar_area_action {
     height: 70px;

+ 3 - 1
o2web/source/o2_core/o2/xDesktop/$Default/orange/style-pc.css

@@ -159,7 +159,9 @@
     background-size: cover;
     border-radius: 20px;
 }
-.layout_content_taskbar_area_user_text {}
+.layout_content_taskbar_area_user_text {
+    display: inline-block;
+}
 
 .layout_content_taskbar_area_action {
     height: 70px;

+ 3 - 1
o2web/source/o2_core/o2/xDesktop/$Default/purple/style-pc.css

@@ -159,7 +159,9 @@
     background-size: cover;
     border-radius: 20px;
 }
-.layout_content_taskbar_area_user_text {}
+.layout_content_taskbar_area_user_text {
+    display: inline-block;
+}
 
 .layout_content_taskbar_area_action {
     height: 70px;

+ 3 - 1
o2web/source/o2_core/o2/xDesktop/$Default/red/style-pc.css

@@ -159,7 +159,9 @@
     background-size: cover;
     border-radius: 20px;
 }
-.layout_content_taskbar_area_user_text {}
+.layout_content_taskbar_area_user_text {
+    display: inline-block;
+}
 
 .layout_content_taskbar_area_action {
     height: 70px;

+ 3 - 1
o2web/source/o2_core/o2/xDesktop/$Default/tan/style-pc.css

@@ -159,7 +159,9 @@
     background-size: cover;
     border-radius: 20px;
 }
-.layout_content_taskbar_area_user_text {}
+.layout_content_taskbar_area_user_text {
+    display: inline-block;
+}
 
 .layout_content_taskbar_area_action {
     height: 70px;

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

@@ -200,14 +200,39 @@ o2.xDesktop.Default = new Class({
 
     loadDefaultPage: function(){
         //默认载入首页
+        var app;
         if (layout.config.indexPage && layout.config.indexPage.enable && layout.config.indexPage.portal){
             appId = "portal.Portal"+layout.config.indexPage.portal;
             this.options.index = appId;
-            var options = {"portalId": layout.config.indexPage.portal, "pageId": layout.config.indexPage.page, "appId": appId};
-            layout.openApplication(null, "portal.Portal", options);
+            //var options = {"portalId": layout.config.indexPage.portal, "pageId": layout.config.indexPage.page, "appId": appId};
+
+            app = {
+                "options": {"name": "portal.Portal", "portalId": layout.config.indexPage.portal, "pageId": layout.config.indexPage.page, "appId": appId},
+                "close": function(){
+                    this.taskitem.destroy();
+                },
+                "setCurrent": function(){
+                    this.taskitem.textNode.click();
+                }
+            };
+            //layout.openApplication(null, "portal.Portal", options);
         }else{
-            layout.openApplication(null, "Homepage");
+            app = {
+                "options": {"name": "Homepage", "appId": "Homepage", "title": o2.LP.desktop.homepage},
+                "close": function(){
+                    this.taskitem.destroy();
+                },
+                "setCurrent": function(){
+                    this.taskitem.textNode.click();
+                }
+            };
+            //layout.openApplication(null, "Homepage");
         }
+
+        taskitem = layout.desktop.createTaskItem(app);
+        app.taskitem = taskitem;
+        this.apps[app.options.appId] = app;
+        taskitem.textNode.click();
     },
     loadDefaultLnk: function(){
         if (this.status && this.status.flatLnks && this.status.flatLnks.length){
@@ -1652,7 +1677,7 @@ o2.xDesktop.Default.TaskItem = new Class({
     load: function(){
         this.node = new Element("div.layout_content_taskbar_item").inject(this.container);
         this.iconNode = new Element("div");
-        this.closeNode = new Element("div.layout_content_taskbar_item_icon", {"title": o2.LP.widget.close}).inject(this.node);;
+        this.closeNode = new Element("div.layout_content_taskbar_item_icon", {"title": o2.LP.widget.close}).inject(this.node);
         this.closeNode.addClass("icon_close");
         if (this.app.options.appId==this.desktop.options.index){
             this.closeNode.hide();
@@ -1718,6 +1743,8 @@ o2.xDesktop.Default.TaskItem = new Class({
                 this.app.refresh();
             }.bind(this)
         });
+
+        if (this.desktop && this.desktop.checkTaskBarSize) this.desktop.checkTaskBarSize();
     },
     setText: function(str){
         this.textNode.set("text", str || this.app.options.title);
@@ -1744,6 +1771,7 @@ o2.xDesktop.Default.TaskItem = new Class({
     destroy: function(){
         this.iconNode.destroy();
         this.node.destroy();
+        if (this.desktop && this.desktop.checkTaskBarSize) this.desktop.checkTaskBarSize();
         o2.release(this);
     },
     setTaskitemSize: function(){

+ 11 - 0
o2web/source/o2_core/o2/xDesktop/Menu.js

@@ -25,6 +25,7 @@ MWF.xDesktop.Menu = new Class({
 			}).inject(this.options.container || $(document.body));
 			
 			this.node.inject(this.borderNode);
+
 			this.hide = this.hideMenu.bind(this);
 			this.fireEvent("postLoad");
 		}
@@ -55,6 +56,16 @@ MWF.xDesktop.Menu = new Class({
 				}else{
 					this.pauseCount--;
 				}
+
+				var p = this.node.getPosition(document.body);
+				var size = this.node.getSize();
+				var bodySize = document.body.getSize();
+				if (p.y+size.y+10>bodySize.y){
+					var y = bodySize.y-p.y-10;
+					this.node.setStyle("height", ""+y+"px");
+					this.node.addEvent("mousedown", function(e){ e.stopPropagation(); })
+				}
+
 				this.fireEvent("postShow");
 			}
 		}

+ 7 - 8
o2web/source/x_component_Homepage/$Main/default/style.css

@@ -1,7 +1,7 @@
 .o2_homepage_content {
     margin: 15px;
-    min-width: 1000px;
-    min-height: 600px;
+    min-width: 1280px;
+    min-height: 700px;
     font-size: 14px;
 }
 .o2_homepage_layout_right {
@@ -257,7 +257,7 @@
     text-align: center;
     line-height: 24px;
     float: left;
-    margin-left: 10px;
+    margin-left: 5px;
     cursor: pointer;
     user-select: none;
     -ms-user-select: none;
@@ -280,7 +280,7 @@
     background-color: #ffffff;
     line-height: 20px;
     text-align: center;
-    margin-left: 10px;
+    margin-left: 8px;
     color: #666666;
     cursor: pointer;
     border: 1px solid #E6E6E6;
@@ -293,7 +293,7 @@
     border-radius: 10px;
     background-color: #ffffff;
     text-align: center;
-    margin-left: 10px;
+    margin-left: 8px;
     color: #666666;
     cursor: pointer;
     float: left;
@@ -308,7 +308,7 @@
     border-radius: 10px;
     background-color: #ffffff;
     text-align: center;
-    margin-left: 10px;
+    margin-left: 8px;
     color: #666666;
     cursor: pointer;
     float: left;
@@ -374,7 +374,7 @@
 
 .o2_homepage_infor_hotpicArea {
     height: 100%;
-    width: 42%;
+    width: 36%;
     float: left;
     background: #F7FBFF;
     border-radius: 8px;
@@ -392,7 +392,6 @@
 }
 
 .o2_homepage_infor_itemsArea {
-    margin-left: 42%;
     height: 100%;
 }
 .o2_homepage_infor_itemsArea_content {

+ 1 - 0
o2web/source/x_component_Homepage/$Main/default/taskContent.html

@@ -13,6 +13,7 @@
 
     </div>
 
+</div>
 </div>
 <div class="o2_homepage_task_area">
     <div class="o2_homepage_task_area_content" data-o2-element="itemContentNode"></div>

+ 4 - 0
o2web/source/x_component_Homepage/InforContent.js

@@ -289,6 +289,8 @@ MWF.xApplication.Homepage.InforContent.AllInfor = new Class({
     },
     loadItemsRes_item:function(){
         o2.Actions.load("x_cms_assemble_control").DocumentAction.query_listWithFilterPaging(this.page, this.pageSize, {
+            "orderField": "publishTime",
+            "orderType": "DESC",
             "readFlag": "UNREAD"
         }, function(json){
             this.itemCount = json.count;
@@ -519,6 +521,8 @@ MWF.xApplication.Homepage.InforContent.Infor  = new Class({
     },
     loadItemsRes: function(){
         o2.Actions.load("x_cms_assemble_control").DocumentAction.query_listWithFilterPaging(this.page, this.pageSize, {
+            "orderField": "publishTime",
+            "orderType": "DESC",
             "readFlag": "UNREAD",
             "appIdList": [this.id]
         }, function(json){

+ 9 - 0
o2web/source/x_component_Homepage/TaskContent.js

@@ -397,6 +397,15 @@ MWF.xApplication.Homepage.TaskContent.Task = new Class({
                 "click": function () { this.nextPage(); }.bind(this),
             });
 
+            var size = this.pageNode.getSize();
+            var w1 = this.prevPageNode.getEdgeWidth();
+            var w2 = this.nextPageNode.getEdgeWidth();
+            var x1 = this.prevPageNode.getSize().x;
+            var x2 = this.nextPageNode.getSize().x;
+            var x = size.x - w1 - w2 - x1 - x2;
+            var count = (x/30).toInt()-2;
+            if (count<3) count = 3;
+            this.options.showPages = count;
             this.loadPageNumber();
         }else{
 

+ 6 - 0
o2web/source/x_component_cms_ColumnManager/FormExplorer.js

@@ -99,6 +99,9 @@ MWF.xApplication.cms.ColumnManager.FormExplorer = new Class({
                     "onQueryLoad": function(){
                         this.actions = _self.app.restActions;
                         this.application = _self.app.options.application;
+                    },
+                    "onPostSave" : function () {
+                        _self.reload();
                     }
                 };
                 layout.desktop.openApplication(e, "cms.FormDesigner", options);
@@ -112,6 +115,9 @@ MWF.xApplication.cms.ColumnManager.FormExplorer = new Class({
                     "onQueryLoad": function(){
                         this.actions = _self.app.restActions;
                         this.application = _self.app.options.application;
+                    },
+                    "onPostSave" : function () {
+                        _self.reload();
                     }
                 };
                 layout.desktop.openApplication(e, "cms.FormDesigner", options);

+ 1 - 0
o2web/source/x_component_cms_Document/Main.js

@@ -366,6 +366,7 @@ MWF.xApplication.cms.Document.Main = new Class({
                     "autoSave" : this.options.autoSave,
                     "saveOnClose" : this.options.saveOnClose,
                     "onPostPublish" : this.options.postPublish,
+                    "onAfterPublish" : this.options.afterPublish,
                     "onPostDelete" : this.options.postDelete
                 });
                 this.appForm.businessData = {

+ 1 - 0
o2web/source/x_component_cms_FormDesigner/Main.js

@@ -1421,6 +1421,7 @@ MWF.xApplication.cms.FormDesigner.Main = new Class({
                 //this.fireAppEvent("postSave"); //add by cxy
                 if (this.pcForm) this.pcForm.fireEvent("postSave");
                 if (this.mobileForm) this.mobileForm.fireEvent("postSave");
+                this.fireEvent("postSave");
 
                 this.isSave = false;
 

+ 5 - 2
o2web/source/x_component_cms_Index/Newer.js

@@ -492,10 +492,13 @@ MWF.xApplication.cms.Index.Newer = new Class({
                 "documentId": id,
                 "appId": appId,
                 "onPostPublish" : function(){
+                    this.fireEvent( "postPublish" );
+                }.bind(this),
+                "onAfterPublish" : function () {
                     debugger;
                     if(_self.view && _self.view.reload )_self.view.reload();
-                    this.fireEvent( "postPublish" );
-                }.bind(this)
+                    _self.fireEvent( "afterPublish" );
+                }
             };
             if( typeOf(this.options.autoSave) == "boolean" )options.autoSave = this.options.autoSave;
             if( typeOf(this.options.saveOnClose) == "boolean" )options.saveOnClose = this.options.saveOnClose;

+ 9 - 10
o2web/source/x_component_cms_Module/Main.js

@@ -226,16 +226,15 @@ MWF.xApplication.cms.Module.Main = new Class({
 						//if(this.options.columnData.ignoreTitle===undefined) this.options.columnData.ignoreTitle = false;
 
 						this.creater = new MWF.xApplication.cms.Index.Newer( this.options.columnData, null, this, this.view, {
-							restrictToColumn : true,
-							onPostPublish : function () {
-								debugger;
-								try{
-									if(this.view && this.view.reload){
-										this.view.reload();
-									}
-								}catch (e) {
-								}
-							}.bind(this)
+							restrictToColumn : true
+							// onAfterPublish : function () {
+							// 	try{
+							// 		if(this.view && this.view.reload){
+							// 			this.view.reload();
+							// 		}
+							// 	}catch (e) {
+							// 	}
+							// }.bind(this)
 							//ignoreTitle : this.options.columnData.ignoreTitle,
 							//latest : this.options.columnData.latest
 						});

+ 2 - 0
o2web/source/x_component_cms_Xform/Form.js

@@ -457,6 +457,7 @@ MWF.xApplication.cms.Xform.Form = MWF.CMSForm = new Class({
         delete documentData.attachmentList;
         //this.documentAction.saveDocument(documentData, function(){
         this.fireEvent("postPublish", [documentData]);
+        if (this.app) if (this.app.fireEvent) this.app.fireEvent("postPublish",[documentData]);
         if (this.officeList) {
             this.officeList.each(function (module) {
                 module.save(history);
@@ -465,6 +466,7 @@ MWF.xApplication.cms.Xform.Form = MWF.CMSForm = new Class({
         this.documentAction.publishDocumentComplex(documentData, function (json) {
             this.businessData.data.isNew = false;
             this.fireEvent("afterPublish");
+            if (this.app) if (this.app.fireEvent) this.app.fireEvent("afterPublish");
             if (callback) callback();
             if (this.app.mobile) {
                 this.app.content.unmask();

+ 1 - 0
o2web/source/x_component_portal_PortalExplorer/Main.js

@@ -54,6 +54,7 @@ MWF.xApplication.portal.PortalExplorer.Main = new Class({
                     this.createApplicationItem(json.data, "top");
                 }.bind(this));
 
+                this.reloadApplicationCategoryList(true);
                 this.notice(this.lp.application.createApplicationSuccess, "success");
             }.bind(this));
         }else{

+ 29 - 5
o2web/source/x_component_process_ApplicationExplorer/Main.js

@@ -292,6 +292,7 @@ MWF.xApplication.process.ApplicationExplorer.Main = new Class({
 					//this.applications.push(application);
 				}.bind(this));
 
+				this.reloadApplicationCategoryList(true);
 				this.notice(this.lp.application.createApplicationSuccess, "success");
 				//    this.app.processConfig();
 			}.bind(this));
@@ -319,7 +320,7 @@ MWF.xApplication.process.ApplicationExplorer.Main = new Class({
 		var size = this.content.getSize();
 		var topSize = this.topNode.getComputedSize();
 		var bottomSize = this.bottomNode.getComputedSize();
-		var pt = this.contentArea.getStyle("padding-top").toInt() || 0;;
+		var pt = this.contentArea.getStyle("padding-top").toInt() || 0;
 		var pb = this.contentArea.getStyle("padding-bottom").toInt() || 0;
 
 		var h = size.y-topSize.totalHeight-bottomSize.totalHeight-pt-pb;
@@ -355,7 +356,7 @@ MWF.xApplication.process.ApplicationExplorer.Main = new Class({
 		}
 		e.stopPropagation();
 	},
-	loadApplicationCategoryList: function(){
+	loadApplicationCategoryList: function( currentCategoryName, noRefreshContent ){
 		if (this.control.canCreate){
 			this.restActions.listApplicationCategory(function(json){
 
@@ -370,9 +371,29 @@ MWF.xApplication.process.ApplicationExplorer.Main = new Class({
 				}.bind(this));
 
 				if (this.categoryAreaNode.getScrollSize().y>this.categoryAreaNode.getSize().y) this.createCategoryExpandButton();
+
+				if( currentCategoryName ){
+					var itemList = this.categoryAreaNode.getElements("div.o2_process_AppExp_categoryItem");
+					if( itemList.length > 0 ){
+						for( var i=0; i<itemList.length; i++ ){
+							if( itemList[i].retrieve("categoryName") === currentCategoryName ){
+								this.clickCategoryNode( itemList[i], noRefreshContent)
+							}
+						}
+					}
+				}
+
 			}.bind(this));
 		}
 	},
+	reloadApplicationCategoryList: function( noRefreshContent ){
+		var categoryName = "";
+		if( this.category ){
+			categoryName = this.category.retrieve("categoryName") || "";
+		}
+		this.categoryAreaNode.empty();
+		this.loadApplicationCategoryList( categoryName, noRefreshContent );
+	},
 	createCategoryItemNode: function(text, count){
 
 		var categoryName = text;
@@ -391,7 +412,7 @@ MWF.xApplication.process.ApplicationExplorer.Main = new Class({
 		});
 	},
 
-	clickCategoryNode: function(item){
+	clickCategoryNode: function(item, noRefreshContent){
 		// var node = this.categoryListAreaNode.getFirst("div");
 		// node.setStyles(this.css.allCategoryItemNode);
 		if (this.category){
@@ -408,7 +429,9 @@ MWF.xApplication.process.ApplicationExplorer.Main = new Class({
 		if (p.y>=size.y) item.inject(this.categoryAreaNode, "top");
 
 		this.category = item;
-		this.loadApplicationList(item);
+		if( !noRefreshContent ){
+			this.loadApplicationList(item);
+		}
 	},
 
 	getApplicationDimension: function(){
@@ -534,6 +557,7 @@ MWF.xApplication.process.ApplicationExplorer.Main = new Class({
 
 				var complete = function(){
 					if (doCount == readyCount){
+						_self.reloadApplicationCategoryList( true );
 						if (errorText){
 							_self.app.notice(errorText, "error");
 						}
@@ -623,7 +647,7 @@ MWF.xApplication.process.ApplicationExplorer.Application = new Class({
 	checkManage: function(){
 		if (this.app.control.canManage) return true;
 		if (this.app.control.canCreate && (this.data.creatorPerson==layout.desktop.session.user.name)) return true;
-		if (this.data.controllerList.indexOf(layout.desktop.session.user.distinguishedName)!==-1) return true;
+		//if (this.data.controllerList.indexOf(layout.desktop.session.user.distinguishedName)!==-1) return true;
 		return false;
 	},
 

+ 1 - 1
o2web/source/x_component_process_FormDesigner/Module/Form/form.html

@@ -112,7 +112,7 @@
 
 	</div>
     <div title="操作"  class="MWFTab" style="overflow: hidden; display: text{($.mode=='Mobile')?'block':'none'}">
-        <div class="MWFDefaultActionArea" name="defaultTools"></div>
+        <div class="MWFDefaultActionArea" name="defaultTools" data-target="mobileForm"></div>
         <div class="MWFActionArea" name="tools"></div>
     </div>
 	<div title="事件"  class="MWFTab">

+ 1 - 0
o2web/source/x_component_process_FormDesigner/Property.js

@@ -1562,6 +1562,7 @@ debugger;
                     "noDelete": false,
                     "noCode": true,
                     "noReadShow": true,
+                    "target" : node.get("data-target"),
                     "noEditShow": true,
                     "onChange": function(){
                         this.data[name] = actionEditor.data;

+ 14 - 0
o2web/source/x_component_process_FormDesigner/widget/ActionsEditor.js

@@ -91,6 +91,7 @@ MWF.xApplication.process.FormDesigner.widget.ActionsEditor = new Class({
             }).inject(this.actionTitleArea);
 
             this.restoreActionButtonButton.addEvent("click", function(){
+                debugger;
                 this.restoreButtonAction();
             }.bind(this));
         }
@@ -100,6 +101,19 @@ MWF.xApplication.process.FormDesigner.widget.ActionsEditor = new Class({
         if( !this.defaultTools ){
             MWF.getJSON( this.options.systemToolsAddress, function(tools){
                 this.defaultTools = tools;
+                if( this.options.target && this.options.target === "mobileForm" ){
+                    this.defaultTools.push({
+                        "type": "MWFToolBarButton",
+                        "img": "read.png",
+                        "title": "标记为已阅",
+                        "action": "readedWork",
+                        "text": "已阅",
+                        "id": "action_readed",
+                        "control": "allowReadProcessing",
+                        "condition": "",
+                        "read": true
+                    });
+                }
             }.bind(this), false);
         }
         this.defaultTools.each( function( tool ){

+ 21 - 20
o2web/source/x_component_process_Xform/Log.js

@@ -1647,16 +1647,17 @@ MWF.xApplication.process.Xform.Log = MWF.APPLog =  new Class({
 
                 var imgAreaNode = new Element("div", {"styles": this.form.css.logMediaOpinionContentArea}).inject(imgNode);
 
-                //var height = 260;
-                //var width = 390;
+                // var height = 260;
+                // var width = 390;
                 var width;
+                //var height;
                 if (layout.mobile){
                     width = node.getParent().getParent().getSize().x-2;
                     //height = width*2/3;
                 }else{
                     var pNode = node.getParent().getParent();
                     var offset = imgNode.getPosition( pNode );
-                    width = Math.min( pNode.getSize().x - offset.x - 42, 800 );
+                    width = Math.min( pNode.getSize().x - offset.x - 42, 800 );x
                 }
 
                 var img = new Element("img", {
@@ -1692,23 +1693,23 @@ MWF.xApplication.process.Xform.Log = MWF.APPLog =  new Class({
 
                 //}
 
-                var p = iconNode.getPosition(this.form.app.content);
-                var s = iconNode.getSize();
-                var size = (layout.mobile) ? {"x": width, "y": height}: imgNode.getSize();
-                var contentSize = this.form.app.content.getSize();
-                var contentScroll = (layout.mobile) ? document.body.getFirst().getScroll() : {"x": 0, "y": 0};
-                var y = p.y-size.y;
-                var x = p.x+s.x/2-size.x/2;
-
-                if (x<10) x = 10;
-                if (x+size.x>contentSize.x-10) x = contentSize.x-size.x-20;
-                if (y+size.y>contentSize.y-10) y = contentSize.y-size.y-20;
-                if (y<10) y = 10;
-                y=y+contentScroll.y;
-
-                if (layout.mobile){
-                    x = 0;
-                }
+                // var p = iconNode.getPosition(this.form.app.content);
+                // var s = iconNode.getSize();
+                // var size = (layout.mobile) ? {"x": width, "y": height}: imgNode.getSize();
+                // var contentSize = this.form.app.content.getSize();
+                // var contentScroll = (layout.mobile) ? document.body.getFirst().getScroll() : {"x": 0, "y": 0};
+                // var y = p.y-size.y;
+                // var x = p.x+s.x/2-size.x/2;
+                //
+                // if (x<10) x = 10;
+                // if (x+size.x>contentSize.x-10) x = contentSize.x-size.x-20;
+                // if (y+size.y>contentSize.y-10) y = contentSize.y-size.y-20;
+                // if (y<10) y = 10;
+                // y=y+contentScroll.y;
+                //
+                // if (layout.mobile){
+                //     x = 0;
+                // }
                 // imgNode.setStyles({
                 //     "top": ""+y+"px",
                 //     "left": ""+x+"px"

+ 2 - 0
o2web/source/x_component_query_QueryExplorer/Main.js

@@ -56,6 +56,7 @@ MWF.xApplication.query.QueryExplorer.Main = new Class({
                     this.createApplicationItem(json.data, "top");
                 }.bind(this));
 
+                this.reloadApplicationCategoryList(true);
                 this.notice(this.lp.application.createApplicationSuccess, "success");
             }.bind(this));
         }else{
@@ -100,6 +101,7 @@ MWF.xApplication.query.QueryExplorer.Main = new Class({
 
                 var complete = function(){
                     if (doCount == readyCount){
+                        _self.reloadApplicationCategoryList( true );
                         if (errorText){
                             _self.app.notice(errorText, "error");
                         }

+ 0 - 27
o2web/source/x_desktop/js/base.js

@@ -60,15 +60,6 @@ o2.xDesktop.requireApp = function (module, clazz, callback, async) {
             app.taskitem = taskitem;
             app.taskitem.app = app;
 
-            // if (layout.viewMode=="Default"){
-            //     if (!notCurrent){
-            //         app.load(!notCurrent);
-            //     }else{
-            //         app.isLoadApplication = false;
-            //     }
-            // }else{
-            //     app.load(!notCurrent);
-            // }
             app.isLoadApplication = true;
             app.load(!notCurrent);
 
@@ -266,24 +257,6 @@ o2.xDesktop.requireApp = function (module, clazz, callback, async) {
                     if (options) options.appId = appId;
                     _createNewApplication(e, appNamespace, appName, (options || {"appId": appId}), statusObj, inBrowser, taskitem, notCurrent);
                 }
-                // if (appNamespace.options.multitask){
-                //     if (options && options.appId){
-                //         if (layout.desktop.apps[options.appId]){
-                //             layout.desktop.apps[options.appId].setCurrent();
-                //         }else {
-                //             _createNewApplication(e, appNamespace, appName, options, obj, inBrowser);
-                //         }
-                //     }else{
-                //         _createNewApplication(e, appNamespace, appName, options, obj, inBrowser);
-                //     }
-                // }else{
-                //     if (layout.desktop.apps[appName]){
-                //         layout.desktop.apps[appName].setCurrent();
-                //     }else{
-                //         _createNewApplication(e, appNamespace, appName, options, obj, inBrowser);
-                //     }
-                // }
-                // _createNewApplication(e, appNamespace, appName, (options || {}), statusObj, inBrowser);
             }.bind(this));
         }
     };

+ 16 - 16
package.json

@@ -27,22 +27,22 @@
                 "typeInfor": "type welcome && echo Your server is build success: target/o2server/",
                 "clear": "gulp clear_build",
                 "clear_deploy": "gulp clear_deploy",
-                "build": "npm run clear && npm run build_parallel && npm run deploy && npm run typeInfor",
-                "build:win": "npm run clear && npm run build_parallel && npm run deploy:win && npm run typeInfor",
-                "build:linux": "npm run clear  && npm run build_parallel && npm run deploy:linux && npm run typeInfor",
-                "build:aix": "npm run clear &&  npm run build_parallel && npm run deploy:aix && npm run typeInfor",
-                "build:arm": "npm run clear &&  npm run build_parallel && npm run deploy:arm && npm run typeInfor",
-                "build:macos": "npm run clear  && npm run build_parallel && npm run deploy:macos && npm run typeInfor",
-                "build:risc": "npm run clear &&  npm run build_parallel && npm run deploy:risc && npm run typeInfor",
-                "build:rpi": "npm run clear &&  npm run build_parallel && npm run deploy:rpi && npm run typeInfor",
-                "build_ci": "npm run clear && npm run preperation && npm run build_parallel && npm run deploy && npm run typeInfor",
-                "build_ci:win": "npm run clear && npm run preperation:win && npm run build_parallel && npm run deploy:win && npm run typeInfor",
-                "build_ci:linux": "npm run clear && npm run preperation:linux && npm run build_parallel && npm run deploy:linux && npm run typeInfor",
-                "build_ci:aix": "npm run clear && npm run preperation:aix && npm run build_parallel && npm run deploy:aix && npm run typeInfor",
-                "build_ci:arm": "npm run clear && npm run preperation:arm && npm run build_parallel && npm run deploy:arm && npm run typeInfor",
-                "build_ci:macos": "npm run clear && npm run preperation:macos && npm run build_parallel && npm run deploy:macos && npm run typeInfor",
-                "build_ci:risc": "npm run clear && npm run preperation:risc && npm run build_parallel && npm run deploy:risc && npm run typeInfor",
-                "build_ci:rpi": "npm run clear && npm run preperation:rpi && npm run build_parallel && npm run deploy:rpi && npm run typeInfor",
+                "build": "npm run clear && npm run build_parallel && npm run deploy ",
+                "build:win": "npm run clear && npm run build_parallel && npm run deploy:win ",
+                "build:linux": "npm run clear  && npm run build_parallel && npm run deploy:linux ",
+                "build:aix": "npm run clear &&  npm run build_parallel && npm run deploy:aix ",
+                "build:arm": "npm run clear &&  npm run build_parallel && npm run deploy:arm ",
+                "build:macos": "npm run clear  && npm run build_parallel && npm run deploy:macos ",
+                "build:risc": "npm run clear &&  npm run build_parallel && npm run deploy:risc ",
+                "build:rpi": "npm run clear &&  npm run build_parallel && npm run deploy:rpi",
+                "build_ci": "npm run clear && npm run preperation && npm run build_parallel && npm run deploy",
+                "build_ci:win": "npm run clear && npm run preperation:win && npm run build_parallel && npm run deploy:win ",
+                "build_ci:linux": "npm run clear && npm run preperation:linux && npm run build_parallel && npm run deploy:linux ",
+                "build_ci:aix": "npm run clear && npm run preperation:aix && npm run build_parallel && npm run deploy:aix",
+                "build_ci:arm": "npm run clear && npm run preperation:arm && npm run build_parallel && npm run deploy:arm",
+                "build_ci:macos": "npm run clear && npm run preperation:macos && npm run build_parallel && npm run deploy:macos",
+                "build_ci:risc": "npm run clear && npm run preperation:risc && npm run build_parallel && npm run deploy:risc ",
+                "build_ci:rpi": "npm run clear && npm run preperation:rpi && npm run build_parallel && npm run deploy:rpi",
                 "test": "type welcome"
         },
         "repository": {