You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/05/01 06:08:47 UTC

[01/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1571] commons-cli version is updated

Repository: openmeetings
Updated Branches:
  refs/heads/3.2.x [created] 0033bb925


[OPENMEETINGS-1571] commons-cli version is updated


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/5e028d63
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/5e028d63
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/5e028d63

Branch: refs/heads/3.2.x
Commit: 5e028d632d32282ea6c71450804fac94a053c700
Parents: 681f13d
Author: Maxim Solodovnik <so...@apache.org>
Authored: Tue Mar 14 10:56:48 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Tue Mar 14 10:56:48 2017 +0000

----------------------------------------------------------------------
 openmeetings-install/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/5e028d63/openmeetings-install/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-install/pom.xml b/openmeetings-install/pom.xml
index 45a33f3..29f59b3 100644
--- a/openmeetings-install/pom.xml
+++ b/openmeetings-install/pom.xml
@@ -30,7 +30,7 @@
 	<name>Openmeetings Install</name>
 	<description>Module for OpenMeetings command line admin and classes necessary for installer.</description>
 	<properties>
-		<commons-cli.version>1.3.1</commons-cli.version>
+		<commons-cli.version>1.4</commons-cli.version>
 		<site.basedir>${project.parent.basedir}</site.basedir>
 	</properties>
 	<dependencies>


[05/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1553] more work on mobile client

Posted by so...@apache.org.
[OPENMEETINGS-1553] more work on mobile client


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/6360e962
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/6360e962
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/6360e962

Branch: refs/heads/3.2.x
Commit: 6360e962c0242a7b73e952697a40554ab3f241d6
Parents: a5d2b13
Author: Maxim Solodovnik <so...@apache.org>
Authored: Wed Mar 15 05:38:48 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Wed Mar 15 05:38:48 2017 +0000

----------------------------------------------------------------------
 .../org/apache/openmeetings/core/remote/MobileService.java   | 8 +++++++-
 .../core/remote/red5/ScopeApplicationAdapter.java            | 2 +-
 2 files changed, 8 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6360e962/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
index 8cbc78a..c3cb022 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/MobileService.java
@@ -335,7 +335,13 @@ public class MobileService {
 	 * @param userId - redundant userId
 	 */
 	public Map<String, Object> roomConnect(String SID, Long userId) {
-		return new HashMap<>();
+		// publicSid is changed on mobile room connect
+		IConnection current = Red5.getConnectionLocal();
+		Client c = sessionManager.getClientByStreamId(current.getClient().getId(), null);
+		Map<String, Object> result = new HashMap<>();
+		result.put("publicSid", c.getPublicSID());
+		result.put("broadCastId", c.getBroadCastID());
+		return result;
 	}
 
 	public Map<String, Object> updateAvMode(String avMode, String width, String height, Integer interviewPodId) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6360e962/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
index c854997..b00e9a7 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
@@ -794,7 +794,7 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp
 			rcl.setAvsettings("n");
 			sessionManager.updateClientByStreamId(streamId, rcl, false, null);
 			// Notify all clients of the same scope (room)
-			sendMessageToCurrentScope("closeStream", rcl, false);
+			sendMessageToCurrentScope("closeStream", rcl, rcl.isMobile());
 		} catch (Exception e) {
 			log.error("[streamBroadcastClose]", e);
 		}


[43/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1630] room counters are fixed

Posted by so...@apache.org.
[OPENMEETINGS-1630] room counters are fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/7ea97eb3
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/7ea97eb3
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/7ea97eb3

Branch: refs/heads/3.2.x
Commit: 7ea97eb3d493cc3f79dc5fc233fd0cc262125f81
Parents: 96e7578
Author: Maxim Solodovnik <so...@apache.org>
Authored: Tue Apr 18 17:51:44 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Tue Apr 18 17:51:44 2017 +0000

----------------------------------------------------------------------
 .../db/dto/basic/ServiceResult.java             |  5 +-
 .../openmeetings/db/dto/room/RoomCountBean.java | 53 ----------------
 .../openmeetings/db/dto/room/RoomCountDTO.java  | 66 ++++++++++++++++++++
 .../openmeetings/webservice/FileWebService.java |  3 +-
 .../webservice/GroupWebService.java             | 11 ++--
 .../openmeetings/webservice/RoomWebService.java | 17 ++---
 .../openmeetings/webservice/UserWebService.java | 34 +++++-----
 .../webservice/cluster/UserService.java         | 34 +++++-----
 8 files changed, 121 insertions(+), 102 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7ea97eb3/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java
index 9212ca8..4393b05 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java
@@ -29,6 +29,7 @@ import javax.xml.bind.annotation.XmlType;
 @XmlAccessorType(XmlAccessType.FIELD)
 public class ServiceResult implements Serializable {
 	private static final long serialVersionUID = 1L;
+	public static ServiceResult NO_PERMISSION = new ServiceResult(-26L, "Insufficient permissions", Type.ERROR);
 	private long code;
 	private String message;
 	private String type;
@@ -39,7 +40,7 @@ public class ServiceResult implements Serializable {
 	}
 
 	public ServiceResult() {}
-	
+
 	public ServiceResult(long code, String message, String type) {
 		super();
 		this.code = code;
@@ -53,7 +54,7 @@ public class ServiceResult implements Serializable {
 		this.message = message;
 		this.type = type.name();
 	}
-	
+
 	public long getCode() {
 		return code;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7ea97eb3/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomCountBean.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomCountBean.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomCountBean.java
deleted file mode 100644
index b612e70..0000000
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomCountBean.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.db.dto.room;
-
-public class RoomCountBean {
-	private Long roomId;
-	private String roomName;
-	private int roomCount;
-	private long maxUser;
-	
-	public RoomCountBean() {}
-	
-	public Long getRoomId() {
-		return roomId;
-	}
-	public void setRoomId(Long roomId) {
-		this.roomId = roomId;
-	}
-	public String getRoomName() {
-		return roomName;
-	}
-	public void setRoomName(String roomName) {
-		this.roomName = roomName;
-	}
-	public int getRoomCount() {
-		return roomCount;
-	}
-	public void setRoomCount(int roomCount) {
-		this.roomCount = roomCount;
-	}
-	public long getMaxUser() {
-		return maxUser;
-	}
-	public void setMaxUser(long maxUser) {
-		this.maxUser = maxUser;
-	}
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7ea97eb3/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomCountDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomCountDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomCountDTO.java
new file mode 100644
index 0000000..3a6c168
--- /dev/null
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomCountDTO.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.db.dto.room;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class RoomCountDTO {
+	private Long roomId;
+	private String roomName;
+	private int roomCount;
+	private long maxUser;
+
+	public RoomCountDTO() {}
+
+	public Long getRoomId() {
+		return roomId;
+	}
+
+	public void setRoomId(Long roomId) {
+		this.roomId = roomId;
+	}
+
+	public String getRoomName() {
+		return roomName;
+	}
+
+	public void setRoomName(String roomName) {
+		this.roomName = roomName;
+	}
+
+	public int getRoomCount() {
+		return roomCount;
+	}
+
+	public void setRoomCount(int roomCount) {
+		this.roomCount = roomCount;
+	}
+
+	public long getMaxUser() {
+		return maxUser;
+	}
+
+	public void setMaxUser(long maxUser) {
+		this.maxUser = maxUser;
+	}
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7ea97eb3/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
index ea70478..d4e8326 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.webservice;
 
+import static org.apache.openmeetings.db.dto.basic.ServiceResult.NO_PERMISSION;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.webservice.Constants.TNS;
 
@@ -111,7 +112,7 @@ public class FileWebService {
 				fileDao.delete(f);
 				return new ServiceResult(id, "Deleted", Type.SUCCESS);
 			} else {
-				return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR);
+				return NO_PERMISSION;
 			}
 		} catch (Exception e) {
 			log.error("[delete] ", e);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7ea97eb3/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java
index a18f223..87a6ab6 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/GroupWebService.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.webservice;
 
+import static org.apache.openmeetings.db.dto.basic.ServiceResult.NO_PERMISSION;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.webservice.Constants.TNS;
 
@@ -106,7 +107,7 @@ public class GroupWebService {
 			return new ServiceResult(groupDao.update(o, userId).getId(), "Success", Type.SUCCESS);
 		} else {
 			log.error("Could not create group");
-			return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR);
+			return NO_PERMISSION;
 		}
 	}
 
@@ -161,7 +162,7 @@ public class GroupWebService {
 				}
 				return new ServiceResult(userid, "Success", Type.SUCCESS);
 			} else {
-				return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR);
+				return NO_PERMISSION;
 			}
 		} catch (Exception err) {
 			log.error("addUser", err);
@@ -205,7 +206,7 @@ public class GroupWebService {
 				}
 				return new ServiceResult(userid, "Success", Type.SUCCESS);
 			} else {
-				return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR);
+				return NO_PERMISSION;
 			}
 		} catch (Exception err) {
 			log.error("addUser", err);
@@ -253,7 +254,7 @@ public class GroupWebService {
 				}
 				return new ServiceResult(0L, "Not added", Type.SUCCESS);
 			} else {
-				return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR);
+				return NO_PERMISSION;
 			}
 		} catch (Exception err) {
 			log.error("[addRoom]", err);
@@ -333,7 +334,7 @@ public class GroupWebService {
 
 				return new ServiceResult(id, "Deleted", Type.SUCCESS);
 			} else {
-				return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR);
+				return NO_PERMISSION;
 			}
 		} catch (Exception err) {
 			log.error("deleteUserById", err);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7ea97eb3/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
index 98676be..adcfce6 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
@@ -39,18 +39,18 @@ import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
+import org.apache.openmeetings.IApplication;
 import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.dao.room.IInvitationManager;
 import org.apache.openmeetings.db.dao.room.InvitationDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.server.ISessionManager;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.dao.user.IUserManager;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
 import org.apache.openmeetings.db.dto.room.InvitationDTO;
-import org.apache.openmeetings.db.dto.room.RoomCountBean;
+import org.apache.openmeetings.db.dto.room.RoomCountDTO;
 import org.apache.openmeetings.db.dto.room.RoomDTO;
 import org.apache.openmeetings.db.entity.room.Invitation;
 import org.apache.openmeetings.db.entity.room.Invitation.MessageType;
@@ -58,8 +58,10 @@ import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.server.Sessiondata;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.apache.openmeetings.util.message.RoomMessage;
 import org.apache.openmeetings.webservice.error.ServiceException;
+import org.apache.wicket.Application;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -88,8 +90,6 @@ public class RoomWebService {
 	@Autowired
 	private IInvitationManager invitationManager;
 	@Autowired
-	private ISessionManager sessionManager;
-	@Autowired
 	private RoomDao roomDao;
 
 	/**
@@ -420,19 +420,20 @@ public class RoomWebService {
 	@WebMethod
 	@GET
 	@Path("/counters")
-	public List<RoomCountBean> counters(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @QueryParam("id") List<Long> ids) throws ServiceException {
-		List<RoomCountBean> roomBeans = new ArrayList<>();
+	public List<RoomCountDTO> counters(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @QueryParam("id") List<Long> ids) throws ServiceException {
+		List<RoomCountDTO> roomBeans = new ArrayList<>();
 		try {
 			Sessiondata sd = sessionDao.check(sid);
 			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
+				IApplication app = (IApplication)Application.get(OpenmeetingsVariables.wicketApplicationName);
 				List<Room> rooms = roomDao.get(ids);
 
 				for (Room room : rooms) {
-					RoomCountBean rCountBean = new RoomCountBean();
+					RoomCountDTO rCountBean = new RoomCountDTO();
 					rCountBean.setRoomId(room.getId());
 					rCountBean.setRoomName(room.getName());
 					rCountBean.setMaxUser(room.getNumberOfPartizipants());
-					rCountBean.setRoomCount(sessionManager.getClientListByRoom(room.getId()).size());
+					rCountBean.setRoomCount(app.getOmRoomClients(room.getId()).size());
 
 					roomBeans.add(rCountBean);
 				}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7ea97eb3/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
index 30834e7..0ff9f7f 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.webservice;
 
+import static org.apache.openmeetings.db.dto.basic.ServiceResult.NO_PERMISSION;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.webservice.Constants.TNS;
 import static org.apache.openmeetings.webservice.Constants.USER_SERVICE_NAME;
@@ -41,7 +42,7 @@ import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
-import org.apache.openmeetings.core.session.SessionManager;
+import org.apache.openmeetings.IApplication;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.server.SOAPLoginDao;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
@@ -59,20 +60,22 @@ import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.util.OmException;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.apache.openmeetings.webservice.cluster.UserService;
 import org.apache.openmeetings.webservice.error.ServiceException;
+import org.apache.wicket.Application;
 import org.apache.wicket.util.string.Strings;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 
 /**
- * 
+ *
  * The Service contains methods to login and create hash to directly enter
  * conference rooms, recordings or the application in general
- * 
+ *
  * @author sebawagner
- * 
+ *
  */
 @WebService(serviceName = USER_SERVICE_NAME, targetNamespace = TNS, portName = USER_SERVICE_PORT_NAME)
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
@@ -90,8 +93,6 @@ public class UserWebService implements UserService {
 	private UserDao userDao;
 	@Autowired
 	private SessiondataDao sessionDao;
-	@Autowired
-	private SessionManager sessionManager;
 
 	/* (non-Javadoc)
 	 * @see org.apache.openmeetings.webservice.cluster.UserService#login(java.lang.String, java.lang.String)
@@ -107,7 +108,7 @@ public class UserWebService implements UserService {
 			if (u == null) {
 				return new ServiceResult(-1L, "Login failed", Type.ERROR);
 			}
-			
+
 			Sessiondata sd = sessionDao.create(u.getId(), u.getLanguageId());
 			log.debug("Login user SID : " + sd.getSessionId());
 			return new ServiceResult(u.getId(), sd.getSessionId(), Type.SUCCESS);
@@ -207,7 +208,7 @@ public class UserWebService implements UserService {
 	}
 
 	//FIXME no update
-	
+
 	/* (non-Javadoc)
 	 * @see org.apache.openmeetings.webservice.cluster.UserService#delete(java.lang.String, long)
 	 */
@@ -223,7 +224,7 @@ public class UserWebService implements UserService {
 
 				return new ServiceResult(id, "Deleted", Type.SUCCESS);
 			} else {
-				return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR);
+				return NO_PERMISSION;
 			}
 		} catch (Exception err) {
 			log.error("deleteUserById", err);
@@ -253,7 +254,7 @@ public class UserWebService implements UserService {
 
 				return new ServiceResult(user.getId(), "Deleted", Type.SUCCESS);
 			} else {
-				return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR);
+				return NO_PERMISSION;
 			}
 		} catch (Exception err) {
 			log.error("deleteUserByExternalUserIdAndType", err);
@@ -305,7 +306,7 @@ public class UserWebService implements UserService {
 					return new ServiceResult(0, hash, Type.SUCCESS);
 				}
 			} else {
-				return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR);
+				return NO_PERMISSION;
 			}
 		} catch (Exception err) {
 			log.error("getRoomHash", err);
@@ -326,10 +327,10 @@ public class UserWebService implements UserService {
 			Sessiondata sd = sessionDao.check(sid);
 			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
 				Boolean success = userManagement.kickUserByPublicSID(sid, publicSID);
-	
+
 				return new ServiceResult(Boolean.TRUE.equals(success) ? 1L : 0L, Boolean.TRUE.equals(success) ? "deleted" : "not deleted", Type.SUCCESS);
 			} else {
-				return new ServiceResult(-26L, "Insufficient permissions", Type.ERROR);
+				return NO_PERMISSION;
 			}
 		} catch (Exception err) {
 			log.error("[kick]", err);
@@ -344,11 +345,12 @@ public class UserWebService implements UserService {
 	@WebMethod
 	@GET
 	@Path("/count/{roomid}")
-	public int count(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="roomid") @PathParam("roomid") Long roomId) {
+	public ServiceResult count(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="roomid") @PathParam("roomid") Long roomId) {
 		Sessiondata sd = sessionDao.check(sid);
 		if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
-			return sessionManager.getClientListByRoom(roomId).size();
+			IApplication app = (IApplication)Application.get(OpenmeetingsVariables.wicketApplicationName);
+			return new ServiceResult(app.getOmRoomClients(roomId).size(), "count", Type.SUCCESS);
 		}
-		return -1;
+		return NO_PERMISSION;
 	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7ea97eb3/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/UserService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/UserService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/UserService.java
index daf9328..6ccba83 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/UserService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/cluster/UserService.java
@@ -45,33 +45,33 @@ public interface UserService {
 	/**
 	 * @param user - login or email of Openmeetings user with admin or SOAP-rights
 	 * @param pass - password
-	 *            
+	 *
 	 * @return - {@link ServiceResult} with error code or SID and userId
 	 */
 	ServiceResult login(@WebParam(name="user") @QueryParam("user") String user, @WebParam(name="pass") @QueryParam("pass") String pass);
 
 	/**
 	 * Lists all users in the system!
-	 * 
+	 *
 	 * @param sid
 	 *            The SID from getSession
-	 *            
+	 *
 	 * @return - list of users
 	 * @throws ServiceException
 	 */
 	List<UserDTO> get(@WebParam(name="sid") @QueryParam("sid") String sid) throws ServiceException;
-	
+
 	/**
 	 * Adds a new User like through the Frontend, but also does activates the
 	 * Account To do SSO see the methods to create a hash and use those ones!
-	 * 
+	 *
 	 * @param sid
 	 *            The SID from getSession
 	 * @param user
 	 *            user object
 	 * @param confirm
 	 *            whatever or not to send email, leave empty for auto-send
-	 *            
+	 *
 	 * @return - id of the user added or error code
 	 * @throws ServiceException
 	 */
@@ -82,30 +82,30 @@ public interface UserService {
 			) throws ServiceException;
 
 	/**
-	 * 
+	 *
 	 * Delete a certain user by its id
-	 * 
+	 *
 	 * @param sid
 	 *            The SID from getSession
 	 * @param id
 	 *            the openmeetings user id
-	 *            
+	 *
 	 * @return - id of the user deleted, error code otherwise
 	 * @throws ServiceException
 	 */
 	ServiceResult delete(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="id") @PathParam("id") long id) throws ServiceException;
 
 	/**
-	 * 
+	 *
 	 * Delete a certain user by its external user id
-	 * 
+	 *
 	 * @param sid
 	 *            The SID from getSession
 	 * @param externalId
 	 *            externalUserId
 	 * @param externalType
 	 *            externalUserId
-	 *            
+	 *
 	 * @return - id of user deleted, or error code
 	 * @throws ServiceException
 	 */
@@ -119,14 +119,14 @@ public interface UserService {
 	 * Description: sets the SessionObject for a certain SID, after setting this
 	 * Session-Object you can use the SID + a RoomId to enter any Room. ...
 	 * Session-Hashs are deleted 15 minutes after the creation if not used.
-	 * 
+	 *
 	 * @param sid
 	 *            The SID from getSession
 	 * @param user
 	 *            user details to set
 	 * @param options
 	 *            room options to set
-	 *            
+	 *
 	 * @return - secure hash or error code
 	 * @throws ServiceException
 	 */
@@ -138,7 +138,7 @@ public interface UserService {
 
 	/**
 	 * Kick a user by its public SID
-	 * 
+	 *
 	 * @param sid
 	 *            The SID from getSession
 	 * @param publicSID
@@ -151,10 +151,10 @@ public interface UserService {
 	/**
 	 * Returns the count of users currently in the Room with given id
 	 * No admin rights are necessary for this call
-	 * 
+	 *
 	 * @param sid The SID from UserService.getSession
 	 * @param roomId id of the room to get users
 	 * @return number of users as int
 	 */
-	int count(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="roomid") @PathParam("roomid") Long roomId);
+	ServiceResult count(@WebParam(name="sid") @QueryParam("sid") String sid, @WebParam(name="roomid") @PathParam("roomid") Long roomId);
 }


[28/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1520] restricted drive files can be sent to WB

Posted by so...@apache.org.
[OPENMEETINGS-1520] restricted drive files can be sent to WB


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/b8c2ac9f
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/b8c2ac9f
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/b8c2ac9f

Branch: refs/heads/3.2.x
Commit: b8c2ac9fbab25f5326922e4e31ff83359fd7866d
Parents: d24410c
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Mar 30 12:48:50 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Mar 30 12:48:50 2017 +0000

----------------------------------------------------------------------
 .../apache/openmeetings/web/common/tree/FileItemTree.java   | 8 ++++++++
 .../apache/openmeetings/web/common/tree/FileTreePanel.java  | 9 +++++++--
 .../apache/openmeetings/web/common/tree/FolderPanel.java    | 5 +++--
 .../java/org/apache/openmeetings/web/room/RoomPanel.java    | 2 +-
 4 files changed, 19 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b8c2ac9f/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
index 7ddc63e..f416316 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
@@ -78,6 +78,14 @@ public class FileItemTree extends DefaultNestedTree<FileItem> {
 		return (OmTreeProvider)super.getProvider();
 	}
 
+	public void refreshRoots(boolean all) {
+		modelChanging();
+		getModelObject().clear();
+		modelChanged();
+		getProvider().refreshRoots(all);
+		replace(newSubtree("subtree", Model.of((FileItem)null)));
+	}
+
 	@Override
 	protected Component newContentComponent(String id, IModel<FileItem> node) {
 		return new Folder<FileItem>(id, this, node) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b8c2ac9f/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
index 1cb375f..a23cbd1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
@@ -223,8 +223,12 @@ public abstract class FileTreePanel extends Panel {
 
 	private void deleteAll(AjaxRequestTarget target) {
 		for (Entry<String, FileItem> e : selected.entrySet()) {
-			delete(e.getValue(), target);
+			FileItem f = e.getValue();
+			if (!f.isReadOnly()) {
+				delete(f, target);
+			}
 		}
+		updateSelected(target);
 		selected.clear();
 	}
 
@@ -243,7 +247,7 @@ public abstract class FileTreePanel extends Panel {
 	public void setReadOnly(boolean readOnly, IPartialPageRequestHandler handler) {
 		if (this.readOnly != readOnly) {
 			this.readOnly = readOnly;
-			tree.getProvider().refreshRoots(!readOnly);
+			tree.refreshRoots(!readOnly);
 			createDir.setEnabled(!readOnly);
 			createDir.add(AttributeModifier.replace("class", new StringBuilder(CREATE_DIR_CLASS).append(readOnly ? DISABLED_CLASS : "")));
 			upload.setEnabled(!readOnly);
@@ -251,6 +255,7 @@ public abstract class FileTreePanel extends Panel {
 			trashBorder.add(AttributeModifier.replace("class", new StringBuilder(TRASH_CLASS).append(readOnly ? DISABLED_CLASS : "")));
 			if (handler != null) {
 				handler.add(createDir, upload, trashBorder);
+				update(handler);
 			}
 		}
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b8c2ac9f/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
index 4f50487..fdc60b4 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
@@ -79,7 +79,7 @@ public class FolderPanel extends Panel {
 				target.add(treePanel.trees);
 			}
 		} : new WebMarkupContainer("drop");
-		if (r.getId() == null || !editable) {
+		if (r.getId() == null || treePanel.isReadOnly()) {
 			drag = new WebMarkupContainer("drag");
 		} else {
 			drag = new Draggable<FileItem>("drag", Model.of(r)) {
@@ -93,7 +93,8 @@ public class FolderPanel extends Panel {
 					behavior.setOption("helper", "dragHelper");
 				}
 			}.setContainment(treePanel.getContainment());
-			drag.add(AttributeModifier.append("class", r instanceof Recording ? "recorditem" : "fileitem"));
+			String cls = r instanceof Recording ? "recorditem" : "fileitem";
+			drag.add(AttributeModifier.append("class", r.isReadOnly() ? "readonlyitem" : cls));
 		}
 		Component name = r.getId() == null || !editable ? new Label("name", r.getName()) : new AjaxEditableLabel<String>("name", Model.of(model.getObject().getName())) {
 			private static final long serialVersionUID = 1L;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b8c2ac9f/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index 8569aec..1146441 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -181,7 +181,7 @@ public class RoomPanel extends BasePanel {
 			public void onConfigure(JQueryBehavior behavior) {
 				super.onConfigure(behavior);
 				behavior.setOption("hoverClass", Options.asString("ui-state-hover"));
-				behavior.setOption("accept", Options.asString(".recorditem, .fileitem"));
+				behavior.setOption("accept", Options.asString(".recorditem, .fileitem, .readonlyitem"));
 			}
 
 			@Override


[34/50] [abbrv] openmeetings git commit: no jira: small issues in dashboard serialization are fixed

Posted by so...@apache.org.
no jira: small issues in dashboard serialization are fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/935f2ff1
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/935f2ff1
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/935f2ff1

Branch: refs/heads/3.2.x
Commit: 935f2ff1f94cd41c1bb6d31ad54ebf8bef226bc1
Parents: d5d8633
Author: Maxim Solodovnik <so...@apache.org>
Authored: Sun Apr 2 14:01:33 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Sun Apr 2 14:01:33 2017 +0000

----------------------------------------------------------------------
 .../apache/openmeetings/util/OmFileHelper.java  |  2 +-
 .../web/util/UserDashboardPersister.java        | 22 +++++++++++---------
 2 files changed, 13 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/935f2ff1/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
index a04cd1f..80b4ce1 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
@@ -94,7 +94,7 @@ public class OmFileHelper {
 	private static File getDir(File parent, String name) {
 		File f = new File(parent, name);
 		if (!f.exists()) {
-			f.mkdir();
+			f.mkdirs();
 		}
 		return f;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/935f2ff1/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboardPersister.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
index 0ab3242..d7dbfc9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserDashboardPersister.java
@@ -27,6 +27,8 @@ import static org.red5.logging.Red5LoggerFactory.getLogger;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.util.Collections;
 
 import org.slf4j.Logger;
@@ -39,7 +41,7 @@ import com.thoughtworks.xstream.io.xml.DomDriver;
 
 public class UserDashboardPersister implements DashboardPersister {
 	private static final Logger log = getLogger(UserDashboardPersister.class, webAppRootKey);
-	
+
 	@Override
 	public Dashboard load() {
 		return new XStreamDashboardPersister().load();
@@ -53,23 +55,23 @@ public class UserDashboardPersister implements DashboardPersister {
 	public static class XStreamDashboardPersister implements DashboardPersister {
 		private File file;
 		private XStream xstream;
-		
+
 		public XStreamDashboardPersister() {
 			this.file = getUserDashboard(getUserId());
-			
+
 			xstream = new XStream(new DomDriver(UTF_8.name()));
 			xstream.setMode(XStream.NO_REFERENCES);
 			xstream.alias("dashboard", UserDashboard.class);
 		}
-		
+
 		@Override
 		public Dashboard load() {
 			if (!file.exists() || !file.isFile()) {
 				return null;
 			}
-			
-			try {
-				return (Dashboard) xstream.fromXML(new FileInputStream(file));
+
+			try (InputStream is = new FileInputStream(file)) {
+				return (Dashboard) xstream.fromXML(is);
 			} catch (Exception e) {
 				log.error("Error while loading dashboard", e);
 				return null;
@@ -80,9 +82,9 @@ public class UserDashboardPersister implements DashboardPersister {
 		public void save(Dashboard dashboard) {
 			// sort widgets
 			Collections.sort(dashboard.getWidgets(), new WidgetComparator());
-			
-			try {
-				xstream.toXML(dashboard, new FileOutputStream(file));
+
+			try (OutputStream os = new FileOutputStream(file)) {
+				xstream.toXML(dashboard, os);
 			} catch (Exception e) {
 				log.error("Error while saving dashboard", e);
 			}


[08/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1595] video off/on should work better

Posted by so...@apache.org.
[OPENMEETINGS-1595] video off/on should work better


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/4df09e53
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/4df09e53
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/4df09e53

Branch: refs/heads/3.2.x
Commit: 4df09e53bee1256b9d5d34848d49d64a584a4974
Parents: 5d4504e
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Mar 16 04:36:08 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Mar 16 04:36:08 2017 +0000

----------------------------------------------------------------------
 .../core/remote/red5/ScopeApplicationAdapter.java            | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4df09e53/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
index b00e9a7..ab5f776 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
@@ -789,9 +789,11 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp
 				log.debug("***  +++++++ ######## sendClientBroadcastNotifications Any Client is Recording - stop that");
 				recordingService.stopRecordingShowForClient(current.getScope(), rcl);
 			}
-			rcl.setBroadCastID(-1);
-			rcl.setIsBroadcasting(false);
-			rcl.setAvsettings("n");
+			if (stream.getPublishedName().equals("" + rcl.getBroadCastID())) {
+				rcl.setBroadCastID(-1);
+				rcl.setIsBroadcasting(false);
+				rcl.setAvsettings("n");
+			}
 			sessionManager.updateClientByStreamId(streamId, rcl, false, null);
 			// Notify all clients of the same scope (room)
 			sendMessageToCurrentScope("closeStream", rcl, rcl.isMobile());


[12/50] [abbrv] openmeetings git commit: no jira: source bundle is improved, build warnings are fixed

Posted by so...@apache.org.
no jira: source bundle is improved, build warnings are fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/914da1d6
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/914da1d6
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/914da1d6

Branch: refs/heads/3.2.x
Commit: 914da1d6262fc5721161fb5c437b6dc4879c8381
Parents: bb8340b
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Mar 17 08:56:06 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Mar 17 08:56:06 2017 +0000

----------------------------------------------------------------------
 .../src/main/assembly/assembly.xml              |  4 +--
 openmeetings-server/pom.xml                     | 24 ++++++++++++++
 openmeetings-server/src/main/assembly/src.xml   |  7 +++++
 pom.xml                                         | 33 ++++++++++++++++++++
 4 files changed, 66 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/914da1d6/openmeetings-screenshare/src/main/assembly/assembly.xml
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/src/main/assembly/assembly.xml b/openmeetings-screenshare/src/main/assembly/assembly.xml
index 94980c9..71c2794 100644
--- a/openmeetings-screenshare/src/main/assembly/assembly.xml
+++ b/openmeetings-screenshare/src/main/assembly/assembly.xml
@@ -27,7 +27,7 @@
 	<includeBaseDirectory>false</includeBaseDirectory>
 	<dependencySets>
 		<dependencySet>
-			<outputDirectory>/</outputDirectory>
+			<outputDirectory></outputDirectory>
 			<includes>
 				<include>commons-codec:commons-codec</include>
 				<include>commons-beanutils:commons-beanutils</include>
@@ -58,7 +58,7 @@
 	<fileSets>
 		<fileSet>
 			<directory>${project.build.outputDirectory}</directory>
-			<outputDirectory>/</outputDirectory>
+			<outputDirectory></outputDirectory>
 		</fileSet>
 	</fileSets>
 </assembly>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/914da1d6/openmeetings-server/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/pom.xml b/openmeetings-server/pom.xml
index e70feb6..b64cd5b 100644
--- a/openmeetings-server/pom.xml
+++ b/openmeetings-server/pom.xml
@@ -148,6 +148,30 @@
 	<build>
 		<plugins>
 			<plugin>
+				<groupId>com.internetitem</groupId>
+				<artifactId>write-properties-file-maven-plugin</artifactId>
+				<version>1.0.1</version>
+				<executions>
+					<execution>
+						<id>write build number</id>
+						<phase>compile</phase>
+						<goals>
+							<goal>write-properties-file</goal>
+						</goals>
+						<configuration>
+							<filename>build.properties</filename>
+							<comment>Licensed under Apache License 2.0. http://www.apache.org/licenses/LICENSE-2.0</comment>
+							<properties>
+								<property>
+									<name>buildnumber</name>
+									<value>${buildNumber}</value>
+								</property>
+							</properties>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
 				<artifactId>maven-antrun-plugin</artifactId>
 				<executions>
 					<execution>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/914da1d6/openmeetings-server/src/main/assembly/src.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/main/assembly/src.xml b/openmeetings-server/src/main/assembly/src.xml
index 091084b..27e9726 100644
--- a/openmeetings-server/src/main/assembly/src.xml
+++ b/openmeetings-server/src/main/assembly/src.xml
@@ -48,5 +48,12 @@
 				<exclude>**/.settings/**</exclude>
 			</excludes>
 		</fileSet>
+		<fileSet>
+			<directory>${project.build.directory}/classes</directory>
+			<outputDirectory></outputDirectory>
+			<includes>
+				<include>build.properties</include>
+			</includes>
+		</fileSet>
 	</fileSets>
 </assembly>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/914da1d6/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 85461aa..a993c9a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -183,6 +183,33 @@
 				<module>openmeetings-db</module>
 			</modules>
 		</profile>
+		<profile>
+			<id>read-build-number</id>
+			<activation>
+				<file><exists>build.properties</exists></file>
+			</activation>
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.codehaus.mojo</groupId>
+						<artifactId>properties-maven-plugin</artifactId>
+						<executions>
+							<execution>
+								<phase>validate</phase>
+								<goals>
+									<goal>read-project-properties</goal>
+								</goals>
+								<configuration>
+									<files>
+										<file>build.properties</file>
+									</files>
+								</configuration>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
 	</profiles>
 	<url>http://openmeetings.apache.org</url>
 	<inceptionYear>2012</inceptionYear>
@@ -704,6 +731,7 @@
 				</executions>
 				<configuration>
 					<getRevisionOnlyOnce>true</getRevisionOnlyOnce>
+					<revisionOnScmFailure>${buildnumber}</revisionOnScmFailure>
 				</configuration>
 			</plugin>
 			<plugin>
@@ -891,6 +919,11 @@
 					<artifactId>maven-jarsigner-plugin</artifactId>
 					<version>1.4</version>
 				</plugin>
+				<plugin>
+					<groupId>org.codehaus.mojo</groupId>
+					<artifactId>properties-maven-plugin</artifactId>
+					<version>1.0.0</version>
+				</plugin>
 
 				<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
 				<plugin>


[47/50] [abbrv] openmeetings git commit: no jira: instructions updated according to board comments

Posted by so...@apache.org.
no jira: instructions updated according to board comments


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/c8b1afb3
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/c8b1afb3
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/c8b1afb3

Branch: refs/heads/3.2.x
Commit: c8b1afb3b0faf15f6d63a2eaf5c3a192d3229f25
Parents: f639443
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Apr 20 01:40:00 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Apr 20 01:40:00 2017 +0000

----------------------------------------------------------------------
 openmeetings-server/src/site/xdoc/ReleaseGuide.xml | 4 ----
 1 file changed, 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/c8b1afb3/openmeetings-server/src/site/xdoc/ReleaseGuide.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/ReleaseGuide.xml b/openmeetings-server/src/site/xdoc/ReleaseGuide.xml
index 4015a08..b1227ec 100644
--- a/openmeetings-server/src/site/xdoc/ReleaseGuide.xml
+++ b/openmeetings-server/src/site/xdoc/ReleaseGuide.xml
@@ -187,16 +187,12 @@ mvn deploy -Pdeploy,rc
 					<a href="http://mail-archives.apache.org/mod_mbox/openmeetings-dev/201701.mbox/%3CCAJmbs8jZ7EiXoeBbG4ynvg30FPx2nAOJMypE2Qp-v-c63ayO9A%40mail.gmail.com%3E">example Vote email</a>
 					<a href="http://s.apache.org/vote-2.0.0RC4">example Vote email (Incubator)</a>
 					<br />
-					Forward (Not CC) this Vote email to: private@openmeetings.apache.org<br />
-					<br />
 					After the vote is over, send a "RESULT" email to the list with the subject line:<br />
 					[RESULT][VOTE] Apache OpenMeetings x.xx release<br />
 					An example for such an email:
 					<a
 						href="http://mail-archives.apache.org/mod_mbox/openmeetings-dev/201701.mbox/%3CCAJmbs8gyvHuarzdVma%2BF6ap7RHBhhVciZp5Oi5JogQdLR6o0NA%40mail.gmail.com%3E">example Result email</a>
 					<br />
-					Forward (Not CC) this RESULT VOTE email to: private@openmeetings.apache.org<br />
-					<br />
 					Votes on whether a package is ready to be released use majority approval -- i.e., at 
 					least three PMC members must vote affirmatively for release, and there must be more 
 					positive than negative votes. Releases may not be vetoed. Before voting +1 PMC members


[36/50] [abbrv] openmeetings git commit: [OPENMEETINGS-551] basic save is added, code clean-up

Posted by so...@apache.org.
[OPENMEETINGS-551] basic save is added, code clean-up


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/e78466d5
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/e78466d5
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/e78466d5

Branch: refs/heads/3.2.x
Commit: e78466d5d5af373477162765ab0038ec05fc77fd
Parents: 4df306f
Author: Maxim Solodovnik <so...@apache.org>
Authored: Wed Apr 5 03:56:54 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Wed Apr 5 03:56:54 2017 +0000

----------------------------------------------------------------------
 .../db/dto/file/FileExplorerItemDTO.java        |  19 ++-
 .../db/dto/room/RoomOptionsDTO.java             |   1 -
 .../openmeetings/db/dto/room/Whiteboard.java    |   5 +-
 .../web/common/AddFolderDialog.html             |  29 -----
 .../web/common/AddFolderDialog.java             | 107 ----------------
 .../openmeetings/web/common/NameDialog.html     |  29 +++++
 .../openmeetings/web/common/NameDialog.java     | 125 +++++++++++++++++++
 .../web/common/tree/FileTreePanel.java          |   6 +-
 .../web/room/sidebar/RoomFilePanel.java         |   4 +-
 .../web/room/sidebar/RoomSidebar.java           |   4 +-
 .../web/user/profile/MessagesContactsPanel.java |   4 +-
 .../web/user/record/RecordingsPanel.java        |   4 +-
 .../src/main/webapp/WEB-INF/web.xml             |  12 +-
 13 files changed, 189 insertions(+), 160 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e78466d5/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java
index e384ad5..49f7b23 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java
@@ -31,7 +31,7 @@ import org.apache.openmeetings.db.entity.file.FileItem.Type;
 
 /**
  * This Object will represent a File on the File-System
- * 
+ *
  * @author sebastianwagner
  *
  */
@@ -44,6 +44,7 @@ public class FileExplorerItemDTO implements Serializable {
 	private String hash;
 	private Long parentId;
 	private Long roomId;
+	private Long groupId;
 	private Long ownerId;
 	private Long size;
 	private String externalId;
@@ -60,6 +61,7 @@ public class FileExplorerItemDTO implements Serializable {
 		hash = f.getHash();
 		parentId = f.getParentId();
 		roomId = f.getRoomId();
+		groupId = f.getGroupId();
 		ownerId = f.getOwnerId();
 		size = f.getSize();
 		externalId = f.getExternalId();
@@ -68,7 +70,7 @@ public class FileExplorerItemDTO implements Serializable {
 		width = f.getWidth();
 		height = f.getHeight();
 	}
-	
+
 	public FileExplorerItem get() {
 		FileExplorerItem f = new FileExplorerItem();
 		f.setId(id);
@@ -76,6 +78,7 @@ public class FileExplorerItemDTO implements Serializable {
 		f.setHash(hash);
 		f.setParentId(parentId != null && parentId > 0 ? parentId : null);
 		f.setRoomId(roomId != null && roomId > 0 ? roomId : null);
+		f.setRoomId(groupId != null && groupId > 0 ? groupId : null);
 		f.setOwnerId(ownerId != null && ownerId > 0 ? ownerId : null);
 		f.setSize(size);
 		f.setExternalId(externalId);
@@ -85,11 +88,11 @@ public class FileExplorerItemDTO implements Serializable {
 		f.setHeight(height);
 		return f;
 	}
-	
+
 	public Long getId() {
 		return id;
 	}
-	
+
 	public void setId(Long id) {
 		this.id = id;
 	}
@@ -126,6 +129,14 @@ public class FileExplorerItemDTO implements Serializable {
 		this.roomId = roomId;
 	}
 
+	public Long getGroupId() {
+		return groupId;
+	}
+
+	public void setGroupId(Long groupId) {
+		this.groupId = groupId;
+	}
+
 	public Long getOwnerId() {
 		return ownerId;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e78466d5/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java
index c1a0888..950859b 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java
@@ -28,7 +28,6 @@ import javax.xml.bind.annotation.XmlRootElement;
 
 import com.github.openjson.JSONObject;
 
-
 @XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)
 public class RoomOptionsDTO implements Serializable {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e78466d5/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
index 0cfe6d5..41df977 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
@@ -20,12 +20,13 @@ package org.apache.openmeetings.db.dto.room;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
+import java.util.Collections;
 import java.util.Date;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
 
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -37,7 +38,7 @@ public class Whiteboard {
 	private Integer y = 0;
 	private Integer zoom = 100;
 	private Boolean fullFit = true;
-	private Map<String, List<Object>> roomItems = new ConcurrentHashMap<>();
+	private Map<String, List<Object>> roomItems = Collections.synchronizedMap(new LinkedHashMap<>());
 	private Date created = new Date();
 	private int zIndex = 1;
 	private String name;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e78466d5/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.html
deleted file mode 100644
index 5f9cdd0..0000000
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-  
-      http://www.apache.org/licenses/LICENSE-2.0
-    	  
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
-  
--->
-<html xmlns:wicket="http://wicket.apache.org">
-<wicket:panel>
-	<form wicket:id="form">
-		<span style="padding-left: 20px; padding-right: 20px;"><wicket:message key="572"/></span><input type="text" wicket:id="title"/>
-		<div wicket:id="feedback"></div>
-		<input type="submit" wicket:id="submit" class="invisible-form-component"/>
-	</form>
-</wicket:panel>
-</html>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e78466d5/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.java
deleted file mode 100644
index 022ac8d..0000000
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/AddFolderDialog.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.web.common;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.openmeetings.web.app.Application;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.form.AjaxButton;
-import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.RequiredTextField;
-import org.apache.wicket.markup.html.panel.FeedbackPanel;
-import org.apache.wicket.model.Model;
-
-import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
-
-public abstract class AddFolderDialog extends AbstractFormDialog<String> {
-	private static final long serialVersionUID = 1L;
-	private final DialogButton add = new DialogButton("add", Application.getString(1261));
-	private final DialogButton cancel = new DialogButton("cancel", Application.getString(219));
-	private final Form<String> form;
-	private final FeedbackPanel feedback = new FeedbackPanel("feedback");
-	private final String name;
-	private RequiredTextField<String> title;
-
-	public AddFolderDialog(String id) {
-		this(id, null);
-	}
-
-	public AddFolderDialog(String id, String name) {
-		super(id, Application.getString(1260), Model.of(name));
-		this.name = name;
-		form = new Form<String>("form", getModel()) {
-			private static final long serialVersionUID = 1L;
-			{
-				add(title = new RequiredTextField<>("title", getModel()));
-				title.setLabel(Model.of(Application.getString(572)));
-				add(feedback.setOutputMarkupId(true));
-				add(new AjaxButton("submit") { //FAKE button so "submit-on-enter" works as expected
-					private static final long serialVersionUID = 1L;
-
-					@Override
-					protected void onSubmit(AjaxRequestTarget target) {
-						AddFolderDialog.this.onSubmit(target);
-					}
-
-					@Override
-					protected void onError(AjaxRequestTarget target) {
-						AddFolderDialog.this.onError(target);
-					}
-				});
-			}
-		};
-		add(form.setOutputMarkupId(true));
-	}
-
-	@Override
-	protected void onOpen(IPartialPageRequestHandler handler) {
-		handler.add(form);
-		setModelObject(name);
-		getFeedbackMessages().clear();
-	}
-
-	@Override
-	protected void onSubmit(AjaxRequestTarget target) {
-		close(target, getSubmitButton());
-	}
-
-	@Override
-	protected List<DialogButton> getButtons() {
-		return Arrays.asList(add, cancel);
-	}
-
-	@Override
-	public DialogButton getSubmitButton() {
-		return add;
-	}
-
-	@Override
-	public Form<String> getForm() {
-		return form;
-	}
-
-	@Override
-	protected void onError(AjaxRequestTarget target) {
-		target.add(feedback);
-	}
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e78466d5/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/NameDialog.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/NameDialog.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/NameDialog.html
new file mode 100644
index 0000000..ef9e252
--- /dev/null
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/NameDialog.html
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+	<form wicket:id="form">
+		<label style="padding-left: 20px; padding-right: 20px;" wicket:id="label"></label><input type="text" wicket:id="title"/>
+		<div wicket:id="feedback"></div>
+		<input type="submit" wicket:id="submit" class="invisible-form-component"/>
+	</form>
+</wicket:panel>
+</html>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e78466d5/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/NameDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/NameDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/NameDialog.java
new file mode 100644
index 0000000..ab4c811
--- /dev/null
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/NameDialog.java
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.common;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.openmeetings.web.app.Application;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.model.Model;
+
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
+
+public abstract class NameDialog extends AbstractFormDialog<String> {
+	private static final long serialVersionUID = 1L;
+	private final DialogButton add;
+	private final DialogButton cancel = new DialogButton("cancel", Application.getString(219));
+	private final Form<String> form;
+	private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
+	private final String name;
+	private RequiredTextField<String> title;
+
+	public NameDialog(String id) {
+		this(id, null);
+	}
+
+	public NameDialog(String id, String name) {
+		super(id, "", Model.of(name));
+		this.name = name;
+		add = new DialogButton("add", getAddStr());
+		form = new Form<>("form", getModel());
+	}
+
+	@Override
+	protected void onInitialize() {
+		super.onInitialize();
+		setTitle(Model.of(getTitleStr()));
+		form.add(new Label("label", getLabelStr())
+				, title = new RequiredTextField<>("title", getModel())
+				, feedback.setOutputMarkupId(true)
+				, new AjaxButton("submit") { //FAKE button so "submit-on-enter" works as expected
+					private static final long serialVersionUID = 1L;
+
+					@Override
+					protected void onSubmit(AjaxRequestTarget target) {
+						NameDialog.this.onSubmit(target);
+					}
+
+					@Override
+					protected void onError(AjaxRequestTarget target) {
+						NameDialog.this.onError(target);
+					}
+				});
+		title.setLabel(Model.of(getLabelStr()));
+		add(form.setOutputMarkupId(true));
+	}
+
+	@Override
+	protected void onOpen(IPartialPageRequestHandler handler) {
+		handler.add(form);
+		setModelObject(name);
+		getFeedbackMessages().clear();
+	}
+
+	@Override
+	protected void onSubmit(AjaxRequestTarget target) {
+		close(target, getSubmitButton());
+	}
+
+	@Override
+	protected List<DialogButton> getButtons() {
+		return Arrays.asList(add, cancel);
+	}
+
+	@Override
+	public DialogButton getSubmitButton() {
+		return add;
+	}
+
+	@Override
+	public Form<String> getForm() {
+		return form;
+	}
+
+	@Override
+	protected void onError(AjaxRequestTarget target) {
+		target.add(feedback);
+	}
+
+	protected String getTitleStr() {
+		return getString("1260");
+	}
+
+	protected String getLabelStr() {
+		return getString("572");
+	}
+
+	protected String getAddStr() {
+		return Application.getString("1261");
+	}
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e78466d5/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
index a23cbd1..dff9122 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
@@ -38,7 +38,7 @@ import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 import org.apache.openmeetings.db.entity.file.FileItem;
 import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.db.entity.record.Recording;
-import org.apache.openmeetings.web.common.AddFolderDialog;
+import org.apache.openmeetings.web.common.NameDialog;
 import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import org.apache.openmeetings.web.common.ConfirmableAjaxBorder.ConfirmableBorderDialog;
 import org.apache.openmeetings.web.util.AjaxDownload;
@@ -91,7 +91,7 @@ public abstract class FileTreePanel extends Panel {
 		}
 	};
 	private final Form<Void> form = new Form<>("form");
-	private final AddFolderDialog addFolder;
+	private final NameDialog addFolder;
 	private final ConfirmableBorderDialog trashConfirm;
 	private ConfirmableAjaxBorder trashBorder;
 	private final Long roomId;
@@ -106,7 +106,7 @@ public abstract class FileTreePanel extends Panel {
 	});
 	private final Component upload = new WebMarkupContainer("upload");
 
-	public FileTreePanel(String id, Long roomId, AddFolderDialog addFolder, ConfirmableBorderDialog trashConfirm) {
+	public FileTreePanel(String id, Long roomId, NameDialog addFolder, ConfirmableBorderDialog trashConfirm) {
 		super(id);
 		this.roomId = roomId;
 		this.addFolder = addFolder;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e78466d5/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
index c6aca8f..d215d71 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
@@ -26,7 +26,7 @@ import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
 import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.dto.record.RecordingContainerData;
 import org.apache.openmeetings.db.entity.file.FileItem;
-import org.apache.openmeetings.web.common.AddFolderDialog;
+import org.apache.openmeetings.web.common.NameDialog;
 import org.apache.openmeetings.web.common.ConfirmableAjaxBorder.ConfirmableBorderDialog;
 import org.apache.openmeetings.web.common.tree.FileTreePanel;
 import org.apache.openmeetings.web.room.RoomPanel;
@@ -38,7 +38,7 @@ public class RoomFilePanel extends FileTreePanel {
 	private static final long serialVersionUID = 1L;
 	private final RoomPanel room;
 
-	public RoomFilePanel(String id, RoomPanel room, AddFolderDialog addFolder, ConfirmableBorderDialog trashConfirm) {
+	public RoomFilePanel(String id, RoomPanel room, NameDialog addFolder, ConfirmableBorderDialog trashConfirm) {
 		super(id, room.getRoom().getId(), addFolder, trashConfirm);
 		this.room = room;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e78466d5/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
index cb0e6a5..b09e688 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
@@ -34,7 +34,7 @@ import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.room.Room.Right;
 import org.apache.openmeetings.db.entity.room.Room.RoomElement;
 import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.common.AddFolderDialog;
+import org.apache.openmeetings.web.common.NameDialog;
 import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import org.apache.openmeetings.web.common.ConfirmableAjaxBorder.ConfirmableBorderDialog;
 import org.apache.openmeetings.web.room.RoomBroadcaster;
@@ -97,7 +97,7 @@ public class RoomSidebar extends Panel {
 			item.add(new RoomClientPanel("user", item, room));
 		}
 	};
-	private final AddFolderDialog addFolder = new AddFolderDialog("addFolder", Application.getString(712)) {
+	private final NameDialog addFolder = new NameDialog("addFolder", Application.getString(712)) {
 		private static final long serialVersionUID = 1L;
 
 		@Override

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e78466d5/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
index bc68354..89a8a98 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
@@ -44,7 +44,7 @@ import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.UserContact;
 import org.apache.openmeetings.web.admin.SearchableDataView;
 import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.common.AddFolderDialog;
+import org.apache.openmeetings.web.common.NameDialog;
 import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import org.apache.openmeetings.web.common.PagedEntityListPanel;
 import org.apache.openmeetings.web.common.UserPanel;
@@ -265,7 +265,7 @@ public class MessagesContactsPanel extends UserPanel {
 		foldersModel.setObject(getBean(PrivateMessageFolderDao.class).get(0, Integer.MAX_VALUE));
 		updateMoveModel();
 
-		final AddFolderDialog addFolder = new AddFolderDialog("addFolder") {
+		final NameDialog addFolder = new NameDialog("addFolder") {
 			private static final long serialVersionUID = 1L;
 
 			@Override

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e78466d5/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
index 9b3192c..4026398 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingsPanel.java
@@ -26,7 +26,7 @@ import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.dto.record.RecordingContainerData;
 import org.apache.openmeetings.db.entity.file.FileItem;
 import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.common.AddFolderDialog;
+import org.apache.openmeetings.web.common.NameDialog;
 import org.apache.openmeetings.web.common.UserPanel;
 import org.apache.openmeetings.web.common.tree.FileTreePanel;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -35,7 +35,7 @@ public class RecordingsPanel extends UserPanel {
 	private static final long serialVersionUID = 1L;
 	private final VideoPlayer video = new VideoPlayer("video");
 	private final VideoInfo info = new VideoInfo("info");
-	private final AddFolderDialog addFolder = new AddFolderDialog("addFolder", Application.getString(712)) {
+	private final NameDialog addFolder = new NameDialog("addFolder", Application.getString(712)) {
 		private static final long serialVersionUID = 1L;
 
 		@Override

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e78466d5/openmeetings-web/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/web.xml b/openmeetings-web/src/main/webapp/WEB-INF/web.xml
index 76b78d7..973ef1c 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/web.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/web.xml
@@ -7,20 +7,20 @@
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at
-  
+
       http://www.apache.org/licenses/LICENSE-2.0
-    	  
+
   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
-  
+
 -->
-<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
+<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
 	<context-param>
 		<param-name>globalScope</param-name>
 		<param-value>default</param-value>


[31/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1612] wicket-jqueryui version is updated

Posted by so...@apache.org.
[OPENMEETINGS-1612] wicket-jqueryui version is updated


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/a20fa353
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/a20fa353
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/a20fa353

Branch: refs/heads/3.2.x
Commit: a20fa3533378e58262579b186cb092e7008df56b
Parents: acdbe13
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Mar 31 14:31:33 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Mar 31 14:31:33 2017 +0000

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a20fa353/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 3ee28d7..f0f16ef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,7 +41,7 @@
 		<maven.surefire.version>2.19.1</maven.surefire.version>
 		<maven-site.version>3.3</maven-site.version>
 		<wicket.version>8.0.0-M5</wicket.version>
-		<wicketju.version>8.0.0-M4.1</wicketju.version>
+		<wicketju.version>8.0.0-M5</wicketju.version>
 		<wickets.version>8.0.0-M5</wickets.version>
 		<red5-server.version>1.0.9-M6</red5-server.version>
 		<red5-client.version>1.0.9-M6</red5-client.version>


[17/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1612] red5 version is updated

Posted by so...@apache.org.
[OPENMEETINGS-1612] red5 version is updated


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/eb0c7ed6
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/eb0c7ed6
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/eb0c7ed6

Branch: refs/heads/3.2.x
Commit: eb0c7ed6e0c2bac1fffaa67de85eb875441006ba
Parents: 6fec12b
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Mar 24 15:39:27 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Mar 24 15:39:27 2017 +0000

----------------------------------------------------------------------
 openmeetings-server/pom.xml | 2 +-
 pom.xml                     | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/eb0c7ed6/openmeetings-server/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/pom.xml b/openmeetings-server/pom.xml
index febb20b..dcbd6c9 100644
--- a/openmeetings-server/pom.xml
+++ b/openmeetings-server/pom.xml
@@ -117,7 +117,7 @@
 			<id>prepare-red5-server</id>
 			<activation>
 				<file>
-					<missing>red5-server/red5-server-1.0.9-M2.tar.gz</missing> <!-- TODO should be in-sync with global property -->
+					<missing>red5-server/red5-server-1.0.9-M4.tar.gz</missing> <!-- TODO should be in-sync with global property -->
 				</file>
 			</activation>
 			<build>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/eb0c7ed6/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 701586f..153d666 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,8 +43,8 @@
 		<wicket.version>8.0.0-M4</wicket.version>
 		<wicketju.version>8.0.0-M4.1</wicketju.version>
 		<wickets.version>8.0.0-M4</wickets.version>
-		<red5-server.version>1.0.9-M2</red5-server.version>
-		<red5-client.version>1.0.9-M2</red5-client.version>
+		<red5-server.version>1.0.9-M4</red5-server.version>
+		<red5-client.version>1.0.9-M4</red5-client.version>
 		<spring.version>4.3.6.RELEASE</spring.version>
 		<mina.version>2.0.16</mina.version>
 		<tomcat.version>8.5.11</tomcat.version>


[21/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1520, OPENMEETINGS-1554] restricted drive seems to be implemented

Posted by so...@apache.org.
[OPENMEETINGS-1520, OPENMEETINGS-1554] restricted drive seems to be implemented


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/1f06a145
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/1f06a145
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/1f06a145

Branch: refs/heads/3.2.x
Commit: 1f06a145e974881d1f3ecf4d4c9810832244b048
Parents: 00b8a9a
Author: Maxim Solodovnik <so...@apache.org>
Authored: Tue Mar 28 03:35:19 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Tue Mar 28 03:35:19 2017 +0000

----------------------------------------------------------------------
 .../db/dao/file/FileExplorerItemDao.java        |  3 +++
 .../openmeetings/db/entity/user/Group.java      | 12 +++++++++++
 .../web/admin/groups/GroupForm.java             |  4 +++-
 .../web/admin/groups/GroupsPanel.html           |  3 +++
 .../web/admin/groups/GroupsPanel.java           |  2 +-
 .../web/app/Application.properties.xml          |  2 ++
 .../web/app/Application_ar.properties.xml       |  2 ++
 .../web/app/Application_bg.properties.xml       |  2 ++
 .../web/app/Application_ca.properties.xml       |  2 ++
 .../web/app/Application_cs.properties.xml       |  2 ++
 .../web/app/Application_da.properties.xml       |  2 ++
 .../web/app/Application_de.properties.xml       |  2 ++
 .../web/app/Application_el.properties.xml       |  2 ++
 .../web/app/Application_es.properties.xml       |  2 ++
 .../web/app/Application_fa.properties.xml       |  2 ++
 .../web/app/Application_fi.properties.xml       |  2 ++
 .../web/app/Application_fr.properties.xml       |  2 ++
 .../web/app/Application_gl.properties.xml       |  2 ++
 .../web/app/Application_hu.properties.xml       |  2 ++
 .../web/app/Application_id.properties.xml       |  2 ++
 .../web/app/Application_it.properties.xml       |  2 ++
 .../web/app/Application_ja.properties.xml       |  2 ++
 .../web/app/Application_ko.properties.xml       |  2 ++
 .../web/app/Application_nl.properties.xml       |  2 ++
 .../web/app/Application_pl.properties.xml       |  2 ++
 .../web/app/Application_pt.properties.xml       |  2 ++
 .../web/app/Application_pt_BR.properties.xml    |  2 ++
 .../web/app/Application_ru.properties.xml       |  2 ++
 .../web/app/Application_sk.properties.xml       |  2 ++
 .../web/app/Application_sv.properties.xml       |  2 ++
 .../web/app/Application_th.properties.xml       |  2 ++
 .../web/app/Application_tr.properties.xml       |  2 ++
 .../web/app/Application_uk.properties.xml       |  2 ++
 .../web/app/Application_zh_CN.properties.xml    |  2 ++
 .../web/app/Application_zh_TW.properties.xml    |  2 ++
 .../web/common/tree/FileTreePanel.java          |  6 +++++-
 .../web/common/tree/OmTreeProvider.java         | 22 +++++++++++++-------
 .../web/room/RoomResourceReference.java         |  5 +++++
 .../openmeetings/web/user/record/VideoInfo.java |  8 +++----
 39 files changed, 110 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
index 91251f6..de6c582 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
@@ -114,6 +114,9 @@ public class FileExplorerItemDao {
 	}
 
 	public List<FileExplorerItem> getByGroup(Long groupId, List<Type> filter) {
+		if (filter == null) {
+			return getByGroup(groupId);
+		}
 		log.debug("getByGroup() started");
 		return em.createNamedQuery("getFileFilteredByGroup", FileExplorerItem.class)
 				.setParameter("filter", filter)

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java
index 2840a88..d0d0d3b 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/Group.java
@@ -82,6 +82,10 @@ public class Group implements IDataProviderEntity {
 	@Element(data = true, required = false)
 	private boolean limited;
 
+	@Column(name = "restricted", nullable = false)
+	@Element(data = true, required = false)
+	private boolean restricted;
+
 	@Column(name = "max_files_size", nullable = false)
 	@Element(data = true, required = false)
 	private int maxFilesSize;
@@ -176,6 +180,14 @@ public class Group implements IDataProviderEntity {
 		this.limited = limited;
 	}
 
+	public boolean isRestricted() {
+		return restricted;
+	}
+
+	public void setRestricted(boolean restricted) {
+		this.restricted = restricted;
+	}
+
 	public int getMaxFilesSize() {
 		return maxFilesSize;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
index f582f3c..cddb3da 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
@@ -42,6 +42,7 @@ import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
 import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
 import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.CheckBox;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.NumberTextField;
 import org.apache.wicket.markup.html.form.RequiredTextField;
@@ -151,6 +152,7 @@ public class GroupForm extends AdminBaseForm<Group> {
 		add(new RequiredTextField<String>("name").setLabel(Model.of(getString("165"))));
 		add(logo);
 		add(new TextField<String>("tag").setLabel(Model.of(getString("admin.group.form.tag"))));
+		add(new CheckBox("restricted").setLabel(Model.of(getString("restricted.group.files"))));
 		add(new AjaxCheckBox("limited") {
 			private static final long serialVersionUID = 1L;
 
@@ -182,7 +184,7 @@ public class GroupForm extends AdminBaseForm<Group> {
 		reminderDays.setEnabled(getModelObject().isLimited());
 		logo.update();
 		target.add(this, groupList);
-		target.appendJavaScript("groupsInit();");
+		target.appendJavaScript("adminPanelInit();");
 	}
 
 	private long getGroupId() {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
index fd224e3..a1e5637 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.html
@@ -61,6 +61,9 @@
 						<div wicket:id="users"></div>
 					</div>
 					<div class="formelement">
+						<label><wicket:message key="restricted.group.files" /></label><input type="checkbox" wicket:id="restricted" />
+					</div>
+					<div class="formelement">
 						<label><wicket:message key="admin.group.form.limited" /></label><input type="checkbox" wicket:id="limited" />
 					</div>
 					<div class="formelement" style="display:none">

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
index 8d5143c..dcd492c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
@@ -73,7 +73,7 @@ public class GroupsPanel extends AdminPanel {
 						form.setModelObject(g);
 						form.updateView(target);
 						target.add(listContainer);
-						target.appendJavaScript("groupsInit();");
+						target.appendJavaScript("adminPanelInit();");
 					}
 				});
 				item.add(AttributeModifier.append("class", getRowClass(g.getId(), form.getModelObject().getId())));

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
index 21663c7..7bc6f18 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ar.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ar.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ar.properties.xml
index 1c05d59..b7c288a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ar.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ar.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bg.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bg.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bg.properties.xml
index f892a03..4b3a832 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bg.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bg.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ca.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ca.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ca.properties.xml
index b33cdca..7c5f522 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ca.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ca.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_cs.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_cs.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_cs.properties.xml
index 49f93dc..97b45d4 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_cs.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_cs.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_da.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_da.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_da.properties.xml
index 23f42dc..f3c94e9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_da.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_da.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_de.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_de.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_de.properties.xml
index d35cf24..1a27940 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_de.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_de.properties.xml
@@ -1937,4 +1937,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_el.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_el.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_el.properties.xml
index e1682e5..9a584ac 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_el.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_el.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_es.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_es.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_es.properties.xml
index 2a4cfd3..9e36b54 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_es.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_es.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fa.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fa.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fa.properties.xml
index bd48444..143a88a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fa.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fa.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fi.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fi.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fi.properties.xml
index eb9e668..d6ed20a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fi.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fi.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fr.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fr.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fr.properties.xml
index a0aee6f..15e2cb4 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fr.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fr.properties.xml
@@ -1905,4 +1905,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_gl.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_gl.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_gl.properties.xml
index a4ba389..a3a23dd 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_gl.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_gl.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hu.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hu.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hu.properties.xml
index 697685c..ad4df2c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hu.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hu.properties.xml
@@ -1900,4 +1900,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_id.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_id.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_id.properties.xml
index cfcc6f3..fa6a270 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_id.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_id.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_it.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_it.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_it.properties.xml
index e63acd0..6529300 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_it.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_it.properties.xml
@@ -1918,4 +1918,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ja.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ja.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ja.properties.xml
index 7b5ad4b..bf18b04 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ja.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ja.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ko.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ko.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ko.properties.xml
index 1a98520..8153210 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ko.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ko.properties.xml
@@ -1918,4 +1918,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_nl.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_nl.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_nl.properties.xml
index b20659f..8a7200b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_nl.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_nl.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pl.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pl.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pl.properties.xml
index c1b34c6..5b1e7f1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pl.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pl.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt.properties.xml
index dadb940..41895a1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml
index 592b2b5..226709d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ru.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ru.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ru.properties.xml
index 8a98b24..46a230f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ru.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ru.properties.xml
@@ -1917,4 +1917,6 @@
 	<entry key="widget.recent.title">\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043a\u043e\u043c\u043d\u0430\u0442\u044b</entry>
 	<entry key="widget.recent.desc">\u042d\u0442\u0430 \u0441\u0435\u043a\u0446\u0438\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043a\u043e\u043c\u043d\u0430\u0442\u044b \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0412\u044b \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u0437\u0430\u0445\u043e\u0434\u0438\u043b\u0438</entry>
 	<entry key="files.root.group">\u0424\u0430\u0439\u043b\u044b \u0433\u0440\u0443\u043f\u043f\u044b</entry>
+	<entry key="recordings.root.group">\u0417\u0430\u043f\u0438\u0441\u0438 \u0433\u0440\u0443\u043f\u043f\u044b</entry>
+	<entry key="restricted.group.files">\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0433\u0440\u0443\u043f\u043f\u043e\u0432\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sk.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sk.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sk.properties.xml
index e0834bd..7445549 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sk.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sk.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sv.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sv.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sv.properties.xml
index 8a6afc1..8d40105 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sv.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sv.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_th.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_th.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_th.properties.xml
index 529a24e..ea36782 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_th.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_th.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tr.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tr.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tr.properties.xml
index 5d3f413..b7c1940 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tr.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tr.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_uk.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_uk.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_uk.properties.xml
index 5dc846e..3f6c48d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_uk.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_uk.properties.xml
@@ -1917,4 +1917,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_CN.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_CN.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_CN.properties.xml
index 625cedb..af65d28 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_CN.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_CN.properties.xml
@@ -1902,4 +1902,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_TW.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_TW.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_TW.properties.xml
index a145d25..13a5598 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_TW.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_TW.properties.xml
@@ -1916,4 +1916,6 @@
 	<entry key="widget.recent.title">Recent Rooms</entry>
 	<entry key="widget.recent.desc">This sections displays rooms recently opened by you</entry>
 	<entry key="files.root.group">Group files</entry>
+	<entry key="recordings.root.group">Group recordings</entry>
+	<entry key="restricted.group.files">Group files are restricted</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
index 8465a14..5fb868c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
@@ -340,6 +340,10 @@ public abstract class FileTreePanel extends Panel {
 		return false;
 	}
 
+	private static boolean isDownloadable(FileItem f) {
+		return !f.isReadOnly() && (f.getType() == Type.Presentation || f.getType() == Type.Image);
+	}
+
 	public void select(FileItem fi, AjaxRequestTarget target, boolean shift, boolean ctrl) {
 		updateSelected(target); //all previously selected are in update list
 		if (ctrl) {
@@ -375,7 +379,7 @@ public abstract class FileTreePanel extends Panel {
 		}
 		updateSelected(target); //all finaly selected are in the update list
 		if (target != null) {
-			target.add(trashBorder, download.setVisible(lastSelected.getType() == Type.Presentation || lastSelected.getType() == Type.Image));
+			target.add(trashBorder, download.setVisible(isDownloadable(lastSelected)));
 		}
 	}
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
index e81dd3c..4fe46e0 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
@@ -18,7 +18,9 @@
  */
 package org.apache.openmeetings.web.common.tree;
 
+import static org.apache.openmeetings.db.util.AuthLevelUtil.hasAdminLevel;
 import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getRights;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
 import java.util.ArrayList;
@@ -51,12 +53,13 @@ public class OmTreeProvider implements ITreeProvider<FileItem> {
 	public static String FILES_GROUP = "files-group-%s";
 	private final Long roomId;
 	private final List<FileItem> roots = new ArrayList<>();
-	private final String PUBLIC, GROUP;
+	private final String PUBLIC, GROUP_FILE, GROUP_REC;
 
 	public OmTreeProvider(Long roomId) {
 		this.roomId = roomId;
 		PUBLIC = Application.getString(861);
-		GROUP = Application.getString("files.root.group");
+		GROUP_FILE = Application.getString("files.root.group");
+		GROUP_REC = Application.getString("recordings.root.group");
 		refreshRoots(true);
 	}
 
@@ -87,15 +90,18 @@ public class OmTreeProvider implements ITreeProvider<FileItem> {
 		}
 		for (GroupUser gu : getBean(UserDao.class).get(getUserId()).getGroupUsers()) {
 			Group g = gu.getGroup();
+			boolean readOnly = g.isRestricted() && !hasAdminLevel(getRights()) && !gu.isModerator();
 			if (all) {
-				FileItem r = createRoot(String.format("%s (%s)", PUBLIC, g.getName()), String.format(RECORDINGS_GROUP, g.getId()), true);
+				FileItem r = createRoot(String.format("%s (%s)", GROUP_REC, g.getName()), String.format(RECORDINGS_GROUP, g.getId()), true);
+				r.setReadOnly(readOnly);
 				r.setGroupId(g.getId());
 				rRoot.add(r);
 			}
-			/*FileItem r = createRoot(String.format("%s (%s)", GROUP, g.getName()), String.format(FILES_GROUP, g.getId()), false);
+			FileItem r = createRoot(String.format("%s (%s)", GROUP_FILE, g.getName()), String.format(FILES_GROUP, g.getId()), false);
 			r.setGroupId(g.getId());
-			r.setReadOnly(roomId == null); //group videos are read-only in recordings tree
-			fRoot.add(r);*/
+			//group videos are read-only in recordings tree
+			r.setReadOnly(roomId == null || readOnly);
+			fRoot.add(r);
 		}
 		roots.clear();
 		if (roomId == null) {
@@ -147,12 +153,12 @@ public class OmTreeProvider implements ITreeProvider<FileItem> {
 				if (node.getRoomId() != null) {
 					_list = dao.getByRoom(node.getRoomId());
 				} else if (node.getGroupId() != null) {
-					_list = dao.getByGroup(node.getGroupId(), /*roomId == null ? VIDEO_TYPES : */null);
+					_list = dao.getByGroup(node.getGroupId(), roomId == null ? VIDEO_TYPES : null);
 				} else {
 					_list = dao.getByOwner(node.getOwnerId());
 				}
 			} else {
-				_list = dao.getByParent(id, /*roomId == null ? VIDEO_TYPES : */null);
+				_list = dao.getByParent(id, roomId == null ? VIDEO_TYPES : null);
 			}
 			list.addAll(_list);
 		}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
index 226639e..1b614d8 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
@@ -25,6 +25,7 @@ import static org.apache.openmeetings.util.OmFileHelper.MP4_MIME_TYPE;
 import static org.apache.openmeetings.util.OmFileHelper.getOmHome;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.Application.getOnlineClient;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
 import java.io.File;
 import java.util.Map.Entry;
@@ -32,6 +33,7 @@ import java.util.Map.Entry;
 import org.apache.directory.api.util.Strings;
 import org.apache.openmeetings.core.data.whiteboard.WhiteboardCache;
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.dao.user.GroupUserDao;
 import org.apache.openmeetings.db.dto.room.Whiteboard;
 import org.apache.openmeetings.db.dto.room.Whiteboards;
 import org.apache.openmeetings.db.entity.basic.Client;
@@ -107,6 +109,9 @@ public class RoomResourceReference extends FileItemResourceReference<FileExplore
 				}
 			}
 		}
+		if (f.getGroupId() != null && getBean(GroupUserDao.class).isUserInGroup(f.getGroupId(), getUserId())) {
+			return f;
+		}
 		return null;
 	}
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f06a145/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
index c09ea76..a5a6285 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
@@ -147,8 +147,8 @@ public class VideoInfo extends Panel {
 			}
 		}
 		reConvert.setEnabled(reConvEnabled);
-		downloadBtn.setEnabled(exists);
-		share.setEnabled(exists);
+		downloadBtn.setEnabled(exists && !_r.isReadOnly());
+		share.setEnabled(exists && !_r.isReadOnly());
 		if (target != null) {
 			target.add(form);
 		}
@@ -178,8 +178,8 @@ public class VideoInfo extends Panel {
 
 			@Override
 			public boolean isEnabled() {
-				Recording r = rm.getObject();
-				return r != null && r.exists(EXTENSION_MP4);
+				FileItem r = rm.getObject();
+				return r != null && r.exists(EXTENSION_MP4) && !r.isReadOnly();
 			}
 
 			@Override


[35/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1610] time picker should be fixed

Posted by so...@apache.org.
[OPENMEETINGS-1610] time picker should be fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/4df306f7
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/4df306f7
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/4df306f7

Branch: refs/heads/3.2.x
Commit: 4df306f75ea8bd33dd9a328de12640f4e2789e99
Parents: 935f2ff
Author: Maxim Solodovnik <so...@apache.org>
Authored: Sun Apr 2 14:31:10 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Sun Apr 2 14:31:10 2017 +0000

----------------------------------------------------------------------
 .../openmeetings/web/common/OmDateTimePicker.java     | 14 +++++++++-----
 .../web/user/calendar/AppointmentDialog.java          |  8 +++++++-
 2 files changed, 16 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4df306f7/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmDateTimePicker.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmDateTimePicker.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmDateTimePicker.java
index 1ea0411..6e7cf9e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmDateTimePicker.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/OmDateTimePicker.java
@@ -28,7 +28,6 @@ import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.model.IModel;
 
 import com.googlecode.wicket.jquery.core.Options;
-import com.googlecode.wicket.kendo.ui.KendoCultureHeaderItem;
 import com.googlecode.wicket.kendo.ui.form.datetime.local.DatePicker;
 import com.googlecode.wicket.kendo.ui.form.datetime.local.DateTimePicker;
 import com.googlecode.wicket.kendo.ui.form.datetime.local.TimePicker;
@@ -37,22 +36,27 @@ public class OmDateTimePicker extends DateTimePicker {
 	private static final long serialVersionUID = 1L;
 
 	public OmDateTimePicker(String id, IModel<LocalDateTime> model) {
-		super(id, model);
+		super(id, model, WebSession.get().getLocale());
 	}
 
 	@Override
 	protected DatePicker newDatePicker(String id, IModel<LocalDate> model, Locale locale, String datePattern, Options options) {
-		return new DatePicker(id, model, WebSession.get().getLocale());
+		DatePicker dp = super.newDatePicker(id, model, locale, datePattern, options);
+		dp.setLabel(getLabel());
+		return dp;
 	}
 
 	@Override
 	protected TimePicker newTimePicker(String id, IModel<LocalTime> model, Locale locale, String timePattern, Options options) {
-		return new TimePicker(id, model, WebSession.get().getLocale());
+		TimePicker tp = super.newTimePicker(id, model, locale, timePattern, options);
+		tp.setLabel(getLabel());
+		return tp;
 	}
 
 	@Override
 	public void renderHead(IHeaderResponse response) {
 		super.renderHead(response);
-		response.render(KendoCultureHeaderItem.of(WebSession.get().getLocale()));
+		//FIXME TODO this is remain here until localized AM/PM will be correctly handled
+		//response.render(KendoCultureHeaderItem.of(WebSession.get().getLocale()));
 	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/4df306f7/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
index 976a206..bb7e55a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
@@ -375,7 +375,6 @@ public class AppointmentDialog extends AbstractFormDialog<Appointment> {
 			add(feedback.setOutputMarkupId(true));
 			//General
 			add(new RequiredTextField<String>("title").setLabel(Model.of(Application.getString(572))));
-			add(start.setRequired(true), end.setRequired(true));
 			add(ownerPanel.add(owner));
 			boolean showGroups = AuthLevelUtil.hasAdminLevel(getRights());
 			add(rdi.add(new AjaxFormChoiceComponentUpdatingBehavior() {
@@ -476,6 +475,13 @@ public class AppointmentDialog extends AbstractFormDialog<Appointment> {
 			add(cals.setNullValid(true).setLabel(Model.of("calendar")).setOutputMarkupId(true));
 		}
 
+		@Override
+		protected void onInitialize() {
+			super.onInitialize();
+			add(start.setLabel(Model.of(getString("570"))).setRequired(true)
+					, end.setLabel(Model.of(getString("571"))).setRequired(true));
+		}
+
 		private List<Room> getRoomList() {
 			//FIXME need to be reviewed
 			List<Room> result = new ArrayList<>();


[49/50] [abbrv] openmeetings git commit: no jira: KEYS is placed in application

Posted by so...@apache.org.
no jira: KEYS is placed in application


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/98be6857
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/98be6857
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/98be6857

Branch: refs/heads/3.2.x
Commit: 98be6857458f14784cfbac8fcca720e34cf1e999
Parents: 54c2511
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Apr 28 02:52:39 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Apr 28 02:52:39 2017 +0000

----------------------------------------------------------------------
 KEYS | 181 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 181 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/98be6857/KEYS
----------------------------------------------------------------------
diff --git a/KEYS b/KEYS
new file mode 100644
index 0000000..122ab85
--- /dev/null
+++ b/KEYS
@@ -0,0 +1,181 @@
+Edit this file in SVN at https://svn.apache.org/repos/asf/openmeetings/project/KEYS
+then update in /www/www.apache.org/dist/openmeetings/KEYS by logging in to people.apache.org
+and running:
+
+svn export http://svn.apache.org/repos/asf/openmeetings/project/KEYS /www/www.apache.org/dist/incubator/openmeetings/KEYS
+
+pub   2048R/93A30395 2011-12-20
+      Key fingerprint = BF13 CF11 F9C9 0CBE 4413  09AB 0055 16BF 93A3 0395
+uid                  Sebastian Wagner <se...@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.17 (FreeBSD)
+
+mQENBE7wkxMBCADUdJh/1R6XHyUFQXi2qDr7YNPynHabpYSbzwCEivsMUZ093Sx5
+cDNSq7/f3ouozD5B5xV8J7Y4ju9eP/LHZLmzc7kUQpDm6XMz4U/6q6p7/QTNeyCX
+sj5Qv+AIAAKrbjaab9cPqEuwxtH6bsma/5KXsoQDQZwO54zUD0cMbcFw/ViRNLlk
+JpfpsWPooyLksgAsBIQcXvP4v3AsdzycqfCMoYgxVq0/J9KyHHxJmN0hyIC24yCM
+zLMrkkdl3azQ5xxuu3d1WUmCeNlTXlRsvEUAxSTMEFP07HlCqe3E4AczggZCpByY
+X24CL1DL/HtWIHZLEuulkXBYGdV0n2oxnHfHABEBAAG0KFNlYmFzdGlhbiBXYWdu
+ZXIgPHNlYmF3YWduZXJAYXBhY2hlLm9yZz6JATgEEwECACIFAk7wkxMCGw8GCwkI
+BwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEABVFr+TowOVP9gH/2uA04/0PltWHpto
+0FTZyPOzSnPrJfvqUlbrxSEu0KzwcBMOjthIzeDgq4lGd74lZZYPP6mYHZvxwxrT
+uM6q3v+uWXsWtQt3T1ylUyrlD6zy2weCrxjPp2e4VYRh4UmBqZM46oE50dSCWWrj
+73RE6eiy4FOOo19Om3UqqLsSrEkcU+SnK497nOggYJBEdDIIedOTrXGHSIwQ7bpW
+IuQUm0sNUzEp605DiMmv0328YfNy1/iVQr2nVWpaL0jeUWUrDzugxee+EwAq7wnd
+awQAM4HUTRRHGV2UPLDgMlFQ3gy1nSB17PZqMj1WZik8mzEghLfHK2qpilICmwVQ
+U9obDGA=
+=7PK/
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub   4096R/D27B0B59 2012-08-07
+      Key fingerprint = 0ED1 419B B160 C9D5 DDA6  C727 4DED 03C4 D27B 0B59
+uid                  Eugen Schwert (CODE SIGNING KEY) <eu...@gmail.com>
+sub   4096R/A98ADBEE 2012-08-07
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.18 (FreeBSD)
+
+mQINBFAg22YBEADm48jAr7TjMbkhlVMYLlaE92mnyIyHrhcYUuFCPHG9MYfiPXNI
+/SlOSWYVbK8Ub10oIJu2TQCd/4ermpJv5qJXaxtACzLsK/C8kcOySveKQH1fVUnY
+s1msXbf1DfSWMFlysrJBYs1ly2bcv2eIysk9aJ3umuCXqz1BqJjG3P/o7KxMMMkf
+wQ1aWSimlzYWURuvlOjbPzsiKDmlIvWscP+BzbvnasdDhaJiqJo8s2kWznoJ7UQ3
+p6mf23UixDOPd/OVW/Pdr9a5X1RbzCvGvAkbqJImkrmkftnG/dY0qOrgQn5Tzpzc
+XSFt6yhKVt1/MoHzKcaUkGVFw+0dqZ+DIfGNiCM6TPhrgm/ZFupAQgAgGohIXEH5
+8nXl9+oARQt+75KH3ZlGLQJO/8ByBU9lPxYJnc9cjJkl3aZU3Qkk2Aeya0zEvpOU
+udGTp9sAc7SJ28cxN/19nWqygMQ7Ky+q6rzIuppMtEamSp3lGTsHxfoCTckr6uoI
+LGgUjuUKbau/rqy5tXsX+EjjxCCb7+g+DiZj5/Bt9RUWZZ0FBcy3RBKvgqOJ2aqV
+r76IpjiRqg7J8gWi2an1tnNoKM6mI7huRn0yj99aQ+3HB2TzpCArkN8sFdiydJ26
+jXJa2rB3VCVbZcLGkrovhDvuPu5zqNDjq7RmNIGwd1VH6Ke5BcEKo8R8CwARAQAB
+tDpFdWdlbiBTY2h3ZXJ0IChDT0RFIFNJR05JTkcgS0VZKSA8ZXVnZW4uc2Nod2Vy
+dEBnbWFpbC5jb20+iQI3BBMBAgAhAhsDAh4BAheABQJQIOQkBQsJCAcDBRUKCQgL
+BRYCAwEAAAoJEE3tA8TSewtZO8QQAMU8e3JIxXU+aeCG11jk+Qrilmy4rUNGO+0O
+6kd71XSN5IZQq57I0ys2NVDhsDobREunNetuD0gicRxmD0FVGeT8PBcpcRk2kcn6
+yLNBQzVp/+EvrX631dAG1xBaCo3MPV1KvbOtMw8kISHv2uWL1LAxZyOdLgiSq+hR
+GZxOWdAAOYpEOOtx9FlErUkdlQCm/YAJJAAmoqrwrIbQ5yJJgxmLaQhUvCW1kxeG
++gkLjZLUes4hru72i9V5iSTUu7hbUpOpI53Fklec2x4xmYeE0q4Lyx8bxADV/sEy
+Y4s9qatl0IMERT3unjnUJuiaRzL5/+TLyEveTafay2G6w17emDoRN0Gi4taYxgzv
+UJEaOAX6ucJFdx/Sv7O+8s9iETcsVZ/CC4ySUNYGsShpnhTEWdgC/gAqW25cXheR
+8a1wwwHYImZOFcQF80j0dKtx66A1TKF6F89vCwKuyYYmsNqm/jnjMja8qXdVetLq
+v3BW6XTrm79Aam3une6K9D3e1k9vnpLyO5mszRASLAAOP2Opew1kCK9VRMZILznt
+9Bkv4Zt609Fdrzlzvjii0+26a0/MCRW37t7Fw6bfaYxAZAYzxZJq3Gjfz6zEWAYk
+wcCdK54B0OzLxmMTV3yb4ihiJjmMFTgKT4+mPNN3+R3mCMt50AnHv+FYmwGPa7iJ
+wVvQ2Eo1uQINBFAg22YBEADPlSkqcFihAEJe7KtEAZnGNZSyhwDLAIO1C+oSCi+j
+k4czl8Jsv6vUBJsJzC3kQv9Qh6LL6e8dq8YE/L6oFAu9nkB4xoAiTo/3wasA6yAy
+TWGsDiXKG7K9QkO2Aprb2t8cM5feKR+fSR2EuK9x3e2RK9xZQSFnvJJASxJ2n1IG
+/3NioVb2mb/+CkQiVtnnbXlILCHNeWyKSvye0outvpy+IzLxBHowKKTa20KP7Sp3
+dJ3eQrACrUYnu6JNa3Yd1NHrlZfXlWTQmTFWseg8AsleaFpS5eMYHqhDuK5ZkqOm
+CyHR+udWCC4+DlqqZuCq1RgJC0AQAD5iNLoYHYHN4dikiPOteStYndW5W5eJmsNS
+k3Vqcdqwl0pMUMV9b8Y+FsFAhYyQtxREVnjEX8zhwp99kG4RO2uB/5phYr9ufwKO
+iLaGMrRU46P08HEnpqdLc8s4G2JFOju4m0qeq7TAimJ5KiM0SIbCqF3+xxosw06B
+vRZvoyXvwq+LjtAZLDbXpiLYyH38sIWuwaoOC0nYPPF4rq3mY23RsxTbTnHm37rI
+2J73XDUWRC9zL0gYtl+JBKPhRaTLc/vzCs41zqsll/jMtDpOP9cOAZ21AXGpoN0B
+XpW6jihqIUpSveFDHoR2tN4bYQbHcmD04MErqquJ495+28sxB7AG8qiRtkWm0uTY
+3wARAQABiQIfBBgBAgAJBQJQINtmAhsMAAoJEE3tA8TSewtZ6+cQAKlhT3On+FQL
+aS5HwZfwhU/cmuoNBrrP0eF5i5pilNcMfzDJPYKlWsupgqxJkDItd78SRODy7YN/
+gid1TJceAfib0jHr95tgwNxWkJMrtrPtppxcNLTHFB12uVoQKbrJkfl1qgBlo6cB
+MLhdJlPufGfTQ06ERnmCxcwrdT8HRN5WyvAkNd+RqAyMFfLWxbHRY+USrBtJAN7o
+TDV/613wgvsAvaPC/NBTFpYURbm9K9Y3B8nNqNWkPuyQMXqRdkPLy+ynnZJ7rbG8
+5aG/kQeDxvAwWN0oO5Ye9O4x2SYV8GyPD4UcHv+4sD6kDc91XD5D6P4JazB9QGfQ
+gGfigEqurnfAY0FDlqBDih1hiNg+KSZOtM9+x0y0mYul/Y1n3T99a6VURsV8zZyy
+9ev2q5vNHEsz5ynWOht+QkNgPQgndEJp5unRS8w+EMhi5Ee0qxnmUVjxurLqyQn8
+sCsfWM5Phj1XF8aTK/xq7S7c7a6/SLfMBISzRCTj51Su//TwqPxQqqPoJRXAJVG0
+1Gkd1kD7gaKgdqsyJe0UNk85SkL6W54BoIuX/7f5ygKYoiLdFHbUPStMrxReKxqa
+sZbkaBvtT6aBP/xRoDNTRbdQN620vWiFgyRkF+X5b8ARLZqcKZq1T+5wPSzzFqxH
+CaoyS9uK4WWsaeT4ML26sVhNQIFG3tpZ
+=AZYK
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub   4096R/C467526E 2012-08-09 [expires: 2017-08-08]
+      Key fingerprint = D3BF D979 E8D3 DD4B EDA6  1BC4 9E69 17B5 C467 526E
+uid                  Maxim Solodovnik (solomax) <so...@apache.org>
+sub   4096R/FDFEE7FE 2012-08-09 [expires: 2017-08-08]
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.18 (FreeBSD)
+
+mQINBFAjySoBEAC7ZQTyUxGqC7g0AC5feQNSNe5TAFUooGlGgag/aLhkl1ELVgxA
+5MysuLh2wpbA6NdpMYcZSwl+vEI7CrSEp3mWnqE1pwcdzNqs1XR6LHn9Tl/8gNwt
+oUj4QPSWPlDebUW3lIbdptbzMzfqm73GEUc71pal+QkyAYsD7fkdYIL3vnbZWI6Y
+i6nCFF6SzRkFUFOnbKXjTycoGe2EWncezD/Z1bWzzDHEqr/urIS2MMlLiZuIOKkr
+Yfb07zl02CmHOvrVOM+Yzza4ZRjTBoeOzNqWKfMpKwakezbF4gcQ+2NPdJjj1sw8
+QEzwmBFHBdgwexlwERoEynqUe2THGtInYj5gONtRK1WvAaXEr11iJtcsVmyYw+mi
+B8nJzATvh6J/Am814Lg3jd6RT/LSeAj5Y1JY2tCFljqAYTvudxvVLwllKwy01jJM
+76HoL27cnJZ1/ft7gmKCAv9GT+bXznZMVYiiOHBZ6hlQFqcPHIQlx/R+5dtCSbg7
+cBeBR0OM+As5pFm2RqOGfD3cPfMTGRFDNCiUr5Qda13XdiCEWsKUxyM4+iUfdz98
+hCvfLM2oehzXSbT33k5WM9hn1BPigy8YaKgq7CaJ9z5MYNa/nkda9JD57RuDW8zW
+rlphGPnjV+t5bj/IV25nPFc7a6iN4V+r8PSkyAwuzwGGcjJD3R8ppY4J2wARAQAB
+tC9NYXhpbSBTb2xvZG92bmlrIChzb2xvbWF4KSA8c29sb21heEBhcGFjaGUub3Jn
+PokCPgQTAQIAKAUCUCPJKgIbAwUJCWYBgAYLCQgHAwIGFQgCCQoLBBYCAwECHgEC
+F4AACgkQnmkXtcRnUm6EeBAAh8YSVNr1hMZav5InxUvj04SyhdwV7Zh4KEsxUciu
+/h1U0kXjWQVFjYpF5jb+v/YkI7PrB54ApZmOq+kAG6SNWYzDku6X8GCLrXHSN98/
+hpSGvMkjpIGCm69CniDZq0WWcBrGvEwFyx8I9TwHLzYHEG3h6eT1W94lak7CUzFp
+YjzDdrbiRJs7HtgKJou161gx0y+JkGWD80jJto5tC9IYYQWyNGqrKMmldNT4FS0w
+EkORh0yeU6/s4RpujofVTh+Vg0BwN7afGw3pKvu2cabnocEHXUYqtmk8RzqPbU7c
+Zxzmg9uqQKacCPz7xhjTlEzrW1fCW5N6SlDoZFHe+aH8o19wEB8QADODom5pbaA9
+s0Oy8lLlvVxPKpJC7ArPN+17KDLcuAv1/pMWoSZNbkCqTIa0+pszsfoysdpG1XRk
+K8g96dI8m2BaLUfmhEfxvhG3G5NxP5hMtQouQJhiuI0/sEVzLaddvKamRCvUruUE
+6MEFTB9C/P2b1igA5eXUCgO5wFqH6OYhmt0tyYi64jYdc4kUKPxD3tsnfEqD+Mk6
+ugDWYmJU3dGOJCy0lR96Lov2fc4D7qGcXsyVprNNysiLFZ/JvC5QH0nYrU9QqCCK
+rQ3bDZOB2nJBIvXQvxk3dNWJX5tnBKk4a5c6r8EOaeMhmUQgA7jG1dkMOL9SXZVt
+fHG5Ag0EUCPJKgEQALdS9RJZbLTpTRLGcIrx92cM0lBTiAm8IGooBnwMRtri9Az8
+qrNw+SZNTp4kmLP5niyAG9omXuM3UiSIgiE4JeyIEMZueKCwdOT0aXlqDAloremY
+spZ2c1rHTPrZCF9FJW2ycCd3Qt33eLsiE8QyvLrGWTp4EwNszdRz5MpV7TTccUOw
+vDi5GuKFNevnSkUUWN/c17bpyeSGDf9Dabl4rDW2/Gc+yQfMKu44gqDUaTR94Fvx
+OIupMtYR3H0vt4X1Fr2MapeKdc7/Xndldrd9zC+d1qEKe6/uUVDbOl8pNIkF/Zgi
+hANzqdN4HXqQDhO780dVQhKuTMAqE5CxLSj4sxjF9vC/sNtAf9taARmzBlsKtBmn
+uU/aldpaTUb33BMnHQ21vwwHVo5o7M7itKxgCLS06Kg2SyEpRsTFBuTGVDLceuly
+4KyHfnXOZFtnWYzYxrEMbDGi9x0PW1P38Gzk7YD9txzS3yj5oJF6QP0rmGlCJQGn
+iU/WRzhv0Gfpt1wYerodUedQn5qViht6GLpExMq6pxsBOFGzgE8I8bKdaJYhx5Ov
+8zCdUiSSoQgiBx8P6gzLwMZ52OMqkEWoXCsnCq3Fl1LZzpqv7nBRjuEklbQLdWCP
+WYHM6Yz7lQylproqnNQlbPfE59iA6ObD7V1UlORytifxaM8iPetI3dSoGANxABEB
+AAGJAiUEGAECAA8FAlAjySoCGwwFCQlmAYAACgkQnmkXtcRnUm5Jdw//Q+ct8W1H
+3J7AsO6HZ/6OpOzQu6W68VTVgY/akJb9hOPhRgd1/UN/18uoC36laS3YNDY33I6M
++5AkluAEkGwpLUAWfWHSD1zuwlgQVSYwNUGR+a0/LHFdrW7YP5CZ6XHGzqIszPTy
+2atQg+gdxnMyCZ8gMlKF6+DJwRdYoHLLGP9FLiifYn9GuMWaAVEVzcSmhm1L3N64
+satqV5eWmdXo8pclPy/iQH8XoKYoI3SHleJuwEAHp9syeVXC6KmltOmAZYQxTPtL
+NB0yr9MsTxI18dMJWsXTg8ZKcwrhssPSA5WQ7LigkjZNoX6W/O46Xm9OYQR003Br
+CJRRcCiiC3poAcH9nt9Nb2fIXDFoLcq02/x00V7TKxPvflBK3DFP6MSy8U6jkSUx
+hp2cQJY/eGSNYEc6UYOpMM2G5XLdvD0e7/Fvmpii0YvC5fKoXvO5pvl1H4RDJeRm
+I7csCb9DvX7Aj57V9FPpwT+UppeOaswSUhpPtjg/nv+ytZ005EE2RXU87jgEhCdX
+AzuZbTJxsoJgwT3ib+6lJVcxr7gU0lUYJ1gViPjx35Asb2najwrjQ7pNlLeTwDIW
+OvZRphws/W0lCB1eMq1D295Pt8+/+fQP3DNpiXxES3tpPn+/VIk6SoP8Xp7PwkEh
+phDjetf2TOfFUZWG6FpITgC5m+1JEqsJtjA=
+=Le1H
+-----END PGP PUBLIC KEY BLOCK-----
+
+pub   2048R/C1D03D7A 2012-08-15
+      Key fingerprint = BC88 A75A F8CE FF74 022F  9D6C 7D50 C7E2 C1D0 3D7A
+uid                  German Grekhov <gg...@apache.org>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v2.0.18 (FreeBSD)
+
+mQENBFArJtUBCAClA1uy+U+wRJkzgqyQ/HlYZHniR/OGDjlu0043RiA1kQI/8EUK
+9sb/y+K8Um2D+HZw3pW++5wy4tz+o4i9HPvYZhS9dq8p8tthZmSHpg8p8PKrL1HQ
+GTsS5+atw3NB/6KWno5vDbY6UNtXjZ0gS5IYnccMksYeeb//pZJVwM1O36M5S/Gb
+iEm3YGBB4mUuRjDiAgbzyn+tI8vZovNb70gD1YPKRFhiE6Jn847o6+SH9GZflyHB
+/xPkOa3e/LRXBEuAPYgIySf1TroYyYYSebyqX2JA3joaIFuibvEaoXdr78aKaZ7S
+oboQd76gAlsMKcxAlYMMJXgvvApHYNIbSy7tABEBAAG0JEdlcm1hbiBHcmVraG92
+IDxnZ3Jla2hvdkBhcGFjaGUub3JnPokBOAQTAQIAIgUCUCsm1QIbAwYLCQgHAwIG
+FQgCCQoLBBYCAwECHgECF4AACgkQfVDH4sHQPXpgEQgAmi/AiYrZHaOsh81xEAfS
+9rmK2jp0eEtA4dmlhCEmlLKXGRY8ZQA/kk45qnY79ubjZT0xTILJPa6/UKNh8liH
+CtIN6GbnToBjB2VfO2oSMUydmXUtkhyE9J3EnJL3HaWaxquMNLw/ZKt5PXzgQlc0
+et3se5AOP5x4qCfyg0JS6EIuZRU4bWJ6LMhkgD4mwqRdQ7lq+s3GSCoUXjIxfO/f
+G0fB2ExGZJQk4fZ/8fBHZfe8lpAQgLJA5mRGxj7DdMsTDzN2SH+WNs2Y4/MXi4SL
+pCHWOdzVZDGOq8UaRqDLq1IUje6NHqltcAhJQBZ7fxlST35tHnNQvBMIvBZ366BN
+DLkBDQRQKybVAQgAoJfswqfYKqm+lFMavy9gA87kaNHU/E1kYSDXgetkgnuVDwG8
+jt4sU3SRc/OLgQVXVc12VFJRU36rKHuA0JkXrPgYi2LClIwnK7V+VqabtUc7OT2t
+Bd9pCEXk3J+6XKUPanRd9JkLR1liNj7pDmXEdc+Eaqqql+0KuGfxsHiVjP9kuoVV
+PcUWS5klcOIRI5ZUzkNDJXq7S6LN0TEHdtX/3R925wHBsspvtg4ca+mlJmwACs/o
+iOB3nwlScErDbKzkqcma2eMD0TCcrqlu99/Uv8ZdXBYHraHeBGtESJlZS72i5iog
+4y7yOw6QocW5h8B87efu/+6UoAQgY+2x6D50NQARAQABiQEfBBgBAgAJBQJQKybV
+AhsMAAoJEH1Qx+LB0D16+AoH/2++0UGjiT0QGXycQh3vLaMUdXjG3IihutBHtsBr
+CjOgeCSLAGpirYwUYqoE0GcTVnJ6POPDbsN/NcN+kza2miopYmuJrcF5rCk8Kevl
+o4GKdpj7AgYmO5BldyNcWOWYATNccPkvmPzqjBrx6KGNmGP9BWOie9G+sOMHfUPd
+dMtJDgkDPcyl4vyhN4tWGDFwo9TZLrKr/TNrUkrCcwtTFNw1Whiulq/Xp/0Ud2Dz
+TwlQyqiieZELEEltNSY8EVFBlH29Sg8WojddlVlC7l2mpGliSiVxZfAJmCTcrEcE
+T/534j+K1YDa5Wky8CcfE0NgYpUUtIxsbdfajuIo5Xu20ck=
+=I4K3
+-----END PGP PUBLIC KEY BLOCK-----
+


[04/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1601] drop recordings to WB seems to work

Posted by so...@apache.org.
[OPENMEETINGS-1601] drop recordings to WB seems to work


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/a5d2b138
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/a5d2b138
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/a5d2b138

Branch: refs/heads/3.2.x
Commit: a5d2b1384c16a46e6e6b56a0ab9cf06df7267ae8
Parents: ad627cc
Author: Maxim Solodovnik <so...@apache.org>
Authored: Tue Mar 14 16:52:27 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Tue Mar 14 16:52:27 2017 +0000

----------------------------------------------------------------------
 .../WhiteBoardObjectListManagerById.java        |  81 ---
 .../whiteboard/WhiteBoardObjectSyncManager.java |  98 ----
 .../core/data/whiteboard/WhiteboardCache.java   |  86 +++
 .../core/data/whiteboard/WhiteboardManager.java |  58 +-
 .../whiteboard/WhiteboardObjectSyncManager.java |  98 ++++
 .../core/remote/ConferenceLibrary.java          |  72 +--
 .../core/remote/WhiteBoardService.java          | 560 -------------------
 .../core/remote/WhiteboardService.java          | 560 +++++++++++++++++++
 .../remote/red5/ScopeApplicationAdapter.java    |  50 +-
 .../openmeetings/db/dto/room/Whiteboard.java    | 189 +++++++
 .../db/dto/room/WhiteboardObject.java           | 189 -------
 .../db/dto/room/WhiteboardObjectList.java       |  45 --
 .../openmeetings/db/dto/room/Whiteboards.java   |  51 ++
 .../whiteboard/base/baseDrawObject.lzx          | 118 ++--
 .../whiteboard/base/whiteboardVideoPlayer.lzx   | 146 +++--
 .../service/quartz/scheduler/CleanupJob.java    |  12 +-
 .../web/admin/labels/LangPanel.html             |   1 -
 .../apache/openmeetings/web/room/RoomPanel.java |  21 +-
 .../web/room/RoomResourceReference.java         |  19 +-
 .../web/room/sidebar/UploadDialog.java          |   4 +-
 .../user/record/RecordingResourceReference.java |  31 +-
 .../classes/openmeetings-applicationContext.xml |  10 +-
 .../openmeetings/webservice/FileWebService.java |  42 --
 23 files changed, 1241 insertions(+), 1300 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectListManagerById.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectListManagerById.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectListManagerById.java
deleted file mode 100644
index f348178..0000000
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectListManagerById.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.core.data.whiteboard;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicLong;
-
-import org.apache.openmeetings.db.dto.room.WhiteboardObject;
-import org.apache.openmeetings.db.dto.room.WhiteboardObjectList;
-
-/**
- * Memory based cache, configured as singleton in spring configuration
- *
- * @author sebawagner
- *
- */
-public class WhiteBoardObjectListManagerById {
-	private Map<Long, WhiteboardObjectList> whiteBoardObjectList = new ConcurrentHashMap<>();
-
-	private volatile AtomicLong whiteboardId = new AtomicLong(0);
-
-	public long getNewWhiteboardId(Long roomId, String name) {
-		long wbId = whiteboardId.getAndIncrement();
-		setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, new WhiteboardObject(name), wbId);
-		return wbId;
-	}
-
-	/*
-	 * Room items a Whiteboard
-	 */
-	public WhiteboardObjectList getWhiteBoardObjectListByRoomId(Long roomId) {
-		if (whiteBoardObjectList.containsKey(roomId)) {
-			return whiteBoardObjectList.get(roomId);
-		} else {
-			WhiteboardObjectList whiteboardObjectList = new WhiteboardObjectList();
-			whiteboardObjectList.setRoomId(roomId);
-			return whiteboardObjectList;
-		}
-	}
-
-	public WhiteboardObject getWhiteBoardObjectListByRoomIdAndWhiteboard(Long roomId, Long whiteBoardId){
-		WhiteboardObjectList whiteboardObjectList = getWhiteBoardObjectListByRoomId(roomId);
-		WhiteboardObject whiteboardObjects = whiteboardObjectList.getWhiteboardObjects().get(whiteBoardId);
-		if (whiteboardObjects == null) {
-			whiteboardObjects = new WhiteboardObject();
-		}
-		return whiteboardObjects;
-	}
-
-	/*
-	 * Whiteboard Object List
-	 *
-	 */
-	public void setWhiteBoardObjectListRoomObj(Long roomId, WhiteboardObjectList whiteboardObjectList){
-		whiteBoardObjectList.put(roomId, whiteboardObjectList);
-	}
-
-	public void setWhiteBoardObjectListRoomObjAndWhiteboardId(Long roomId, WhiteboardObject whiteboardObjects, long whiteBoardId) {
-		WhiteboardObjectList whiteboardObjectList = getWhiteBoardObjectListByRoomId(roomId);
-		whiteboardObjects.setWhiteBoardId(whiteBoardId);
-		whiteboardObjectList.getWhiteboardObjects().put(whiteBoardId, whiteboardObjects);
-		whiteBoardObjectList.put(roomId, whiteboardObjectList);
-	}
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectSyncManager.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectSyncManager.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectSyncManager.java
deleted file mode 100644
index cd2f0b6..0000000
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectSyncManager.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.core.data.whiteboard;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.openmeetings.db.dto.room.WhiteboardSyncLockObject;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-
-/**
- * Memory based, configured as singleton in spring configuration
- *
- * @author sebawagner
- *
- */
-public class WhiteBoardObjectSyncManager {
-	private Map<Long, Map<String, WhiteboardSyncLockObject>> whiteBoardSyncList = new ConcurrentHashMap<>();
-	private Map<Long, Map<String, Map<String, WhiteboardSyncLockObject>>> whiteBoardObjectSyncList = new ConcurrentHashMap<>();
-
-	private static final Logger log = Red5LoggerFactory.getLogger(WhiteBoardObjectSyncManager.class, webAppRootKey);
-
-	/*
-	 * Initial Sync Process
-	 */
-	public void setWhiteBoardSyncListByRoomid(Long roomId, Map<String, WhiteboardSyncLockObject> mapObject) {
-		whiteBoardSyncList.put(roomId, mapObject);
-	}
-
-	public Map<String, WhiteboardSyncLockObject> getWhiteBoardSyncListByRoomid(Long roomId) {
-		if (whiteBoardSyncList.containsKey(roomId)) {
-			return whiteBoardSyncList.get(roomId);
-		} else {
-			return new ConcurrentHashMap<>();
-		}
-	}
-
-	/*
-	 * Image Sync Process
-	 */
-	public void setWhiteBoardImagesSyncListByRoomid(Long roomId, Map<String, Map<String, WhiteboardSyncLockObject>> mapObject) {
-		whiteBoardObjectSyncList.put(roomId, mapObject);
-	}
-
-	public void setWhiteBoardImagesSyncListByRoomAndObjectId(Long roomId, String objectId, Map<String, WhiteboardSyncLockObject> imageSyncList) {
-		Map<String, Map<String, WhiteboardSyncLockObject>> roomList = getWhiteBoardObjectSyncListByRoomid(roomId);
-		if (imageSyncList.isEmpty()) {
-			roomList.remove(objectId);
-		} else {
-			roomList.put(objectId, imageSyncList);
-		}
-		setWhiteBoardImagesSyncListByRoomid(roomId, roomList);
-	}
-
-	public Map<String, Map<String, WhiteboardSyncLockObject>> getWhiteBoardObjectSyncListByRoomid(Long roomId) {
-		if (whiteBoardObjectSyncList.containsKey(roomId)) {
-			return whiteBoardObjectSyncList.get(roomId);
-		} else {
-			return new ConcurrentHashMap<>();
-		}
-	}
-
-	public Map<String, WhiteboardSyncLockObject> getWhiteBoardObjectSyncListByRoomAndObjectId(Long roomId, String objectId) {
-		log.debug("getWhiteBoardImagesSyncListByRoomAndImageid roomId: " + roomId);
-		Map<String, Map<String, WhiteboardSyncLockObject>> roomList = getWhiteBoardObjectSyncListByRoomid(roomId);
-		if (log.isDebugEnabled()) {
-			log.debug("getWhiteBoardImagesSyncListByRoomAndImageid roomList: " + roomList);
-			log.debug("getWhiteBoardImagesSyncListByRoomAndImageid objectId: " + objectId);
-			if (roomList.size() == 1) {
-				log.debug("getWhiteBoardImagesSyncListByRoomAndImageid roomList Key imageId: " + roomList.keySet().iterator().next());
-			}
-		}
-		Map<String, WhiteboardSyncLockObject> imageSyncList = roomList.get(objectId);
-		if (imageSyncList == null) {
-			imageSyncList = new ConcurrentHashMap<>();
-		}
-		return imageSyncList;
-	}
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardCache.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardCache.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardCache.java
new file mode 100644
index 0000000..0dd12ba
--- /dev/null
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardCache.java
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.core.data.whiteboard;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicLong;
+
+import org.apache.openmeetings.db.dto.room.Whiteboard;
+import org.apache.openmeetings.db.dto.room.Whiteboards;
+
+/**
+ * Memory based cache, configured as singleton in spring configuration
+ *
+ * @author sebawagner
+ *
+ */
+public class WhiteboardCache {
+	private Map<Long, Whiteboards> cache = new ConcurrentHashMap<>();
+
+	private volatile AtomicLong whiteboardId = new AtomicLong(0);
+
+	public long getNewWhiteboardId(Long roomId, String name) {
+		long wbId = whiteboardId.getAndIncrement();
+		set(roomId, new Whiteboard(name), wbId);
+		return wbId;
+	}
+
+	/*
+	 * Room items a Whiteboard
+	 */
+	public Whiteboards get(Long roomId) {
+		if (roomId == null) {
+			return null;
+		}
+		if (cache.containsKey(roomId)) {
+			return cache.get(roomId);
+		} else {
+			Whiteboards whiteboards = new Whiteboards();
+			whiteboards.setRoomId(roomId);
+			set(roomId, whiteboards);
+			return whiteboards;
+		}
+	}
+
+	public Whiteboard get(Long roomId, Long whiteBoardId) {
+		Whiteboards whiteboards = get(roomId);
+		Whiteboard wb = whiteboards.getWhiteboards().get(whiteBoardId);
+		if (wb == null) {
+			wb = new Whiteboard();
+			set(roomId, wb, whiteBoardId);
+		}
+		return wb;
+	}
+
+	/*
+	 * Whiteboard Object List
+	 *
+	 */
+	public void set(Long roomId, Whiteboards whiteboards) {
+		cache.put(roomId, whiteboards);
+	}
+
+	public void set(Long roomId, Whiteboard wb, long whiteBoardId) {
+		Whiteboards whiteboards = get(roomId);
+		wb.setWhiteBoardId(whiteBoardId);
+		whiteboards.getWhiteboards().put(whiteBoardId, wb);
+		cache.put(roomId, whiteboards);
+	}
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java
index fc89b27..be488fc 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java
@@ -24,21 +24,21 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import org.apache.openmeetings.db.dto.room.WhiteboardObject;
+import org.apache.openmeetings.db.dto.room.Whiteboard;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 
 public class WhiteboardManager {
 	private static final Logger log = Red5LoggerFactory.getLogger(WhiteboardManager.class, webAppRootKey);
-	
+
 	@Autowired
-	private WhiteBoardObjectListManagerById wbListManagerById;
+	private WhiteboardCache whitebardCache;
 
 	@SuppressWarnings("unchecked")
-	public void addWhiteBoardObjectById(Long roomId, Map<Integer, Object> whiteboardObj, Long whiteBoardId) {
+	public void add(Long roomId, Map<Integer, Object> whiteboardObj, Long whiteBoardId) {
 		try {
-			log.debug("addWhiteBoardObjectById: ", whiteboardObj);
+			log.debug("add: ", whiteboardObj);
 
 			String action = whiteboardObj.get(2).toString();
 
@@ -47,16 +47,11 @@ public class WhiteboardManager {
 
 			List<Object> actionObject = (List<Object>) whiteboardObj.get(3);
 
+			Whiteboard wb = whitebardCache.get(roomId, whiteBoardId);
 			if (action.equals("moveMap")) {
-				WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId);
-
-				whiteboardObject.setX(Integer.valueOf(actionObject.get(1).toString()));
-				whiteboardObject.setY(Integer.valueOf(actionObject.get(2).toString()));
-
-				wbListManagerById.setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, whiteboardObject, whiteBoardId);
+				wb.setX(Integer.valueOf(actionObject.get(1).toString()));
+				wb.setY(Integer.valueOf(actionObject.get(2).toString()));
 			} else if (action.equals("draw") || action.equals("redo")) {
-				WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId);
-
 				// log.debug(actionObject);
 				// log.debug(actionObject.size()-1);
 				// log.debug(actionObject.get(actionObject.size()-1));
@@ -65,33 +60,26 @@ public class WhiteboardManager {
 					if (!objectType.equals("pointerWhiteBoard")) {
 						String objectOID = actionObject.get(actionObject.size() - 1).toString();
 						log.debug("objectOID: " + objectOID);
-						whiteboardObject.add(objectOID, actionObject);
-						wbListManagerById.setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, whiteboardObject, whiteBoardId);
+						wb.add(objectOID, actionObject);
 					}
 				}
 			} else if (action.equals("clear")) {
-				WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId);
-				whiteboardObject.clear();
-				wbListManagerById.setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, whiteboardObject, whiteBoardId);
+				wb.clear();
 			} else if (action.equals("delete") || action.equals("undo")) {
-				WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId);
-				whiteboardObject.remove(actionObject);
-
-				wbListManagerById.setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, whiteboardObject, whiteBoardId);
+				wb.remove(actionObject);
 			} else if (action.equals("size") || action.equals("editProp")
 					|| action.equals("editTextMindMapNode")
 					|| action.equals("editText") || action.equals("swf")
 					|| action.equals("flv")
 					|| action.equals("editTextMindMapColor")
 					|| action.equals("editTextMindMapFontColor")) {
-				WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId);
 				String objectOID = actionObject.get(actionObject.size() - 1).toString();
 				// List roomItem = roomList.get(objectOID);
-				List<Object> currentObject = whiteboardObject.get(objectOID);
+				List<Object> currentObject = wb.get(objectOID);
 				if ("paint".equals(actionObject.get(0))) {
 					actionObject.set(1, currentObject.get(1));
 				}
-				whiteboardObject.add(objectOID, actionObject);
+				wb.add(objectOID, actionObject);
 
 				if (action.equals("swf")) {
 					log.debug("actionObject " + actionObject);
@@ -102,7 +90,7 @@ public class WhiteboardManager {
 
 							log.debug("updateObjectsToSlideNumber :: " + baseObjectName + "," + slidesNumber);
 
-							for (Entry<String, List<Object>> me : whiteboardObject.entrySet()) {
+							for (Entry<String, List<Object>> me : wb.entrySet()) {
 								List<Object> actionObjectStored = me.getValue();
 
 								if (actionObjectStored.get(0).equals("ellipse")
@@ -131,28 +119,18 @@ public class WhiteboardManager {
 						}
 					}
 				}
-
-				wbListManagerById.setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, whiteboardObject, whiteBoardId);
 			} else if (action.equals("clearSlide")) {
-				WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId);
-
 				for (Object objectName : actionObject) {
-					whiteboardObject.remove(objectName);
+					wb.remove(objectName);
 				}
-
-				wbListManagerById.setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, whiteboardObject, whiteBoardId);
 			} else if (action.equals("whiteboardObj")) {
-				WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId);
-
-				whiteboardObject.setFullFit((Boolean) actionObject.get(1));
-				whiteboardObject.setZoom((Integer) actionObject.get(2));
-
-				wbListManagerById.setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, whiteboardObject, whiteBoardId);
+				wb.setFullFit((Boolean) actionObject.get(1));
+				wb.setZoom((Integer) actionObject.get(2));
 			} else {
 				log.warn("Unkown Type: " + action + " actionObject: " + actionObject);
 			}
 		} catch (Exception err) {
-			log.error("[addWhiteBoardObject]", err);
+			log.error("[add]", err);
 		}
 	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardObjectSyncManager.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardObjectSyncManager.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardObjectSyncManager.java
new file mode 100644
index 0000000..6998a2b
--- /dev/null
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardObjectSyncManager.java
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.core.data.whiteboard;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.openmeetings.db.dto.room.WhiteboardSyncLockObject;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+/**
+ * Memory based, configured as singleton in spring configuration
+ *
+ * @author sebawagner
+ *
+ */
+public class WhiteboardObjectSyncManager {
+	private Map<Long, Map<String, WhiteboardSyncLockObject>> whiteBoardSyncList = new ConcurrentHashMap<>();
+	private Map<Long, Map<String, Map<String, WhiteboardSyncLockObject>>> whiteBoardObjectSyncList = new ConcurrentHashMap<>();
+
+	private static final Logger log = Red5LoggerFactory.getLogger(WhiteboardObjectSyncManager.class, webAppRootKey);
+
+	/*
+	 * Initial Sync Process
+	 */
+	public void setWhiteBoardSyncListByRoomid(Long roomId, Map<String, WhiteboardSyncLockObject> mapObject) {
+		whiteBoardSyncList.put(roomId, mapObject);
+	}
+
+	public Map<String, WhiteboardSyncLockObject> getWhiteBoardSyncListByRoomid(Long roomId) {
+		if (whiteBoardSyncList.containsKey(roomId)) {
+			return whiteBoardSyncList.get(roomId);
+		} else {
+			return new ConcurrentHashMap<>();
+		}
+	}
+
+	/*
+	 * Image Sync Process
+	 */
+	public void setWhiteBoardImagesSyncListByRoomid(Long roomId, Map<String, Map<String, WhiteboardSyncLockObject>> mapObject) {
+		whiteBoardObjectSyncList.put(roomId, mapObject);
+	}
+
+	public void setWhiteBoardImagesSyncListByRoomAndObjectId(Long roomId, String objectId, Map<String, WhiteboardSyncLockObject> imageSyncList) {
+		Map<String, Map<String, WhiteboardSyncLockObject>> roomList = getWhiteBoardObjectSyncListByRoomid(roomId);
+		if (imageSyncList.isEmpty()) {
+			roomList.remove(objectId);
+		} else {
+			roomList.put(objectId, imageSyncList);
+		}
+		setWhiteBoardImagesSyncListByRoomid(roomId, roomList);
+	}
+
+	public Map<String, Map<String, WhiteboardSyncLockObject>> getWhiteBoardObjectSyncListByRoomid(Long roomId) {
+		if (whiteBoardObjectSyncList.containsKey(roomId)) {
+			return whiteBoardObjectSyncList.get(roomId);
+		} else {
+			return new ConcurrentHashMap<>();
+		}
+	}
+
+	public Map<String, WhiteboardSyncLockObject> getWhiteBoardObjectSyncListByRoomAndObjectId(Long roomId, String objectId) {
+		log.debug("getWhiteBoardImagesSyncListByRoomAndImageid roomId: " + roomId);
+		Map<String, Map<String, WhiteboardSyncLockObject>> roomList = getWhiteBoardObjectSyncListByRoomid(roomId);
+		if (log.isDebugEnabled()) {
+			log.debug("getWhiteBoardImagesSyncListByRoomAndImageid roomList: " + roomList);
+			log.debug("getWhiteBoardImagesSyncListByRoomAndImageid objectId: " + objectId);
+			if (roomList.size() == 1) {
+				log.debug("getWhiteBoardImagesSyncListByRoomAndImageid roomList Key imageId: " + roomList.keySet().iterator().next());
+			}
+		}
+		Map<String, WhiteboardSyncLockObject> imageSyncList = roomList.get(objectId);
+		if (imageSyncList == null) {
+			imageSyncList = new ConcurrentHashMap<>();
+		}
+		return imageSyncList;
+	}
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
index b024b5d..58c6350 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java
@@ -18,27 +18,22 @@
  */
 package org.apache.openmeetings.core.remote;
 
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
-import java.io.File;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.io.FileUtils;
 import org.apache.openmeetings.core.data.whiteboard.WhiteboardManager;
 import org.apache.openmeetings.core.documents.LibraryChartLoader;
 import org.apache.openmeetings.core.documents.LibraryDocumentConverter;
 import org.apache.openmeetings.core.documents.LibraryWmlLoader;
-import org.apache.openmeetings.core.documents.LoadLibraryPresentation;
 import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
 import org.apache.openmeetings.db.dao.server.ISessionManager;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.dto.file.LibraryPresentation;
 import org.apache.openmeetings.db.dto.server.ClientSessionInfo;
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 import org.apache.openmeetings.db.entity.file.FileItem;
@@ -48,8 +43,6 @@ import org.apache.openmeetings.db.entity.server.Sessiondata;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.util.OmFileHelper;
 import org.red5.logging.Red5LoggerFactory;
-import org.red5.server.api.IConnection;
-import org.red5.server.api.Red5;
 import org.red5.server.api.service.IPendingServiceCall;
 import org.red5.server.api.service.IPendingServiceCallback;
 import org.slf4j.Logger;
@@ -72,35 +65,10 @@ public class ConferenceLibrary implements IPendingServiceCallback {
 	@Autowired
 	private FileExplorerItemDao fileDao;
 	@Autowired
-	private WhiteboardManager whiteboardManagement;
+	private WhiteboardManager whiteboardManager;
 	@Autowired
 	private ScopeApplicationAdapter scopeAdapter;
 
-	public LibraryPresentation getPresentationPreviewFileExplorer(String sid, String parentFolder) {
-		try {
-			Sessiondata sd = sessionDao.check(sid);
-
-			log.debug("#############users_id : " + sd.getUserId());
-
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
-				File working_dir = new File(OmFileHelper.getUploadFilesDir(), parentFolder);
-				log.debug("############# working_dir : " + working_dir);
-
-				File file = new File(working_dir, OmFileHelper.libraryFileName);
-
-				if (!file.exists()) {
-					throw new Exception(file.getCanonicalPath() + ": does not exist");
-				}
-				return LoadLibraryPresentation.parseLibraryFileToObject(file);
-			} else {
-				throw new Exception("not Authenticated");
-			}
-		} catch (Exception e) {
-			log.error("[getListOfFilesByAbsolutePath]", e);
-			return null;
-		}
-	}
-
 	/**
 	 *
 	 * Save an Object to the library and returns the file-explorer Id
@@ -165,7 +133,7 @@ public class ConferenceLibrary implements IPendingServiceCallback {
 		wbClear.put(3, null);
 
 		Long roomId = client.getRoomId();
-		whiteboardManagement.addWhiteBoardObjectById(roomId, wbClear, wbId);
+		whiteboardManager.add(roomId, wbClear, wbId);
 
 		for (int k = 0; k < roomItems.size(); k++) {
 			List<?> actionObject = (List<?>)roomItems.get(k);
@@ -174,7 +142,7 @@ public class ConferenceLibrary implements IPendingServiceCallback {
 			whiteboardObj.put(2, "draw");
 			whiteboardObj.put(3, actionObject);
 
-			whiteboardManagement.addWhiteBoardObjectById(roomId, whiteboardObj, wbId);
+			whiteboardManager.add(roomId, whiteboardObj, wbId);
 		}
 
 		Map<String, Object> sendObject = new HashMap<>();
@@ -206,40 +174,6 @@ public class ConferenceLibrary implements IPendingServiceCallback {
 		return null;
 	}
 
-	/**
-	 * @param sid
-	 * @param fileId
-	 * @return 1 in case of success, -1 otherwise
-	 */
-	public Long copyFileToCurrentRoom(String sid, Long fileId) {
-		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
-				IConnection current = Red5.getConnectionLocal();
-				String streamid = current.getClient().getId();
-
-				Client client = sessionManager.getClientByStreamId(streamid, null);
-				Long roomId = client.getRoomId();
-
-				FileExplorerItem f = fileDao.get(fileId);
-				if (roomId != null && f != null) {
-					File mp4 = f.getFile(EXTENSION_MP4);
-
-					File targetFolder = OmFileHelper.getStreamsSubDir(roomId);
-
-					File target = new File(targetFolder, mp4.getName());
-					if (mp4.exists() && !target.exists()) {
-						FileUtils.copyFile(mp4, target, false);
-					}
-					return 1L;
-				}
-			}
-		} catch (Exception err) {
-			log.error("[copyFileToCurrentRoom] ", err);
-		}
-		return -1L;
-	}
-
 	@Override
 	public void resultReceived(IPendingServiceCall arg0) {
 		// TODO Auto-generated method stub

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java
deleted file mode 100644
index 9cd5a9b..0000000
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteBoardService.java
+++ /dev/null
@@ -1,560 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.core.remote;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_LANG_KEY;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-
-import java.io.File;
-import java.io.FilenameFilter;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-import java.util.Map;
-
-import org.apache.commons.collections4.ComparatorUtils;
-import org.apache.openmeetings.core.data.whiteboard.WhiteBoardObjectListManagerById;
-import org.apache.openmeetings.core.data.whiteboard.WhiteBoardObjectSyncManager;
-import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.db.dao.label.LabelDao;
-import org.apache.openmeetings.db.dao.server.ISessionManager;
-import org.apache.openmeetings.db.dao.server.SessiondataDao;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.dto.room.Cliparts;
-import org.apache.openmeetings.db.dto.room.WhiteboardObject;
-import org.apache.openmeetings.db.dto.room.WhiteboardObjectList;
-import org.apache.openmeetings.db.dto.room.WhiteboardSyncLockObject;
-import org.apache.openmeetings.db.entity.room.Client;
-import org.apache.openmeetings.db.entity.server.Sessiondata;
-import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.db.util.AuthLevelUtil;
-import org.apache.openmeetings.util.OmFileHelper;
-import org.red5.logging.Red5LoggerFactory;
-import org.red5.server.api.IConnection;
-import org.red5.server.api.Red5;
-import org.red5.server.api.scope.IScope;
-import org.red5.server.api.service.IPendingServiceCall;
-import org.red5.server.api.service.IPendingServiceCallback;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-
-/**
- *
- * @author sebastianwagner
- *
- */
-public class WhiteBoardService implements IPendingServiceCallback {
-	private static final Logger log = Red5LoggerFactory.getLogger(WhiteBoardService.class, webAppRootKey);
-	@Autowired
-	private UserDao userDao;
-	@Autowired
-	private ScopeApplicationAdapter scopeAdapter;
-	@Autowired
-	private ISessionManager sessionManager;
-	@Autowired
-	private WhiteBoardObjectSyncManager wbListManager;
-	@Autowired
-	private WhiteBoardObjectListManagerById wbListManagerById;
-	@Autowired
-	private SessiondataDao sessionDao;
-	@Autowired
-	private LabelDao labelDao;
-	@Autowired
-	private ConfigurationDao cfgDao;
-
-	public boolean getNewWhiteboardId(String name) {
-		try {
-			IConnection current = Red5.getConnectionLocal();
-			String streamid = current.getClient().getId();
-			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
-			Long roomId = currentClient.getRoomId();
-
-			Long whiteBoardId = wbListManagerById.getNewWhiteboardId(roomId, name);
-			scopeAdapter.sendMessageAll(Arrays.asList("newWhiteboard", whiteBoardId, name));
-		} catch (Exception e) {
-			log.error("[getNewWhiteboardId]", e);
-			return false;
-		}
-		return true;
-	}
-
-	public boolean deleteWhiteboard(Long whiteBoardId) {
-		try {
-			IConnection current = Red5.getConnectionLocal();
-			String streamid = current.getClient().getId();
-			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
-			Long roomId = currentClient.getRoomId();
-
-			WhiteboardObjectList whiteboardObjectList = wbListManagerById.getWhiteBoardObjectListByRoomId(roomId);
-			Object returnValue = whiteboardObjectList.getWhiteboardObjects().remove(whiteBoardId);
-
-			log.debug(" :: whiteBoardId :: " + whiteBoardId);
-
-			wbListManagerById.setWhiteBoardObjectListRoomObj(roomId, whiteboardObjectList);
-
-			if (returnValue != null) {
-				return true;
-			}
-		} catch (Exception err) {
-			log.error("[deleteWhiteboard]", err);
-		}
-		return false;
-	}
-
-	public Map<Long, WhiteboardObject> getRoomItemsBy() {
-		Map<Long, WhiteboardObject> result = new LinkedHashMap<>();
-		try {
-			IConnection current = Red5.getConnectionLocal();
-			String streamid = current.getClient().getId();
-			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
-			Long roomId = currentClient.getRoomId();
-
-			log.debug("getRoomItems: " + roomId);
-			WhiteboardObjectList whiteboardObjectList = wbListManagerById.getWhiteBoardObjectListByRoomId(roomId);
-
-			if (whiteboardObjectList.getWhiteboardObjects().size() == 0) {
-				Long langId = null;
-				{
-					Long userId = currentClient.getUserId();
-					if (userId != null && userId.longValue() < 0) {
-						userId = -userId;
-					}
-					User u = userDao.get(userId);
-					langId = u == null ? cfgDao.getConfValue(CONFIG_DEFAULT_LANG_KEY, Long.class, "1") : u.getLanguageId();
-				}
-				wbListManagerById.getNewWhiteboardId(roomId, labelDao.getString("615", langId));
-				log.debug("Init New Room List");
-				whiteboardObjectList = wbListManagerById.getWhiteBoardObjectListByRoomId(roomId);
-			}
-			whiteboardObjectList.getWhiteboardObjects().entrySet().stream()
-					.sorted(Map.Entry.<Long, WhiteboardObject>comparingByKey().reversed())
-					.forEachOrdered(x -> result.put(x.getKey(), x.getValue()));
-		} catch (Exception err) {
-			log.error("[getRoomItemsBy]", err);
-		}
-		return result;
-	}
-
-	public boolean rename(Long wbId, String name) {
-		try {
-			IConnection current = Red5.getConnectionLocal();
-			String streamid = current.getClient().getId();
-			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
-			Long roomId = currentClient.getRoomId();
-
-			WhiteboardObjectList whiteboardObjectList = wbListManagerById.getWhiteBoardObjectListByRoomId(roomId);
-			WhiteboardObject wb = whiteboardObjectList.getWhiteboardObjects().get(wbId);
-			wb.setName(name);
-
-			log.debug(" :: rename whiteBoard :: id = {}, name = {}", wbId, name);
-			scopeAdapter.sendMessageAll(Arrays.asList("renameWhiteboard", wbId, name));
-		} catch (Exception err) {
-			log.error("[rename]", err);
-			return false;
-		}
-		return true;
-	}
-
-	/**
-	 * change the draw status of a user, allow disallow him to draw anybody
-	 * besides the Moderator to draw on the whiteboard, only a Moderator is
-	 * allowed to trigger this function
-	 *
-	 * @param sid
-	 * @param publicSID
-	 * @param canDraw
-	 * @return null in case of success, false otherwise
-	 */
-	public boolean setCanDraw(String sid, String publicSID, boolean canDraw) {
-		try {
-			IConnection current = Red5.getConnectionLocal();
-			String streamid = current.getClient().getId();
-			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
-
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
-				if (currentClient.getIsMod()) {
-					Client rcl = sessionManager.getClientByPublicSID(publicSID, null);
-
-					if (rcl != null) {
-						rcl.setCanDraw(canDraw);
-						sessionManager.updateClientByStreamId(rcl.getStreamid(), rcl, false, null);
-
-						Map<Integer, Object> newMessage = new HashMap<>();
-						newMessage.put(0, "updateDrawStatus");
-						newMessage.put(1, rcl);
-						scopeAdapter.sendMessageWithClientWithSyncObject(newMessage, true);
-						return true;
-					}
-				}
-			}
-		} catch (Exception err) {
-			log.error("[setCanDraw]", err);
-		}
-		return false;
-	}
-
-	public boolean setCanShare(String sid, String publicSID, boolean canShare) {
-		try {
-			IConnection current = Red5.getConnectionLocal();
-			String streamid = current.getClient().getId();
-			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
-
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
-				if (currentClient.getIsMod()) {
-					Client rcl = sessionManager.getClientByPublicSID(publicSID, null);
-
-					if (rcl != null) {
-						rcl.setCanShare(canShare);
-						sessionManager.updateClientByStreamId(rcl.getStreamid(), rcl, false, null);
-
-						Map<Integer, Object> newMessage = new HashMap<>();
-						newMessage.put(0, "updateDrawStatus");
-						newMessage.put(1, rcl);
-						scopeAdapter.sendMessageWithClientWithSyncObject(newMessage, true);
-						return true;
-					}
-				}
-			}
-		} catch (Exception err) {
-			log.error("[setCanShare]", err);
-		}
-		return false;
-	}
-
-	public boolean setCanRemote(String sid, String publicSID, boolean canRemote) {
-		try {
-			IConnection current = Red5.getConnectionLocal();
-			String streamid = current.getClient().getId();
-			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
-
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
-				if (currentClient.getIsMod()) {
-					Client rcl = sessionManager.getClientByPublicSID(publicSID, null);
-
-					if (rcl != null) {
-						rcl.setCanRemote(canRemote);
-						sessionManager.updateClientByStreamId(rcl.getStreamid(), rcl, false, null);
-
-						Map<Integer, Object> newMessage = new HashMap<>();
-						newMessage.put(0, "updateDrawStatus");
-						newMessage.put(1, rcl);
-						scopeAdapter.sendMessageWithClientWithSyncObject(newMessage, true);
-						return true;
-					}
-				}
-			}
-		} catch (Exception err) {
-			log.error("[setCanDraw]", err);
-		}
-		return false;
-	}
-
-	public boolean setCanGiveAudio(String sid, String publicSID, boolean canGiveAudio) {
-		try {
-			log.debug("[setCanGiveAudio] " + sid + ", " + publicSID + ", " + canGiveAudio);
-			IConnection current = Red5.getConnectionLocal();
-			String streamid = current.getClient().getId();
-			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
-
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
-				if (currentClient.getIsMod()) {
-					Client rcl = sessionManager.getClientByPublicSID(publicSID, null);
-
-					if (rcl != null) {
-						rcl.setCanGiveAudio(canGiveAudio);
-						sessionManager.updateClientByStreamId(rcl.getStreamid(), rcl, false, null);
-
-						Map<Integer, Object> newMessage = new HashMap<>();
-						newMessage.put(0, "updateGiveAudioStatus");
-						newMessage.put(1, rcl);
-						scopeAdapter.sendMessageWithClientWithSyncObject(newMessage, true);
-						return true;
-					}
-				}
-			}
-		} catch (Exception err) {
-			log.error("[setCanGiveAudio]", err);
-		}
-		return false;
-	}
-
-	public WhiteboardSyncLockObject startNewSyncprocess() {
-		try {
-			IConnection current = Red5.getConnectionLocal();
-			String streamid = current.getClient().getId();
-			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
-			Long roomId = currentClient.getRoomId();
-
-			WhiteboardSyncLockObject wSyncLockObject = new WhiteboardSyncLockObject();
-			wSyncLockObject.setAddtime(new Date());
-			wSyncLockObject.setPublicSID(currentClient.getPublicSID());
-			wSyncLockObject.setInitialLoaded(true);
-
-			Map<String, WhiteboardSyncLockObject> syncListRoom = wbListManager.getWhiteBoardSyncListByRoomid(roomId);
-
-			wSyncLockObject.setCurrentLoadingItem(true);
-			wSyncLockObject.setInserted(new Date());
-
-			syncListRoom.put(currentClient.getPublicSID(), wSyncLockObject);
-			wbListManager.setWhiteBoardSyncListByRoomid(roomId, syncListRoom);
-
-			//Sync to clients
-			scopeAdapter.sendMessageToCurrentScope("sendSyncFlag", wSyncLockObject, true);
-
-			return wSyncLockObject;
-		} catch (Exception err) {
-			log.error("[startNewSyncprocess]", err);
-		}
-		return null;
-	}
-
-	public void sendCompletedSyncEvent() {
-		try {
-			IConnection current = Red5.getConnectionLocal();
-			String streamid = current.getClient().getId();
-			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
-			Long roomId = currentClient.getRoomId();
-
-			Map<String, WhiteboardSyncLockObject> syncListRoom = wbListManager.getWhiteBoardSyncListByRoomid(roomId);
-
-			WhiteboardSyncLockObject wSyncLockObject = syncListRoom.get(currentClient.getPublicSID());
-
-			if (wSyncLockObject == null) {
-				log.error("WhiteboardSyncLockObject not found for this Client "
-						+ syncListRoom);
-				return;
-			} else if (!wSyncLockObject.isCurrentLoadingItem()) {
-				log.warn("WhiteboardSyncLockObject was not started yet " + syncListRoom);
-				return;
-			} else {
-				syncListRoom.remove(currentClient.getPublicSID());
-				wbListManager.setWhiteBoardSyncListByRoomid(roomId, syncListRoom);
-
-				int numberOfInitial = getNumberOfInitialLoaders(syncListRoom);
-
-				if (numberOfInitial == 0) {
-					scopeAdapter.sendMessageToCurrentScope("sendSyncCompleteFlag", wSyncLockObject, true);
-				} else {
-					return;
-				}
-			}
-		} catch (Exception err) {
-			log.error("[sendCompletedSyncEvent]", err);
-		}
-		return;
-	}
-
-	private static int getNumberOfInitialLoaders(Map<String, WhiteboardSyncLockObject> syncListRoom) {
-		int number = 0;
-		for (Map.Entry<String, WhiteboardSyncLockObject> e : syncListRoom.entrySet()) {
-			if (e.getValue().isInitialLoaded()) {
-				number++;
-			}
-		}
-		return number;
-	}
-
-	/*
-	 * Image Sync Sequence
-	 */
-
-	public void startNewObjectSyncProcess(String objectId, boolean isStarting) {
-		try {
-			log.debug("startNewObjectSyncprocess: " + objectId);
-
-			IConnection current = Red5.getConnectionLocal();
-			String streamid = current.getClient().getId();
-			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
-			Long roomId = currentClient.getRoomId();
-
-			WhiteboardSyncLockObject wSyncLockObject = new WhiteboardSyncLockObject();
-			wSyncLockObject.setAddtime(new Date());
-			wSyncLockObject.setPublicSID(currentClient.getPublicSID());
-			wSyncLockObject.setInserted(new Date());
-
-			Map<String, WhiteboardSyncLockObject> syncListImage = wbListManager.getWhiteBoardObjectSyncListByRoomAndObjectId(roomId, objectId);
-			syncListImage.put(currentClient.getPublicSID(), wSyncLockObject);
-			wbListManager.setWhiteBoardImagesSyncListByRoomAndObjectId(roomId, objectId, syncListImage);
-
-			// Do only send the Token to show the Loading Splash for the
-			// initial-Request that starts the loading
-			if (isStarting) {
-				scopeAdapter.sendMessageToCurrentScope("sendObjectSyncFlag", wSyncLockObject, true);
-			}
-		} catch (Exception err) {
-			log.error("[startNewObjectSyncProcess]", err);
-		}
-	}
-
-	public int sendCompletedObjectSyncEvent(String objectId) {
-		try {
-			log.debug("sendCompletedObjectSyncEvent: " + objectId);
-
-			IConnection current = Red5.getConnectionLocal();
-			String streamid = current.getClient().getId();
-			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
-			Long roomId = currentClient.getRoomId();
-
-			Map<String, WhiteboardSyncLockObject> syncListImage = wbListManager.getWhiteBoardObjectSyncListByRoomAndObjectId(roomId, objectId);
-
-			log.debug("sendCompletedObjectSyncEvent syncListImage: " + syncListImage);
-
-			WhiteboardSyncLockObject wSyncLockObject = syncListImage.get(currentClient.getPublicSID());
-
-			if (wSyncLockObject == null) {
-				log.error("WhiteboardSyncLockObject not found for this Client " + currentClient.getPublicSID());
-				log.error("WhiteboardSyncLockObject not found for this syncListImage " + syncListImage);
-				return -2;
-			} else {
-				log.debug("sendCompletedImagesSyncEvent remove: " + currentClient.getPublicSID());
-
-				syncListImage.remove(currentClient.getPublicSID());
-				wbListManager.setWhiteBoardImagesSyncListByRoomAndObjectId(roomId, objectId, syncListImage);
-
-				int numberOfInitial = wbListManager.getWhiteBoardObjectSyncListByRoomid(roomId).size();
-
-				log.debug("sendCompletedImagesSyncEvent numberOfInitial: " + numberOfInitial);
-
-				if (numberOfInitial == 0) {
-					scopeAdapter.sendMessageToCurrentScope("sendObjectSyncCompleteFlag", wSyncLockObject, true);
-					return 1;
-				} else {
-					return -4;
-				}
-			}
-		} catch (Exception err) {
-			log.error("[sendCompletedObjectSyncEvent]", err);
-		}
-		return -1;
-	}
-
-	public synchronized void removeUserFromAllLists(IScope scope, Client currentClient) {
-		try {
-			Long roomId = currentClient.getRoomId();
-
-			// TODO: Maybe we should also check all rooms, independent from the
-			// current roomId if there is any user registered
-			if (roomId != null) {
-				log.debug("removeUserFromAllLists this.whiteBoardObjectListManager: " + wbListManager);
-				log.debug("removeUserFromAllLists roomId: " + roomId);
-
-				// Check Initial Loaders
-				Map<String, WhiteboardSyncLockObject> syncListRoom = wbListManager.getWhiteBoardSyncListByRoomid(roomId);
-
-				WhiteboardSyncLockObject wSyncLockObject = syncListRoom.get(currentClient.getPublicSID());
-
-				if (wSyncLockObject != null) {
-					syncListRoom.remove(currentClient.getPublicSID());
-				}
-				wbListManager.setWhiteBoardSyncListByRoomid(roomId, syncListRoom);
-
-				int numberOfInitial = getNumberOfInitialLoaders(syncListRoom);
-
-				log.debug("scope " + scope);
-
-				if (numberOfInitial == 0 && scope != null) {
-					scopeAdapter.sendMessageToCurrentScope("" + roomId, "sendSyncCompleteFlag", wSyncLockObject, false);
-				}
-
-				// Check Image Loaders
-				Map<String, Map<String, WhiteboardSyncLockObject>> syncListRoomImages = wbListManager.getWhiteBoardObjectSyncListByRoomid(roomId);
-
-				for (Map.Entry<String, Map<String, WhiteboardSyncLockObject>> e : syncListRoomImages.entrySet()) {
-					if (e.getValue().containsKey(currentClient.getPublicSID())) {
-						e.getValue().remove(currentClient.getPublicSID());
-					}
-					wbListManager.setWhiteBoardImagesSyncListByRoomAndObjectId(roomId, e.getKey(), e.getValue());
-				}
-
-				int numberOfImageLoaders = wbListManager.getWhiteBoardObjectSyncListByRoomid(roomId).size();
-
-				if (numberOfImageLoaders == 0 && scope != null) {
-					scopeAdapter.sendMessageToCurrentScope("" + roomId, "sendImagesSyncCompleteFlag", new Object[] { "remove" }, true);
-				}
-			}
-		} catch (Exception err) {
-			log.error("[removeUserFromAllLists]", err);
-		}
-	}
-
-	public Cliparts getClipArtIcons() {
-		try {
-			File clipart_dir = OmFileHelper.getPublicClipartsDir();
-
-			FilenameFilter getFilesOnly = new FilenameFilter() {
-				@Override
-				public boolean accept(File b, String name) {
-					File f = new File(b, name);
-					return !f.isDirectory();
-				}
-			};
-
-			FilenameFilter getDirectoriesOnly = new FilenameFilter() {
-				@Override
-				public boolean accept(File b, String name) {
-					File f = new File(b, name);
-					return f.isDirectory() && !f.getName().equals("thumb");
-				}
-			};
-
-			Cliparts cl = new Cliparts();
-			cl.setFolderName("general");
-
-			Comparator<String> comparator = ComparatorUtils.naturalComparator();
-			String[] files_general = clipart_dir.list(getFilesOnly);
-			if (files_general != null) {
-				Arrays.sort(files_general, comparator);
-				cl.setGeneralList(files_general);
-			}
-			cl.setSubCategories(new LinkedList<Cliparts>());
-
-			File[] dirs = clipart_dir.listFiles(getDirectoriesOnly);
-			if (dirs != null) {
-				for (File dir : dirs) {
-					Cliparts cl_sub = new Cliparts();
-					cl_sub.setFolderName("math");
-					String[] files = dir.list(getFilesOnly);
-					if (files != null) {
-						Arrays.sort(files, comparator);
-						cl_sub.setGeneralList(files);
-						cl.getSubCategories().add(cl_sub);
-					}
-				}
-			}
-
-			return cl;
-		} catch (Exception err) {
-			log.error("[getClipArtIcons]", err);
-		}
-		return null;
-	}
-
-	@Override
-	public void resultReceived(IPendingServiceCall arg0) {
-		log.debug("resultReceived: " + arg0);
-	}
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteboardService.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteboardService.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteboardService.java
new file mode 100644
index 0000000..7107100
--- /dev/null
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/WhiteboardService.java
@@ -0,0 +1,560 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.core.remote;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_LANG_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.Map;
+
+import org.apache.commons.collections4.ComparatorUtils;
+import org.apache.openmeetings.core.data.whiteboard.WhiteboardCache;
+import org.apache.openmeetings.core.data.whiteboard.WhiteboardObjectSyncManager;
+import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.label.LabelDao;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.server.SessiondataDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.room.Cliparts;
+import org.apache.openmeetings.db.dto.room.Whiteboard;
+import org.apache.openmeetings.db.dto.room.WhiteboardSyncLockObject;
+import org.apache.openmeetings.db.dto.room.Whiteboards;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.server.Sessiondata;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.util.AuthLevelUtil;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.red5.logging.Red5LoggerFactory;
+import org.red5.server.api.IConnection;
+import org.red5.server.api.Red5;
+import org.red5.server.api.scope.IScope;
+import org.red5.server.api.service.IPendingServiceCall;
+import org.red5.server.api.service.IPendingServiceCallback;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ *
+ * @author sebastianwagner
+ *
+ */
+public class WhiteboardService implements IPendingServiceCallback {
+	private static final Logger log = Red5LoggerFactory.getLogger(WhiteboardService.class, webAppRootKey);
+	@Autowired
+	private UserDao userDao;
+	@Autowired
+	private ScopeApplicationAdapter scopeAdapter;
+	@Autowired
+	private ISessionManager sessionManager;
+	@Autowired
+	private WhiteboardObjectSyncManager wbListManager;
+	@Autowired
+	private WhiteboardCache wbCache;
+	@Autowired
+	private SessiondataDao sessionDao;
+	@Autowired
+	private LabelDao labelDao;
+	@Autowired
+	private ConfigurationDao cfgDao;
+
+	public boolean getNewWhiteboardId(String name) {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+			Long roomId = currentClient.getRoomId();
+
+			Long whiteBoardId = wbCache.getNewWhiteboardId(roomId, name);
+			scopeAdapter.sendMessageAll(Arrays.asList("newWhiteboard", whiteBoardId, name));
+		} catch (Exception e) {
+			log.error("[getNewWhiteboardId]", e);
+			return false;
+		}
+		return true;
+	}
+
+	public boolean deleteWhiteboard(Long whiteBoardId) {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+			Long roomId = currentClient.getRoomId();
+
+			Whiteboards whiteboards = wbCache.get(roomId);
+			Object returnValue = whiteboards.getWhiteboards().remove(whiteBoardId);
+
+			log.debug(" :: whiteBoardId :: " + whiteBoardId);
+
+			wbCache.set(roomId, whiteboards);
+
+			if (returnValue != null) {
+				return true;
+			}
+		} catch (Exception err) {
+			log.error("[deleteWhiteboard]", err);
+		}
+		return false;
+	}
+
+	public Map<Long, Whiteboard> getRoomItemsBy() {
+		Map<Long, Whiteboard> result = new LinkedHashMap<>();
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+			Long roomId = currentClient.getRoomId();
+
+			log.debug("getRoomItems: " + roomId);
+			Whiteboards whiteboards = wbCache.get(roomId);
+
+			if (whiteboards.getWhiteboards().isEmpty()) {
+				Long langId = null;
+				{
+					Long userId = currentClient.getUserId();
+					if (userId != null && userId.longValue() < 0) {
+						userId = -userId;
+					}
+					User u = userDao.get(userId);
+					langId = u == null ? cfgDao.getConfValue(CONFIG_DEFAULT_LANG_KEY, Long.class, "1") : u.getLanguageId();
+				}
+				wbCache.getNewWhiteboardId(roomId, labelDao.getString("615", langId));
+				log.debug("Init New Room List");
+				whiteboards = wbCache.get(roomId);
+			}
+			whiteboards.getWhiteboards().entrySet().stream()
+					.sorted(Map.Entry.<Long, Whiteboard>comparingByKey().reversed())
+					.forEachOrdered(x -> result.put(x.getKey(), x.getValue()));
+		} catch (Exception err) {
+			log.error("[getRoomItemsBy]", err);
+		}
+		return result;
+	}
+
+	public boolean rename(Long wbId, String name) {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+			Long roomId = currentClient.getRoomId();
+
+			Whiteboards whiteboards = wbCache.get(roomId);
+			Whiteboard wb = whiteboards.getWhiteboards().get(wbId);
+			wb.setName(name);
+
+			log.debug(" :: rename whiteBoard :: id = {}, name = {}", wbId, name);
+			scopeAdapter.sendMessageAll(Arrays.asList("renameWhiteboard", wbId, name));
+		} catch (Exception err) {
+			log.error("[rename]", err);
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * change the draw status of a user, allow disallow him to draw anybody
+	 * besides the Moderator to draw on the whiteboard, only a Moderator is
+	 * allowed to trigger this function
+	 *
+	 * @param sid
+	 * @param publicSID
+	 * @param canDraw
+	 * @return null in case of success, false otherwise
+	 */
+	public boolean setCanDraw(String sid, String publicSID, boolean canDraw) {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+
+			Sessiondata sd = sessionDao.check(sid);
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
+				if (currentClient.getIsMod()) {
+					Client rcl = sessionManager.getClientByPublicSID(publicSID, null);
+
+					if (rcl != null) {
+						rcl.setCanDraw(canDraw);
+						sessionManager.updateClientByStreamId(rcl.getStreamid(), rcl, false, null);
+
+						Map<Integer, Object> newMessage = new HashMap<>();
+						newMessage.put(0, "updateDrawStatus");
+						newMessage.put(1, rcl);
+						scopeAdapter.sendMessageWithClientWithSyncObject(newMessage, true);
+						return true;
+					}
+				}
+			}
+		} catch (Exception err) {
+			log.error("[setCanDraw]", err);
+		}
+		return false;
+	}
+
+	public boolean setCanShare(String sid, String publicSID, boolean canShare) {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+
+			Sessiondata sd = sessionDao.check(sid);
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
+				if (currentClient.getIsMod()) {
+					Client rcl = sessionManager.getClientByPublicSID(publicSID, null);
+
+					if (rcl != null) {
+						rcl.setCanShare(canShare);
+						sessionManager.updateClientByStreamId(rcl.getStreamid(), rcl, false, null);
+
+						Map<Integer, Object> newMessage = new HashMap<>();
+						newMessage.put(0, "updateDrawStatus");
+						newMessage.put(1, rcl);
+						scopeAdapter.sendMessageWithClientWithSyncObject(newMessage, true);
+						return true;
+					}
+				}
+			}
+		} catch (Exception err) {
+			log.error("[setCanShare]", err);
+		}
+		return false;
+	}
+
+	public boolean setCanRemote(String sid, String publicSID, boolean canRemote) {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+
+			Sessiondata sd = sessionDao.check(sid);
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
+				if (currentClient.getIsMod()) {
+					Client rcl = sessionManager.getClientByPublicSID(publicSID, null);
+
+					if (rcl != null) {
+						rcl.setCanRemote(canRemote);
+						sessionManager.updateClientByStreamId(rcl.getStreamid(), rcl, false, null);
+
+						Map<Integer, Object> newMessage = new HashMap<>();
+						newMessage.put(0, "updateDrawStatus");
+						newMessage.put(1, rcl);
+						scopeAdapter.sendMessageWithClientWithSyncObject(newMessage, true);
+						return true;
+					}
+				}
+			}
+		} catch (Exception err) {
+			log.error("[setCanDraw]", err);
+		}
+		return false;
+	}
+
+	public boolean setCanGiveAudio(String sid, String publicSID, boolean canGiveAudio) {
+		try {
+			log.debug("[setCanGiveAudio] " + sid + ", " + publicSID + ", " + canGiveAudio);
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+
+			Sessiondata sd = sessionDao.check(sid);
+			if (AuthLevelUtil.hasUserLevel(userDao.getRights(sd.getUserId()))) {
+				if (currentClient.getIsMod()) {
+					Client rcl = sessionManager.getClientByPublicSID(publicSID, null);
+
+					if (rcl != null) {
+						rcl.setCanGiveAudio(canGiveAudio);
+						sessionManager.updateClientByStreamId(rcl.getStreamid(), rcl, false, null);
+
+						Map<Integer, Object> newMessage = new HashMap<>();
+						newMessage.put(0, "updateGiveAudioStatus");
+						newMessage.put(1, rcl);
+						scopeAdapter.sendMessageWithClientWithSyncObject(newMessage, true);
+						return true;
+					}
+				}
+			}
+		} catch (Exception err) {
+			log.error("[setCanGiveAudio]", err);
+		}
+		return false;
+	}
+
+	public WhiteboardSyncLockObject startNewSyncprocess() {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+			Long roomId = currentClient.getRoomId();
+
+			WhiteboardSyncLockObject wSyncLockObject = new WhiteboardSyncLockObject();
+			wSyncLockObject.setAddtime(new Date());
+			wSyncLockObject.setPublicSID(currentClient.getPublicSID());
+			wSyncLockObject.setInitialLoaded(true);
+
+			Map<String, WhiteboardSyncLockObject> syncListRoom = wbListManager.getWhiteBoardSyncListByRoomid(roomId);
+
+			wSyncLockObject.setCurrentLoadingItem(true);
+			wSyncLockObject.setInserted(new Date());
+
+			syncListRoom.put(currentClient.getPublicSID(), wSyncLockObject);
+			wbListManager.setWhiteBoardSyncListByRoomid(roomId, syncListRoom);
+
+			//Sync to clients
+			scopeAdapter.sendMessageToCurrentScope("sendSyncFlag", wSyncLockObject, true);
+
+			return wSyncLockObject;
+		} catch (Exception err) {
+			log.error("[startNewSyncprocess]", err);
+		}
+		return null;
+	}
+
+	public void sendCompletedSyncEvent() {
+		try {
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+			Long roomId = currentClient.getRoomId();
+
+			Map<String, WhiteboardSyncLockObject> syncListRoom = wbListManager.getWhiteBoardSyncListByRoomid(roomId);
+
+			WhiteboardSyncLockObject wSyncLockObject = syncListRoom.get(currentClient.getPublicSID());
+
+			if (wSyncLockObject == null) {
+				log.error("WhiteboardSyncLockObject not found for this Client "
+						+ syncListRoom);
+				return;
+			} else if (!wSyncLockObject.isCurrentLoadingItem()) {
+				log.warn("WhiteboardSyncLockObject was not started yet " + syncListRoom);
+				return;
+			} else {
+				syncListRoom.remove(currentClient.getPublicSID());
+				wbListManager.setWhiteBoardSyncListByRoomid(roomId, syncListRoom);
+
+				int numberOfInitial = getNumberOfInitialLoaders(syncListRoom);
+
+				if (numberOfInitial == 0) {
+					scopeAdapter.sendMessageToCurrentScope("sendSyncCompleteFlag", wSyncLockObject, true);
+				} else {
+					return;
+				}
+			}
+		} catch (Exception err) {
+			log.error("[sendCompletedSyncEvent]", err);
+		}
+		return;
+	}
+
+	private static int getNumberOfInitialLoaders(Map<String, WhiteboardSyncLockObject> syncListRoom) {
+		int number = 0;
+		for (Map.Entry<String, WhiteboardSyncLockObject> e : syncListRoom.entrySet()) {
+			if (e.getValue().isInitialLoaded()) {
+				number++;
+			}
+		}
+		return number;
+	}
+
+	/*
+	 * Image Sync Sequence
+	 */
+
+	public void startNewObjectSyncProcess(String objectId, boolean isStarting) {
+		try {
+			log.debug("startNewObjectSyncprocess: " + objectId);
+
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+			Long roomId = currentClient.getRoomId();
+
+			WhiteboardSyncLockObject wSyncLockObject = new WhiteboardSyncLockObject();
+			wSyncLockObject.setAddtime(new Date());
+			wSyncLockObject.setPublicSID(currentClient.getPublicSID());
+			wSyncLockObject.setInserted(new Date());
+
+			Map<String, WhiteboardSyncLockObject> syncListImage = wbListManager.getWhiteBoardObjectSyncListByRoomAndObjectId(roomId, objectId);
+			syncListImage.put(currentClient.getPublicSID(), wSyncLockObject);
+			wbListManager.setWhiteBoardImagesSyncListByRoomAndObjectId(roomId, objectId, syncListImage);
+
+			// Do only send the Token to show the Loading Splash for the
+			// initial-Request that starts the loading
+			if (isStarting) {
+				scopeAdapter.sendMessageToCurrentScope("sendObjectSyncFlag", wSyncLockObject, true);
+			}
+		} catch (Exception err) {
+			log.error("[startNewObjectSyncProcess]", err);
+		}
+	}
+
+	public int sendCompletedObjectSyncEvent(String objectId) {
+		try {
+			log.debug("sendCompletedObjectSyncEvent: " + objectId);
+
+			IConnection current = Red5.getConnectionLocal();
+			String streamid = current.getClient().getId();
+			Client currentClient = sessionManager.getClientByStreamId(streamid, null);
+			Long roomId = currentClient.getRoomId();
+
+			Map<String, WhiteboardSyncLockObject> syncListImage = wbListManager.getWhiteBoardObjectSyncListByRoomAndObjectId(roomId, objectId);
+
+			log.debug("sendCompletedObjectSyncEvent syncListImage: " + syncListImage);
+
+			WhiteboardSyncLockObject wSyncLockObject = syncListImage.get(currentClient.getPublicSID());
+
+			if (wSyncLockObject == null) {
+				log.error("WhiteboardSyncLockObject not found for this Client " + currentClient.getPublicSID());
+				log.error("WhiteboardSyncLockObject not found for this syncListImage " + syncListImage);
+				return -2;
+			} else {
+				log.debug("sendCompletedImagesSyncEvent remove: " + currentClient.getPublicSID());
+
+				syncListImage.remove(currentClient.getPublicSID());
+				wbListManager.setWhiteBoardImagesSyncListByRoomAndObjectId(roomId, objectId, syncListImage);
+
+				int numberOfInitial = wbListManager.getWhiteBoardObjectSyncListByRoomid(roomId).size();
+
+				log.debug("sendCompletedImagesSyncEvent numberOfInitial: " + numberOfInitial);
+
+				if (numberOfInitial == 0) {
+					scopeAdapter.sendMessageToCurrentScope("sendObjectSyncCompleteFlag", wSyncLockObject, true);
+					return 1;
+				} else {
+					return -4;
+				}
+			}
+		} catch (Exception err) {
+			log.error("[sendCompletedObjectSyncEvent]", err);
+		}
+		return -1;
+	}
+
+	public synchronized void removeUserFromAllLists(IScope scope, Client currentClient) {
+		try {
+			Long roomId = currentClient.getRoomId();
+
+			// TODO: Maybe we should also check all rooms, independent from the
+			// current roomId if there is any user registered
+			if (roomId != null) {
+				log.debug("removeUserFromAllLists this.whiteBoardObjectListManager: " + wbListManager);
+				log.debug("removeUserFromAllLists roomId: " + roomId);
+
+				// Check Initial Loaders
+				Map<String, WhiteboardSyncLockObject> syncListRoom = wbListManager.getWhiteBoardSyncListByRoomid(roomId);
+
+				WhiteboardSyncLockObject wSyncLockObject = syncListRoom.get(currentClient.getPublicSID());
+
+				if (wSyncLockObject != null) {
+					syncListRoom.remove(currentClient.getPublicSID());
+				}
+				wbListManager.setWhiteBoardSyncListByRoomid(roomId, syncListRoom);
+
+				int numberOfInitial = getNumberOfInitialLoaders(syncListRoom);
+
+				log.debug("scope " + scope);
+
+				if (numberOfInitial == 0 && scope != null) {
+					scopeAdapter.sendMessageToCurrentScope("" + roomId, "sendSyncCompleteFlag", wSyncLockObject, false);
+				}
+
+				// Check Image Loaders
+				Map<String, Map<String, WhiteboardSyncLockObject>> syncListRoomImages = wbListManager.getWhiteBoardObjectSyncListByRoomid(roomId);
+
+				for (Map.Entry<String, Map<String, WhiteboardSyncLockObject>> e : syncListRoomImages.entrySet()) {
+					if (e.getValue().containsKey(currentClient.getPublicSID())) {
+						e.getValue().remove(currentClient.getPublicSID());
+					}
+					wbListManager.setWhiteBoardImagesSyncListByRoomAndObjectId(roomId, e.getKey(), e.getValue());
+				}
+
+				int numberOfImageLoaders = wbListManager.getWhiteBoardObjectSyncListByRoomid(roomId).size();
+
+				if (numberOfImageLoaders == 0 && scope != null) {
+					scopeAdapter.sendMessageToCurrentScope("" + roomId, "sendImagesSyncCompleteFlag", new Object[] { "remove" }, true);
+				}
+			}
+		} catch (Exception err) {
+			log.error("[removeUserFromAllLists]", err);
+		}
+	}
+
+	public Cliparts getClipArtIcons() {
+		try {
+			File clipart_dir = OmFileHelper.getPublicClipartsDir();
+
+			FilenameFilter getFilesOnly = new FilenameFilter() {
+				@Override
+				public boolean accept(File b, String name) {
+					File f = new File(b, name);
+					return !f.isDirectory();
+				}
+			};
+
+			FilenameFilter getDirectoriesOnly = new FilenameFilter() {
+				@Override
+				public boolean accept(File b, String name) {
+					File f = new File(b, name);
+					return f.isDirectory() && !f.getName().equals("thumb");
+				}
+			};
+
+			Cliparts cl = new Cliparts();
+			cl.setFolderName("general");
+
+			Comparator<String> comparator = ComparatorUtils.naturalComparator();
+			String[] files_general = clipart_dir.list(getFilesOnly);
+			if (files_general != null) {
+				Arrays.sort(files_general, comparator);
+				cl.setGeneralList(files_general);
+			}
+			cl.setSubCategories(new LinkedList<Cliparts>());
+
+			File[] dirs = clipart_dir.listFiles(getDirectoriesOnly);
+			if (dirs != null) {
+				for (File dir : dirs) {
+					Cliparts cl_sub = new Cliparts();
+					cl_sub.setFolderName("math");
+					String[] files = dir.list(getFilesOnly);
+					if (files != null) {
+						Arrays.sort(files, comparator);
+						cl_sub.setGeneralList(files);
+						cl.getSubCategories().add(cl_sub);
+					}
+				}
+			}
+
+			return cl;
+		} catch (Exception err) {
+			log.error("[getClipArtIcons]", err);
+		}
+		return null;
+	}
+
+	@Override
+	public void resultReceived(IPendingServiceCall arg0) {
+		log.debug("resultReceived: " + arg0);
+	}
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
index 16a6a4c..c854997 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
@@ -18,9 +18,11 @@
  */
 package org.apache.openmeetings.core.remote.red5;
 
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_MP4;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.awt.Point;
+import java.io.File;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
@@ -34,11 +36,13 @@ import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.atomic.AtomicLong;
 
+import org.apache.commons.io.FileUtils;
 import org.apache.openmeetings.IApplication;
 import org.apache.openmeetings.core.data.conference.RoomManager;
+import org.apache.openmeetings.core.data.whiteboard.WhiteboardCache;
 import org.apache.openmeetings.core.data.whiteboard.WhiteboardManager;
 import org.apache.openmeetings.core.remote.RecordingService;
-import org.apache.openmeetings.core.remote.WhiteBoardService;
+import org.apache.openmeetings.core.remote.WhiteboardService;
 import org.apache.openmeetings.core.remote.util.SessionVariablesUtil;
 import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
@@ -99,9 +103,11 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp
 	@Autowired
 	private ISessionManager sessionManager;
 	@Autowired
-	private WhiteBoardService whiteBoardService;
+	private WhiteboardService whiteBoardService;
 	@Autowired
-	private WhiteboardManager whiteboardManagement;
+	private WhiteboardManager whiteboardManager;
+	@Autowired
+	private WhiteboardCache whiteboardCache;
 	@Autowired
 	private RecordingService recordingService;
 	@Autowired
@@ -1160,7 +1166,6 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp
 	}
 
 	private static List<?> getWbObject(FileItem fi, String url) {
-		String fuid = UUID.randomUUID().toString();
 		Point size = getSize(fi);
 		String type = "n/a";
 		switch (fi.getType()) {
@@ -1190,7 +1195,7 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp
 				, size.x // initwidth //14
 				, size.y // initheight //15
 				, 100 // currentzoom //16 FIXME TODO
-				, fuid // uniquObjectSyncName //17
+				, fi.getHash() // uniquObjectSyncName //17
 				, fi.getName() // standardFileName //18
 				, true // fullFit //19 FIXME TODO
 				, 0 // zIndex //-8
@@ -1200,18 +1205,17 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp
 				, 0 // posy //-4
 				, size.x // width //-3
 				, size.y // height //-2
-				, fuid // this.currentlayer.name //-1
+				, fi.getHash() // this.currentlayer.name //-1
 				);
 	}
 
-	private static List<?> getFlvWbObject(FileItem fi) {
-		String fuid = UUID.randomUUID().toString();
+	private static List<?> getMp4WbObject(FileItem fi, String url) {
 		Point size = getSize(fi);
 		return Arrays.asList(
 				"flv" // 0: 'flv'
 				, fi.getId() // 1: 7
 				, fi.getName() // 2: 'BigBuckBunny_512kb.mp4'
-				, false // 3: false //playRemote
+				, url // 3: posterUrl
 				, size.x // 4: 416
 				, size.y // 5: 240
 				, 0 // 6: 1 // z-index
@@ -1221,10 +1225,27 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp
 				, 0 // 10: 0 //TODO // y
 				, size.x // 11: 749 // width
 				, size.y // 12: 739 // height
-				, fuid // 13: 'flv_1469602000351'
+				, fi.getHash() // 13: 'flv_1469602000351'
 				);
 	}
 
+	private static void copyFileToRoom(Long roomId, FileItem f) {
+		try {
+			if (roomId != null && f != null) {
+				File mp4 = f.getFile(EXTENSION_MP4);
+
+				File targetFolder = OmFileHelper.getStreamsSubDir(roomId);
+
+				File target = new File(targetFolder, mp4.getName());
+				if (mp4.exists() && !target.exists()) {
+					FileUtils.copyFile(mp4, target, false);
+				}
+			}
+		} catch (Exception err) {
+			log.error("[copyFileToCurrentRoom] ", err);
+		}
+	}
+
 	public void sendToWhiteboard(String uid, Long wbId, FileItem fi, String url, boolean clean) {
 		ClientSessionInfo csi = sessionManager.getClientByPublicSIDAnyServer(uid);
 		if (csi == null) {
@@ -1242,7 +1263,9 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp
 				wbObject = getWbObject(fi, url);
 				break;
 			case Video:
-				wbObject = getFlvWbObject(fi);
+			case Recording:
+				wbObject = getMp4WbObject(fi, url);
+				copyFileToRoom(client.getRoomId(), fi);
 				break;
 			default:
 		}
@@ -1251,6 +1274,7 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp
 			wbClear.put("id", wbId);
 			wbClear.put("param", Arrays.asList("whiteboard", new Date(), "clear", null));
 
+			whiteboardCache.get(client.getRoomId(), wbId).clear();
 			sendToScope(client.getRoomId(), "sendVarsToWhiteboardById", Arrays.asList(null, wbClear));
 		}
 		sendToWhiteboard(client, Arrays.asList("whiteboard", new Date(), "draw", wbObject), wbId);
@@ -1300,10 +1324,10 @@ public class ScopeApplicationAdapter extends MultiThreadedApplicationAdapter imp
 
 					whiteboardTempObj.put(3, tempActionObject);
 
-					whiteboardManagement.addWhiteBoardObjectById(roomId, whiteboardTempObj, wbId);
+					whiteboardManager.add(roomId, whiteboardTempObj, wbId);
 				}
 			} else {
-				whiteboardManagement.addWhiteBoardObjectById(roomId, whiteboardObj, wbId);
+				whiteboardManager.add(roomId, whiteboardObj, wbId);
 			}
 
 			Map<String, Object> sendObject = new HashMap<>();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
new file mode 100644
index 0000000..0cfe6d5
--- /dev/null
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
@@ -0,0 +1,189 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.db.dto.room;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class Whiteboard {
+	private static final Logger log = Red5LoggerFactory.getLogger(Whiteboard.class, webAppRootKey);
+	private long whiteBoardId;
+	private Integer x = 0;
+	private Integer y = 0;
+	private Integer zoom = 100;
+	private Boolean fullFit = true;
+	private Map<String, List<Object>> roomItems = new ConcurrentHashMap<>();
+	private Date created = new Date();
+	private int zIndex = 1;
+	private String name;
+
+	public Whiteboard() {}
+
+	public Whiteboard(String name) {
+		this.name = name;
+	}
+
+	public long getWhiteBoardId() {
+		return whiteBoardId;
+	}
+
+	public void setWhiteBoardId(long whiteBoardId) {
+		this.whiteBoardId = whiteBoardId;
+	}
+
+	public Integer getX() {
+		return x;
+	}
+
+	public void setX(Integer x) {
+		this.x = x;
+	}
+
+	public Integer getY() {
+		return y;
+	}
+
+	public void setY(Integer y) {
+		this.y = y;
+	}
+
+	public Date getCreated() {
+		return created;
+	}
+
+	public void setCreated(Date created) {
+		this.created = created;
+	}
+
+	public Integer getZoom() {
+		return zoom;
+	}
+
+	public void setZoom(Integer zoom) {
+		this.zoom = zoom;
+	}
+
+	public Boolean getFullFit() {
+		return fullFit;
+	}
+
+	public void setFullFit(Boolean fullFit) {
+		this.fullFit = fullFit;
+	}
+
+	public void clear() {
+		roomItems.clear();
+		zIndex = 1;
+	}
+
+	//getter is required, otherwise roomItems are not available in red5
+	public Map<String, List<Object>> getRoomItems() {
+		return roomItems;
+	}
+
+	public void add(String oid, List<Object> actionObject) {
+		Object type = actionObject.size() > 0 ? actionObject.get(0) : "";
+		if (actionObject.size() > 8 && ("swf".equals(type) || "image".equals(type) || "flv".equals(type))) {
+			Integer zInd = (Integer)actionObject.get(actionObject.size() - 8);
+			if (zInd == null || zInd == 0 || zInd < zIndex) {
+				actionObject.set(actionObject.size() - 8, zIndex++);
+			}
+		}
+		roomItems.put(oid, actionObject);
+	}
+
+	public List<Object> get(String oid) {
+		return roomItems.get(oid);
+	}
+
+	public Set<Entry<String, List<Object>>> entrySet() {
+		return roomItems.entrySet();
+	}
+
+	public void remove(Object oid) {
+		roomItems.remove(oid);
+	}
+
+	public void remove(List<Object> actionObject) {
+		String oid = actionObject.get(actionObject.size() - 1).toString();
+		String type = actionObject.get(0).toString();
+		log.debug("Removal of object: oid = {}, type = {} ", oid, type);
+
+		/* I believe this is redundant
+		// Re-Index all items in its zIndex
+		if (type.equals("ellipse")
+				|| type.equals("drawarrow")
+				|| type.equals("line")
+				|| type.equals("paint")
+				|| type.equals("rectangle")
+				|| type.equals("uline")
+				|| type.equals("image")
+				|| type.equals("letter")
+				|| type.equals("clipart")
+				|| type.equals("swf")
+				|| type.equals("mindmapnode")
+				|| type.equals("flv")) {
+
+			Integer zIndex = Integer.valueOf(actionObject.get(actionObject.size() - 8).toString());
+
+			log.debug("1|zIndex " + zIndex);
+			log.debug("2|zIndex " + actionObject.get(actionObject.size() - 8).toString());
+			log.debug("3|zIndex " + actionObject.get(actionObject.size() - 8));
+
+			int l = 0;
+			for (Object o : actionObject) {
+				log.debug("4|zIndex " + l + " -- " + o);
+				l++;
+			}
+
+			for (Entry<String, List<Object>> e : roomItems.entrySet()) {
+				List<Object> actionObjectStored = e.getValue();
+
+				Integer zIndexStored = Integer.valueOf(actionObjectStored.get(actionObjectStored.size() - 8).toString());
+
+				log.debug("zIndexStored|zIndex " + zIndexStored + "|" + zIndex);
+
+				if (zIndexStored >= zIndex) {
+					zIndexStored -= 1;
+					log.debug("new-zIndex " + zIndexStored);
+				}
+				actionObjectStored.set(actionObjectStored.size() - 8, zIndexStored);
+			}
+		}
+		*/
+		roomItems.remove(oid);
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+}


[45/50] [abbrv] openmeetings git commit: no jira: WS connection closed event works as expected in IE

Posted by so...@apache.org.
no jira: WS connection closed event works as expected in IE


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/fdf8dede
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/fdf8dede
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/fdf8dede

Branch: refs/heads/3.2.x
Commit: fdf8dede3e59d23567cf08b4f2785badbb83ff0b
Parents: 87fed74
Author: Maxim Solodovnik <so...@apache.org>
Authored: Wed Apr 19 12:03:43 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Wed Apr 19 12:03:43 2017 +0000

----------------------------------------------------------------------
 .../src/main/java/org/apache/openmeetings/web/room/room.js         | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/fdf8dede/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
index 2885c0d..2304040 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
@@ -67,10 +67,12 @@ function roomLoad() {
 		}
 	});
 	Wicket.Event.subscribe("/websocket/closed", roomClosed);
+	Wicket.Event.subscribe("/websocket/error", roomClosed);
 }
 function roomUnload() {
 	$(window).off('resize.openmeetings');
 	Wicket.Event.unsubscribe("/websocket/closed", roomClosed);
+	Wicket.Event.unsubscribe("/websocket/error", roomClosed);
 }
 function startPrivateChat(el) {
 	Chat.addTab('chatTab-u' + el.parent().parent().data("userid"), el.parent().parent().find('.user.name').text());


[50/50] [abbrv] openmeetings git commit: no jira: project coordinates are updated svn -> git

Posted by so...@apache.org.
no jira: project coordinates are updated svn -> git


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/0033bb92
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/0033bb92
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/0033bb92

Branch: refs/heads/3.2.x
Commit: 0033bb925c70dc7a8edf03df245e7c7fd12e4bfa
Parents: 98be685
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Mon May 1 12:59:22 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Mon May 1 13:08:03 2017 +0700

----------------------------------------------------------------------
 .gitignore                                      | 16 ++++++++++++
 KEYS                                            |  9 +++----
 openmeetings-screenshare/pom.xml                |  2 +-
 openmeetings-server/pom.xml                     |  6 ++---
 .../src/site/xdoc/BuildInstructions.xml         | 23 +++++++++--------
 .../src/site/xdoc/GetVersionInfo.xml            | 18 ++++++--------
 .../src/site/xdoc/Internationalisation.xml      |  4 +--
 .../src/site/xdoc/ReleaseGuide.xml              | 26 +++++++++++---------
 .../src/site/xdoc/RestrictedAccess.xml          |  8 +++---
 .../src/site/xdoc/WebsiteGuide.xml              | 18 +++++++-------
 .../src/site/xdoc/get-involved.xml              |  9 +------
 .../src/site/xdoc/themes-and-branding.xml       |  6 ++---
 .../org/apache/openmeetings/util/Version.java   |  4 +--
 pom.xml                                         |  8 +++---
 14 files changed, 83 insertions(+), 74 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/0033bb92/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f28090a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,16 @@
+# Eclipse
+.classpath
+.project
+.settings
+
+# IntellyJ
+.idea
+*.iml
+
+# Maven
+target
+
+# OM
+openmeetings-server/red5-server
+openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/persistence.xml
+

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/0033bb92/KEYS
----------------------------------------------------------------------
diff --git a/KEYS b/KEYS
index 122ab85..8255c07 100644
--- a/KEYS
+++ b/KEYS
@@ -1,8 +1,7 @@
-Edit this file in SVN at https://svn.apache.org/repos/asf/openmeetings/project/KEYS
-then update in /www/www.apache.org/dist/openmeetings/KEYS by logging in to people.apache.org
-and running:
-
-svn export http://svn.apache.org/repos/asf/openmeetings/project/KEYS /www/www.apache.org/dist/incubator/openmeetings/KEYS
+Edit this file in Git at:
+https://git-wip-us.apache.org/repos/asf/openmeetings.git
+then include in the release as described here:
+http://openmeetings.apache.org/ReleaseGuide.html
 
 pub   2048R/93A30395 2011-12-20
       Key fingerprint = BF13 CF11 F9C9 0CBE 4413  09AB 0055 16BF 93A3 0395

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/0033bb92/openmeetings-screenshare/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/pom.xml b/openmeetings-screenshare/pom.xml
index ec6b8b6..0998f62 100644
--- a/openmeetings-screenshare/pom.xml
+++ b/openmeetings-screenshare/pom.xml
@@ -164,7 +164,7 @@
 									<Application-Name>${project.name}</Application-Name>
 									<Built-By>OpenMeetings - http://openmeetings.apache.org</Built-By>
 									<Built-On>${maven.build.timestamp}</Built-On>
-									<Svn-Revision>${buildNumber}</Svn-Revision>
+									<Git-Revision>${buildNumber}</Git-Revision>
 									<Product-Version>${project.version}</Product-Version>
 									<Permissions>all-permissions</Permissions>
 									<Trusted-Only>true</Trusted-Only>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/0033bb92/openmeetings-server/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/pom.xml b/openmeetings-server/pom.xml
index 54515f6..eebf8d0 100644
--- a/openmeetings-server/pom.xml
+++ b/openmeetings-server/pom.xml
@@ -44,9 +44,9 @@
 	</properties>
 	<url>http://openmeetings.apache.org</url>
 	<scm>
-		<connection>scm:svn:https://svn.apache.org/repos/asf/openmeetings/application/branches/3.2.x</connection>
-		<developerConnection>scm:svn:https://svn.apache.org/repos/asf/openmeetings/application/branches/3.2.x</developerConnection>
-		<url>https://svn.apache.org/repos/asf/openmeetings/application/branches/3.2.x</url>
+		<connection>scm:git:http://git-wip-us.apache.org/repos/asf/openmeetings.git</connection>
+		<developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/openmeetings.git</developerConnection>
+		<url>http://git-wip-us.apache.org/repos/asf/wicket/repo?p=openmeetings.git</url>
 		<tag>HEAD</tag>
 	</scm>
 	<profiles>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/0033bb92/openmeetings-server/src/site/xdoc/BuildInstructions.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/BuildInstructions.xml b/openmeetings-server/src/site/xdoc/BuildInstructions.xml
index 1b134e8..9c65f2b 100644
--- a/openmeetings-server/src/site/xdoc/BuildInstructions.xml
+++ b/openmeetings-server/src/site/xdoc/BuildInstructions.xml
@@ -37,15 +37,12 @@
 				<ul>
 					<li>Oracle JDK8</li>
 					<li>Apache Maven (minimum) 3.3.9</li>
-					<li>
-						SVN Command line client (Subversion 1.7 required!)
-						<a href="http://subversion.apache.org/packages.html" target="_blank" rel="nofollow">http://subversion.apache.org/packages.html</a>
-					</li>
+					<li>Git</li>
 				</ul>
 			</div>
 
 			<p>Get the source: </p>
-			<source><![CDATA[svn checkout https://svn.apache.org/repos/asf/openmeetings/application/trunk/]]></source>
+			<source><![CDATA[git clone https://git-wip-us.apache.org/repos/asf/openmeetings.git]]></source>
 			<p>Run the command: </p>
 			<source><![CDATA[mvn clean install -P allModules]]></source>
 		</section>
@@ -89,16 +86,18 @@ mvn install -P allModules,quick,mysql -pl openmeetings-web -pl openmeetings-serv
 mvn install -P allModules,quick,mysql -pl openmeetings-util -pl openmeetings-db -pl openmeetings-core -pl openmeetings-install -pl openmeetings-service -pl openmeetings-web -pl openmeetings-server -pl openmeetings-webservice -Dwicket.mode=DEVELOPMENT
 ]]>
 			</source>
-			<p>
+			<div>
 				<b>Working behind a proxy:</b>
 				If you are sitting behind a proxy you should add some proxy settings before starting the build process.
 				<br />
-				For SVN Command Line Client (From CollabNet 1.7) see:
-				<a
-					href="https://ctf6latest.collab.net/internal-help/index.jsp?topic=/teamforge610/faq/client_proxy_settings.html"
-					target="_blank" rel="nofollow">https://ctf6latest.collab.net/internal-help/index.jsp?topic=/teamforge610/faq/client_proxy_settings.html
-				</a>
-			</p>
+				<source>git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080</source>
+				<ul>
+					<li>change <tt>proxyuser</tt> to your proxy user</li>
+					<li>change <tt>proxypwd</tt> to your proxy password</li>
+					<li>change <tt>proxy.server.com</tt> to the URL of your proxy server</li>
+					<li>change <tt>8080</tt> to the proxy port configured on your proxy server</li>
+				</ul>
+			</div>
 		</section>
 
 	</body>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/0033bb92/openmeetings-server/src/site/xdoc/GetVersionInfo.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/GetVersionInfo.xml b/openmeetings-server/src/site/xdoc/GetVersionInfo.xml
index b075bab..55279bc 100644
--- a/openmeetings-server/src/site/xdoc/GetVersionInfo.xml
+++ b/openmeetings-server/src/site/xdoc/GetVersionInfo.xml
@@ -33,11 +33,11 @@
 			</p>
 			<p>You get something like this: </p>
 			<source>
-	##################################################
-	#               Openmeetings is up               #
-	#       2.1.1-RELEASE 1490720 7-June-2013        #
-	#                and ready to use                #
-	##################################################
+	################################################################################
+	#                              Openmeetings is up                              #
+	#   3.2.2-SNAPSHOT 943f172e9d63c3ab7210f895fdede1ad7fa6aebc 2017/05/01 05:56   #
+	#                               and ready to use                               #
+	################################################################################
 			</source>
 		</section>
 		<section name="How to check which Openmeetings version running (1.8.0 - 2.1.0)">
@@ -56,11 +56,9 @@
 			<source>
 <![CDATA[
 Manifest-Version: 1.0
-Ant-Version: Apache Ant 1.8.2
-Created-By: 1.6.0_26-b03-383-11A511 (Apple Inc.)
-Built-By: OpenMeetings - http://openmeetings.googlecode.com
-Built-On: 23-October-2011
-Svn-Revision: 4368
+Built-By: OpenMeetings - http://openmeetings.apache.org
+Built-On: 2017/05/01 05:41
+Git-Revision: 943f172e9d63c3ab7210f895fdede1ad7fa6aebc
 ]]>
 			</source>
 			<p>This version info is available since version 1.8.0. If you have an

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/0033bb92/openmeetings-server/src/site/xdoc/Internationalisation.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/Internationalisation.xml b/openmeetings-server/src/site/xdoc/Internationalisation.xml
index 7df2226..020c1a4 100644
--- a/openmeetings-server/src/site/xdoc/Internationalisation.xml
+++ b/openmeetings-server/src/site/xdoc/Internationalisation.xml
@@ -24,8 +24,8 @@
 			<p>You can find all current language files here: </p>
 			<p>
 				<a
-					href="https://svn.apache.org/repos/asf/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/"
-					rel="nofollow">https://svn.apache.org/repos/asf/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/
+					href="https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=tree;f=openmeetings-web/src/main/java/org/apache/openmeetings/web/app;hb=HEAD"
+					rel="nofollow">https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=tree;f=openmeetings-web/src/main/java/org/apache/openmeetings/web/app;hb=HEAD
 				</a>
 			</p>
 			<p>Just take one file and translate it to your language. </p>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/0033bb92/openmeetings-server/src/site/xdoc/ReleaseGuide.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/ReleaseGuide.xml b/openmeetings-server/src/site/xdoc/ReleaseGuide.xml
index b1227ec..8271385 100644
--- a/openmeetings-server/src/site/xdoc/ReleaseGuide.xml
+++ b/openmeetings-server/src/site/xdoc/ReleaseGuide.xml
@@ -77,7 +77,7 @@
 								<li>
 									If that is "success" then add your key to:
 									<br />
-									<a href="https://svn.apache.org/repos/asf/openmeetings/project/KEYS">https://svn.apache.org/repos/asf/openmeetings/project/KEYS</a>
+									<a href="https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=blob;f=KEYS;hb=HEAD">https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=blob;f=KEYS;hb=HEAD</a>
 									<br />
 									<br />
 									and follow the instructions in the file.
@@ -99,6 +99,11 @@
 			</subsection>
 			<subsection name="Step1 - Prepare files">
 				<ul>
+					<li>Switch to the necessary branch:
+						<source>
+git checkout BRANCH
+						</source>
+					</li>
 					<li>
 						Check that all files:<br />
 						LICENSE, NOTICE, DISCLAIMER, CHANGELOG, README<br />
@@ -111,18 +116,17 @@
 						<tt>openmeetings-server/src/site/xdoc/downloads.xml</tt><br/>
 					</li>
 					<li>
-						Create a TAG of the SVN tree that you would like to release<br/>
+						Create a TAG of the Git tree that you would like to release<br/>
 						Example:
-				
+
 						<source>
-svn copy -r1453158 https://svn.apache.org/repos/asf/openmeetings/application/trunk \
-	https://svn.apache.org/repos/asf/openmeetings/application/tags/3.1.0RC1 \
-	-m "3.1.0 Release candidate 1"
+git tag 4.0.0RC1
+git push origin 4.0.0RC1
 						</source>
 					</li>
 					<li>
 						<p>Get the source from your TAG: </p>
-						<source>svn checkout https://svn.apache.org/repos/asf/openmeetings/application/tags/$BRANCHORTAG/</source>
+						<source>git checkout $BRANCHORTAG</source>
 						<p>$BRANCHORTAG should be replaced with your new TAG</p>
 					</li>
 					<li>
@@ -205,7 +209,7 @@ mvn deploy -Pdeploy,rc
 			<subsection name="Step3 - Sign web start application">
 				<p>If VOTEs positive: Sign screen sharing web application and re-pack the release</p>
 				<ul>
-					<li>Go to the folder you check out: https://svn.apache.org/repos/asf/openmeetings/application/tags/$BRANCHORTAG/</li>
+					<li>Go to the folder you check out your $BRANCHORTAG</li>
 					<li>
 						<p>Run the command: </p>
 						<source>
@@ -244,8 +248,8 @@ for f in `ls -1 *.tar.gz *.zip`; do sha256sum -c $f.sha256; done
 						</source>
 						<p>
 							Create signatures with the your KEY for every file, the KEY must be available at:<br />
-							<a href="https://svn.apache.org/repos/asf/openmeetings/project/KEYS">
-								https://svn.apache.org/repos/asf/openmeetings/project/KEYS
+							<a href="https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=blob;f=KEYS;hb=HEAD">
+								https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=blob;f=KEYS;hb=HEAD
 							</a>
 						</p>
 						<source>
@@ -290,7 +294,7 @@ for f in `ls -1 *.tar.gz *.zip`; do gpg --verify $f.asc; done
 						[ANNOUNCE] Apache OpenMeetings x.xx released
 					</li>
 					<li>
-						Update release section of DOAP file <tt>site/trunk/doap.rdf (https://svn.apache.org/repos/asf/openmeetings/site/trunk/doap.rdf)</tt>
+						Update release section of DOAP file <tt>openmeetings-site/doap.rdf (https://git-wip-us.apache.org/repos/asf?p=openmeetings-site.git;a=blob;f=doap.rdf;hb=HEAD)</tt>
 					</li>
 					<li>
 						Add a section to <a href="downloads.html">downloads</a> website.<br />

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/0033bb92/openmeetings-server/src/site/xdoc/RestrictedAccess.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/RestrictedAccess.xml b/openmeetings-server/src/site/xdoc/RestrictedAccess.xml
index 1072771..e38dcd4 100644
--- a/openmeetings-server/src/site/xdoc/RestrictedAccess.xml
+++ b/openmeetings-server/src/site/xdoc/RestrictedAccess.xml
@@ -13,8 +13,8 @@
    limitations under the License.
  -->
 <document xmlns="http://maven.apache.org/XDOC/2.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
 	<properties>
 		<title>How to restrict access to your Openmeetings server</title>
 		<author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
@@ -32,8 +32,8 @@
 			<source>webapp.virtualHosts=*,localhost, 127.0.0.1</source>
 			Sample file:
 			<a
-				href="https://svn.apache.org/repos/asf/openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/red5-web.properties"
-				rel="nofollow">https://svn.apache.org/repos/asf/openmeetings/application/trunk/openmeetings-web/src/main/webapp/WEB-INF/red5-web.properties
+				href="https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=blob;f=openmeetings-web/src/main/webapp/WEB-INF/red5-web.properties;hb=HEAD"
+				rel="nofollow">https://git-wip-us.apache.org/repos/asf/openmeetings.git/KEYS?p=openmeetings.git;a=blob;f=openmeetings-web/src/main/webapp/WEB-INF/red5-web.properties;hb=HEAD
 			</a>
 		</section>
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/0033bb92/openmeetings-server/src/site/xdoc/WebsiteGuide.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/WebsiteGuide.xml b/openmeetings-server/src/site/xdoc/WebsiteGuide.xml
index 1379596..723bb33 100644
--- a/openmeetings-server/src/site/xdoc/WebsiteGuide.xml
+++ b/openmeetings-server/src/site/xdoc/WebsiteGuide.xml
@@ -37,7 +37,7 @@
 					<p>
 						The Apache OpenMeetings HTML websites are generated from XML files. 
 						You edit the XML files, run the MAVEN command <source><![CDATA[mvn install -P allModules,unpacked]]></source> that generates the HTML files 
-						and then you copy generated HTML files into appropriate place and commit to SVN both: XML and HTML files.
+						and then you copy generated HTML files into appropriate place and commit to Git both: XML and HTML files.
 					</p>
 					<p>
 						The website itself uses JQuery to generate the menu, the pop images and the image slider at the landing page.
@@ -48,26 +48,26 @@
 			<subsection name="Editing the website">
 				<div>
 					<p>
-						OpenMeetings website (<a href="http://openmeetings.apache.org/">http://openmeetings.apache.org/</a>) is a copy from the SVN repository.<br />
-						The file in the SVN to be synced are at:
+						OpenMeetings website (<a href="http://openmeetings.apache.org/">http://openmeetings.apache.org/</a>) is a copy from the Git repository.<br />
+						The files in the Git to be synced are at:
 						<br />
-						<a href="http://svn.apache.org/repos/asf/openmeetings/trunk/site/">http://svn.apache.org/repos/asf/openmeetings/trunk/site/</a><br/>
+						<a href="https://git-wip-us.apache.org/repos/asf?p=openmeetings-site.git">https://git-wip-us.apache.org/repos/asf?p=openmeetings-site.git</a><br/>
 					</p>
 					
 					<div>
-						To update the website you need to checkout trunk:<br />
-						<a href="https://svn.apache.org/repos/asf/openmeetings/application/trunk/">https://svn.apache.org/repos/asf/openmeetings/application/trunk/</a> <br/>
+						To update the website you need to clone master:<br />
+						<a href="https://git-wip-us.apache.org/repos/asf/openmeetings-site.git">https://git-wip-us.apache.org/repos/asf/openmeetings-site.git</a> <br/>
 						edit the files in the folder <tt>openmeetings-server/src/site</tt><br/>
 						then you run the command:
 						<source><![CDATA[mvn install -Dunpacked=true]]></source>
 						control the output locally in the folder <tt>openmeetings-server/target/server/webapps/openmeetings/docs/</tt><br/>
 						copy site contents into target folder: <source><![CDATA[cp -r openmeetings-server/target/server/webapps/openmeetings/docs/* ../site/]]></source>
-						And then commit your changes into the SVN <i>both</i> the edited xml(s) and generated html files.
+						And then commit your changes into the Git <i>both</i> the edited xml(s) and generated html files.
 					</div>
 					
 					<p>
-						The public website is automatically synced with the SVN repository.<br/>
-						Changes to the SVN should be immediately synced to the production website.<br/>
+						The public website is automatically synced with the Git repository.<br/>
+						Changes to the Git should be immediately synced to the production website.<br/>
 						If not you might login to people.apache.org,<br/>
 						cd to <tt>/www/openmeetings.apache.org/content/</tt><br/>
 						and run the linux command "touch" on the files that need to be synced

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/0033bb92/openmeetings-server/src/site/xdoc/get-involved.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/get-involved.xml b/openmeetings-server/src/site/xdoc/get-involved.xml
index faa4de6..b848444 100644
--- a/openmeetings-server/src/site/xdoc/get-involved.xml
+++ b/openmeetings-server/src/site/xdoc/get-involved.xml
@@ -121,17 +121,10 @@
 				<li>
 					<p>
 						Check out the OpenMeetings sources and test your svn account:
-						<a href="http://svn.apache.org/viewvc/openmeetings/">
-							SubversionRepository
-						</a>
-						.
+						<a href="https://git-wip-us.apache.org/repos/asf/openmeetings.git">Git Repository</a>
 					</p>
-
 				</li>
-
 			</ul>
-
 		</section>
-
 	</body>
 </document>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/0033bb92/openmeetings-server/src/site/xdoc/themes-and-branding.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/themes-and-branding.xml b/openmeetings-server/src/site/xdoc/themes-and-branding.xml
index f3f8103..ac73b29 100644
--- a/openmeetings-server/src/site/xdoc/themes-and-branding.xml
+++ b/openmeetings-server/src/site/xdoc/themes-and-branding.xml
@@ -31,10 +31,10 @@
 		<section name="Editing the theme">
 			<p>To modify default theme used by OM</p>
 			<ul>
-				<li>please open following file in the SVN:<br/>
+				<li>please open following file in the Git:<br/>
 					<a
-						href="https://svn.apache.org/repos/asf/openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme_om/jquery-ui.css"
-						target="_blank" rel="nofollow">https://svn.apache.org/repos/asf/openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/theme_om/jquery-ui.css
+						href="https://git-wip-us.apache.org/repos/asf/openmeetings.git/?p=openmeetings.git;a=blob;f=openmeetings-web/src/main/webapp/css/theme_om/jquery-ui.css;hb=HEAD"
+						target="_blank" rel="nofollow">https://git-wip-us.apache.org/repos/asf/openmeetings.git/?p=openmeetings.git;a=blob;f=openmeetings-web/src/main/webapp/css/theme_om/jquery-ui.css;hb=HEAD
 					</a><br/>
 					Or if you already installed OpenMeetings on your machine at:<br />
 					<tt>/webapps/openmeetings/css/theme_om/jquery-ui.css</tt>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/0033bb92/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
index 77127d9..2d677dd 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/Version.java
@@ -29,7 +29,7 @@ import org.slf4j.Logger;
 
 public class Version {
 	private static final Logger log = Red5LoggerFactory.getLogger(Version.class, OpenmeetingsVariables.webAppRootKey);
-	private static final int startedStringLength = 48;
+	private static final int startedStringLength = 78;
 	private static String version = null;
 	private static String revision = null;
 	private static String buildDate = null;
@@ -53,7 +53,7 @@ public class Version {
 	public static String getRevision() {
 		if (revision == null) {
 			try {
-				revision = getAttributes().getValue("Svn-Revision");
+				revision = getAttributes().getValue("Git-Revision");
 			} catch (Exception e) {
 				log.error("Error", e);
 			}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/0033bb92/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index bb5437b..b4a7ade 100644
--- a/pom.xml
+++ b/pom.xml
@@ -391,9 +391,9 @@
 		</contributor>
 	</contributors>
 	<scm>
-		<connection>scm:svn:https://svn.apache.org/repos/asf/openmeetings/application/branches/3.2.x</connection>
-		<developerConnection>scm:svn:https://svn.apache.org/repos/asf/openmeetings/application/branches/3.2.x</developerConnection>
-		<url>https://svn.apache.org/repos/asf/openmeetings/application/branches/3.2.x</url>
+		<connection>scm:git:http://git-wip-us.apache.org/repos/asf/openmeetings.git</connection>
+		<developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/openmeetings.git</developerConnection>
+		<url>http://git-wip-us.apache.org/repos/asf/wicket/repo?p=openmeetings.git</url>
 		<tag>HEAD</tag>
 	</scm>
 	<mailingLists>
@@ -792,7 +792,7 @@
 							<manifestEntries>
 								<Built-By>OpenMeetings - http://openmeetings.apache.org</Built-By>
 								<Built-On>${maven.build.timestamp}</Built-On>
-								<Svn-Revision>${buildNumber}</Svn-Revision>
+								<Git-Revision>${buildNumber}</Git-Revision>
 								<Product-Version>${project.version}</Product-Version>
 							</manifestEntries>
 						</archive>


[29/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1607] minor issue is fixed

Posted by so...@apache.org.
[OPENMEETINGS-1607] minor issue is fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/5149de4e
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/5149de4e
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/5149de4e

Branch: refs/heads/3.2.x
Commit: 5149de4ea6adebb66757a4df099bb40e0970c671
Parents: b8c2ac9
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Mar 30 14:19:08 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Mar 30 14:19:08 2017 +0000

----------------------------------------------------------------------
 .../apache/openmeetings/web/room/activities/ActivitiesPanel.java   | 2 --
 1 file changed, 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/5149de4e/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
index fbdd97e..7797bc7 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
@@ -46,7 +46,6 @@ import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.head.PriorityHeaderItem;
@@ -278,6 +277,5 @@ public class ActivitiesPanel extends BasePanel {
 	public void renderHead(IHeaderResponse response) {
 		super.renderHead(response);
 		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(ActivitiesPanel.class, "activities.js"))));
-		response.render(CssHeaderItem.forUrl("css/activities.css", "screen"));
 	}
 }


[39/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1612, OPENMEETINGS-980] tomcat version is corrected

Posted by so...@apache.org.
[OPENMEETINGS-1612, OPENMEETINGS-980] tomcat version is corrected


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/3dc27bea
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/3dc27bea
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/3dc27bea

Branch: refs/heads/3.2.x
Commit: 3dc27beaa1f087a569beea0a4f29d9b94f620c58
Parents: 7872a87
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Apr 6 12:20:17 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Apr 6 12:20:17 2017 +0000

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3dc27bea/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 1a5a261..2c943da 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,7 +47,7 @@
 		<red5-client.version>1.0.9-M6</red5-client.version>
 		<spring.version>4.3.6.RELEASE</spring.version>
 		<mina.version>2.0.16</mina.version>
-		<tomcat.version>8.5.11</tomcat.version>
+		<tomcat.version>8.5.12</tomcat.version>
 		<ical4j.version>2.0.0</ical4j.version>
 		<cxf.version>3.1.9</cxf.version>
 		<selenium.version>3.0.1</selenium.version>


[42/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1612] cxf, selenium and postgres versions are updated

Posted by so...@apache.org.
[OPENMEETINGS-1612] cxf, selenium and postgres versions are updated


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/96e75787
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/96e75787
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/96e75787

Branch: refs/heads/3.2.x
Commit: 96e75787e5cf7444ebaaaac8e9933d8da09a425c
Parents: 97f7b9a
Author: Maxim Solodovnik <so...@apache.org>
Authored: Wed Apr 12 05:21:24 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Wed Apr 12 05:21:24 2017 +0000

----------------------------------------------------------------------
 openmeetings-db/pom.xml | 45 ++++++++++++++++++++------------------------
 pom.xml                 |  4 ++--
 2 files changed, 22 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/96e75787/openmeetings-db/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-db/pom.xml b/openmeetings-db/pom.xml
index 6fd9b17..b4c4f0a 100644
--- a/openmeetings-db/pom.xml
+++ b/openmeetings-db/pom.xml
@@ -16,8 +16,8 @@
    limitations under the License.
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" 
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
@@ -35,7 +35,7 @@
 		<commons-dbcp.version>2.1.1</commons-dbcp.version>
 		<commons-pool.version>1.6</commons-pool.version> <!-- required by OpenJPA for clustering -->
 		<commons-pool2.version>2.4.2</commons-pool2.version>
-		<postgresql.version>9.4.1212.jre7</postgresql.version>
+		<postgresql.version>42.0.0</postgresql.version>
 		<site.basedir>${project.parent.basedir}</site.basedir>
 	</properties>
 	<dependencies>
@@ -107,11 +107,6 @@
 			<artifactId>postgresql</artifactId>
 			<version>${postgresql.version}</version>
 		</dependency>
-		<dependency>
-			<groupId>com.tdunning</groupId>
-			<artifactId>json</artifactId>
-			<version>1.8</version> <!-- FIXME need to be removed with update to wicket-8.x -->
-		</dependency>
 	</dependencies>
 	<build>
 		<plugins>
@@ -120,27 +115,27 @@
 				<artifactId>openjpa-maven-plugin</artifactId>
 				<version>${openjpa.version}</version>
 				<configuration>
-				    <includes>**/entity/**/*.class</includes>
-				    <addDefaultConstructor>true</addDefaultConstructor>               
-				    <enforcePropertyRestrictions>true</enforcePropertyRestrictions>
-				    <persistenceXmlFile>${project.parent.basedir}/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml</persistenceXmlFile>
+					<includes>**/entity/**/*.class</includes>
+					<addDefaultConstructor>true</addDefaultConstructor>
+					<enforcePropertyRestrictions>true</enforcePropertyRestrictions>
+					<persistenceXmlFile>${project.parent.basedir}/openmeetings-web/src/main/webapp/WEB-INF/classes/META-INF/derby_persistence.xml</persistenceXmlFile>
 				</configuration>
 				<executions>
-				    <execution>
-				        <id>enhancer</id>
-				        <phase>process-classes</phase>
-				        <goals>
-				            <goal>enhance</goal>
-				        </goals>
-				    </execution>
+					<execution>
+						<id>enhancer</id>
+						<phase>process-classes</phase>
+						<goals>
+							<goal>enhance</goal>
+						</goals>
+					</execution>
 				</executions>
 				<dependencies>
-				    <dependency>
-				        <groupId>org.apache.openjpa</groupId>
-				        <artifactId>openjpa</artifactId>
-				        <!-- set the version to be the same as the level in your runtime -->
-				        <version>${openjpa.version}</version>
-				    </dependency>
+					<dependency>
+						<groupId>org.apache.openjpa</groupId>
+						<artifactId>openjpa</artifactId>
+						<!-- set the version to be the same as the level in your runtime -->
+						<version>${openjpa.version}</version>
+					</dependency>
 				</dependencies>
 			</plugin>
 		</plugins>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/96e75787/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 2c943da..bb5437b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,8 +49,8 @@
 		<mina.version>2.0.16</mina.version>
 		<tomcat.version>8.5.12</tomcat.version>
 		<ical4j.version>2.0.0</ical4j.version>
-		<cxf.version>3.1.9</cxf.version>
-		<selenium.version>3.0.1</selenium.version>
+		<cxf.version>3.1.11</cxf.version>
+		<selenium.version>3.3.1</selenium.version>
 		<simple-xml.version>2.7.1</simple-xml.version>
 		<jettison.version>1.3.8</jettison.version>
 		<site.basedir>${project.basedir}</site.basedir>


[26/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1616] small aditional fix

Posted by so...@apache.org.
[OPENMEETINGS-1616] small aditional fix


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/3e28df23
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/3e28df23
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/3e28df23

Branch: refs/heads/3.2.x
Commit: 3e28df23b19b9a4140348cf645f1f2e070f826ec
Parents: 1f274d1
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Mar 30 09:06:27 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Mar 30 09:06:27 2017 +0000

----------------------------------------------------------------------
 .../src/main/java/org/apache/openmeetings/web/user/chat/chat.js     | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/3e28df23/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
index ef43843..570d33e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
@@ -162,6 +162,7 @@ var Chat = function() {
 					}
 					if (!area.length) {
 						this.addTab(cm.scope, cm.scopeName);
+						area = $('#' + cm.scope);
 					}
 					if (m.mode == "accept") {
 						$('#chat-msg-id-' + cm.id).remove();


[11/50] [abbrv] openmeetings git commit: Release preparation: documentation update

Posted by so...@apache.org.
Release preparation: documentation update


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/bb8340bc
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/bb8340bc
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/bb8340bc

Branch: refs/heads/3.2.x
Commit: bb8340bc3d860ac6507a6927182ed5bea8210844
Parents: b13eb4c
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Mar 17 05:10:24 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Mar 17 05:10:24 2017 +0000

----------------------------------------------------------------------
 CHANGELOG                                   | 3 +++
 README                                      | 2 +-
 openmeetings-server/src/site/xdoc/index.xml | 4 ++--
 3 files changed, 6 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/bb8340bc/CHANGELOG
----------------------------------------------------------------------
diff --git a/CHANGELOG b/CHANGELOG
index e3640a7..54f707d 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -40,6 +40,9 @@ Release Notes - Openmeetings - Version 3.2.1
     * [OPENMEETINGS-1597] - Message are not shown properly in the activities and actions window for user without moderator rights
     * [OPENMEETINGS-1598] - The "Disabled" select item does not work properly on the  "Choose device" dialog
     * [OPENMEETINGS-1599] - Connection panel is not scrolled
+    * [OPENMEETINGS-1600] - The "Clear whiteboard" flag does not work when user upload file directly to whiteboard
+    * [OPENMEETINGS-1601] - Drop recording to WB doesn't work as expected
+    * [OPENMEETINGS-1603] - The "Internal error" is thrown when user select custom folder in the room
 
 ** Improvement
     * [OPENMEETINGS-372] - Please make the ability to \u201cclear the Chat window\u201d only available to Moderators, and not to participants who have \u201cDraw on the Whiteboard\u201d rights

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/bb8340bc/README
----------------------------------------------------------------------
diff --git a/README b/README
index cf2aabf..6747d28 100644
--- a/README
+++ b/README
@@ -30,7 +30,7 @@ Calendar
 * date/time validator is improved
 * whole group can be invited by admin to event
 
-Other fixes and improvements, 46 issues were fixed
+Other fixes and improvements, 49 issues were fixed
 
 
 =============

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/bb8340bc/openmeetings-server/src/site/xdoc/index.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/index.xml b/openmeetings-server/src/site/xdoc/index.xml
index 2cce574..da07c95 100644
--- a/openmeetings-server/src/site/xdoc/index.xml
+++ b/openmeetings-server/src/site/xdoc/index.xml
@@ -99,12 +99,12 @@
 				</div>
 				<br/>
 				<span>
-					46 issues are fixed please check <br/>
+					49 issues are fixed please check <br/>
 					<a href="https://www.apache.org/dist/openmeetings/3.2.1/CHANGELOG">CHANGELOG</a> and
 					<a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12312720&amp;version=12339215">Detailed list</a>
 				</span>
 				<span> See <a href="downloads.html">Downloads page</a>.</span>
-				<span class="date">(2017-03-14)</span>
+				<span class="date">(2017-03-21)</span>
 			</div>
 			<div class="bs-callout bs-callout-info">
 				<span class="date"><a href="NewsArchive.html">You can find older news here</a></span>


[46/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1634] drag to trash should work better

Posted by so...@apache.org.
[OPENMEETINGS-1634] drag to trash should work better


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/f6394430
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/f6394430
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/f6394430

Branch: refs/heads/3.2.x
Commit: f6394430cea67c121fd935f4a0d2db8b7d8ebf73
Parents: fdf8ded
Author: Maxim Solodovnik <so...@apache.org>
Authored: Wed Apr 19 14:52:21 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Wed Apr 19 14:52:21 2017 +0000

----------------------------------------------------------------------
 .../org/apache/openmeetings/web/common/tree/FileTreePanel.html | 6 +++---
 .../org/apache/openmeetings/web/common/tree/FolderPanel.java   | 1 +
 2 files changed, 4 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/f6394430/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
index 36ef583..9e38d57 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.html
@@ -27,9 +27,9 @@
 			if (s.parents('a').hasClass('ui-state-active')) {
 				s = $('.ui-state-active .ui-draggable.ui-draggable-handle');
 			}
-			var c = $('<div/>').attr('id', 'draggingContainer');
-			c.append(s.clone());
-			return c;
+			var c = $('<div/>').attr('id', 'draggingContainer').width(80).height(36);
+			var h = $('<div class="ui-corner-all ui-widget-header"/>').append(s.clone()).width(s.width());
+			return c.append(h);
 		}
 		function treeRevert(dropped) {
 			$('.file.tree .trees')[0].scrollTop = $(this).parent()[0].offsetTop - 32;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/f6394430/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
index fdc60b4..7e685a7 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
@@ -91,6 +91,7 @@ public class FolderPanel extends Panel {
 					behavior.setOption("revert", "treeRevert");
 					behavior.setOption("cursor", Options.asString("move"));
 					behavior.setOption("helper", "dragHelper");
+					behavior.setOption("cursorAt", "{left: 40, top: 18}");
 				}
 			}.setContainment(treePanel.getContainment());
 			String cls = r instanceof Recording ? "recorditem" : "fileitem";


[48/50] [abbrv] openmeetings git commit: no JIRA: final URL to enter the room is fixed

Posted by so...@apache.org.
no JIRA: final URL to enter the room is fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/54c25118
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/54c25118
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/54c25118

Branch: refs/heads/3.2.x
Commit: 54c2511801eae4a97cb0040ebe544272e9d777a3
Parents: c8b1afb
Author: Maxim Solodovnik <so...@apache.org>
Authored: Mon Apr 24 09:02:01 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Mon Apr 24 09:02:01 2017 +0000

----------------------------------------------------------------------
 openmeetings-server/src/site/xdoc/RestAPISample.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/54c25118/openmeetings-server/src/site/xdoc/RestAPISample.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/RestAPISample.xml b/openmeetings-server/src/site/xdoc/RestAPISample.xml
index 12f6946..89710c8 100644
--- a/openmeetings-server/src/site/xdoc/RestAPISample.xml
+++ b/openmeetings-server/src/site/xdoc/RestAPISample.xml
@@ -132,7 +132,7 @@ $.ajax({
 					</table>
 				</li>
 				<li>If your request was successful you will get your hash as <b>message</b> (fa1f9381-bd03-42ae-9fd9-332b5f775a1b)</li>
-				<li>Now you can use following URL to enter the room: <tt>http://localhost:5080/openmeetings/swf?secureHash=fa1f9381-bd03-42ae-9fd9-332b5f775a1b&amp;language=1</tt></li>
+				<li>Now you can use following URL to enter the room: <tt>http://localhost:5080/openmeetings/hash?secure=fa1f9381-bd03-42ae-9fd9-332b5f775a1b&amp;language=1</tt></li>
 			</ul>
 		</section>
 	</body>


[16/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1611] js errors should be fixed

Posted by so...@apache.org.
[OPENMEETINGS-1611] js errors should be fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/6fec12b4
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/6fec12b4
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/6fec12b4

Branch: refs/heads/3.2.x
Commit: 6fec12b4bf7e6e2dcd58ca45e6197324d9962ae1
Parents: 60193a5
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Mar 24 14:17:32 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Mar 24 14:17:32 2017 +0000

----------------------------------------------------------------------
 .../web/admin/configurations/ConfigForm.java    |  2 +-
 .../web/admin/configurations/ConfigsPanel.java  |  2 +-
 .../openmeetings/web/admin/ldaps/LdapForm.java  |  8 +++----
 .../web/admin/ldaps/LdapsPanel.java             |  2 +-
 .../openmeetings/web/admin/oauth/OAuthForm.java |  8 +++----
 .../web/admin/oauth/OAuthPanel.java             |  2 +-
 .../openmeetings/web/admin/rooms/RoomForm.java  |  2 +-
 .../web/admin/rooms/RoomsPanel.java             | 12 +---------
 .../apache/openmeetings/web/admin/rooms/room.js | 23 --------------------
 .../web/admin/servers/ServerForm.java           |  8 +++----
 .../web/admin/servers/ServersPanel.java         |  2 +-
 .../openmeetings/web/admin/users/UserForm.java  |  4 ++--
 12 files changed, 21 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6fec12b4/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
index 9418869..5a8393e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
@@ -54,7 +54,7 @@ public class ConfigForm extends AdminBaseForm<Configuration> {
 
 	private void refresh(AjaxRequestTarget target) {
 		target.add(this);
-		target.appendJavaScript("omConfigPanelInit();");
+		target.appendJavaScript("adminPanelInit();");
 	}
 
 	public ConfigForm(String id, WebMarkupContainer listContainer, Configuration configuration) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6fec12b4/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
index 1223ef7..c0c91d0 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
@@ -65,7 +65,7 @@ public class ConfigsPanel extends AdminPanel {
 						form.hideNewRecord();
 						form.setModelObject(c);
 						target.add(form, listContainer);
-						target.appendJavaScript("omConfigPanelInit();");
+						target.appendJavaScript("adminPanelInit();");
 					}
 				});
 				item.add(AttributeModifier.replace("class", getRowClass(c.getId(), form.getModelObject().getId())));

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6fec12b4/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
index a1660a6..b4cca0a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
@@ -76,14 +76,14 @@ public class LdapForm extends AdminBaseForm<LdapConfig> {
 		setModelObject(getBean(LdapConfigDao.class).update(getModelObject(), WebSession.getUserId()));
 		hideNewRecord();
 		target.add(this, listContainer);
-		target.appendJavaScript("omLdapPanelInit();");
+		target.appendJavaScript("adminPanelInit();");
 	}
 
 	@Override
 	protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
 		this.setModelObject(new LdapConfig());
 		target.add(this);
-		target.appendJavaScript("omLdapPanelInit();");
+		target.appendJavaScript("adminPanelInit();");
 	}
 
 	@Override
@@ -96,7 +96,7 @@ public class LdapForm extends AdminBaseForm<LdapConfig> {
 		}
 		this.setModelObject(ldapConfig);
 		target.add(this);
-		target.appendJavaScript("omLdapPanelInit();");
+		target.appendJavaScript("adminPanelInit();");
 	}
 
 	@Override
@@ -105,7 +105,7 @@ public class LdapForm extends AdminBaseForm<LdapConfig> {
 		this.setModelObject(new LdapConfig());
 		target.add(listContainer);
 		target.add(this);
-		target.appendJavaScript("omLdapPanelInit();");
+		target.appendJavaScript("adminPanelInit();");
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6fec12b4/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
index 5388f16..4d51408 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
@@ -64,7 +64,7 @@ public class LdapsPanel extends AdminPanel {
 						form.setModelObject(lc);
 						form.hideNewRecord();
 						target.add(form, listContainer);
-						target.appendJavaScript("omLdapPanelInit();");
+						target.appendJavaScript("adminPanelInit();");
 					}
 				});
 				item.add(AttributeModifier.replace("class", getRowClass(lc.getId(), form.getModelObject().getId())));

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6fec12b4/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
index 702bf55..a7b60a1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
@@ -86,14 +86,14 @@ public class OAuthForm extends AdminBaseForm<OAuthServer> {
 		hideNewRecord();
 		target.add(this);
 		target.add(listContainer);
-		target.appendJavaScript("oauthPanelInit();");
+		target.appendJavaScript("adminPanelInit();");
 	}
 
 	@Override
 	protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
 		this.setModelObject(new OAuthServer());
 		target.add(this);
-		target.appendJavaScript("oauthPanelInit();");
+		target.appendJavaScript("adminPanelInit();");
 	}
 
 	@Override
@@ -106,7 +106,7 @@ public class OAuthForm extends AdminBaseForm<OAuthServer> {
 		}
 		this.setModelObject(server);
 		target.add(this);
-		target.appendJavaScript("oauthPanelInit();");
+		target.appendJavaScript("adminPanelInit();");
 	}
 
 	@Override
@@ -115,7 +115,7 @@ public class OAuthForm extends AdminBaseForm<OAuthServer> {
 		this.setModelObject(new OAuthServer());
 		target.add(listContainer);
 		target.add(this);
-		target.appendJavaScript("oauthPanelInit();");
+		target.appendJavaScript("adminPanelInit();");
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6fec12b4/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.java
index ef4d40c..c5a4540 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.java
@@ -58,7 +58,7 @@ public class OAuthPanel extends AdminPanel {
 						form.setModelObject(server);
 						form.hideNewRecord();
 						target.add(form, listContainer);
-						target.appendJavaScript("oauthPanelInit();");
+						target.appendJavaScript("adminPanelInit();");
 					}
 				});
 				item.add(AttributeModifier.replace("class", getRowClass(server.getId(), form.getModelObject().getId())));

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6fec12b4/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
index f2e3a2a..aa234b5 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
@@ -401,7 +401,7 @@ public class RoomForm extends AdminBaseForm<Room> {
 		target.add(roomList);
 		target.add(pin.setEnabled(getModelObject().isSipEnabled()));
 		updateClients(target);
-		target.appendJavaScript("omRoomPanelInit();");
+		target.appendJavaScript("adminPanelInit();");
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6fec12b4/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
index caa7891..0fa1f60 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
@@ -32,17 +32,13 @@ import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
-import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.repeater.Item;
-import org.apache.wicket.request.resource.JavaScriptResourceReference;
 
 @AuthorizeInstantiation({"Admin", "GroupAdmin"})
 public class RoomsPanel extends AdminPanel {
 	private static final long serialVersionUID = -1L;
-	private final static JavaScriptResourceReference ROOM_FUNCTIONS = new JavaScriptResourceReference(RoomsPanel.class, "room.js");
 	final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
 	private RoomForm form;
 
@@ -67,7 +63,7 @@ public class RoomsPanel extends AdminPanel {
 						form.setModelObject(getBean(RoomDao.class).get(roomId));
 						form.updateView(target);
 						target.add(form, listContainer);
-						target.appendJavaScript("omRoomPanelInit();");
+						target.appendJavaScript("adminPanelInit();");
 					}
 				});
 				item.add(AttributeModifier.replace("class", getRowClass(room.getId(), form.getModelObject().getId())));
@@ -92,10 +88,4 @@ public class RoomsPanel extends AdminPanel {
 
 		add(form = new RoomForm("form", listContainer, new Room()));
 	}
-
-	@Override
-	public void renderHead(IHeaderResponse response) {
-		super.renderHead(response);
-		response.render(JavaScriptHeaderItem.forReference(ROOM_FUNCTIONS));
-	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6fec12b4/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/room.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/room.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/room.js
deleted file mode 100644
index e1373a0..0000000
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/room.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-function omRoomPanelInit() {
-	var documentHeight = $(document).height();
-	$('#adminForm').height(documentHeight - 114);
-	$('#adminTable').height(documentHeight - 144);
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6fec12b4/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
index dd9043b..e93a4a2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
@@ -83,7 +83,7 @@ public class ServerForm extends AdminBaseForm<Server> {
 		hideNewRecord();
 		target.add(this);
 		target.add(listContainer);
-		target.appendJavaScript("omServerPanelInit();");
+		target.appendJavaScript("adminPanelInit();");
 	}
 
 	@Override
@@ -93,7 +93,7 @@ public class ServerForm extends AdminBaseForm<Server> {
 		s.setProtocol("http");
 		setModelObject(s);
 		target.add(this);
-		target.appendJavaScript("omServerPanelInit();");
+		target.appendJavaScript("adminPanelInit();");
 	}
 
 	@Override
@@ -106,7 +106,7 @@ public class ServerForm extends AdminBaseForm<Server> {
 		}
 		setModelObject(server);
 		target.add(this);
-		target.appendJavaScript("omServerPanelInit();");
+		target.appendJavaScript("adminPanelInit();");
 	}
 
 	@Override
@@ -115,7 +115,7 @@ public class ServerForm extends AdminBaseForm<Server> {
 		this.setModelObject(new Server());
 		target.add(listContainer);
 		target.add(this);
-		target.appendJavaScript("omServerPanelInit();");
+		target.appendJavaScript("adminPanelInit();");
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6fec12b4/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java
index ebc7559..b7889b3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java
@@ -64,7 +64,7 @@ public class ServersPanel extends AdminPanel {
 						form.setModelObject(server);
 						form.hideNewRecord();
 						target.add(form, listContainer);
-						target.appendJavaScript("omServerPanelInit();");
+						target.appendJavaScript("adminPanelInit();");
 					}
 				});
 				item.add(AttributeModifier.replace("class", getRowClass(server.getId(), form.getModelObject().getId())));

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/6fec12b4/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
index 132158c..30644c6 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
@@ -133,7 +133,7 @@ public class UserForm extends AdminBaseForm<User> {
 		hideNewRecord();
 		target.add(this);
 		target.add(listContainer);
-		target.appendJavaScript("omUserPanelInit();");
+		target.appendJavaScript("adminPanelInit();");
 		if (u.getGroupUsers().isEmpty()) {
 			warning.open(target);
 		}
@@ -273,7 +273,7 @@ public class UserForm extends AdminBaseForm<User> {
 		updateDomain(target);
 		if (target != null) {
 			target.add(this, listContainer);
-			target.appendJavaScript("omUserPanelInit();");
+			target.appendJavaScript("adminPanelInit();");
 		}
 	}
 


[24/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1612] wicket, wicketstuff and openjson versions are updated

Posted by so...@apache.org.
[OPENMEETINGS-1612] wicket, wicketstuff and openjson versions are updated


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/e6940fa5
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/e6940fa5
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/e6940fa5

Branch: refs/heads/3.2.x
Commit: e6940fa50425cfc822da19dceccf038d2a0d5bc8
Parents: d532ba9
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Mar 30 02:58:18 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Mar 30 02:58:18 2017 +0000

----------------------------------------------------------------------
 .../java/org/apache/openmeetings/core/util/WebSocketHelper.java | 5 +++--
 .../org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java | 3 ++-
 .../apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java   | 3 ++-
 .../main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java  | 3 ++-
 .../org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java     | 3 ++-
 .../org/apache/openmeetings/db/dto/user/ExternalUserDTO.java    | 2 +-
 .../main/java/org/apache/openmeetings/db/dto/user/UserDTO.java  | 3 ++-
 .../main/java/org/apache/openmeetings/db/util/DtoHelper.java    | 4 ++--
 .../org/apache/openmeetings/web/common/tree/FileItemTree.java   | 3 ++-
 .../org/apache/openmeetings/web/common/tree/FileTreePanel.java  | 5 ++---
 .../java/org/apache/openmeetings/web/pages/auth/SignInPage.java | 3 ++-
 .../main/java/org/apache/openmeetings/web/room/SwfPanel.java    | 5 +++--
 .../org/apache/openmeetings/web/room/sidebar/RoomSidebar.java   | 2 +-
 .../apache/openmeetings/web/user/calendar/CalendarPanel.java    | 4 ++--
 .../main/java/org/apache/openmeetings/web/user/chat/Chat.java   | 2 +-
 .../apache/openmeetings/web/util/ExtendedClientProperties.java  | 3 ++-
 .../org/apache/openmeetings/web/util/UserChoiceProvider.java    | 5 +++--
 openmeetings-web/src/main/webapp/css/room.css                   | 1 +
 .../openmeetings/test/webservice/TestCalendarService.java       | 5 +++--
 .../apache/openmeetings/test/webservice/TestWebConverters.java  | 3 ++-
 .../webservice/util/AppointmentListMessageBodyWriter.java       | 5 +++--
 .../webservice/util/AppointmentMessageBodyWriter.java           | 3 ++-
 .../openmeetings/webservice/util/AppointmentParamConverter.java | 5 +++--
 pom.xml                                                         | 4 ++--
 24 files changed, 50 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
index 74bc93b..3994551 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
@@ -43,11 +43,12 @@ import org.apache.wicket.protocol.ws.api.IWebSocketConnection;
 import org.apache.wicket.protocol.ws.api.registry.IWebSocketConnectionRegistry;
 import org.apache.wicket.protocol.ws.api.registry.PageIdKey;
 import org.apache.wicket.protocol.ws.concurrent.Executor;
-import org.json.JSONArray;
-import org.json.JSONObject;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
+import com.github.openjson.JSONArray;
+import com.github.openjson.JSONObject;
+
 public class WebSocketHelper {
 	private static final Logger log = Red5LoggerFactory.getLogger(WebSocketHelper.class, webAppRootKey);
 	public static final String ID_TAB_PREFIX = "chatTab-";

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
index aabb166..9a73a10 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/AppointmentDTO.java
@@ -37,7 +37,8 @@ import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder;
 import org.apache.openmeetings.db.entity.calendar.MeetingMember;
 import org.apache.openmeetings.db.entity.user.User;
-import org.json.JSONObject;
+
+import com.github.openjson.JSONObject;
 
 @XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
index df211cb..69131e8 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/calendar/MeetingMemberDTO.java
@@ -31,7 +31,8 @@ import org.apache.openmeetings.db.dto.user.UserDTO;
 import org.apache.openmeetings.db.entity.calendar.MeetingMember;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.wicket.util.string.Strings;
-import org.json.JSONObject;
+
+import com.github.openjson.JSONObject;
 
 @XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
index 1e3b1a2..4206cd6 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomDTO.java
@@ -35,7 +35,8 @@ import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.room.Room.RoomElement;
-import org.json.JSONObject;
+
+import com.github.openjson.JSONObject;
 
 @XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java
index 065f75a..c1a0888 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomOptionsDTO.java
@@ -26,7 +26,8 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import org.json.JSONObject;
+import com.github.openjson.JSONObject;
+
 
 @XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/ExternalUserDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/ExternalUserDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/ExternalUserDTO.java
index ce5a6f6..b5e6b3d 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/ExternalUserDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/ExternalUserDTO.java
@@ -24,7 +24,7 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlRootElement;
 
-import org.json.JSONObject;
+import com.github.openjson.JSONObject;
 
 @XmlRootElement
 @XmlAccessorType(XmlAccessType.FIELD)

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
index 858d751..8d43150 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/user/UserDTO.java
@@ -35,7 +35,8 @@ import org.apache.openmeetings.db.entity.user.Address;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.db.entity.user.User.Type;
-import org.json.JSONObject;
+
+import com.github.openjson.JSONObject;
 
 @XmlRootElement
 public class UserDTO implements Serializable {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DtoHelper.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DtoHelper.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DtoHelper.java
index 3455104..e39458d 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DtoHelper.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DtoHelper.java
@@ -21,8 +21,8 @@ package org.apache.openmeetings.db.util;
 import java.util.ArrayList;
 import java.util.Collection;
 
-import org.json.JSONArray;
-import org.json.JSONObject;
+import com.github.openjson.JSONArray;
+import com.github.openjson.JSONObject;
 
 public class DtoHelper {
 	public static Integer optInt(JSONObject o, String key) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
index e24071c..7ddc63e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileItemTree.java
@@ -36,7 +36,8 @@ import org.apache.wicket.markup.repeater.ReuseIfModelsEqualStrategy;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.util.string.Strings;
-import org.json.JSONObject;
+
+import com.github.openjson.JSONObject;
 
 public class FileItemTree extends DefaultNestedTree<FileItem> {
 	private static final long serialVersionUID = 1L;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
index 5fb868c..1cb375f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
@@ -30,7 +30,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Optional;
 import java.util.UUID;
 
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
@@ -312,9 +311,9 @@ public abstract class FileTreePanel extends Panel {
 	void updateNode(AjaxRequestTarget target, FileItem fi) {
 		if (fi != null && target != null) {
 			if (Type.Folder == fi.getType()) {
-				tree.updateBranch(fi, Optional.of(target));
+				tree.updateBranch(fi, target);
 			} else {
-				tree.updateNode(fi, Optional.of(target));
+				tree.updateNode(fi, target);
 			}
 		}
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
index b3fa2e1..fbfb409 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
@@ -65,10 +65,11 @@ import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.flow.RedirectToUrlException;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.string.StringValue;
-import org.json.JSONObject;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
+import com.github.openjson.JSONObject;
+
 public class SignInPage extends BaseInitedPage {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = Red5LoggerFactory.getLogger(SignInPage.class, webAppRootKey);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
index d7f4c94..57cc928 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
@@ -51,11 +51,12 @@ import org.apache.wicket.request.resource.ResourceReference;
 import org.apache.wicket.util.string.StringValue;
 import org.apache.wicket.util.string.Strings;
 import org.apache.wicket.util.time.Duration;
-import org.json.JSONArray;
-import org.json.JSONObject;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
+import com.github.openjson.JSONArray;
+import com.github.openjson.JSONObject;
+
 public class SwfPanel extends BasePanel {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = Red5LoggerFactory.getLogger(SwfPanel.class, webAppRootKey);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
index 611031f..cb0e6a5 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
@@ -58,10 +58,10 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.util.string.StringValue;
 import org.apache.wicket.util.string.Strings;
-import org.json.JSONObject;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
+import com.github.openjson.JSONObject;
 import com.googlecode.wicket.jquery.ui.widget.tabs.TabbedPanel;
 import com.googlecode.wicket.kendo.ui.widget.tabs.TabListModel;
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
index 40ea323..19a846b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarPanel.java
@@ -58,11 +58,11 @@ import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.LoadableDetachableModel;
 import org.apache.wicket.model.PropertyModel;
 import org.apache.wicket.util.time.Duration;
-import org.json.JSONArray;
-import org.json.JSONObject;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
+import com.github.openjson.JSONArray;
+import com.github.openjson.JSONObject;
 import com.googlecode.wicket.jquery.core.Options;
 import com.googlecode.wicket.jquery.ui.calendar.Calendar;
 import com.googlecode.wicket.jquery.ui.calendar.CalendarView;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
index 3cd5771..5285e7c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
@@ -66,10 +66,10 @@ import org.apache.wicket.markup.html.form.HiddenField;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
-import org.json.JSONObject;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
+import com.github.openjson.JSONObject;
 import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
 import com.googlecode.wicket.jquery.ui.plugins.wysiwyg.WysiwygEditor;
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ExtendedClientProperties.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ExtendedClientProperties.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ExtendedClientProperties.java
index 37e9e5f..1e339ae 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ExtendedClientProperties.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ExtendedClientProperties.java
@@ -24,7 +24,8 @@ import static org.apache.openmeetings.web.app.Application.SIGNIN_MAPPING;
 
 import org.apache.wicket.protocol.http.ClientProperties;
 import org.apache.wicket.request.IRequestParameters;
-import org.json.JSONObject;
+
+import com.github.openjson.JSONObject;
 
 public class ExtendedClientProperties extends ClientProperties {
 	private static final long serialVersionUID = 1L;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java
index 0c06248..7d75276 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/UserChoiceProvider.java
@@ -33,11 +33,12 @@ import org.apache.openmeetings.db.util.FormatHelper;
 import org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
 import org.apache.wicket.util.string.Strings;
 import org.apache.wicket.validation.Validatable;
-import org.json.JSONException;
-import org.json.JSONStringer;
 import org.wicketstuff.select2.ChoiceProvider;
 import org.wicketstuff.select2.Response;
 
+import com.github.openjson.JSONException;
+import com.github.openjson.JSONStringer;
+
 public class UserChoiceProvider extends ChoiceProvider<User> {
 	private static final long serialVersionUID = 1L;
 	private final static int PAGE_SIZE = 10;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-web/src/main/webapp/css/room.css
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/room.css b/openmeetings-web/src/main/webapp/css/room.css
index fb9d793..a4fae3c 100644
--- a/openmeetings-web/src/main/webapp/css/room.css
+++ b/openmeetings-web/src/main/webapp/css/room.css
@@ -468,3 +468,4 @@
 	height: 20px;
 	padding: 0;
 }
+

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
index ffd1e79..54170fb 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestCalendarService.java
@@ -46,11 +46,12 @@ import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.webservice.util.AppointmentParamConverter;
-import org.json.JSONArray;
-import org.json.JSONObject;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import com.github.openjson.JSONArray;
+import com.github.openjson.JSONObject;
+
 public class TestCalendarService extends AbstractWebServiceTest {
 	public final static String CALENDAR_SERVICE_URL = BASE_SERVICES_URL + "/calendar";
 	@Autowired

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestWebConverters.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestWebConverters.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestWebConverters.java
index e68b2ec..31edf2e 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestWebConverters.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/webservice/TestWebConverters.java
@@ -29,9 +29,10 @@ import java.util.Date;
 import org.apache.openmeetings.db.dto.user.UserDTO;
 import org.apache.openmeetings.webservice.util.CalendarParamConverter;
 import org.apache.openmeetings.webservice.util.DateParamConverter;
-import org.json.JSONObject;
 import org.junit.Test;
 
+import com.github.openjson.JSONObject;
+
 public class TestWebConverters {
 	@Test
 	public void testDateConverter() {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentListMessageBodyWriter.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentListMessageBodyWriter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentListMessageBodyWriter.java
index f8fafe2..4dd6cc8 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentListMessageBodyWriter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentListMessageBodyWriter.java
@@ -37,8 +37,9 @@ import javax.ws.rs.ext.MessageBodyWriter;
 import javax.ws.rs.ext.Provider;
 
 import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
-import org.json.JSONArray;
-import org.json.JSONObject;
+
+import com.github.openjson.JSONArray;
+import com.github.openjson.JSONObject;
 
 @Provider
 @Produces({MediaType.APPLICATION_JSON})

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentMessageBodyWriter.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentMessageBodyWriter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentMessageBodyWriter.java
index 7a8d84c..d46e29a 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentMessageBodyWriter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentMessageBodyWriter.java
@@ -35,7 +35,8 @@ import javax.ws.rs.ext.MessageBodyWriter;
 import javax.ws.rs.ext.Provider;
 
 import org.apache.openmeetings.db.dto.calendar.AppointmentDTO;
-import org.json.JSONObject;
+
+import com.github.openjson.JSONObject;
 
 @Provider
 @Produces({MediaType.APPLICATION_JSON})

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
index b0793a0..f322801 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/util/AppointmentParamConverter.java
@@ -31,8 +31,9 @@ import org.apache.openmeetings.db.dto.calendar.MeetingMemberDTO;
 import org.apache.openmeetings.db.dto.room.RoomDTO;
 import org.apache.openmeetings.db.dto.user.UserDTO;
 import org.apache.openmeetings.db.entity.calendar.Appointment.Reminder;
-import org.json.JSONArray;
-import org.json.JSONObject;
+
+import com.github.openjson.JSONArray;
+import com.github.openjson.JSONObject;
 
 public class AppointmentParamConverter implements ParamConverter<AppointmentDTO> {
 	public static final String ROOT = "appointmentDTO";

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e6940fa5/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 5bc839f..3ee28d7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,9 +40,9 @@
 		<maven.javadoc.version>2.10.3</maven.javadoc.version>
 		<maven.surefire.version>2.19.1</maven.surefire.version>
 		<maven-site.version>3.3</maven-site.version>
-		<wicket.version>8.0.0-M4</wicket.version>
+		<wicket.version>8.0.0-M5</wicket.version>
 		<wicketju.version>8.0.0-M4.1</wicketju.version>
-		<wickets.version>8.0.0-M4</wickets.version>
+		<wickets.version>8.0.0-M5</wickets.version>
 		<red5-server.version>1.0.9-M6</red5-server.version>
 		<red5-client.version>1.0.9-M6</red5-client.version>
 		<spring.version>4.3.6.RELEASE</spring.version>


[25/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1616] chat is fixed to add messages to the bottom

Posted by so...@apache.org.
[OPENMEETINGS-1616] chat is fixed to add messages  to the bottom


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/1f274d12
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/1f274d12
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/1f274d12

Branch: refs/heads/3.2.x
Commit: 1f274d123b6866abf1eebffead4b59eb4567fad4
Parents: e6940fa
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Mar 30 05:13:05 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Mar 30 05:13:05 2017 +0000

----------------------------------------------------------------------
 .../openmeetings/web/user/chat/ChatPanel.html   |  8 ++---
 .../apache/openmeetings/web/user/chat/chat.js   | 33 ++++++++++++--------
 openmeetings-web/src/main/webapp/css/chat.css   | 10 +++---
 3 files changed, 29 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f274d12/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html
index 6ed210f..af7edeb 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatPanel.html
@@ -7,20 +7,20 @@
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at
-  
+
       http://www.apache.org/licenses/LICENSE-2.0
-  
+
   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
-  
+
 -->
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:panel>
-	<div id="chat" class="ui-state-default">
+	<div id="chatPopup" class="ui-state-default">
 		<div onclick="Chat.toggle();" class="control block clickable ui-widget-header ui-state-active"><div class="ui-icon ui-icon-caret-1-n sort-icon"></div><div class="label"><wicket:message key="244"/></div></div>
 		<div wicket:id="chat"></div>
 	</div>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f274d12/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
index 0ffeac6..ef43843 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
@@ -19,13 +19,12 @@
 var Chat = function() {
 	var chatTabs
 		, tabTemplate = "<li><a href='#{href}'>#{label}</a></li>"
-		, msgTemplate = "<div id='chat-msg-id-#{id}'><img class='profile' src='#{imgSrc}'/><span class='from' data-user-id='#{userId}'>#{from}</span><span class='date align-right'>#{sent}</span>#{msg}</div>"
+		, msgTemplate = "<div class='clear' id='chat-msg-id-#{id}'><img class='profile' src='#{imgSrc}'/><span class='from' data-user-id='#{userId}'>#{from}</span><span class='date align-right'>#{sent}</span>#{msg}</div>"
 		, acceptTemplate = "<div class='tick om-icon align-right clickable' data-msgid='#{msgid}' data-roomid='#{roomid}' onclick='var e=$(this);chatActivity('accept',e.data(\"roomid\"),e.data(\"msgid\"));e.parent().remove();'></div>"
 		, infoTemplate = "<div class='user om-icon align-right clickable' data-user-id='#{userId}' onclick='var e=$(this);showUserInfo(e.data(\"userId\"));'></div>"
 		, addTemplate = "<div class='add om-icon align-right clickable' data-user-id='#{userId}' onclick='var e=$(this);addContact(e.data(\"userId\"));'></div>"
 		, messageTemplate = "<div class='new-email om-icon align-right clickable' data-user-id='#{userId}' onclick='var e=$(this);privateMessage(e.data(\"userId\"));'></div>"
 		, inviteTemplate = "<div class='invite om-icon align-right clickable' data-user-id='#{userId}' onclick='var e=$(this);inviteUser(e.data(\"userId\"));'></div>"
-		, clearBlock = "<div class='clear'></div>"
 		, closeBlock = "<span class='ui-icon ui-icon-close' role='presentation'></span>"
 		, closedHeight = "20px"
 		, openedHeight = "345px"
@@ -90,7 +89,7 @@ var Chat = function() {
 			$('#chatPanel').resizable({
 				handles: "n, w"
 				, disabled: isClosed()
-				, alsoResize: "#chat, #chat .ui-tabs .ui-tabs-panel.messageArea"
+				, alsoResize: "#chatPopup, #chat .ui-tabs .ui-tabs-panel.messageArea"
 				, minHeight: 195
 				, minWidth: 260
 				, stop: function(event, ui) {
@@ -139,11 +138,12 @@ var Chat = function() {
 		, addMessage: function(m) {
 			if ($('#chat').length > 0 && m && m.type == "chat") {
 				if (isClosed()) {
-					$('#chat .control.block').addClass('ui-state-highlight');
+					$('#chatPopup .control.block').addClass('ui-state-highlight');
 					audio.play();
 				}
 				var msg, cm;
 				while (!!(cm = m.msg.pop())) {
+					var area = $('#' + cm.scope);
 					msg = $(msgTemplate.replace(/#\{id\}/g, cm.id)
 							.replace(/#\{userId\}/g, cm.from.id)
 							.replace(/#\{imgSrc\}/g, !!cm.from.img ? cm.from.img : './profile/' + cm.from.id + '?anticache=' + Date.now())
@@ -160,30 +160,37 @@ var Chat = function() {
 					if (cm.needModeration) {
 						msg.append(acceptTemplate.replace(/#\{msgid\}/g, cm.id).replace(/#\{roomid\}/g, cm.scope.substring(9)));
 					}
-					if (!$('#' + cm.scope).length) {
+					if (!area.length) {
 						this.addTab(cm.scope, cm.scopeName);
 					}
 					if (m.mode == "accept") {
 						$('#chat-msg-id-' + cm.id).remove();
 					}
-					msg.append(clearBlock);
-					$('#' + cm.scope).prepend(msg);
+					var btm = area.scrollTop() + area.innerHeight() >= area[0].scrollHeight;
+					area.append(msg);
+					if (btm) {
+						area.animate({
+							scrollTop: area[0].scrollHeight
+						}, 300);
+					}
 				}
 			}
 		}
 		, open: function() {
 			if (isClosed()) {
-				$('#chat .control.block .ui-icon').removeClass('ui-icon-caret-1-n').addClass('ui-icon-caret-1-s');
-				$('#chat .control.block').removeClass('ui-state-highlight');
-				$('#chatPanel, #chat').animate({height: openedHeight}, 1000);
+				$('#chatPopup .control.block .ui-icon').removeClass('ui-icon-caret-1-n').addClass('ui-icon-caret-1-s');
+				$('#chatPopup .control.block').removeClass('ui-state-highlight');
+				$('#chatPanel, #chatPopup').animate({height: openedHeight}, 1000);
 				$('#chatPanel').resizable("option", "disabled", false);
+				$('#chat .messageArea').each(function(idx) {
+					$(this).scrollTop($(this)[0].scrollHeight);
+				});
 			}
 		}
 		, close: function() {
 			if (!isClosed()) {
-				$('#chat .control.block .ui-icon').removeClass('ui-icon-caret-1-s').addClass('ui-icon-caret-1-n');
-				$('#chatPanel').animate({height: closedHeight}, 1000);
-				$('#chatPanel, #chat').animate({height: closedHeight}, 1000);
+				$('#chatPopup .control.block .ui-icon').removeClass('ui-icon-caret-1-s').addClass('ui-icon-caret-1-n');
+				$('#chatPanel, #chatPopup').animate({height: closedHeight}, 1000);
 				$('#chatPanel').resizable("option", "disabled", true);
 			}
 		}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1f274d12/openmeetings-web/src/main/webapp/css/chat.css
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/chat.css b/openmeetings-web/src/main/webapp/css/chat.css
index a07700f4..a837b31 100644
--- a/openmeetings-web/src/main/webapp/css/chat.css
+++ b/openmeetings-web/src/main/webapp/css/chat.css
@@ -24,10 +24,10 @@
 	width: 600px;
 	height: 20px;
 }
-#chatPanel #chat {
+#chatPanel #chatPopup {
 	height: 20px;
 }
-##chat .btn-toolbar {
+#chat .btn-toolbar {
 	margin-top: 2px;
 	margin-bottom: 0;
 	margin-left: 5px;
@@ -48,10 +48,10 @@
 	padding: 2px .5em;
 	float: left;
 }
-#chat .control.block .ui-icon {
+#chatPopup .control.block .ui-icon {
 	text-align: center;
 }
-#chat .control.block .label {
+#chatPopup .control.block .label {
 	display: inline-block;
 	padding-left: 20px;
 }
@@ -73,7 +73,7 @@
 .ui-tabs .ui-tabs-panel.messageArea {
 	height: 165px;
 	overflow-y: auto;
-	padding: 5px;
+	padding: 0 5px;
 }
 #chatMessage .wysiwyg-editor {
 	height: 70px;


[19/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1610] couple of NPE are fixed

Posted by so...@apache.org.
[OPENMEETINGS-1610] couple of NPE are fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/7a3bd07a
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/7a3bd07a
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/7a3bd07a

Branch: refs/heads/3.2.x
Commit: 7a3bd07aab928b015687b03356a34f6ead6ac5f5
Parents: 5632901
Author: Maxim Solodovnik <so...@apache.org>
Authored: Sat Mar 25 08:15:19 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Sat Mar 25 08:15:19 2017 +0000

----------------------------------------------------------------------
 .../openmeetings/service/quartz/scheduler/CleanupJob.java       | 5 ++++-
 .../openmeetings/web/user/calendar/AppointmentDialog.java       | 2 +-
 2 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7a3bd07a/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
----------------------------------------------------------------------
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
index 344a0c1..400cb83 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
@@ -168,7 +168,10 @@ public class CleanupJob extends AbstractJob {
 		processExpiringRecordings(true, (rec, days) -> {
 			if (days < 0) {
 				log.debug("cleanExpiredRecordings:: following recording will be deleted {}", rec);
-				rec.getFile(EXTENSION_MP4).delete();
+				File f = rec.getFile(EXTENSION_MP4);
+				if (f != null && f.exists()) {
+					f.delete();
+				}
 				recordingDao.delete(rec);
 			}
 		});

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7a3bd07a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
index ffaf4cd..976a206 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
@@ -496,7 +496,7 @@ public class AppointmentDialog extends AbstractFormDialog<Appointment> {
 
 		@Override
 		protected void onValidate() {
-			if (null != end.getConvertedInput() && null != end.getConvertedInput() && end.getConvertedInput().isBefore(start.getConvertedInput())) {
+			if (null != start.getConvertedInput() && null != end.getConvertedInput() && end.getConvertedInput().isBefore(start.getConvertedInput())) {
 				error(Application.getString(1592));
 			}
 		}


[06/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1603] should be fixed

Posted by so...@apache.org.
[OPENMEETINGS-1603] should be fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/dc705d0c
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/dc705d0c
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/dc705d0c

Branch: refs/heads/3.2.x
Commit: dc705d0cd2e85354235d9558f042da7886ff642e
Parents: 6360e96
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Mar 16 03:45:20 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Mar 16 03:45:20 2017 +0000

----------------------------------------------------------------------
 .../apache/openmeetings/db/dao/file/FileExplorerItemDao.java    | 5 ++++-
 .../org/apache/openmeetings/web/common/tree/OmTreeProvider.java | 4 ++--
 2 files changed, 6 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/dc705d0c/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
index f019ce5..91251f6 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java
@@ -129,7 +129,10 @@ public class FileExplorerItemDao {
 	}
 
 	public List<FileExplorerItem> getByParent(Long parentId, List<Type> filter) {
-		log.debug("getByParent() started");
+		if (filter == null) {
+			return getByParent(parentId);
+		}
+		log.debug("getByParent(filter) started");
 		return em.createNamedQuery("getFilesFilteredByParent", FileExplorerItem.class)
 				.setParameter("filter", filter)
 				.setParameter("parentId", parentId)

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/dc705d0c/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
index d49598a..e81dd3c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
@@ -147,12 +147,12 @@ public class OmTreeProvider implements ITreeProvider<FileItem> {
 				if (node.getRoomId() != null) {
 					_list = dao.getByRoom(node.getRoomId());
 				} else if (node.getGroupId() != null) {
-					_list = dao.getByGroup(node.getGroupId(), roomId == null ? VIDEO_TYPES : null);
+					_list = dao.getByGroup(node.getGroupId(), /*roomId == null ? VIDEO_TYPES : */null);
 				} else {
 					_list = dao.getByOwner(node.getOwnerId());
 				}
 			} else {
-				_list = dao.getByParent(id, roomId == null ? VIDEO_TYPES : null);
+				_list = dao.getByParent(id, /*roomId == null ? VIDEO_TYPES : */null);
 			}
 			list.addAll(_list);
 		}


[40/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1624] file upload should work in IE11

Posted by so...@apache.org.
[OPENMEETINGS-1624] file upload should work in IE11


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/b40d794e
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/b40d794e
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/b40d794e

Branch: refs/heads/3.2.x
Commit: b40d794eae6d46d2e66ead295b84bc55b8f31415
Parents: 3dc27be
Author: Maxim Solodovnik <so...@apache.org>
Authored: Sat Apr 8 10:25:17 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Sat Apr 8 10:25:17 2017 +0000

----------------------------------------------------------------------
 .../apache/openmeetings/web/room/SwfPanel.html  |  7 ++--
 .../apache/openmeetings/web/room/SwfPanel.java  | 37 +++++++++++++++-----
 .../openmeetings/web/room/swf-functions.js      |  2 +-
 .../apache/openmeetings/web/user/chat/chat.js   | 11 ++++--
 4 files changed, 41 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b40d794e/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html
index 9addd3b..fc318ca 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.html
@@ -7,16 +7,16 @@
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at
-  
+
       http://www.apache.org/licenses/LICENSE-2.0
-    	  
+
   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
-  
+
 -->
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:head>
@@ -44,6 +44,5 @@
 		<img src="images/ajax-loader.gif" />
 	</div>
 	<noscript>Please enable JavaScript in order to use this application.</noscript>
-	<script type="text/javascript" wicket:id="init"></script>
 </wicket:panel>
 </html>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b40d794e/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
index 57cc928..5d92663 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/SwfPanel.java
@@ -38,12 +38,14 @@ import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.BasePanel;
 import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
+import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
 import org.apache.wicket.markup.head.PriorityHeaderItem;
-import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.protocol.http.ClientProperties;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
@@ -65,7 +67,20 @@ public class SwfPanel extends BasePanel {
 	public static final String PARAM_URL = "url";
 	public static final String SWF_TYPE_NETWORK = "network";
 	public static final String SWF_TYPE_SETTINGS = "settings";
+	private final PageParameters pp;
 	private Long roomId = null;
+	private final AbstractDefaultAjaxBehavior panelLoaded = new AbstractDefaultAjaxBehavior() {
+		private static final long serialVersionUID = 1L;
+
+		@Override
+		protected void respond(AjaxRequestTarget target) {
+			PageParameters spp = new PageParameters(pp);
+			if (roomId != null) {
+				spp.mergeWith(new PageParameters().add(WICKET_ROOM_ID, roomId));
+			}
+			target.appendJavaScript(getInitFunction(spp));
+		}
+	};
 
 	public SwfPanel(String id) {
 		this(id, new PageParameters());
@@ -77,6 +92,7 @@ public class SwfPanel extends BasePanel {
 
 	public SwfPanel(String id, PageParameters pp) {
 		super(id);
+		this.pp = pp;
 		//OK let's find the room
 		try {
 			StringValue room = pp.get(WICKET_ROOM_ID);
@@ -86,12 +102,12 @@ public class SwfPanel extends BasePanel {
 		} catch (Exception e) {
 			//no-op
 		}
-		PageParameters spp = new PageParameters(pp);
-		if (roomId != null) {
-			spp.mergeWith(new PageParameters().add(WICKET_ROOM_ID, roomId));
-		}
-		add(new Label("init", getInitFunction(spp)).setEscapeModelStrings(false));
-		add(new AbstractAjaxTimerBehavior(Duration.minutes(5)) {
+	}
+
+	@Override
+	protected void onInitialize() {
+		super.onInitialize();
+		add(panelLoaded, new AbstractAjaxTimerBehavior(Duration.minutes(5)) {
 			private static final long serialVersionUID = 1L;
 
 			@Override
@@ -114,6 +130,7 @@ public class SwfPanel extends BasePanel {
 		if (WebSession.get().getClientInfo().getProperties().isBrowserMozillaFirefox()) {
 			response.render(new PriorityHeaderItem(CssHeaderItem.forCSS(".ui-widget-overlay{opacity: 1 !important;}", "ff-veil-hack")));
 		}
+		response.render(OnDomReadyHeaderItem.forScript(panelLoaded.getCallbackScript()));
 	}
 
 	public String getInitFunction(PageParameters pp) {
@@ -143,8 +160,10 @@ public class SwfPanel extends BasePanel {
 						, "775", "452", "767", "764", "765", "918", "54", "761", "762", "144", "203", "642"
 						, "save.success");
 			}
-			initStr = String.format("var labels = %s; initSwf(%s);", lbls
-					, new JSONObject().put("src", swf + new PageParametersEncoder().encodePageParameters(pp)).toString());
+			JSONObject options = new JSONObject().put("src", swf + new PageParametersEncoder().encodePageParameters(pp));
+			ClientProperties cp = WebSession.get().getClientInfo().getProperties();
+			options.put("wmode", cp.isBrowserInternetExplorer() && cp.getBrowserVersionMajor() == 11 ? "opaque" : "direct");
+			initStr = String.format("var labels = %s; initSwf(%s);", lbls, options.toString());
 		}
 		return initStr;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b40d794e/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/swf-functions.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/swf-functions.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/swf-functions.js
index aa84eba..5ecc512 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/swf-functions.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/swf-functions.js
@@ -31,7 +31,7 @@ function initSwf(_options) {
 		.attr('quality', 'high')
 		.attr('bgcolor', options.bgcolor)
 		.attr('src', "public/" + options.src)
-		.attr('wmode', 'direct')
+		.attr('wmode', options.wmode)
 		.attr('allowfullscreen', true)
 		.attr('width', options.width).attr('height', options.height)
 		.attr('id', 'lzapp')

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b40d794e/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
index 570d33e..ca6548d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat.js
@@ -33,9 +33,16 @@ var Chat = function() {
 		, emoticon = new CSSEmoticon()
 		, typingTimer
 		, doneTypingInterval = 5000 //time in ms, 5 second for example
-		, audio = new Audio('./public/chat_message.mp3');
+		, audio
 		;
-
+	try {
+		audio = new Audio('./public/chat_message.mp3');
+	} catch (e) {
+		//not implemented in IE
+		audio = {
+			play: function() {}
+		};
+	}
 	function doneTyping () {
 		typingTimer = null;
 		chatActivity('typing_stop', $('.room.box').data('room-id'));


[30/50] [abbrv] openmeetings git commit: no jira: Our Users list is updated

Posted by so...@apache.org.
no jira: Our Users list is updated


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/acdbe13c
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/acdbe13c
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/acdbe13c

Branch: refs/heads/3.2.x
Commit: acdbe13c1068a43a7b152952e1448f30aba5f5c2
Parents: 5149de4
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Mar 31 08:49:43 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Mar 31 08:49:43 2017 +0000

----------------------------------------------------------------------
 openmeetings-server/src/site/xdoc/OurUsers.xml | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/acdbe13c/openmeetings-server/src/site/xdoc/OurUsers.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/OurUsers.xml b/openmeetings-server/src/site/xdoc/OurUsers.xml
index 222e95e..88aba38 100644
--- a/openmeetings-server/src/site/xdoc/OurUsers.xml
+++ b/openmeetings-server/src/site/xdoc/OurUsers.xml
@@ -23,7 +23,9 @@
 
 	<body>
 		<section name="List companies/institutions using OpenMeetings">
-			<p></p>
+			<p>If you also want to get listed, please write to <a href="mail-lists.html">user@/dev@ mailing list</a> (you need to subscribe first)<br/>
+			 with subject "Add entry in 'Our Users' list". <br/>
+			 And following information in the body: company/institution|city|country|type.'</p>
 			<table>
 				<tr>
 					<th> company/institution </th>
@@ -32,8 +34,8 @@
 					<th> type </th>
 				</tr>
 				<tr>
-					<td> Schulnetz Koblenz </td>
-					<td> Koblenz </td>
+					<td> Beuth Hochschule f�r Technik </td>
+					<td> Berlin </td>
 					<td> Germany </td>
 					<td> edu </td>
 				</tr>
@@ -44,14 +46,14 @@
 					<td> edu </td>
 				</tr>
 				<tr>
-					<td> VCRP - Virtueller Campus Rheinland Pfalz </td>
-					<td> Kaiserslautern </td>
+					<td> Schulnetz Koblenz </td>
+					<td> Koblenz </td>
 					<td> Germany </td>
 					<td> edu </td>
 				</tr>
 				<tr>
-					<td> Beuth Hochschule f�r Technik </td>
-					<td> Berlin </td>
+					<td> VCRP - Virtueller Campus Rheinland Pfalz </td>
+					<td> Kaiserslautern </td>
 					<td> Germany </td>
 					<td> edu </td>
 				</tr>


[03/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1601] drop recordings to WB seems to work

Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java
deleted file mode 100644
index 8657a24..0000000
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.db.dto.room;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-
-public class WhiteboardObject {
-	private static final Logger log = Red5LoggerFactory.getLogger(WhiteboardObject.class, webAppRootKey);
-	private long whiteBoardId;
-	private Integer x = 0;
-	private Integer y = 0;
-	private Integer zoom = 100;
-	private Boolean fullFit = true;
-	private Map<String, List<Object>> roomItems = new ConcurrentHashMap<>();
-	private Date created = new Date();
-	private int zIndex = 1;
-	private String name;
-
-	public WhiteboardObject() {}
-
-	public WhiteboardObject(String name) {
-		this.name = name;
-	}
-
-	public long getWhiteBoardId() {
-		return whiteBoardId;
-	}
-
-	public void setWhiteBoardId(long whiteBoardId) {
-		this.whiteBoardId = whiteBoardId;
-	}
-
-	public Integer getX() {
-		return x;
-	}
-
-	public void setX(Integer x) {
-		this.x = x;
-	}
-
-	public Integer getY() {
-		return y;
-	}
-
-	public void setY(Integer y) {
-		this.y = y;
-	}
-
-	public Date getCreated() {
-		return created;
-	}
-
-	public void setCreated(Date created) {
-		this.created = created;
-	}
-
-	public Integer getZoom() {
-		return zoom;
-	}
-
-	public void setZoom(Integer zoom) {
-		this.zoom = zoom;
-	}
-
-	public Boolean getFullFit() {
-		return fullFit;
-	}
-
-	public void setFullFit(Boolean fullFit) {
-		this.fullFit = fullFit;
-	}
-
-	public void clear() {
-		roomItems.clear();
-		zIndex = 1;
-	}
-
-	//getter is required, otherwise roomItems are not available in red5
-	public Map<String, List<Object>> getRoomItems() {
-		return roomItems;
-	}
-
-	public void add(String oid, List<Object> actionObject) {
-		Object type = actionObject.size() > 0 ? actionObject.get(0) : "";
-		if (actionObject.size() > 8 && ("swf".equals(type) || "image".equals(type) || "flv".equals(type))) {
-			Integer zInd = (Integer)actionObject.get(actionObject.size() - 8);
-			if (zInd == null || zInd == 0 || zInd < zIndex) {
-				actionObject.set(actionObject.size() - 8, zIndex++);
-			}
-		}
-		roomItems.put(oid, actionObject);
-	}
-
-	public List<Object> get(String oid) {
-		return roomItems.get(oid);
-	}
-
-	public Set<Entry<String, List<Object>>> entrySet() {
-		return roomItems.entrySet();
-	}
-
-	public void remove(Object oid) {
-		roomItems.remove(oid);
-	}
-
-	public void remove(List<Object> actionObject) {
-		String oid = actionObject.get(actionObject.size() - 1).toString();
-		String type = actionObject.get(0).toString();
-		log.debug("Removal of object: oid = {}, type = {} ", oid, type);
-
-		/* I believe this is redundant
-		// Re-Index all items in its zIndex
-		if (type.equals("ellipse")
-				|| type.equals("drawarrow")
-				|| type.equals("line")
-				|| type.equals("paint")
-				|| type.equals("rectangle")
-				|| type.equals("uline")
-				|| type.equals("image")
-				|| type.equals("letter")
-				|| type.equals("clipart")
-				|| type.equals("swf")
-				|| type.equals("mindmapnode")
-				|| type.equals("flv")) {
-
-			Integer zIndex = Integer.valueOf(actionObject.get(actionObject.size() - 8).toString());
-
-			log.debug("1|zIndex " + zIndex);
-			log.debug("2|zIndex " + actionObject.get(actionObject.size() - 8).toString());
-			log.debug("3|zIndex " + actionObject.get(actionObject.size() - 8));
-
-			int l = 0;
-			for (Object o : actionObject) {
-				log.debug("4|zIndex " + l + " -- " + o);
-				l++;
-			}
-
-			for (Entry<String, List<Object>> e : roomItems.entrySet()) {
-				List<Object> actionObjectStored = e.getValue();
-
-				Integer zIndexStored = Integer.valueOf(actionObjectStored.get(actionObjectStored.size() - 8).toString());
-
-				log.debug("zIndexStored|zIndex " + zIndexStored + "|" + zIndex);
-
-				if (zIndexStored >= zIndex) {
-					zIndexStored -= 1;
-					log.debug("new-zIndex " + zIndexStored);
-				}
-				actionObjectStored.set(actionObjectStored.size() - 8, zIndexStored);
-			}
-		}
-		*/
-		roomItems.remove(oid);
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObjectList.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObjectList.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObjectList.java
deleted file mode 100644
index 1858512..0000000
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObjectList.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.db.dto.room;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-public class WhiteboardObjectList {
-	private Long roomId;
-	private Map<Long, WhiteboardObject> whiteboardObjects = new ConcurrentHashMap<>();
-
-	public WhiteboardObjectList() {}
-
-	public Long getRoomId() {
-		return roomId;
-	}
-
-	public void setRoomId(Long roomId) {
-		this.roomId = roomId;
-	}
-
-	public Map<Long, WhiteboardObject> getWhiteboardObjects() {
-		return whiteboardObjects;
-	}
-
-	public void setWhiteboardObjects(Map<Long, WhiteboardObject> whiteboardObjects) {
-		this.whiteboardObjects = whiteboardObjects;
-	}
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboards.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboards.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboards.java
new file mode 100644
index 0000000..5d14211
--- /dev/null
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboards.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.db.dto.room;
+
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class Whiteboards {
+	private Long roomId;
+	private final String uid = UUID.randomUUID().toString();
+	private Map<Long, Whiteboard> whiteboards = new ConcurrentHashMap<>();
+
+	public Whiteboards() {}
+
+	public Long getRoomId() {
+		return roomId;
+	}
+
+	public void setRoomId(Long roomId) {
+		this.roomId = roomId;
+	}
+
+	public Map<Long, Whiteboard> getWhiteboards() {
+		return whiteboards;
+	}
+
+	public void setWhiteboards(Map<Long, Whiteboard> whiteboards) {
+		this.whiteboards = whiteboards;
+	}
+
+	public String getUid() {
+		return uid;
+	}
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawObject.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawObject.lzx b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawObject.lzx
index 434b755..271a536 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawObject.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawObject.lzx
@@ -7,16 +7,16 @@
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at
-  
+
       http://www.apache.org/licenses/LICENSE-2.0
-  
+
   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
-  
+
 -->
 <library>
 
@@ -25,7 +25,7 @@
 	<attribute name="newSlideNumber" value="1" type="number" />
 	<attribute name="fullFit" value="true" type="boolean" />
 
-	<!-- 
+	<!--
 		Invoked by the Library directly
 		Loads a SWFPresenation to the whiteBoard
 	 -->
@@ -48,17 +48,17 @@
 	<method name="setCurrentScaleByFullFit" args="scaleFactor">
 	<![CDATA[
 		var tScale = Math.round(scaleFactor*100);
-		
+
 		this.getDisplayObject().scaleX = scaleFactor;
 		this.getDisplayObject().scaleY = scaleFactor;
-		
+
 		this.setAttribute("x",0);
 		this.setAttribute("y",0);
-		
+
 		//Already send by x,y change
 		//this.onupdateScale.sendEvent(null);
 		if ($debug) Debug.write("setCurrentScaleByFullFit -1- ",tScale);
-		
+
 		parent.parent.zoombox.setCurrentScaleByFullFit(tScale);
 	]]>
 	</method>
@@ -67,37 +67,37 @@
 	<![CDATA[
 		if (canvas.ismoderator) {
 			if ($debug) Debug.write("doUpdateFullFit ",fullFit,zoom);
-		
+
 			var actionObject = new Array();
 			actionObject.push("whiteboardObj");
 			actionObject.push(fullFit);
-			
+
 			this.doFullFit(fullFit);
-			
+
 			actionObject.push(this.getDisplayObject().scaleX * 100);
-			
+
 			if ($debug) Debug.write("doUpdateFullFit ",fullFit,this.getDisplayObject().scaleX);
 			this.onsharedMessage('whiteboardObj',actionObject);
-		}	
+		}
 	]]>
 	</method>
 
 	<method name="doUpdateZoom" args="fullFit,zoom">
 	<![CDATA[
 		if ($debug) Debug.write("doUpdateZoom ",this.fullFit,zoom);
-		
+
 		this.getDisplayObject().scaleX = zoom / 100;
 		this.getDisplayObject().scaleY = zoom / 100;
-		
+
 		if ($debug) Debug.write("doUpdateZoom is moderator ", canvas.ismoderator);
 		if (canvas.ismoderator) {
 			var actionObject = new Array();
 			actionObject.push("whiteboardObj");
 			actionObject.push(fullFit);
 			actionObject.push(zoom);
-		
+
 			this.onupdateScale.sendEvent(null);
-			this.onsharedMessage('whiteboardObj',actionObject);	
+			this.onsharedMessage('whiteboardObj',actionObject);
 		}
 	]]>
 	</method>
@@ -108,7 +108,7 @@
 		if ($debug) Debug.write("doUpdateFullFitAndZoomRemote ",actionObject[1],actionObject[2]);
 
 		this.doFullFit(actionObject[1]);
-		
+
 		if (!actionObject[1]) {
 			this.getDisplayObject().scaleX = actionObject[2] / 100;
 			this.getDisplayObject().scaleY = actionObject[2] / 100;
@@ -120,9 +120,9 @@
 	<method name="doFullFit" args="v">
 	<![CDATA[
 		if ($debug) Debug.write("Do Full Fit ? doFullFit: ", v, this.ObjectByName);
-	
+
 		this.fullFit = v;
-		if (!!this.ObjectByName && this.ObjectByName.typeOfObject == "swf") {	
+		if (!!this.ObjectByName && this.ObjectByName.typeOfObject == "swf") {
 			if (v) {
 				if ($debug) Debug.write("Do Full Fit ! ", (!!this.ObjectByName._swfView));
 				if (!!this.ObjectByName._swfView) {
@@ -145,23 +145,23 @@
 				this.doDocumentAction('setSlideNumber');
 				return true;
 			}
-		} 
+		}
 		return false;
 	]]>
 	</method>
 
 	<!--
 		alterModus => this is added by the mod not remotely
-		
+
 		adds the SWF-Object to the Layer
 	 -->
 	<method name="addPresentationToLayer" args="obj,urlName,nameing,posx,posy,width,height,alterModus,baseurl,fileName,moduleName,parentPath,room,domain,slideNumber,currentzoom,innerwidth,innerheight,innerx,innery,uniqueObjectSyncName,standardFileName,fullFit">
 	<![CDATA[
 		if ($debug) Debug.write("addPresentationToLayer", standardFileName);
-		
-		var downloadurl = canvas.getUrl() + urlName + "?uid=" + canvas.publicSID;
+
+		var downloadurl = canvas.getUrl() + urlName + "&uid=" + canvas.publicSID;
 		if ($debug) Debug.write("addPresentationToLayer:: downloadurl=", downloadurl);
-		
+
 		this.currentlayer = new lz.swfResourceView(obj,{refObj:this,name:nameing,
 			x:posx,y:posy,alterModus:alterModus,
 			baseurl:baseurl,fileName:fileName,moduleName:moduleName,parentPath:parentPath,
@@ -190,7 +190,7 @@
 			actionObject[17],actionObject[18],actionObject[19]);
 	</method>
 
-	<!-- 
+	<!--
 		Invoked by the remote Host, see sendWatchObject in baseDraw.lzx
 	 -->
 	<method name="addSWFToLayerHistorySynced" args="actionObject,refObj">
@@ -207,8 +207,8 @@
 			actionObject[9],actionObject[10],actionObject[17],actionObject[18],actionObject[19]);
 	</method>
 
-	<!--- 
-		invoke by the initial Loading process in remoteWhiteboard.lzx, 
+	<!---
+		invoke by the initial Loading process in remoteWhiteboard.lzx,
 		does not invoke any Update Handler
 		once this object is loaded, it will throw an Update event of kind
 		addSWFToLayerHistoryToLocalLoaded
@@ -336,22 +336,22 @@
 			} else if (action=="doc_last"){
 				this.ObjectByName._swfView.setAttribute('frame',(this.ObjectByName._swfView.totalframes));
 			} else if (action=="doc_zoom_minus"){
-				
+
 				if ($debug) Debug.write("doc_zoom_minus ");
 				return;
-				
-				this.ObjectByName.currentzoomFactor-=this.ObjectByName.zoomlevel;	   
+
+				this.ObjectByName.currentzoomFactor-=this.ObjectByName.zoomlevel;
 				var newwidth = (this.ObjectByName.initwidth/100)*this.ObjectByName.currentzoomFactor;
 				var newheight = (this.ObjectByName.initheight/100)*this.ObjectByName.currentzoomFactor;
 				this.ObjectByName._swfView.setAttribute('width',newwidth);
 				this.ObjectByName._swfView.setAttribute('height',newheight);
 				this.boundingref.doSetInnerObjectsBounds(newwidth,newheight);
 			} else if (action=="doc_zoom_plus"){
-				
+
 				if ($debug) Debug.write("doc_zoom_plus ");
 				return;
-				
-				this.ObjectByName.currentzoomFactor+=this.ObjectByName.zoomlevel;	   
+
+				this.ObjectByName.currentzoomFactor+=this.ObjectByName.zoomlevel;
 				//Debug.write("doc_zoom_plus 1",this.ObjectByName.currentzoomFactor,this.ObjectByName.zoomlevel);
 				var newwidth = (this.ObjectByName.initwidth/100)*this.ObjectByName.currentzoomFactor;
 				var newheight = (this.ObjectByName.initheight/100)*this.ObjectByName.currentzoomFactor;
@@ -370,9 +370,9 @@
 			}
 			this.ObjectByName.slideNumber =  this.ObjectByName._swfView.frame;
 			this.doUpdateDocumentToolBar();
-			
+
 			if ($debug) Debug.info("doDocumentAction :2: sendCurrentSWFObject");
-			
+
 			this.sendCurrentSWFObject(this.ObjectByName);
 		}
 	]]>
@@ -419,7 +419,7 @@
 	<![CDATA[
 		var p = 0, t = 0;
 		if (this["ObjectByName"] && this.ObjectByName != null && this.ObjectByName._swfView) {
-			if ($debug) Debug.warn("doUpdateDocumentToolBar ", this.ObjectByName.fullFit);
+			//if ($debug) Debug.warn("doUpdateDocumentToolBar ", this.ObjectByName.fullFit);
 			p = this.ObjectByName._swfView.frame;
 			t = this.ObjectByName._swfView.totalframes;
 		}
@@ -467,21 +467,21 @@
 				this.baseactionobjectList[eg][16] = objRef.currentzoomFactor;
 				this.baseactionobjectList[eg][19] = objRef.fullFit;
 				var newA = this.baseactionobjectList[eg];
-				if (newA[0]=='paint') newA[1] = new Array();				
-				this.onsharedMessage('swf',newA);	
+				if (newA[0]=='paint') newA[1] = new Array();
+				this.onsharedMessage('swf',newA);
 				if (sendSlideObjectUpdate) {
 					this.updateObjectsToSlideNumber(this.baseactionobjectList[eg]);
 				}
 				break;
 			}
-		}	
+		}
 	]]>
 	</method>
 
 	<method name="remoteObjectUpdate" args="lastactionObject">
 	<![CDATA[
 		var obj = this.getObjectByName(lastactionObject[lastactionObject.length-1]);
-		
+
 		if ($debug) Debug.write("remoteObjectUpdate :: ",obj.fullFit);
 		obj._swfView.doSendChangeValue = false;
 		var sendSlideObjectUpdate = false;
@@ -494,21 +494,21 @@
 		obj._swfView.setAttribute('width',lastactionObject[11]);
 		obj._swfView.setAttribute('height',lastactionObject[12]);
 		obj.fullFit = lastactionObject[19];
-		
+
 		if ($debug) Debug.write("DO initialLoadFullFit ?? ",obj.fullFit);
-		
+
 		if (obj.fullFit) {
 			if ($debug) Debug.write("DO initialLoadFullFit !! ");
 			obj._swfView.initialLoadFullFit();
 		}
-		
+
 		obj._swfView.setAttribute('frame',obj.slideNumber);
 		obj._swfView.doSendChangeValue = true;
-		
+
 		this.doUpdateDocumentToolBarByParticipant(obj.name);
-		
+
 		this.remoteUpdateBaseObjectList(lastactionObject);
-		
+
 		if (sendSlideObjectUpdate) {
 			this.updateObjectsToSlideNumber(lastactionObject);
 		}
@@ -523,14 +523,14 @@
 				this.baseactionobjectList[eg] = actionObject;
 				break;
 			}
-		}	
+		}
 	]]>
 	</method>
 
 	<method name="playVideoSynced" args="fileId,fileName,flv_width,flv_height">
 	<![CDATA[
 		if ($debug) Debug.write("playVideoSynced : ", fileId,fileName,flv_width,flv_height);
-	
+
 		var tName = 'flv'+this.getCounter();
 		this.currentlayer = new lz.whiteboardVideoPlayer(this,{
 										name:tName,
@@ -540,14 +540,14 @@
 										flv_width:flv_width,
 										flv_height:flv_height
 									});
-		this.layers.push(this.currentlayer);  
+		this.layers.push(this.currentlayer);
 	]]>
 	</method>
 
 	<method name="sendNewVideoRemote" args="refObj">
 	<![CDATA[
 		if ($debug) Debug.write("sendNewVideoRemote : ",refObj.fileId,refObj.title);
-	
+
 		this.flvregisterFinal(refObj.name,refObj.x,refObj.y,refObj.width,refObj.height,
 											refObj.fileId,refObj.title,
 											false, //isPlaying
@@ -579,20 +579,18 @@
 
 	<method name="drawFlvToHistory" args="lastActionObject,parentView">
 	<![CDATA[
-		if ($debug) Debug.write("drawFlvToHistory PLAY :: ",lastActionObject[3]);
-	
+		//if ($debug) Debug.write("drawFlvToHistory POSTER :: ", lastActionObject[3]);
+
 		this.currentlayer = new lz.whiteboardVideoPlayer(this,{
 										name:lastActionObject[lastActionObject.length-1],
 										fileId:lastActionObject[1],
-										title:lastActionObject[2],
+										title: lastActionObject[2],
+										posterUrl: lastActionObject[3],
 										flv_width:lastActionObject[4],
 										flv_height:lastActionObject[5],
 										hash:lastActionObject[7]
 									});
-		if (lastActionObject[3]) {
-			this.currentlayer.playRemote();
-		}
-		this.layers.push(this.currentlayer);  
+		this.layers.push(this.currentlayer);
 	]]>
 	</method>
 
@@ -601,10 +599,10 @@
 		for (var eg=0;eg<this.baseactionobjectList.length;eg++){
 			if (this.baseactionobjectList[eg][this.baseactionobjectList[eg].length-1]==refObj.name) {
 				this.baseactionobjectList[eg][3] = play;
-				
+
 				if ($debug) Debug.write("playFLV :: ",this.baseactionobjectList[eg]);
 				this.onsharedMessage('flv',this.baseactionobjectList[eg]);
-				
+
 				break;
 			}
 		}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/whiteboardVideoPlayer.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/whiteboardVideoPlayer.lzx b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/whiteboardVideoPlayer.lzx
index 413d1fb..9ccfa26 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/whiteboardVideoPlayer.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/whiteboardVideoPlayer.lzx
@@ -7,110 +7,98 @@
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at
-  
+
 	  http://www.apache.org/licenses/LICENSE-2.0
-		  
+
   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
-  
+
 -->
 <library>
 
-<class name="whiteboardVideoPlayer" extends="labelExplorerBox" allowDragging="false" 
-		docking="false" resizeable="false" closable="false" 
+<class name="whiteboardVideoPlayer" extends="labelExplorerBox" allowDragging="false"
+		docking="false" resizeable="false" closable="false"
 		x="0" y="0" width="${ parent.width }" height="${ parent.height - 10 }">
-	
+
 	<attribute name="fileId" value="0" type="number" />
 	<attribute name="timerDelegateStarted" value="false" type="boolean" />
 	<attribute name="deltaInSeconds" value="0" type="number" />
-	<attribute name="currentTime" value="0" type="number" /> 	
+	<attribute name="currentTime" value="0" type="number" />
 	<attribute name="recordingName" value="" type="string" />
 	<attribute name="hash" value="" type="string" />
+	<attribute name="posterUrl" value="" type="string" />
 	<attribute name="isLoaded" value="false" type="boolean" />
 	<attribute name="sendInit" value="false" type="boolean" />
-	<attribute name="flv_width" value="0" type="number" /> 
-	<attribute name="flv_height" value="0" type="number" /> 
+	<attribute name="flv_width" value="0" type="number" />
+	<attribute name="flv_height" value="0" type="number" />
 	<attribute name="isPaused" value="true" type="boolean" />
 	<handler name="oninit">
+	<![CDATA[
 		if ($debug) Debug.write("whiteboardVideoPlayer :: ",this.fileId);
-		
+
 		this.recordingName = hash + ".mp4";
 		calcVideoWidthHeight();
-		this.copyFileToCurrentRoom.doCall();
+
+		this.isLoaded = true;
+
+		this._content._preview.imagePreview.setAttribute("src", canvas.getUrl() + posterUrl
+				 + '&uid=' + canvas.publicSID);
+		this._content._preview.bringToFront();
+
+		if (this.sendInit) {
+			parent.sendNewVideoRemote(this);
+		}
+	]]>
 	</handler>
-	
+
 	<handler name="prepareForDelete" args="tRef">
 		if ($debug) Debug.write("--- prepareForDelete ");
 		this.stopStream();
 	</handler>
-	
+
 	<handler name="onclose">
 		this.stopStreamPlay();
 	</handler>
-	
+
 	<handler name="onwidth" args="w">
 		calcVideoWidthHeight();
 	</handler>
-	
+
 	<handler name="onheight" args="h">
 		calcVideoWidthHeight();
 	</handler>
-	
-	<!--
-	public Long copyFileToCurrentRoom(String SID, Long flvFileExplorerId)
-	 -->
-	<netRemoteCallHib name="copyFileToCurrentRoom" funcname="fileservice.copyFileToCurrentRoom" 
-		remotecontext="$once{ canvas.thishib }" > 
-		<netparam><method name="getValue">return canvas.sessionId;</method></netparam>
-		<netparam><method name="getValue">return parent.parent.fileId;</method></netparam>
-		<handler name="ondata" args="value">
-		<![CDATA[	
-			if ($debug) Debug.write("deleteFileOrFolder: ",value);
-			parent.isLoaded = true;
-			
-			var downloadurl = canvas.getUrl() + 'room/file/' + parent.fileId + '?uid='
-				+ canvas.publicSID + '&preview=true';
-			parent._content._preview.imagePreview.setAttribute("src", downloadurl)
-			parent._content._preview.bringToFront();
-
-			if (parent.sendInit) {
-				parent.parent.sendNewVideoRemote(parent);
-			}
-		]]>
-		</handler>
-	</netRemoteCallHib>
-	
+
 	<method name="startStreamPlay">
 		parent.playFLV(this,true);
 	</method>
-	
+
 	<method name="stopStreamPlay">
 		parent.playFLV(this,false);
 		this.stopStream();
 	</method>
-	
+
 	<method name="playRemote">
 		this.startStream();
 	</method>
-	
+
 	<method name="stopRemote">
 		this.stopStream();
 	</method>
-	
+
 	<method name="startStream">
 	<![CDATA[
 		if (!this.isLoaded) {
 			return;
 		}
 		if ($debug) Debug.write("startStream ", this.recordingName);
-		
+
 		if (this.recordingName != "") {
 			this.isPaused = false;
-			
+
 			if (!this.timerDelegateStarted) {
 				this.timerDelegateStarted = true;
 			}
@@ -122,53 +110,53 @@
 		}
 	]]>
 	</method>
-	
+
 	<!---
-		calculates the new x, y, width and height of the video so that it is 100% 
+		calculates the new x, y, width and height of the video so that it is 100%
 		visible in the container
 	 -->
 	<method name="calcVideoWidthHeight">
 	<![CDATA[
 		if ($debug) Debug.write("calcVideoWidthHeight ", this.flv_width, this.flv_height);
-	
+
 		var ratio = this.flv_width / this.flv_height;
 		var t = {};
 		var area = {height: parent.height - 62, width: parent.width - 1}
-		
+
 		//max height of container is new height of video;
 		//calc new width and x-position of video
 		t.height = area.height;
-		t.width = ratio * t.height; 
+		t.width = ratio * t.height;
 		t.x = (area.width - t.width) / 2;
 		t.y = 0;
-		
+
 		if ($debug) Debug.write("calcVideoWidthHeight", area, t);
-	 
+
 		if (t.width > area.width) {
 			t.width = area.width;
 			t.height = t.width / ratio;
 			t.x = 0;
 			t.y = (area.height - t.height) / 2;
 		}
-		t.width = Math.round(t.width); 
+		t.width = Math.round(t.width);
 		t.height = Math.round(t.height);
 		t.x = Math.round(t.x);
 		t.y = Math.round(t.y);
-		
+
 		if ($debug) Debug.write("t", t);
-		
+
 		this._content.setAttribute("x", t.x + 1);
 		this._content.setAttribute("y", t.y + 22);
 		this._content.setAttribute("width", t.width);
 		this._content.setAttribute("height", t.height);
-		
+
 		this._content._preview.setAttribute("width", t.width);
 		this._content._preview.setAttribute("height", t.height);
-		
+
 		return t;
 	]]>
 	</method>
-	
+
 	<method name="setDuration">
 	<![CDATA[
 		if ($debug) Debug.write("setDuration ",this.deltaInSeconds);
@@ -183,7 +171,7 @@
 		this._progress._progressbar._duration.setAttribute("text",tString);
 	]]>
 	</method>
-	
+
 	<method name="calcProgressBar">
 	<![CDATA[
 		if ($debug) Debug.write("calcProgressBar ", this.currentTime);
@@ -200,8 +188,8 @@
 		this._progress._progressbar._time.setAttribute("text", tString);
 		this._progress._progressbar._pointer.setAttribute("x", tNewX);
 	]]>
-	</method> 
-	
+	</method>
+
 	<method name="stopStream">
 		if (this.timerDelegateStarted) {
 			this.timerDelegateStarted = false;
@@ -212,33 +200,33 @@
 		this._content._preview.setAttribute('visible', true);
 		this.isPaused = true;
 	</method>
-	
+
 	<method name="toggleStream">
 		if (canvas.ismoderator &amp;&amp; this.isPaused) {
 				this.startStreamPlay();
 		}
 	</method>
-	
+
 	<baseVideoStream name="_content" height="${ parent.height - 62 }" bgcolor="0x000000" y="22" x="1" width="${ parent.width-1 }">
 		<attribute name="timerDelegate" value="null"/>
 		<attribute name="timerDelegateStarted" value="false" type="boolean"/>
-		
+
 		<handler name="oninit">
 			this.timerDelegate = new LzDelegate(this, "calcProgressBar");
 		</handler>
-		
+
 		<method name="playVideoStream" args="streamName, delay">
 			this.playStream(streamName, delay);
 			this.timerDelegateStarted = true;
 			lz.Timer.addTimer(this.timerDelegate , 1000);
 		</method>
-		
+
 		<method name="stopVideo">
 			this._stop();
 			lz.Timer.removeTimer(this.timerDelegate);
 			this.timerDelegateStarted = false;
 		</method>
-		
+
 		<handler name="onNetStatus" args="info">
 			//if ($debug) Debug.write("onNetStatus ",info);
 			if (info.code ==  "NetStream.Play.Stop" ) {
@@ -252,7 +240,7 @@
 			parent.deltaInSeconds = Number(info.duration);
 			parent.setDuration();
 		</handler>
-		
+
 		<method name="calcProgressBar" args="tObjRef">
 			if ($debug) Debug.write("calcProgressBar:: updateRecordingStreamTime", this.timerDelegateStarted, this._ns.time)
 			parent.currentTime = this._ns.time;
@@ -288,23 +276,23 @@
 			</handler>
 			<labelTooltip labelid="875" />
 		</view>
-		
+
 		<view name="_progressbar" x="16" width="${ parent.width - 32 }" y="1" height="16" bgcolor="$once{ canvas.getThemeColor('baseMouseOvercolorizer') }">
-			<view x="0" width="${ parent.width }" y="0" height="16" bgcolor="0xFFFFFF" opacity="0.5" /> 
-			
+			<view x="0" width="${ parent.width }" y="0" height="16" bgcolor="0xFFFFFF" opacity="0.5" />
+
 			<handler name="onclick">
 				//parent.parent.seekStream(this.getMouse("x"));
 			</handler>
-			
+
 			<view name="_pointer" resource="flv_progress_pointer_rsc" visibility="hidden" />
-			
+
 			<text name="_time" resize="true" fontsize="10" />
-			
+
 			<text name="_duration" align="right" resize="true" fontsize="10" />
 		</view>
-		
+
 		<view resource="flv_recorder_stop_small_rsc" align="right" y="1" height="16" width="16"
-			  bgcolor="$once{ canvas.getThemeColor('baseMouseOvercolorizer') }">
+				bgcolor="$once{ canvas.getThemeColor('baseMouseOvercolorizer') }">
 			<handler name="onmouseover">
 				this.setAttribute("bgcolor",0xFFFFFF);
 			</handler>
@@ -318,8 +306,8 @@
 			</handler>
 			<labelTooltip labelid="876" />
 		</view>
-	</view>	
-	
+	</view>
+
 	<simpleLabelButton labelid="85" width="100" x="${ parent.width-118 }" y="${ parent.height-20 }" >
 		<handler name="onclick">
 			if (canvas.ismoderator) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
----------------------------------------------------------------------
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
index 28b6172..344a0c1 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/CleanupJob.java
@@ -29,11 +29,11 @@ import java.util.Map;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.math.NumberUtils;
-import org.apache.openmeetings.core.data.whiteboard.WhiteBoardObjectListManagerById;
+import org.apache.openmeetings.core.data.whiteboard.WhiteboardCache;
 import org.apache.openmeetings.core.session.SessionManager;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
-import org.apache.openmeetings.db.dto.room.WhiteboardObject;
-import org.apache.openmeetings.db.dto.room.WhiteboardObjectList;
+import org.apache.openmeetings.db.dto.room.Whiteboard;
+import org.apache.openmeetings.db.dto.room.Whiteboards;
 import org.apache.openmeetings.util.InitializationContainer;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -50,7 +50,7 @@ public class CleanupJob extends AbstractJob {
 	@Autowired
 	private SessionManager sessionManager;
 	@Autowired
-	private WhiteBoardObjectListManagerById wbManager;
+	private WhiteboardCache wbManager;
 
 	public long getSessionTimeout() {
 		return sessionTimeout;
@@ -122,8 +122,8 @@ public class CleanupJob extends AbstractJob {
 					Long roomId = null;
 					if (NumberUtils.isCreatable(folder.getName())) {
 						roomId = Long.valueOf(folder.getName());
-						WhiteboardObjectList wbList = wbManager.getWhiteBoardObjectListByRoomId(roomId);
-						for (Map.Entry<Long, WhiteboardObject> e : wbList.getWhiteboardObjects().entrySet()) {
+						Whiteboards wbList = wbManager.get(roomId);
+						for (Map.Entry<Long, Whiteboard> e : wbList.getWhiteboards().entrySet()) {
 							if (!e.getValue().getRoomItems().isEmpty()) {
 								roomId = null;
 								break;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
index d87af52..1e346f3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
@@ -27,7 +27,6 @@
 				, autoOpen: false
 				, resizable: false
 			});
-			ADMIN_TABLE_SHIIFT = 172;
 		};
 	</script>
 </wicket:head>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index 9db123f..378ee2a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -35,6 +35,7 @@ import java.util.Set;
 import java.util.UUID;
 
 import org.apache.directory.api.util.Strings;
+import org.apache.openmeetings.core.data.whiteboard.WhiteboardCache;
 import org.apache.openmeetings.core.remote.ConferenceLibrary;
 import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
 import org.apache.openmeetings.core.util.WebSocketHelper;
@@ -64,6 +65,7 @@ import org.apache.openmeetings.web.room.activities.ActivitiesPanel;
 import org.apache.openmeetings.web.room.activities.Activity;
 import org.apache.openmeetings.web.room.menu.RoomMenuPanel;
 import org.apache.openmeetings.web.room.sidebar.RoomSidebar;
+import org.apache.openmeetings.web.user.record.JpgRecordingResourceReference;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -633,10 +635,25 @@ public class RoomPanel extends BasePanel {
 
 	public void sendFileToWb(FileItem fi, boolean clean) {
 		if (activeWbId > -1 && fi.getId() != null && FileItem.Type.Folder != fi.getType()) {
-			if (fi.getType() == FileItem.Type.WmlFile) {
+			if (FileItem.Type.WmlFile == fi.getType()) {
 				getBean(ConferenceLibrary.class).sendToWhiteboard(getClient().getUid(), activeWbId, fi);
 			} else {
-				String url = urlFor(new RoomResourceReference(), new PageParameters().add("id", fi.getId())).toString();
+				String url = null;
+				PageParameters pp = new PageParameters();
+				pp.add("id", fi.getId())
+					.add("ruid", getBean(WhiteboardCache.class).get(r.getId()).getUid());
+				switch (fi.getType()) {
+					case Video:
+						pp.add("preview", true);
+						url = urlFor(new RoomResourceReference(), pp).toString();
+						break;
+					case Recording:
+						url = urlFor(new JpgRecordingResourceReference(), pp).toString();
+						break;
+					default:
+						url = urlFor(new RoomResourceReference(), pp).toString();
+						break;
+				}
 				getBean(ScopeApplicationAdapter.class).sendToWhiteboard(getClient().getUid(), activeWbId, fi, url, clean);
 			}
 		}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
index b5de9cd..0231370 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
@@ -27,8 +27,13 @@ import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.Application.getOnlineClient;
 
 import java.io.File;
+import java.util.Map.Entry;
 
+import org.apache.directory.api.util.Strings;
+import org.apache.openmeetings.core.data.whiteboard.WhiteboardCache;
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.dto.room.Whiteboard;
+import org.apache.openmeetings.db.dto.room.Whiteboards;
 import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 import org.apache.openmeetings.db.entity.file.FileItem;
@@ -93,10 +98,16 @@ public class RoomResourceReference extends FileItemResourceReference<FileExplore
 			return null;
 		}
 		FileExplorerItem f = getBean(FileExplorerItemDao.class).get(id);
-		// impossible to check file permission based on client, file can be dropped on WB
-		// and should be accessible to whole room
-		//FIXME TODO ADDITIONALLY CHECK Rights !! and room !!
-		return f;
+		String ruid = params.get("ruid").toString();
+		Whiteboards wbs = getBean(WhiteboardCache.class).get(c.getRoomId());
+		if (!Strings.isEmpty(ruid) && ruid.equals(wbs.getUid())) {
+			for (Entry<Long, Whiteboard> e : wbs.getWhiteboards().entrySet()) {
+				if (e.getValue().getRoomItems().containsKey(f.getHash())) {
+					return f; // item IS on WB
+				}
+			}
+		}
+		return null;
 	}
 
 	protected File getFile(FileExplorerItem f, String ext) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
index f321aba..b7f14cc 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
@@ -181,6 +181,7 @@ public class UploadDialog extends AbstractFormDialog<String> {
 	protected void onSubmit(AjaxRequestTarget target) {
 		List<FileUpload> ful = uploadField.getFileUploads();
 		if (ful != null) {
+			boolean clean = cleanWb.getModelObject();
 			for (FileUpload fu : ful) {
 				FileExplorerItem f = new FileExplorerItem();
 				f.setSize(fu.getSize());
@@ -208,7 +209,8 @@ public class UploadDialog extends AbstractFormDialog<String> {
 						form.error(getString("convert.errors.file"));
 					} else {
 						if (toWb.getModelObject()) {
-							room.sendFileToWb(f, cleanWb.getModelObject());
+							room.sendFileToWb(f, clean);
+							clean = false;
 						}
 					}
 				} catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
index 8350295..763d705 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
@@ -20,14 +20,22 @@ package org.apache.openmeetings.web.user.record;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.Application.getOnlineClient;
 import static org.apache.openmeetings.web.app.WebSession.getExternalType;
 import static org.apache.openmeetings.web.app.WebSession.getRecordingId;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.red5.logging.Red5LoggerFactory.getLogger;
 
+import java.util.Map.Entry;
+
+import org.apache.directory.api.util.Strings;
+import org.apache.openmeetings.core.data.whiteboard.WhiteboardCache;
 import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.dto.room.Whiteboard;
+import org.apache.openmeetings.db.dto.room.Whiteboards;
+import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.db.entity.record.Recording;
 import org.apache.openmeetings.db.entity.user.User;
@@ -50,13 +58,15 @@ public abstract class RecordingResourceReference extends FileItemResourceReferen
 	public String getMimeType(Recording r) {
 		return getMimeType();
 	}
-	
+
 	public abstract String getMimeType();
-	
+
 	@Override
 	protected Recording getFileItem(Attributes attributes) {
 		PageParameters params = attributes.getParameters();
 		StringValue _id = params.get("id");
+		String ruid = params.get("ruid").toString();
+		String uid = params.get("uid").toString();
 		Long id = null;
 		try {
 			id = _id.toOptionalLong();
@@ -68,12 +78,12 @@ public abstract class RecordingResourceReference extends FileItemResourceReferen
 			id = getRecordingId();
 		}
 		if (id != null && ws.isSignedIn()) {
-			return getRecording(id);
+			return getRecording(id, ruid, uid);
 		}
 		return null;
 	}
-	
-	private static Recording getRecording(Long id) {
+
+	private static Recording getRecording(Long id, String ruid, String uid) {
 		log.debug("Recording with id {} is requested", id);
 		Recording r = getBean(RecordingDao.class).get(id);
 		if (r == null || r.getType() == Type.Folder || r.isDeleted()) {
@@ -82,6 +92,17 @@ public abstract class RecordingResourceReference extends FileItemResourceReferen
 		if (id.equals(getRecordingId())) {
 			return r;
 		}
+		Client c = getOnlineClient(uid);
+		if (c != null) {
+			Whiteboards wbs = getBean(WhiteboardCache.class).get(c.getRoomId());
+			if (wbs != null && !Strings.isEmpty(ruid) && ruid.equals(wbs.getUid())) {
+				for (Entry<Long, Whiteboard> e : wbs.getWhiteboards().entrySet()) {
+					if (e.getValue().getRoomItems().containsKey(r.getHash())) {
+						return r; // item IS on WB
+					}
+				}
+			}
+		}
 		//TODO should we check parentId here
 		if (r.getOwnerId() == null && r.getGroupId() == null) {
 			//public

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
index 8380ada..bd5c378 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
@@ -64,9 +64,9 @@
 	<!-- Database cache -->
 	<bean id="openmeetings.DatabaseStore" class="org.apache.openmeetings.core.session.store.DatabaseStore" />
 	
-	<bean id="whiteBoardObjectListManagerById" scope="singleton" class="org.apache.openmeetings.core.data.whiteboard.WhiteBoardObjectListManagerById" />
-	<!-- WhiteBoardObjectSyncManager can stay in the memory, even on cluster! -->
-	<bean id="whiteBoardObjectSyncManager" scope="singleton" class="org.apache.openmeetings.core.data.whiteboard.WhiteBoardObjectSyncManager" />
+	<bean id="whiteboardCache" scope="singleton" class="org.apache.openmeetings.core.data.whiteboard.WhiteboardCache" />
+	<!-- WhiteboardObjectSyncManager can stay in the memory, even on cluster! -->
+	<bean id="whiteboardObjectSyncManager" scope="singleton" class="org.apache.openmeetings.core.data.whiteboard.WhiteboardObjectSyncManager" />
 
 	<!-- Cluster related config start -->
 	<bean id="openmeetings.ServerUtil" scope="singleton" class="org.apache.openmeetings.core.session.ServerUtil">
@@ -78,7 +78,7 @@
 	<!-- Start of Services -->
 	<bean id="xmlcrm.service" class="org.apache.openmeetings.core.remote.MainService" />
 	<bean id="languageservice.service" class="org.apache.openmeetings.core.remote.LanguageService" />
-	<bean id="whiteboardservice.service" class="org.apache.openmeetings.core.remote.WhiteBoardService" />
+	<bean id="whiteboardservice.service" class="org.apache.openmeetings.core.remote.WhiteboardService" />
 	<bean id="userservice.service" class="org.apache.openmeetings.core.remote.UserService" />
 	<bean id="fileservice.service" class="org.apache.openmeetings.core.remote.ConferenceLibrary" />
 	<bean id="openmeetings.FileProcessor" class="org.apache.openmeetings.core.data.file.FileProcessor" />
@@ -211,7 +211,7 @@
 	<bean id="generateSWF" class="org.apache.openmeetings.core.converter.GenerateSWF" />
 	<bean id="ldapLoginManagement" class="org.apache.openmeetings.core.ldap.LdapLoginManagement" />
 	<bean id="timezoneUtil" class="org.apache.openmeetings.db.util.TimezoneUtil" />
-	<bean id="whiteboardManagement" class="org.apache.openmeetings.core.data.whiteboard.WhiteboardManager" />
+	<bean id="whiteboardManager" class="org.apache.openmeetings.core.data.whiteboard.WhiteboardManager" />
 	<bean id="backupExport" class="org.apache.openmeetings.backup.BackupExport" />
 	<bean id="backupImport" class="org.apache.openmeetings.backup.BackupImport" />
 	<bean id="appointmentManager" class="org.apache.openmeetings.service.calendar.caldav.AppointmentManager" destroy-method="destroy"/>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/a5d2b138/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
index 6b34f9b..ea70478 100644
--- a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
+++ b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java
@@ -21,7 +21,6 @@ package org.apache.openmeetings.webservice;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.webservice.Constants.TNS;
 
-import java.io.File;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
@@ -43,7 +42,6 @@ import javax.ws.rs.core.MediaType;
 import org.apache.cxf.feature.Features;
 import org.apache.cxf.jaxrs.ext.multipart.Multipart;
 import org.apache.openmeetings.core.data.file.FileProcessor;
-import org.apache.openmeetings.core.documents.LoadLibraryPresentation;
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
@@ -51,12 +49,10 @@ import org.apache.openmeetings.db.dto.basic.ServiceResult;
 import org.apache.openmeetings.db.dto.basic.ServiceResult.Type;
 import org.apache.openmeetings.db.dto.file.FileExplorerItemDTO;
 import org.apache.openmeetings.db.dto.file.FileExplorerObject;
-import org.apache.openmeetings.db.dto.file.LibraryPresentation;
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 import org.apache.openmeetings.db.entity.server.Sessiondata;
 import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
-import org.apache.openmeetings.util.OmFileHelper;
 import org.apache.openmeetings.util.process.ConverterProcessResultList;
 import org.apache.openmeetings.webservice.error.ServiceException;
 import org.red5.logging.Red5LoggerFactory;
@@ -217,44 +213,6 @@ public class FileWebService {
 	}
 
 	/**
-	 * Get a LibraryPresentation-Object for a certain file
-	 *
-	 * @param sid
-	 *            The SID of the User. This SID must be marked as logged in
-	 * @param parentFolder
-	 *
-	 * @return - LibraryPresentation-Object for a certain file
-	 * @throws ServiceException
-	 */
-	public LibraryPresentation getPresentationPreviewFileExplorer(String sid, String parentFolder)
-			throws ServiceException {
-
-		try {
-			Sessiondata sd = sessionDao.check(sid);
-			if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(sd.getUserId()))) {
-
-				File working_dir = new File(OmFileHelper.getUploadProfilesDir(), parentFolder);
-				log.debug("############# working_dir : " + working_dir);
-
-				File file = new File(working_dir, OmFileHelper.libraryFileName);
-
-				if (!file.exists()) {
-					throw new ServiceException(file.getCanonicalPath() + ": does not exist ");
-				}
-
-				return LoadLibraryPresentation.parseLibraryFileToObject(file);
-			} else {
-				throw new ServiceException("not Authenticated");
-			}
-		} catch (ServiceException e) {
-			throw e;
-		} catch (Exception e) {
-			log.error("[getListOfFilesByAbsolutePath]", e);
-			return null;
-		}
-	}
-
-	/**
 	 * Get a File Explorer Object by a given Room
 	 *
 	 * @param sid


[33/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1620] unenrool seems to be fixed

Posted by so...@apache.org.
[OPENMEETINGS-1620] unenrool seems to be fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/d5d8633a
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/d5d8633a
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/d5d8633a

Branch: refs/heads/3.2.x
Commit: d5d8633a8c2e5dd85ee8a3a27546c8d645459e1b
Parents: 7928214
Author: Maxim Solodovnik <so...@apache.org>
Authored: Sun Apr 2 03:39:12 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Sun Apr 2 03:39:12 2017 +0000

----------------------------------------------------------------------
 .../src/main/java/org/apache/openmeetings/web/room/RoomPanel.java | 2 ++
 .../java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java | 3 ++-
 2 files changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d5d8633a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index 1146441..2799991 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -20,6 +20,7 @@ package org.apache.openmeetings.web.room;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.web.app.Application.addUserToRoom;
+import static org.apache.openmeetings.web.app.Application.exitRoom;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.Application.getOnlineClient;
 import static org.apache.openmeetings.web.app.Application.getRoomClients;
@@ -426,6 +427,7 @@ public class RoomPanel extends BasePanel {
 								handler.add(room.setVisible(false));
 								getMainPanel().getChat().toggle(handler, false);
 								clientKicked.open(handler);
+								exitRoom(getClient());
 							}
 						}
 						break;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d5d8633a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
index 74040e3..86fa8f0 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
@@ -20,6 +20,7 @@ package org.apache.openmeetings.web.room.menu;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_APPLICATION_BASE_URL;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY;
+import static org.apache.openmeetings.web.app.Application.exitRoom;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.util.GroupLogoResourceReference.getUrl;
@@ -336,7 +337,7 @@ public class RoomMenuPanel extends Panel {
 
 	public void exit(IPartialPageRequestHandler handler) {
 		if (WebSession.getRights().contains(User.Right.Dashboard)) {
-			Application.exitRoom(room.getClient());
+			exitRoom(room.getClient());
 			room.getMainPanel().updateContents(ROOMS_PUBLIC, handler);
 		} else {
 			String url = getBean(ConfigurationDao.class).getConfValue(CONFIG_REDIRECT_URL_FOR_EXTERNAL_KEY, String.class, "");


[07/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1600] image upload is fixed

Posted by so...@apache.org.
[OPENMEETINGS-1600] image upload is fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/5d4504e1
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/5d4504e1
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/5d4504e1

Branch: refs/heads/3.2.x
Commit: 5d4504e153359c4d5ed57ff42f5e39afd102d713
Parents: dc705d0
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Mar 16 04:13:20 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Mar 16 04:13:20 2017 +0000

----------------------------------------------------------------------
 .../whiteboard/base/baseDrawImage.lzx           |  2 +-
 .../whiteboard/base/imageForDrawView.lzx        | 44 ++++++++++----------
 2 files changed, 23 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/5d4504e1/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawImage.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawImage.lzx b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawImage.lzx
index 24b1489..7c99312 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawImage.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawImage.lzx
@@ -66,7 +66,7 @@
 		<![CDATA[
 			if ($debug) Debug.write("addImageToLayer ",urlname);
 			
-			var downloadurl = canvas.getUrl() + urlname + "?uid=" + canvas.publicSID;
+			var downloadurl = canvas.getUrl() + urlname + "&uid=" + canvas.publicSID;
 			if ($debug) Debug.write("addImageToLayer urlname : ", downloadurl);
 			if ($debug) Debug.write("alterModus: ",alterModus);
 			

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/5d4504e1/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/imageForDrawView.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/imageForDrawView.lzx b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/imageForDrawView.lzx
index 1ec65c3..f2ad01b 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/imageForDrawView.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/imageForDrawView.lzx
@@ -7,41 +7,41 @@
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at
-  
+
       http://www.apache.org/licenses/LICENSE-2.0
-    	  
+
   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
-  
+
 -->
 <library>
 
 <class name="imageForDrawView" extends="omImage" stretches="both">
 	<event name="prepareForDelete" />
-	
+
 	<attribute name="downloadurl" value="" type="string" />
-		
+
 	<attribute name="alterModus" value="true" type="boolean" />
 	<attribute name="isLocalSync" value="false" type="boolean" />
-	
+
 	<attribute name="recorderModus" value="false" type="boolean" />
-	
+
 	<attribute name="baseurl" value="" type="string" />
 	<attribute name="fileName" value="" type="string" />
 	<attribute name="moduleName" value="" type="string" />
 	<attribute name="parentPath" value="" type="string" />
 	<attribute name="room" value="" type="string" />
 	<attribute name="domain" value="" type="string" />
-	
+
 	<attribute name="remotewidth" value="0" type="number" />
 	<attribute name="remoteheight" value="0" type="number" />
-	
+
 	<attribute name="typeOfObject" value="image" type="string" />
-	
+
 	<!-- holds the reference_id to the SyncProcess -->
 	<attribute name="uniqueObjectSyncName" value="" type="string" />
 	<attribute name="refObj" value="null" />
@@ -49,12 +49,12 @@
 	<method name="completeCallback" args="event">
 		if ($debug) Debug.info("imageForDrawView::OVERRIDEN completeCallback");
 	</method>
-	
+
 	<handler name="onload">
 	<![CDATA[
 		if ($debug) Debug.info("imageForDrawView::onload image loaded");
 		//this.refObj.parent._loading.setAttribute('visible',false);
-		
+
 		if (this.remotewidth != 0 && this.remoteheight != 0){
 			this.setAttribute('width',this.remotewidth);
 			this.setAttribute('height',this.remoteheight);
@@ -91,10 +91,10 @@
 		} else {
 			this.refObj.sendLoadNotificationImage(this);
 		}
-		this.refObj.layers.push(this);			
+		this.refObj.layers.push(this);
 	]]>
 	</handler>
-	
+
 	<handler name="onerror" args="error">
 	<![CDATA[
 		if ($debug) Debug.write("imageForDrawView::onerror ", error);
@@ -109,15 +109,15 @@
 		} else {
 			this.refObj.sendLoadNotificationImage(this);
 		}
-		this.refObj.layers.push(this);			
-		
+		this.refObj.layers.push(this);
+
 		this.oninit.sendEvent();
-		
+
 		//This is not needed anymore as it sync's against the server sid, swagner, 11.06.2008
 		this.refObj.parent.parent.isloadedImage.sendEvent(this);
 	]]>
 	</handler>
-	
+
 	<handler name="ontimeout" args="error">
 	<![CDATA[
 		if ($debug) Debug.write("imageForDrawView::ontimeout ", error);
@@ -132,14 +132,14 @@
 		} else {
 			this.refObj.sendLoadNotificationImage(this);
 		}
-		this.refObj.layers.push(this);			
-		
+		this.refObj.layers.push(this);
+
 		this.oninit.sendEvent();
-		
+
 		//This is not needed anymore as it sync's against the server sid, swagner, 11.06.2008
 		this.refObj.parent.parent.isloadedImage.sendEvent(this);
 	]]>
-	</handler>	
+	</handler>
 </class>
 
 </library>


[38/50] [abbrv] openmeetings git commit: Changelog is updated to have changes for all versions

Posted by so...@apache.org.
Changelog is updated to have changes for all versions


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/7872a872
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/7872a872
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/7872a872

Branch: refs/heads/3.2.x
Commit: 7872a8722abb28edaefe6dc64ea3b84009e163c0
Parents: e78466d
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Apr 6 12:12:54 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Apr 6 12:12:54 2017 +0000

----------------------------------------------------------------------
 CHANGELOG | 1478 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 1478 insertions(+)
----------------------------------------------------------------------



[15/50] [abbrv] openmeetings git commit: no jira: couple NPEs are fixed

Posted by so...@apache.org.
no jira: couple NPEs are fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/60193a53
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/60193a53
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/60193a53

Branch: refs/heads/3.2.x
Commit: 60193a5313b59dff257d7b9085ccb7a59a9bde56
Parents: 1a85ede
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Mar 24 09:58:47 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Mar 24 09:58:47 2017 +0000

----------------------------------------------------------------------
 .../core/remote/RecordingService.java           | 25 ++++++++++----------
 .../db/entity/basic/Configuration.java          |  2 +-
 2 files changed, 13 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/60193a53/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
index 549503a..eae5bc0 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/RecordingService.java
@@ -52,6 +52,7 @@ import org.red5.server.api.scope.IScope;
 import org.red5.server.api.service.IPendingServiceCall;
 import org.red5.server.api.service.IPendingServiceCallback;
 import org.red5.server.api.service.IServiceCapableConnection;
+import org.red5.server.api.stream.IBroadcastStream;
 import org.red5.server.api.stream.IStreamListener;
 import org.red5.server.stream.ClientBroadcastStream;
 import org.slf4j.Logger;
@@ -250,22 +251,10 @@ public class RecordingService implements IPendingServiceCallback {
 	 */
 	public void stopRecordingShow(IScope scope, String broadcastId, Long metaId) {
 		try {
-			if (metaId == null) {
-				// this should be fixed, can be useful for debugging, after all this is an error
-				// but we don't want the application to completely stop the process
-				log.error("recordingMetaDataId is null");
-			}
-
 			log.debug("** stopRecordingShow: " + scope);
 			log.debug("### Stop recording show for broadcastId: " + broadcastId + " || " + scope.getContextPath());
 
-			Object streamToClose = scopeApplicationAdapter.getBroadcastStream(scope, broadcastId);
-
-			StreamListener listenerAdapter = streamListeners.get(metaId);
-
-			log.debug("Stream Closing :: " + metaId);
-
-			ClientBroadcastStream stream = (ClientBroadcastStream) streamToClose;
+			IBroadcastStream stream = scopeApplicationAdapter.getBroadcastStream(scope, broadcastId);
 
 			// the stream can be null if the user just closes the browser
 			// without canceling the recording before leaving
@@ -278,6 +267,16 @@ public class RecordingService implements IPendingServiceCallback {
 				}
 			}
 
+			if (metaId == null) {
+				// this should be fixed, can be useful for debugging, after all this is an error
+				// but we don't want the application to completely stop the process
+				log.error("recordingMetaDataId is null");
+				return;
+			}
+
+			StreamListener listenerAdapter = streamListeners.get(metaId);
+			log.debug("Stream Closing :: " + metaId);
+
 			RecordingMetaData metaData = metaDataDao.get(metaId);
 			BaseConverter.printMetaInfo(metaData, "Stopping the stream");
 			// Manually call finish on the stream so that there is no endless loop waiting in the RecordingConverter waiting for the stream to finish

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/60193a53/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Configuration.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Configuration.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Configuration.java
index 73b4fb3..5319d04 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Configuration.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Configuration.java
@@ -41,7 +41,7 @@ import org.simpleframework.xml.Root;
 
 @Entity
 @NamedQueries({
-		@NamedQuery(name = "forceGetConfigurationByKey", query = "SELECT c FROM Configuration c " 
+		@NamedQuery(name = "forceGetConfigurationByKey", query = "SELECT c FROM Configuration c "
 				+ "WHERE c.key LIKE :key"),
 		@NamedQuery(name = "getConfigurationsByKeys", query = "SELECT c FROM Configuration c "
 				+ "WHERE c.key IN :keys and c.deleted = false"),


[09/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1595] more work on mobile client

Posted by so...@apache.org.
[OPENMEETINGS-1595] more work on mobile client


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/daafaa8d
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/daafaa8d
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/daafaa8d

Branch: refs/heads/3.2.x
Commit: daafaa8dcb648c27a6d1e60d7aba16fd130f3372
Parents: 4df09e5
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Mar 17 04:39:40 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Mar 17 04:39:40 2017 +0000

----------------------------------------------------------------------
 .../apache/openmeetings/db/entity/basic/Client.java   | 14 ++++++++++----
 .../org/apache/openmeetings/web/app/Application.java  |  5 ++---
 .../org/apache/openmeetings/web/common/MainPanel.java |  1 +
 pom.xml                                               |  3 +--
 4 files changed, 14 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/daafaa8d/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
index b626e30..8ec7b27 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
@@ -56,6 +56,7 @@ public class Client implements IClient {
 	private Long roomId;
 	private final String uid;
 	private final String sid;
+	private String remoteAddress;
 	private final Set<Right> rights = new HashSet<>();
 	private final Set<Activity> activities = new HashSet<>();
 	private final Date connectedSince;
@@ -65,10 +66,6 @@ public class Client implements IClient {
 	private int width = 0;
 	private int height = 0;
 
-	public Client(String sessionId, Long userId, UserDao dao) {
-		this(sessionId, 0, userId, dao);
-	}
-
 	public Client(String sessionId, int pageId, Long userId, UserDao dao) {
 		this.sessionId = sessionId;
 		this.pageId = pageId;
@@ -86,6 +83,7 @@ public class Client implements IClient {
 		uid = rcl.getPublicSID();
 		sid = UUID.randomUUID().toString();
 		this.roomId = rcl.getRoomId();
+		this.remoteAddress = rcl.getUserip();
 	}
 
 	public String getSessionId() {
@@ -277,6 +275,14 @@ public class Client implements IClient {
 		this.height = height;
 	}
 
+	public String getRemoteAddress() {
+		return remoteAddress;
+	}
+
+	public void setRemoteAddress(String remoteAddress) {
+		this.remoteAddress = remoteAddress;
+	}
+
 	@Override
 	public int hashCode() {
 		final int prime = 31;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/daafaa8d/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index ebf7a73..51d57f9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -21,7 +21,6 @@ package org.apache.openmeetings.web.app;
 import static org.apache.openmeetings.core.util.WebSocketHelper.sendRoom;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.wicketApplicationName;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.pages.HashPage.INVITATION_HASH;
 import static org.apache.openmeetings.web.user.rooms.RoomEnterBehavior.getRoomUrlFragment;
 import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
@@ -236,8 +235,8 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 			sendRoom(new RoomMessage(roomId, c.getUserId(), RoomMessage.Type.roomExit));
 			getBean(ConferenceLogDao.class).add(
 					ConferenceLog.Type.roomLeave
-					, getUserId(), "0", roomId
-					, WebSession.get().getClientInfo().getProperties().getRemoteAddress()
+					, c.getUserId(), "0", roomId
+					, c.getRemoteAddress()
 					, "" + roomId);
 		}
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/daafaa8d/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
index 1cad933..7d7332d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
@@ -225,6 +225,7 @@ public class MainPanel extends Panel {
 			protected void onConnect(ConnectedMessage msg) {
 				super.onConnect(msg);
 				client = new Client(getSession().getId(), msg.getKey().hashCode(), getUserId(), getBean(UserDao.class));
+				client.setRemoteAddress(WebSession.get().getClientInfo().getProperties().getRemoteAddress());
 				addOnlineUser(client);
 				log.debug("WebSocketBehavior::onConnect [uid: {}, session: {}, key: {}]", client.getUid(), msg.getSessionId(), msg.getKey());
 			}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/daafaa8d/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 094e3f0..85461aa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -703,8 +703,7 @@
 					</execution>
 				</executions>
 				<configuration>
-					<doCheck>false</doCheck>
-					<doUpdate>true</doUpdate>
+					<getRevisionOnlyOnce>true</getRevisionOnlyOnce>
 				</configuration>
 			</plugin>
 			<plugin>


[10/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1595] couple NPEs are fixed

Posted by so...@apache.org.
[OPENMEETINGS-1595] couple NPEs are fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/b13eb4c1
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/b13eb4c1
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/b13eb4c1

Branch: refs/heads/3.2.x
Commit: b13eb4c1245bf83103cfc0f048b6bd3f122a6252
Parents: daafaa8
Author: Maxim Solodovnik <so...@apache.org>
Authored: Fri Mar 17 05:07:08 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Fri Mar 17 05:07:08 2017 +0000

----------------------------------------------------------------------
 .../db/dao/record/RecordingMetaDataDao.java            | 13 ++++++-------
 .../org/apache/openmeetings/web/common/MainPanel.java  |  8 +++++---
 2 files changed, 11 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b13eb4c1/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingMetaDataDao.java
----------------------------------------------------------------------
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingMetaDataDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingMetaDataDao.java
index 33d8665..d7188ee 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingMetaDataDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingMetaDataDao.java
@@ -131,13 +131,12 @@ public class RecordingMetaDataDao {
 		try {
 			RecordingMetaData meta = get(metaId);
 
-			meta.setRecordEnd(recordEnd);
-			
-			log.debug("updateEndDate :: Start Date :" + meta.getRecordStart());
-			log.debug("updateEndDate :: End Date :" + meta.getRecordEnd());
-			
-			update(meta);
-			
+			if (meta != null) {
+				meta.setRecordEnd(recordEnd);
+				log.debug("updateEndDate :: Start Date :" + meta.getRecordStart());
+				log.debug("updateEndDate :: End Date :" + meta.getRecordEnd());
+				update(meta);
+			}
 			return metaId;
 		} catch (Exception ex2) {
 			log.error("[updateEndDate]: ", ex2);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b13eb4c1/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
index 7d7332d..3055c86 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
@@ -261,9 +261,11 @@ public class MainPanel extends Panel {
 
 			private void closeHandler(AbstractClientMessage msg) {
 				//no chance to stop pingTimer here :(
-				log.debug("WebSocketBehavior::closeHandler [uid: {}, session: {}, key: {}]", client.getUid(), msg.getSessionId(), msg.getKey());
-				exit(client);
-				client = null;
+				if (client != null) {
+					log.debug("WebSocketBehavior::closeHandler [uid: {}, session: {}, key: {}]", client.getUid(), msg.getSessionId(), msg.getKey());
+					exit(client);
+					client = null;
+				}
 			}
 		});
 		add(new OmAjaxClientInfoBehavior());


[20/50] [abbrv] openmeetings git commit: [OPENMEETINGS-551] basic work on image/video wb upload; code clean-up

Posted by so...@apache.org.
[OPENMEETINGS-551] basic work on image/video wb upload; code clean-up


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/00b8a9ac
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/00b8a9ac
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/00b8a9ac

Branch: refs/heads/3.2.x
Commit: 00b8a9ac1b939ce7e2665d3b2db74d3e9b9be9c5
Parents: 7a3bd07
Author: Maxim Solodovnik <so...@apache.org>
Authored: Tue Mar 28 03:19:16 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Tue Mar 28 03:19:16 2017 +0000

----------------------------------------------------------------------
 .../core/converter/BaseConverter.java           |  37 +++-
 .../core/converter/DocumentConverter.java       | 100 +++++++++++
 .../core/converter/FlvExplorerConverter.java    |  26 +--
 .../core/converter/GenerateImage.java           | 125 -------------
 .../core/converter/GenerateThumbs.java          |  70 --------
 .../core/converter/ImageConverter.java          | 166 +++++++++++++++++
 .../core/data/file/FileProcessor.java           |  18 +-
 .../core/documents/GeneratePDF.java             | 102 -----------
 .../openmeetings/core/util/WebSocketHelper.java |  37 ++--
 .../installation/ImportInitvalues.java          |   3 +-
 .../util/OpenmeetingsVariables.java             |   1 +
 .../util/process/ProcessHelper.java             | 114 +++---------
 .../web/admin/groups/GroupForm.java             |   4 +-
 .../web/common/UploadableProfileImagePanel.java |   4 +-
 .../apache/openmeetings/web/room/RoomPanel.html |   2 +-
 .../web/room/RoomResourceReference.java         |   2 +-
 .../org/apache/openmeetings/web/room/room.js    |  24 +--
 .../apache/openmeetings/web/user/chat/Chat.java |   3 +-
 .../classes/openmeetings-applicationContext.xml |  11 +-
 openmeetings-web/src/main/webapp/css/forms.css  |  14 +-
 .../src/main/webapp/css/images/arrow.png        | Bin 0 -> 164 bytes
 .../src/main/webapp/css/images/arrow_down.png   | Bin 205 -> 0 bytes
 .../src/main/webapp/css/images/arrow_right.png  | Bin 227 -> 0 bytes
 .../src/main/webapp/css/images/disk.png         | Bin 0 -> 620 bytes
 .../src/main/webapp/css/images/ellipse.png      | Bin 0 -> 635 bytes
 .../src/main/webapp/css/images/font.png         | Bin 0 -> 1602 bytes
 .../css/images/forms/arrow_refresh_small.png    | Bin 506 -> 0 bytes
 .../webapp/css/images/forms/cancel_icon.png     | Bin 986 -> 0 bytes
 .../src/main/webapp/css/images/forms/disk.png   | Bin 620 -> 0 bytes
 .../main/webapp/css/images/forms/plus_icon.png  | Bin 463 -> 0 bytes
 .../css/images/forms/plus_icon_disabled.png     | Bin 411 -> 0 bytes
 .../src/main/webapp/css/images/line.png         | Bin 0 -> 129 bytes
 .../src/main/webapp/css/images/next.png         | Bin 0 -> 428 bytes
 .../src/main/webapp/css/images/paintbrush.png   | Bin 0 -> 1170 bytes
 .../src/main/webapp/css/images/plus_icon.png    | Bin 0 -> 463 bytes
 .../webapp/css/images/plus_icon_disabled.png    | Bin 0 -> 411 bytes
 .../src/main/webapp/css/images/pointer.png      | Bin 0 -> 441 bytes
 .../src/main/webapp/css/images/prev.png         | Bin 0 -> 460 bytes
 .../src/main/webapp/css/images/rectangle.png    | Bin 0 -> 185 bytes
 .../src/main/webapp/css/images/uline.png        | Bin 0 -> 137 bytes
 .../src/main/webapp/css/images/wbpointer.png    | Bin 0 -> 736 bytes
 openmeetings-web/src/main/webapp/css/room.css   | 180 ++++++++++++++++++-
 openmeetings-web/src/main/webapp/css/theme.css  |   1 +
 43 files changed, 557 insertions(+), 487 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
index e3ead2a..7d72bf8 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
@@ -23,6 +23,7 @@ import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_FLV;
 import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
 import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
 import static org.apache.openmeetings.util.OmFileHelper.getStreamsSubDir;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_IMAGEMAGIC_PATH;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.File;
@@ -32,7 +33,10 @@ import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
+import org.apache.directory.api.util.Strings;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.record.RecordingMetaDataDao;
 import org.apache.openmeetings.db.dao.record.RecordingMetaDeltaDao;
@@ -50,6 +54,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 public abstract class BaseConverter {
 	private static final Logger log = Red5LoggerFactory.getLogger(BaseConverter.class, webAppRootKey);
+	private static final Pattern p = Pattern.compile("\\d{2,5}(x)\\d{2,5}");
 
 	@Autowired
 	private ConfigurationDao configurationDao;
@@ -58,9 +63,19 @@ public abstract class BaseConverter {
 	@Autowired
 	private RecordingMetaDeltaDao metaDeltaDao;
 
+	protected static class Dimension {
+		public int width = 0;
+		public int height = 0;
+
+		public Dimension(int width, int height) {
+			this.width = width;
+			this.height = height;
+		}
+	}
+
 	private String getPath(String key, String app) {
 		String path = configurationDao.getConfValue(key, String.class, "");
-		if (!"".equals(path) && !path.endsWith(File.separator)) {
+		if (!Strings.isEmpty(path) && !path.endsWith(File.separator)) {
 			path += File.separator;
 		}
 		path += app;
@@ -75,12 +90,12 @@ public abstract class BaseConverter {
 		return getPath("sox_path", "sox");
 	}
 
-	protected String getPathToImageMagick() {
-		return getPath("imagemagick_path", "convert") + GenerateSWF.execExt;
+	protected String getPathToConvert() {
+		return getPath(CONFIG_IMAGEMAGIC_PATH, "convert") + GenerateSWF.execExt;
 	}
 
-	protected boolean isUseOldStyleFfmpegMap() {
-		return "1".equals(configurationDao.getConfValue("use.old.style.ffmpeg.map.option", String.class, "0"));
+	protected String getPathToIdentify() {
+		return getPath(CONFIG_IMAGEMAGIC_PATH, "identify") + GenerateSWF.execExt;
 	}
 
 	protected File getStreamFolder(Recording recording) {
@@ -380,4 +395,16 @@ public abstract class BaseConverter {
 
 		returnLog.add(ProcessHelper.executeScript("generate preview JPG", argv));
 	}
+
+	protected static Dimension getDimension(String txt) {
+		Matcher matcher = p.matcher(txt);
+
+		while (matcher.find()) {
+			String foundResolution = txt.substring(matcher.start(), matcher.end());
+			String[] resultions = foundResolution.split("x");
+			return new Dimension(Integer.valueOf(resultions[0]).intValue(), Integer.valueOf(resultions[1]).intValue());
+		}
+
+		return new Dimension(100, 100); // will return 100x100 for non-video to be able to play
+	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/DocumentConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/DocumentConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/DocumentConverter.java
new file mode 100644
index 0000000..16919fa
--- /dev/null
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/DocumentConverter.java
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.core.converter;
+
+import static org.apache.openmeetings.core.documents.CreateLibraryPresentation.generateXMLDocument;
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.util.process.ConverterProcessResult;
+import org.apache.openmeetings.util.process.ConverterProcessResultList;
+import org.apache.wicket.util.string.Strings;
+import org.artofsolving.jodconverter.OfficeDocumentConverter;
+import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
+import org.artofsolving.jodconverter.office.OfficeException;
+import org.artofsolving.jodconverter.office.OfficeManager;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class DocumentConverter {
+	private static final Logger log = Red5LoggerFactory.getLogger(DocumentConverter.class, webAppRootKey);
+
+	@Autowired
+	private GenerateSWF generateSWF;
+	@Autowired
+	private ConfigurationDao configurationDao;
+	@Autowired
+	private ImageConverter imageConverter;
+
+	public ConverterProcessResultList convertPDF(FileExplorerItem f, String ext) throws Exception {
+		ConverterProcessResultList errors = new ConverterProcessResultList();
+
+		boolean fullProcessing = !EXTENSION_PDF.equals(ext);
+		File original = f.getFile(ext);
+		File pdf = f.getFile(EXTENSION_PDF);
+		log.debug("fullProcessing: " + fullProcessing);
+		if (fullProcessing) {
+			log.debug("-- running JOD --");
+			errors.addItem("processOpenOffice", doJodConvert(original, pdf));
+		}
+
+		log.debug("-- generateBatchThumb --");
+		errors.addItem("processThumb", imageConverter.generateBatchThumb(pdf, pdf.getParentFile(), 80, "thumb"));
+		File swf = f.getFile();
+		errors.addItem("processSWF", generateSWF.generateSwf(pdf, swf));
+
+		errors.addItem("processXML", generateXMLDocument(original, fullProcessing ? pdf : null, swf));
+		return errors;
+	}
+
+	/**
+	 * Generates PDF using JOD Library (external library)
+	 */
+	public ConverterProcessResult doJodConvert(File in, File out) {
+		try {
+			String officePath = configurationDao.getConfValue("office.path", String.class, null);
+			DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration();
+			if (!Strings.isEmpty(officePath)) {
+				configuration.setOfficeHome(officePath);
+			}
+			OfficeManager officeManager = configuration.buildOfficeManager();
+			officeManager.start();
+			OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
+			try {
+				converter.convert(in, out);
+			} catch (OfficeException ex) {
+				log.error("doJodConvert", ex);
+				return new ConverterProcessResult("doJodConvert", ex.getMessage(), ex);
+			} finally {
+				officeManager.stop();
+			}
+		} catch (Exception ex) {
+			log.error("doJodConvert", ex);
+			return new ConverterProcessResult("doJodConvert", ex.getMessage(), ex);
+		}
+		ConverterProcessResult result = new ConverterProcessResult("doJodConvert", "Document converted successfully", null);
+		result.setExitCode(0);
+		return result;
+	}
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java
index 4413347..84727af 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/FlvExplorerConverter.java
@@ -28,8 +28,6 @@ import java.nio.file.Path;
 import java.nio.file.StandardCopyOption;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
@@ -42,21 +40,11 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 public class FlvExplorerConverter extends BaseConverter {
 	private static final Logger log = Red5LoggerFactory.getLogger(FlvExplorerConverter.class, webAppRootKey);
-	private static final Pattern p = Pattern.compile("\\d{2,4}(x)\\d{2,4}");
 
 	// Spring loaded Beans
 	@Autowired
 	private FileExplorerItemDao fileDao;
 
-	private static class FlvDimension {
-		public FlvDimension(int width, int height) {
-			this.width = width;
-			this.height = height;
-		}
-		public int width = 0;
-		public int height = 0;
-	}
-
 	public List<ConverterProcessResult> convertToMP4(FileExplorerItem f, String ext) {
 		List<ConverterProcessResult> logs = new ArrayList<>();
 		try {
@@ -88,7 +76,7 @@ public class FlvExplorerConverter extends BaseConverter {
 				}
 			}
 			//Parse the width height from the FFMPEG output
-			FlvDimension dim = getFlvDimension(res.getError());
+			Dimension dim = getDimension(res.getError());
 			f.setWidth(dim.width);
 			f.setHeight(dim.height);
 			File jpeg = f.getFile(EXTENSION_JPG);
@@ -108,16 +96,4 @@ public class FlvExplorerConverter extends BaseConverter {
 
 		return logs;
 	}
-
-	private static FlvDimension getFlvDimension(String txt) throws Exception {
-		Matcher matcher = p.matcher(txt);
-
-		while (matcher.find()) {
-			String foundResolution = txt.substring(matcher.start(), matcher.end());
-			String[] resultions = foundResolution.split("x");
-			return new FlvDimension(Integer.valueOf(resultions[0]).intValue(), Integer.valueOf(resultions[1]).intValue());
-		}
-
-		return new FlvDimension(100, 100); // will return 100x100 for non-video to be able to play
-	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateImage.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateImage.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateImage.java
deleted file mode 100644
index adadbf1..0000000
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateImage.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.core.converter;
-
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
-import static org.apache.openmeetings.util.OmFileHelper.getUploadProfilesUserDir;
-import static org.apache.openmeetings.util.OmFileHelper.profileFileName;
-import static org.apache.openmeetings.util.OmFileHelper.profileImagePrefix;
-import static org.apache.openmeetings.util.OmFileHelper.thumbImagePrefix;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-
-import java.io.File;
-import java.io.FileFilter;
-import java.io.IOException;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.file.FileItem;
-import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.util.OmFileHelper;
-import org.apache.openmeetings.util.process.ConverterProcessResult;
-import org.apache.openmeetings.util.process.ConverterProcessResultList;
-import org.apache.openmeetings.util.process.ProcessHelper;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-
-public class GenerateImage extends BaseConverter {
-	private static final Logger log = Red5LoggerFactory.getLogger(GenerateImage.class, webAppRootKey);
-
-	@Autowired
-	private UserDao userDao;
-	@Autowired
-	private GenerateThumbs generateThumbs;
-
-	public ConverterProcessResultList convertImage(FileItem f, String ext) throws IOException {
-		ConverterProcessResultList returnMap = new ConverterProcessResultList();
-
-		File img = f.getFile(ext);
-		File jpg = f.getFile(EXTENSION_JPG);
-
-		log.debug("##### convertImage destinationFile: " + jpg);
-
-		returnMap.addItem("processJPG", convertSingleJpg(img, jpg));
-		returnMap.addItem("processThumb", generateThumbs.generateThumb(thumbImagePrefix, jpg, 50));
-
-		return returnMap;
-	}
-
-	public ConverterProcessResultList convertImageUserProfile(File file, Long userId, boolean skipConvertion) throws Exception {
-		ConverterProcessResultList returnMap = new ConverterProcessResultList();
-		
-		// User Profile Update
-		File[] files = getUploadProfilesUserDir(userId).listFiles(new FileFilter() {
-			@Override
-			public boolean accept(File pathname) {
-				return pathname.getName().endsWith(EXTENSION_JPG);
-			}
-		});
-		if (files != null) {
-			for (File f : files) {
-				FileUtils.deleteQuietly(f);
-			}
-		}
-		
-		File destinationFile = OmFileHelper.getNewFile(getUploadProfilesUserDir(userId), profileFileName, EXTENSION_JPG);
-		if (!skipConvertion) {
-			returnMap.addItem("processJPG", convertSingleJpg(file, destinationFile));
-		} else {
-			FileUtils.copyFile(file, destinationFile);
-		}
-		returnMap.addItem("processThumb2", generateThumbs.generateThumb(profileImagePrefix, destinationFile, 126));
-
-		if (!skipConvertion) {
-			// Delete old one
-			file.delete();
-		}
-
-		String pictureuri = destinationFile.getName();
-		User us = userDao.get(userId);
-		us.setUpdated(new java.util.Date());
-		us.setPictureuri(pictureuri);
-		userDao.update(us, userId);
-
-		//FIXME: After uploading a new picture all other clients should refresh
-		//scopeApplicationAdapter.updateUserSessionObject(userId, pictureuri);
-
-		return returnMap;
-	}
-
-	/**
-	 * -density 150 -resize 800
-	 * @throws IOException 
-	 * 
-	 */
-	private ConverterProcessResult convertSingleJpg(File in, File out) throws IOException {
-		String[] argv = new String[] { getPathToImageMagick(), in.getCanonicalPath(), out.getCanonicalPath() };
-
-		return ProcessHelper.executeScript("convertSingleJpg", argv);
-	}
-
-	public ConverterProcessResult resize(File in, File out, Integer width, Integer height) throws IOException {
-		String[] argv = new String[] { getPathToImageMagick()
-				, "-resize", (width == null ? "" : width) + (height == null ? "" : "x" + height)
-				, in.getCanonicalPath(), out.getCanonicalPath()
-				};
-		return ProcessHelper.executeScript("GenerateImage::resize", argv);
-	}
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateThumbs.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateThumbs.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateThumbs.java
deleted file mode 100644
index ae8b85c..0000000
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateThumbs.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.core.converter;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.apache.openmeetings.util.process.ConverterProcessResult;
-import org.apache.openmeetings.util.process.ProcessHelper;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-
-public class GenerateThumbs extends BaseConverter {
-	private static final Logger log = Red5LoggerFactory.getLogger(GenerateThumbs.class, webAppRootKey);
-
-	public ConverterProcessResult generateThumb(String pre, File f, Integer thumbSize) throws IOException {
-		log.debug("generateThumb");
-		// Init variables
-		String name = f.getName();
-		File parent = f.getParentFile();
-
-		String[] argv = new String[] {
-			getPathToImageMagick()
-			, "-thumbnail"
-			, thumbSize + "x" + thumbSize
-			, f.getCanonicalPath()
-			, new File(parent, pre + name).getCanonicalPath()
-			};
-
-		return ProcessHelper.executeScript("generateBatchThumbByWidth", argv);
-	}
-
-	public ConverterProcessResult decodePDF(String inputfile, String outputfile) {
-		log.debug("decodePDF");
-		String[] argv = new String[] { getPathToImageMagick(), inputfile, outputfile };
-
-		return ProcessHelper.executeScript("generateBatchThumbByWidth", argv);
-	}
-
-	public ConverterProcessResult generateBatchThumb(File in, File outDir, Integer thumbSize, String pre) throws IOException {
-		log.debug("generateBatchThumbByWidth");
-		String[] argv = new String[] {
-			getPathToImageMagick()
-			, "-thumbnail" // FIXME
-			, "" + thumbSize
-			, in.getCanonicalPath()
-			, new File(outDir, "_" + pre + "_page-%04d.jpg").getCanonicalPath()
-			};
-
-		return ProcessHelper.executeScript("generateBatchThumbByWidth", argv);
-	}
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ImageConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ImageConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ImageConverter.java
new file mode 100644
index 0000000..4184145
--- /dev/null
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/ImageConverter.java
@@ -0,0 +1,166 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.core.converter;
+
+import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_JPG;
+import static org.apache.openmeetings.util.OmFileHelper.getUploadProfilesUserDir;
+import static org.apache.openmeetings.util.OmFileHelper.profileFileName;
+import static org.apache.openmeetings.util.OmFileHelper.profileImagePrefix;
+import static org.apache.openmeetings.util.OmFileHelper.thumbImagePrefix;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.util.process.ConverterProcessResult;
+import org.apache.openmeetings.util.process.ConverterProcessResultList;
+import org.apache.openmeetings.util.process.ProcessHelper;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class ImageConverter extends BaseConverter {
+	private static final Logger log = Red5LoggerFactory.getLogger(ImageConverter.class, webAppRootKey);
+
+	@Autowired
+	private UserDao userDao;
+
+	public ConverterProcessResultList convertImage(FileItem f, String ext) throws IOException {
+		ConverterProcessResultList returnMap = new ConverterProcessResultList();
+
+		File jpg = f.getFile(EXTENSION_JPG);
+		if (!EXTENSION_JPG.equals(ext)) {
+			File img = f.getFile(ext);
+
+			log.debug("##### convertImage destinationFile: " + jpg);
+			returnMap.addItem("processJPG", convertSingleJpg(img, jpg));
+		}
+		ConverterProcessResult res = ProcessHelper.executeScript("get image dimensions :: " + f.getId()
+				, new String[] {getPathToIdentify(), "-format", "%wx%h", jpg.getCanonicalPath()});
+		returnMap.addItem("get JPG dimensions", res);
+		Dimension dim = getDimension(res.getOut());
+		f.setWidth(dim.width);
+		f.setHeight(dim.height);
+		returnMap.addItem("processThumb", generateThumb(thumbImagePrefix, jpg, 50));
+		return returnMap;
+	}
+
+	public ConverterProcessResultList convertImageUserProfile(File file, Long userId, boolean skipConvertion) throws Exception {
+		ConverterProcessResultList returnMap = new ConverterProcessResultList();
+
+		// User Profile Update
+		File[] files = getUploadProfilesUserDir(userId).listFiles(new FileFilter() {
+			@Override
+			public boolean accept(File pathname) {
+				return pathname.getName().endsWith(EXTENSION_JPG);
+			}
+		});
+		if (files != null) {
+			for (File f : files) {
+				FileUtils.deleteQuietly(f);
+			}
+		}
+
+		File destinationFile = OmFileHelper.getNewFile(getUploadProfilesUserDir(userId), profileFileName, EXTENSION_JPG);
+		if (!skipConvertion) {
+			returnMap.addItem("processJPG", convertSingleJpg(file, destinationFile));
+		} else {
+			FileUtils.copyFile(file, destinationFile);
+		}
+		returnMap.addItem("processThumb2", generateThumb(profileImagePrefix, destinationFile, 126));
+
+		if (!skipConvertion) {
+			// Delete old one
+			file.delete();
+		}
+
+		String pictureuri = destinationFile.getName();
+		User us = userDao.get(userId);
+		us.setUpdated(new java.util.Date());
+		us.setPictureuri(pictureuri);
+		userDao.update(us, userId);
+
+		//FIXME: After uploading a new picture all other clients should refresh
+		//scopeApplicationAdapter.updateUserSessionObject(userId, pictureuri);
+
+		return returnMap;
+	}
+
+	/**
+	 * -density 150 -resize 800
+	 * @throws IOException
+	 *
+	 */
+	private ConverterProcessResult convertSingleJpg(File in, File out) throws IOException {
+		String[] argv = new String[] { getPathToConvert(), in.getCanonicalPath(), out.getCanonicalPath() };
+
+		return ProcessHelper.executeScript("convertSingleJpg", argv);
+	}
+
+	public ConverterProcessResult resize(File in, File out, Integer width, Integer height) throws IOException {
+		String[] argv = new String[] { getPathToConvert()
+				, "-resize", (width == null ? "" : width) + (height == null ? "" : "x" + height)
+				, in.getCanonicalPath(), out.getCanonicalPath()
+				};
+		return ProcessHelper.executeScript("GenerateImage::resize", argv);
+	}
+
+	public ConverterProcessResult decodePDF(String inputfile, String outputfile) {
+		log.debug("decodePDF");
+		String[] argv = new String[] { getPathToConvert(), inputfile, outputfile };
+
+		return ProcessHelper.executeScript("generateBatchThumbByWidth", argv);
+	}
+
+	public ConverterProcessResult generateBatchThumb(File in, File outDir, Integer thumbSize, String pre) throws IOException {
+		log.debug("generateBatchThumbByWidth");
+		String[] argv = new String[] {
+			getPathToConvert()
+			, "-thumbnail" // FIXME
+			, "" + thumbSize
+			, in.getCanonicalPath()
+			, new File(outDir, "_" + pre + "_page-%04d.jpg").getCanonicalPath()
+			};
+
+		return ProcessHelper.executeScript("generateBatchThumbByWidth", argv);
+	}
+
+	public ConverterProcessResult generateThumb(String pre, File f, Integer thumbSize) throws IOException {
+		log.debug("generateThumb");
+		// Init variables
+		String name = f.getName();
+		File parent = f.getParentFile();
+
+		String[] argv = new String[] {
+			getPathToConvert()
+			, "-thumbnail"
+			, thumbSize + "x" + thumbSize
+			, f.getCanonicalPath()
+			, new File(parent, pre + name).getCanonicalPath()
+			};
+
+		return ProcessHelper.executeScript("generateBatchThumbByWidth", argv);
+	}
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
index be19413..1daeb4d 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
@@ -28,10 +28,9 @@ import java.util.List;
 import java.util.UUID;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.openmeetings.core.converter.DocumentConverter;
 import org.apache.openmeetings.core.converter.FlvExplorerConverter;
-import org.apache.openmeetings.core.converter.GenerateImage;
-import org.apache.openmeetings.core.converter.GenerateThumbs;
-import org.apache.openmeetings.core.documents.GeneratePDF;
+import org.apache.openmeetings.core.converter.ImageConverter;
 import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 import org.apache.openmeetings.db.entity.file.FileItem.Type;
@@ -51,11 +50,9 @@ public class FileProcessor {
 	@Autowired
 	private FileExplorerItemDao fileDao;
 	@Autowired
-	private GenerateImage generateImage;
+	private ImageConverter imageConverter;
 	@Autowired
-	private GenerateThumbs generateThumbs;
-	@Autowired
-	private GeneratePDF generatePDF;
+	private DocumentConverter generatePDF;
 
 	//FIXME TODO this method need to be refactored to throw exceptions
 	public ConverterProcessResultList processFile(FileExplorerItem f, InputStream is) throws Exception {
@@ -116,13 +113,10 @@ public class FileProcessor {
 			returnError = generatePDF.convertPDF(f, ext);
 		} else if (isChart) {
 			log.debug("uploaded chart file");
-		} else if (isImage && !isAsIs) {
+		} else if (isImage) {
 			// convert it to JPG
 			log.debug("##### convert it to JPG: ");
-			returnError = generateImage.convertImage(f, ext);
-		} else if (isAsIs) {
-			ConverterProcessResult processThumb = generateThumbs.generateThumb(thumbImagePrefix, file, 50);
-			returnError.addItem("processThumb", processThumb);
+			returnError = imageConverter.convertImage(f, ext);
 		} else if (isVideo) {
 			List<ConverterProcessResult> returnList = flvExplorerConverter.convertToMP4(f, ext);
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/GeneratePDF.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/GeneratePDF.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/GeneratePDF.java
deleted file mode 100644
index 5a9c315..0000000
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/documents/GeneratePDF.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.core.documents;
-
-import static org.apache.openmeetings.core.documents.CreateLibraryPresentation.generateXMLDocument;
-import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-
-import java.io.File;
-
-import org.apache.openmeetings.core.converter.GenerateSWF;
-import org.apache.openmeetings.core.converter.GenerateThumbs;
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.db.entity.file.FileExplorerItem;
-import org.apache.openmeetings.util.process.ConverterProcessResult;
-import org.apache.openmeetings.util.process.ConverterProcessResultList;
-import org.apache.wicket.util.string.Strings;
-import org.artofsolving.jodconverter.OfficeDocumentConverter;
-import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
-import org.artofsolving.jodconverter.office.OfficeException;
-import org.artofsolving.jodconverter.office.OfficeManager;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-
-public class GeneratePDF {
-	private static final Logger log = Red5LoggerFactory.getLogger(GeneratePDF.class, webAppRootKey);
-
-	@Autowired
-	private GenerateThumbs generateThumbs;
-	@Autowired
-	private GenerateSWF generateSWF;
-	@Autowired
-	private ConfigurationDao configurationDao;
-
-	public ConverterProcessResultList convertPDF(FileExplorerItem f, String ext) throws Exception {
-		ConverterProcessResultList errors = new ConverterProcessResultList();
-
-		boolean fullProcessing = !EXTENSION_PDF.equals(ext);
-		File original = f.getFile(ext);
-		File pdf = f.getFile(EXTENSION_PDF);
-		log.debug("fullProcessing: " + fullProcessing);
-		if (fullProcessing) {
-			log.debug("-- running JOD --");
-			errors.addItem("processOpenOffice", doJodConvert(original, pdf));
-		}
-		
-		log.debug("-- generateBatchThumb --");
-		errors.addItem("processThumb", generateThumbs.generateBatchThumb(pdf, pdf.getParentFile(), 80, "thumb"));
-		File swf = f.getFile();
-		errors.addItem("processSWF", generateSWF.generateSwf(pdf, swf));
-
-		errors.addItem("processXML", generateXMLDocument(original, fullProcessing ? pdf : null, swf));
-		return errors;
-	}
-
-	/**
-	 * Generates PDF using JOD Library (external library)
-	 */
-	public ConverterProcessResult doJodConvert(File in, File out) {
-		try {
-			String officePath = configurationDao.getConfValue("office.path", String.class, null);
-			DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration();
-			if (!Strings.isEmpty(officePath)) {
-				configuration.setOfficeHome(officePath);
-			}
-			OfficeManager officeManager = configuration.buildOfficeManager();
-			officeManager.start();
-			OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager);
-			try {
-				converter.convert(in, out);
-			} catch (OfficeException ex) {
-				log.error("doJodConvert", ex);
-				return new ConverterProcessResult("doJodConvert", ex.getMessage(), ex);
-			} finally {
-				officeManager.stop();
-			}
-		} catch (Exception ex) {
-			log.error("doJodConvert", ex);
-			return new ConverterProcessResult("doJodConvert", ex.getMessage(), ex);
-		}
-		ConverterProcessResult result = new ConverterProcessResult("doJodConvert", "Document converted successfully", null);
-		result.setExitCode(0);
-		return result;
-	}
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
index 3f97200..74bc93b 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
@@ -24,7 +24,7 @@ import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
 import java.util.function.BiConsumer;
-import java.util.function.Consumer;
+import java.util.function.BiFunction;
 import java.util.function.Function;
 import java.util.function.Predicate;
 
@@ -55,9 +55,9 @@ public class WebSocketHelper {
 	public static final String ID_ROOM_PREFIX = ID_TAB_PREFIX + "r";
 	public static final String ID_USER_PREFIX = ID_TAB_PREFIX + "u";
 
-	public static void sendClient(final Client c, byte[] b) {
-		if (c != null) {
-			send(a -> Arrays.asList(c), (t) -> {
+	public static void sendClient(final Client _c, byte[] b) {
+		if (_c != null) {
+			send(a -> Arrays.asList(_c), (t, c) -> {
 				try {
 					t.sendMessage(b, 0, b.length);
 				} catch (IOException e) {
@@ -69,11 +69,7 @@ public class WebSocketHelper {
 
 	public static void sendRoom(final RoomMessage m) {
 		log.debug("Sending WebSocket message: {} {}", m.getType(), m instanceof TextRoomMessage ? ((TextRoomMessage)m).getText() : "");
-		sendRoom(m.getRoomId(), (t) -> t.sendMessage(m), null);
-	}
-
-	public static void sendRoom(final Long roomId, final String m) {
-		sendRoom(roomId, m, null);
+		sendRoom(m.getRoomId(), (t, c) -> t.sendMessage(m), null);
 	}
 
 	private static JSONObject setScope(JSONObject o, ChatMessage m, long curUserId) {
@@ -114,16 +110,21 @@ public class WebSocketHelper {
 			.put("msg", arr);
 	}
 
+	public static void sendRoom(final Long roomId, final JSONObject m) {
+		sendRoom(roomId, m, null, null);
+	}
+
 	public static void sendRoom(ChatMessage m, JSONObject msg) {
-		sendRoom(m.getToRoom().getId(), msg.toString()
-				, c -> !m.isNeedModeration() || (m.isNeedModeration() && c.hasRight(Right.moderator)));
+		sendRoom(m.getToRoom().getId(), msg
+				, c -> !m.isNeedModeration() || (m.isNeedModeration() && c.hasRight(Right.moderator))
+				, null);
 	}
 
-	public static void sendRoom(final Long roomId, final String m, Predicate<Client> check) {
+	public static void sendRoom(final Long roomId, final JSONObject m, Predicate<Client> check, BiFunction<JSONObject, Client, String> func) {
 		log.debug("Sending WebSocket message: {}", m);
-		sendRoom(roomId, (t) -> {
+		sendRoom(roomId, (t, c) -> {
 			try {
-				t.sendMessage(m);
+				t.sendMessage(func == null ? m.toString() : func.apply(m, c));
 			} catch (IOException e) {
 				log.error("Error while broadcasting message to room", e);
 			}
@@ -131,7 +132,7 @@ public class WebSocketHelper {
 	}
 
 	public static void sendUser(final Long userId, final String m) {
-		send(a -> ((IApplication)a).getOmClients(userId), (t) -> {
+		send(a -> ((IApplication)a).getOmClients(userId), (t, c) -> {
 			try {
 				t.sendMessage(m);
 			} catch (IOException e) {
@@ -157,13 +158,13 @@ public class WebSocketHelper {
 		}
 	}
 
-	public static void sendRoom(final Long roomId, Consumer<IWebSocketConnection> consumer, Predicate<Client> check) {
+	public static void sendRoom(final Long roomId, BiConsumer<IWebSocketConnection, Client> consumer, Predicate<Client> check) {
 		send(a -> ((IApplication)a).getOmRoomClients(roomId), consumer, check);
 	}
 
 	public static void send(
 			final Function<Application, List<Client>> func
-			, Consumer<IWebSocketConnection> consumer
+			, BiConsumer<IWebSocketConnection, Client> consumer
 			, Predicate<Client> check)
 	{
 		Application app = Application.get(OpenmeetingsVariables.wicketApplicationName);
@@ -174,7 +175,7 @@ public class WebSocketHelper {
 			if (check == null || check.test(c)) {
 				final IWebSocketConnection wc = reg.getConnection(app, c.getSessionId(), new PageIdKey(c.getPageId()));
 				if (wc != null && wc.isOpen()) {
-					executor.run(() -> consumer.accept(wc));
+					executor.run(() -> consumer.accept(wc, c));
 				}
 			}
 		}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
index b7ed635..b99a638 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
@@ -35,6 +35,7 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_DEFAULT_
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_FRONTEND_REGISTER_KEY;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_GOOGLE_ANALYTICS_CODE;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_IGNORE_BAD_SSL;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_IMAGEMAGIC_PATH;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_LOGIN_MIN_LENGTH_KEY;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_MAX_UPLOAD_SIZE_KEY;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_OAUTH_REGISTER_KEY;
@@ -243,7 +244,7 @@ public class ImportInitvalues {
 
 		cfgDao.add("swftools_path", cfg.swfPath, null, "Path To SWF-Tools");
 
-		cfgDao.add("imagemagick_path", cfg.imageMagicPath, null, "Path to ImageMagick tools");
+		cfgDao.add(CONFIG_IMAGEMAGIC_PATH, cfg.imageMagicPath, null, "Path to ImageMagick tools");
 
 		cfgDao.add("sox_path", cfg.soxPath, null, "Path To SoX-Tools");
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
index 59c17b8..180be2f 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
@@ -48,6 +48,7 @@ public class OpenmeetingsVariables {
 	public static final String CONFIG_DEFAULT_GROUP_ID = "default_group_id";
 	public static final String CONFIG_GOOGLE_ANALYTICS_CODE = "google.analytics.code";
 	public static final String CONFIG_SYSTEM_EMAIL = "system_email_addr";
+	public static final String CONFIG_IMAGEMAGIC_PATH = "imagemagick_path";
 	public static final String MENU_ROOMS_NAME = "Conference Rooms";
 	public static final int RECENT_ROOMS_COUNT = 5;
 	public static final int LEVEL_USER = 1;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java
index 45ccab3..0e467be 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java
@@ -20,14 +20,11 @@ package org.apache.openmeetings.util.process;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
 
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.util.HashMap;
 import java.util.Map;
-import java.util.concurrent.TimeoutException;
+import java.util.concurrent.TimeUnit;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -35,49 +32,6 @@ import org.slf4j.Logger;
 public class ProcessHelper {
 	public static final Logger log = Red5LoggerFactory.getLogger(ProcessHelper.class, OpenmeetingsVariables.webAppRootKey);
 
-	private static class Worker extends Thread {
-		private final Process process;
-		private Integer exitCode;
-
-		private Worker(Process process) {
-			this.process = process;
-		}
-
-		@Override
-		public void run() {
-			try {
-				exitCode = process.waitFor();
-			} catch (InterruptedException ignore) {
-				return;
-			}
-		}
-	}
-
-	private static class StreamWatcher extends Thread {
-		public StringBuilder output;
-		private final InputStream is;
-		private final BufferedReader br;
-
-		private StreamWatcher(Process process, boolean isError) {
-			output = new StringBuilder();
-			is = isError ? process.getErrorStream() : process.getInputStream();
-			br = new BufferedReader(new InputStreamReader(is, UTF_8));
-		}
-
-		@Override
-		public void run() {
-			try {
-				String line = br.readLine();
-				while (line != null) {
-					output.append(line).append('\n');
-					line = br.readLine();
-				}
-			} catch (IOException ioexception) {
-				return;
-			}
-		}
-	}
-
 	public static ConverterProcessResult executeScriptWindows(String process, String[] argv) {
 		try {
 			String[] cmd = new String[argv.length + 2];
@@ -119,13 +73,14 @@ public class ProcessHelper {
 	}
 
 	public static ConverterProcessResult executeScript(String process, String[] argv, Map<? extends String, ? extends String> env) {
-		ConverterProcessResult returnMap = new ConverterProcessResult();
-		returnMap.setProcess(process);
+		ConverterProcessResult res = new ConverterProcessResult();
+		res.setProcess(process);
 		debugCommandStart(process, argv);
 
+		Process proc = null;
 		try {
-			returnMap.setCommand(getCommand(argv));
-			returnMap.setOut("");
+			res.setCommand(getCommand(argv));
+			res.setOut("");
 
 			// By using the process Builder we have access to modify the
 			// environment variables
@@ -133,56 +88,29 @@ public class ProcessHelper {
 			ProcessBuilder pb = new ProcessBuilder(argv);
 			pb.environment().putAll(env);
 
-			Process proc = pb.start();
+			proc = pb.start();
 
 			// 20-minute timeout for command execution
 			// FFMPEG conversion of Recordings may take a real long time until
 			// its finished
-			long timeout = 60000 * 20;
-
-			StreamWatcher errorWatcher = new StreamWatcher(proc, true);
-			Worker worker = new Worker(proc);
-			StreamWatcher inputWatcher = new StreamWatcher(proc, false);
-			errorWatcher.start();
-			inputWatcher.start();
-			worker.start();
-
-			try {
-				worker.join(timeout);
-				if (worker.exitCode != null) {
-					returnMap.setExitCode(worker.exitCode);
-					log.debug("exitVal: " + worker.exitCode);
-					returnMap.setError(errorWatcher.output.toString());
-				} else {
-					returnMap.setException("timeOut");
-					returnMap.setError(errorWatcher.output.toString());
-					returnMap.setExitCode(-1);
-
-					throw new TimeoutException();
-				}
-			} catch (InterruptedException ex) {
-				worker.interrupt();
-				errorWatcher.interrupt();
-				inputWatcher.interrupt();
-				Thread.currentThread().interrupt();
-
-				returnMap.setError(ex.getMessage());
-				returnMap.setExitCode(-1);
-
-				throw ex;
-			} finally {
-				proc.destroy();
-			}
+			proc.waitFor(20, TimeUnit.MINUTES);
 
+			res.setExitCode(proc.exitValue());
+			res.setOut(IOUtils.toString(proc.getInputStream(), UTF_8));
+			res.setError(IOUtils.toString(proc.getErrorStream(), UTF_8));
 		} catch (Throwable t) {
 			log.error("executeScript", t);
-			returnMap.setError(t.getMessage());
-			returnMap.setException(t.toString());
-			returnMap.setExitCode(-1);
+			res.setError(t.getMessage());
+			res.setException(t.toString());
+			res.setExitCode(-1);
+		} finally {
+			if (proc != null) {
+				proc.destroy();
+			}
 		}
 
 		debugCommandEnd(process);
-		return returnMap;
+		return res;
 	}
-
 }
+

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
index 6965bc5..f582f3c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
@@ -27,7 +27,7 @@ import static org.apache.openmeetings.web.util.GroupLogoResourceReference.getUrl
 
 import java.io.File;
 
-import org.apache.openmeetings.core.converter.GenerateImage;
+import org.apache.openmeetings.core.converter.ImageConverter;
 import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
 import org.apache.openmeetings.db.entity.user.Group;
@@ -71,7 +71,7 @@ public class GroupForm extends AdminBaseForm<Group> {
 
 		@Override
 		protected void processImage(StoredFile sf, File f) throws Exception {
-			getBean(GenerateImage.class).resize(f, getGroupLogo(GroupForm.this.getModelObject().getId(), false), null, 28);
+			getBean(ImageConverter.class).resize(f, getGroupLogo(GroupForm.this.getModelObject().getId(), false), null, 28);
 		}
 
 		@Override

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
index 02ebcd6..0573939 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.java
@@ -23,7 +23,7 @@ import static org.apache.openmeetings.web.util.ProfileImageResourceReference.get
 
 import java.io.File;
 
-import org.apache.openmeetings.core.converter.GenerateImage;
+import org.apache.openmeetings.core.converter.ImageConverter;
 import org.apache.openmeetings.util.StoredFile;
 
 public class UploadableProfileImagePanel extends UploadableImagePanel {
@@ -37,7 +37,7 @@ public class UploadableProfileImagePanel extends UploadableImagePanel {
 
 	@Override
 	protected void processImage(StoredFile sf, File f) throws Exception {
-		getBean(GenerateImage.class).convertImageUserProfile(f, userId, sf.isAsIs());
+		getBean(ImageConverter.class).convertImageUserProfile(f, userId, sf.isAsIs());
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
index c05c2e1..80fae9f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
@@ -26,7 +26,7 @@
 			<div class="room sidebar left" wicket:id="sidebar"></div>
 			<div wicket:id="wb-area" class="room wb area">
 				<div class="wb-drop-area"></div>
-				<div class="wb" wicket:id="whiteboard"></div>
+				<div class="wb-area" wicket:id="whiteboard"></div>
 			</div>
 			<div wicket:id="activities"></div>
 		</div>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
index 0231370..226639e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
@@ -112,7 +112,7 @@ public class RoomResourceReference extends FileItemResourceReference<FileExplore
 
 	protected File getFile(FileExplorerItem f, String ext) {
 		File file = f.getFile(ext);
-		if (!file.exists()) {
+		if (file == null || !file.exists()) {
 			file = new File(new File(getOmHome(), "default"), String.format("deleted.%s"
 					, FileItem.Type.Image == f.getType() ? EXTENSION_JPG : EXTENSION_SWF));
 		}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
index a9a14c7..2885c0d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
@@ -17,17 +17,19 @@
  * under the License.
  */
 function setRoomSizes() {
-	var w = $(window).width() - $(".room.sidebar.left").width() - 5;
-	$(".room.wb.area").width(w);
-	$(".room.wb.area .wb").width(w);
+	var sb = $(".room.sidebar.left")
+		, w = $(window).width() - sb.width() - 5
+		, h = $(window).height() - $('#menu').height()
+		, p = sb.find('.tabs');
+	sb.height(h);
+	var hh = h - 5;
+	p.height(hh);
+	$(".user.list", p).height(hh - $("ul", p).height() - $(".user.header", p).height() - 5);
 
-	var h = $(window).height() - $('#menu').height();
-	$(".room.sidebar.left").height(h);
-	var p = $(".room.sidebar.left .tabs");
-	p.height(h - 5);
-	$(".user.list", p).height(h - $("ul", p).height() - $(".user.header", p).height() - 10);
-	$(".room.wb.area").height(h);
-	$(".room.wb.area .wb").height(h);
+	var container = $(".room.wb.area")
+		, area = container.find(".wb-area");
+	container.width(w).height(h).css('left', sb.width() + "px");
+	area.width(w).height(hh);
 }
 function roomReload(event, ui) {
 	window.location.reload();
@@ -61,7 +63,7 @@ function roomLoad() {
 	$(".room.sidebar.left").resizable({
 		handles: "e"
 		, stop: function(event, ui) {
-			alignBlocks();
+			setRoomSizes();
 		}
 	});
 	Wicket.Event.subscribe("/websocket/closed", roomClosed);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
index 49f366c..3cd5771 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
@@ -102,8 +102,7 @@ public class Chat extends Panel {
 					WebSocketHelper.sendRoom(roomId
 							, new JSONObject().put("type", "typing")
 									.put("active", type.indexOf("start") > -1)
-									.put("uid", getUid())
-									.toString());
+									.put("uid", getUid()));
 				}
 			} catch (Exception e) {
 				log.error("Unexpected exception while accepting chat message", e);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml b/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
index bd5c378..1e8bce6 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings-applicationContext.xml
@@ -7,16 +7,16 @@
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at
-  
+
       http://www.apache.org/licenses/LICENSE-2.0
-  
+
   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
-  
+
 -->
 <beans xmlns="http://www.springframework.org/schema/beans"
 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -203,9 +203,8 @@
 	<bean id="omCalendarDao" class="org.apache.openmeetings.db.dao.calendar.OmCalendarDao" />
 
 	<!-- No Interface -->
-	<bean id="generateImage" class="org.apache.openmeetings.core.converter.GenerateImage" />
-	<bean id="generateThumbs" class="org.apache.openmeetings.core.converter.GenerateThumbs" />
-	<bean id="generatePDF" class="org.apache.openmeetings.core.documents.GeneratePDF" />
+	<bean id="imageConverter" class="org.apache.openmeetings.core.converter.ImageConverter" />
+	<bean id="documentConverter" class="org.apache.openmeetings.core.converter.DocumentConverter" />
 	<bean id="smsHandler" class="org.apache.openmeetings.core.mail.SMSHandler" />
 	<bean id="importInitvalues" class="org.apache.openmeetings.installation.ImportInitvalues" />
 	<bean id="generateSWF" class="org.apache.openmeetings.core.converter.GenerateSWF" />

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/forms.css
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/forms.css b/openmeetings-web/src/main/webapp/css/forms.css
index 677d1e3..4caaace 100644
--- a/openmeetings-web/src/main/webapp/css/forms.css
+++ b/openmeetings-web/src/main/webapp/css/forms.css
@@ -32,7 +32,7 @@ div.formSaveBar {
 	vertical-align: super;
 }
 div.formSaveButton input {
-	background: url(images/forms/disk.png) no-repeat;
+	background: url(images/disk.png) no-repeat;
 	float: left;
 	cursor: pointer;
 	width: 18px;
@@ -42,13 +42,13 @@ div.formSaveButton input {
 	margin-top: 2px;
 }
 .addButton {
-	background: url(images/forms/plus_icon.png) no-repeat;
+	background: url(images/plus_icon.png) no-repeat;
 }
 .delButton {
-	background: url(images/forms/cancel_icon.png) no-repeat;
+	background: url(images/cancel_icon.png) no-repeat;
 }
 .formNewButton {
-	background: url(images/forms/plus_icon.png) no-repeat;
+	background: url(images/plus_icon.png) no-repeat;
 	float: left;
 	cursor: pointer;
 	width: 18px;
@@ -58,10 +58,10 @@ div.formSaveButton input {
 	margin-top: 2px;
 }
 .formNewButton.disabled {
-	background: url(images/forms/plus_icon_disabled.png) no-repeat;
+	background: url(images/plus_icon_disabled.png) no-repeat;
 }
 div.formRefreshButton input {
-	background: url(images/forms/arrow_refresh_small.png) no-repeat;
+	background: url(images/arrow_refresh_small.png) no-repeat;
 	float: left;
 	cursor: pointer;
 	width: 18px;
@@ -71,7 +71,7 @@ div.formRefreshButton input {
 	margin-top: 2px;
 }
 .formCancelButton {
-	background: url(images/forms/cancel_icon.png) no-repeat;
+	background: url(images/cancel_icon.png) no-repeat;
 	display: inline-block;
 	float: left;
 	cursor: pointer;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/arrow.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/arrow.png b/openmeetings-web/src/main/webapp/css/images/arrow.png
new file mode 100644
index 0000000..0e73cb5
Binary files /dev/null and b/openmeetings-web/src/main/webapp/css/images/arrow.png differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/arrow_down.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/arrow_down.png b/openmeetings-web/src/main/webapp/css/images/arrow_down.png
deleted file mode 100644
index e5b352b..0000000
Binary files a/openmeetings-web/src/main/webapp/css/images/arrow_down.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/arrow_right.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/arrow_right.png b/openmeetings-web/src/main/webapp/css/images/arrow_right.png
deleted file mode 100644
index 3ef0b77..0000000
Binary files a/openmeetings-web/src/main/webapp/css/images/arrow_right.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/disk.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/disk.png b/openmeetings-web/src/main/webapp/css/images/disk.png
new file mode 100644
index 0000000..99d532e
Binary files /dev/null and b/openmeetings-web/src/main/webapp/css/images/disk.png differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/ellipse.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/ellipse.png b/openmeetings-web/src/main/webapp/css/images/ellipse.png
new file mode 100644
index 0000000..9cc51f3
Binary files /dev/null and b/openmeetings-web/src/main/webapp/css/images/ellipse.png differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/font.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/font.png b/openmeetings-web/src/main/webapp/css/images/font.png
new file mode 100644
index 0000000..5b19cec
Binary files /dev/null and b/openmeetings-web/src/main/webapp/css/images/font.png differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/forms/arrow_refresh_small.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/forms/arrow_refresh_small.png b/openmeetings-web/src/main/webapp/css/images/forms/arrow_refresh_small.png
deleted file mode 100644
index d3087df..0000000
Binary files a/openmeetings-web/src/main/webapp/css/images/forms/arrow_refresh_small.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/forms/cancel_icon.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/forms/cancel_icon.png b/openmeetings-web/src/main/webapp/css/images/forms/cancel_icon.png
deleted file mode 100644
index 2d26062..0000000
Binary files a/openmeetings-web/src/main/webapp/css/images/forms/cancel_icon.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/forms/disk.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/forms/disk.png b/openmeetings-web/src/main/webapp/css/images/forms/disk.png
deleted file mode 100644
index 99d532e..0000000
Binary files a/openmeetings-web/src/main/webapp/css/images/forms/disk.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/forms/plus_icon.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/forms/plus_icon.png b/openmeetings-web/src/main/webapp/css/images/forms/plus_icon.png
deleted file mode 100644
index acec291..0000000
Binary files a/openmeetings-web/src/main/webapp/css/images/forms/plus_icon.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/forms/plus_icon_disabled.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/forms/plus_icon_disabled.png b/openmeetings-web/src/main/webapp/css/images/forms/plus_icon_disabled.png
deleted file mode 100644
index cfb4776..0000000
Binary files a/openmeetings-web/src/main/webapp/css/images/forms/plus_icon_disabled.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/line.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/line.png b/openmeetings-web/src/main/webapp/css/images/line.png
new file mode 100644
index 0000000..10b420a
Binary files /dev/null and b/openmeetings-web/src/main/webapp/css/images/line.png differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/next.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/next.png b/openmeetings-web/src/main/webapp/css/images/next.png
new file mode 100644
index 0000000..67a59f5
Binary files /dev/null and b/openmeetings-web/src/main/webapp/css/images/next.png differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/paintbrush.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/paintbrush.png b/openmeetings-web/src/main/webapp/css/images/paintbrush.png
new file mode 100644
index 0000000..27fd06c
Binary files /dev/null and b/openmeetings-web/src/main/webapp/css/images/paintbrush.png differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/plus_icon.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/plus_icon.png b/openmeetings-web/src/main/webapp/css/images/plus_icon.png
new file mode 100644
index 0000000..acec291
Binary files /dev/null and b/openmeetings-web/src/main/webapp/css/images/plus_icon.png differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/plus_icon_disabled.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/plus_icon_disabled.png b/openmeetings-web/src/main/webapp/css/images/plus_icon_disabled.png
new file mode 100644
index 0000000..cfb4776
Binary files /dev/null and b/openmeetings-web/src/main/webapp/css/images/plus_icon_disabled.png differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/pointer.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/pointer.png b/openmeetings-web/src/main/webapp/css/images/pointer.png
new file mode 100644
index 0000000..98031f6
Binary files /dev/null and b/openmeetings-web/src/main/webapp/css/images/pointer.png differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/prev.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/prev.png b/openmeetings-web/src/main/webapp/css/images/prev.png
new file mode 100644
index 0000000..5040cd3
Binary files /dev/null and b/openmeetings-web/src/main/webapp/css/images/prev.png differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/rectangle.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/rectangle.png b/openmeetings-web/src/main/webapp/css/images/rectangle.png
new file mode 100644
index 0000000..db799f4
Binary files /dev/null and b/openmeetings-web/src/main/webapp/css/images/rectangle.png differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/uline.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/uline.png b/openmeetings-web/src/main/webapp/css/images/uline.png
new file mode 100644
index 0000000..32914f0
Binary files /dev/null and b/openmeetings-web/src/main/webapp/css/images/uline.png differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/images/wbpointer.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/wbpointer.png b/openmeetings-web/src/main/webapp/css/images/wbpointer.png
new file mode 100644
index 0000000..3a3ee30
Binary files /dev/null and b/openmeetings-web/src/main/webapp/css/images/wbpointer.png differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/room.css
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/room.css b/openmeetings-web/src/main/webapp/css/room.css
index 8d8acce..fb9d793 100644
--- a/openmeetings-web/src/main/webapp/css/room.css
+++ b/openmeetings-web/src/main/webapp/css/room.css
@@ -88,15 +88,15 @@
 .room.sidebar.left {
 	min-width: 200px;
 	width: 315px;
-	float: left;
+	position: absolute;
 }
 .room.wb.area {
-	float: left;
+	position: absolute;
 }
 .room.wb.area.ui-state-hover {
 	border: 0;
 }
-.room.wb.area.ui-state-hover .wb {
+.room.wb.area.ui-state-hover .wb-area {
 	visibility: hidden;
 	height: 1px !important;
 }
@@ -110,6 +110,79 @@
 	height: inherit;
 	background-position: center;
 }
+.room.wb.area .tabs.ui-tabs, .room.wb.area .ui-tabs-panel {
+	padding: 0;
+	background-color:transparent;
+}
+.room.wb.area .ui-tabs-panel {
+	position: relative;
+}
+.room.wb.area .tools {
+	position: relative;
+	display: inline-block;
+	border: 0;
+}
+.room.wb.area .tools .bumper {
+	float: left;
+	display: inline-block;
+	background: repeating-linear-gradient(-45deg, transparent, transparent 3px, gray 3px, gray 5px);
+}
+.room.wb.area .tools.vertical .bumper {
+	width: 38px;
+	height: 20px;
+}
+.room.wb.area .tools.horisontal .bumper {
+	width: 20px;
+	height: 38px;
+}
+.room.wb.area .tools.vertical {
+	width: 38px;
+	height: 420px;
+}
+.room.wb.area .tools.horisontal {
+	width: 420px;
+	height: 38px;
+}
+.room.wb.area .tools .om-icon.big {
+	float: left;
+	vertical-align: top;
+}
+.room.wb.area .tools .om-icon.big.active {
+	background-color: whitesmoke;
+}
+.room.wb.area .tools .om-icon.big.paint {
+	background-image: url(images/paintbrush.png);
+}
+.room.wb.area .tools .om-icon.big.pointer {
+	background-image: url(images/pointer.png);
+}
+.room.wb.area .tools .om-icon.big.apointer {
+	background-image: url(images/wbpointer.png);
+}
+.room.wb.area .tools .om-icon.big.line {
+	background-image: url(images/line.png);
+}
+.room.wb.area .tools .om-icon.big.uline {
+	background-image: url(images/uline.png);
+}
+.room.wb.area .tools .om-icon.big.rect {
+	background-image: url(images/rectangle.png);
+}
+.room.wb.area .tools .om-icon.big.ellipse {
+	background-image: url(images/ellipse.png);
+}
+.room.wb.area .tools .om-icon.big.text {
+	background-image: url(images/font.png);
+}
+.room.wb.area .tools .om-icon.big.arrow {
+	background-image: url(images/arrow.png);
+}
+.room.wb.area .om-icon.big.next {
+	background-image: url(images/next.png);
+}
+.room.wb.area .om-icon.big.prev {
+	background-image: url(images/prev.png);
+}
 .room.sidebar.left .ui-tabs .ui-tabs-panel {
 	padding: 0;
 }
@@ -228,7 +301,7 @@
 .restart.ui-icon {
 	background-image: url(images/arrow_refresh_small.png);
 }
-.settings.ui-icon {
+.settings.ui-icon, .settings.om-icon {
 	background-image: url(images/settings.png);
 }
 .activity.cam.ui-icon {
@@ -296,3 +369,102 @@
 .room.sidebar.left .tab.om-icon.big.file {
 	background-image: url(images/folder_explore.png);
 }
+/**************************/
+.wb-settings {
+	position: absolute;
+}
+.wb-settings, .wb-settings .tab.props {
+	display: inline-block;
+	width: 310px;
+}
+.wb-settings .ui-dialog-titlebar-close {
+	position: absolute;
+	right: .3em;
+	top: 5px;
+	width: 20px;
+	padding: 1px;
+	height: 20px;
+}
+.wb-settings .header {
+	padding: 5px;
+}
+.wb-settings .header .ui-dialog-title {
+	padding-left: 10px;
+}
+.wb-settings .tab.props {
+	padding: 5px 10px;
+}
+.wb-settings .tab.props .prop-row {
+	padding-top: 5px;
+	margin: 0;
+	font-size: small;
+}
+.wb-settings .tab.props .block {
+	display: inline;
+	padding-left: 5px;
+}
+.wb-settings .tab.props .block.lbl {
+	width: 1em;
+}
+.wb-settings .tab.props .block.but {
+	width: 2.5em;
+}
+.wb-settings .tab.props .block.input {
+	width: 40px;
+}
+.wb-settings .tab.props .block.input input {
+	width: 30px;
+}
+.wb-settings .tab.props .block.input input[type=number] {
+	width: 40px;
+}
+.wb-settings .tab.props .block.input input[type=color] {
+	padding: 0;
+}
+.wb-settings .tab.props .block.input input[type=color]:disabled {
+	opacity:.3;
+}
+.wb-settings .tab.props .block.but button {
+	width: 2.5em;
+}
+.wb-settings .tab.props  .wb-prop-i.selected {
+	font-style: italic;
+}
+.wb-settings .tab.props .wb-prop-b.selected {
+	font-weight: bold;
+}
+.dropdown-menu.om-left {
+	right: 0;
+	left: auto !important;
+}
+.wb-tabbar {
+	padding-left: 70px !important;
+	padding-right: 35px !important;
+}
+.wb-tabbar .scroll-container {
+	overflow: hidden;
+}
+.wb-tabbar .scroll-container .scrollable, .wb-tabbar .scroll-container .scrollable li {
+	display: flex;
+}
+.wb-tabbar .add.disabled, .wb-tabbar .prev.disabled, .wb-tabbar .next.disabled {
+	opacity: .3;
+}
+.wb-tabbar .add, .wb-tabbar .prev, .wb-tabbar .next {
+	position: absolute;
+	top: 3px;
+}
+.wb-tabbar .add {
+	left: 2px;
+}
+.wb-tabbar .prev {
+	left: 35px;
+}
+.wb-tabbar .next {
+	right: 2px;
+}
+.wb-tabbar li button {
+	width: 20px;
+	height: 20px;
+	padding: 0;
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/00b8a9ac/openmeetings-web/src/main/webapp/css/theme.css
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/theme.css b/openmeetings-web/src/main/webapp/css/theme.css
index 8c8f61f..d9382fa 100644
--- a/openmeetings-web/src/main/webapp/css/theme.css
+++ b/openmeetings-web/src/main/webapp/css/theme.css
@@ -298,6 +298,7 @@ html, body {
 }
 .om-icon.big {
 	background-size: 32px;
+	background-position: 1px 1px !important;
 	width: 34px;
 	height: 34px;
 }


[18/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1612] red5 version is updated

Posted by so...@apache.org.
[OPENMEETINGS-1612] red5 version is updated


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/56329016
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/56329016
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/56329016

Branch: refs/heads/3.2.x
Commit: 56329016067d741865f1336fcda70caaf3ed3861
Parents: eb0c7ed
Author: Maxim Solodovnik <so...@apache.org>
Authored: Sat Mar 25 04:34:38 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Sat Mar 25 04:34:38 2017 +0000

----------------------------------------------------------------------
 openmeetings-server/pom.xml | 2 +-
 pom.xml                     | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/56329016/openmeetings-server/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/pom.xml b/openmeetings-server/pom.xml
index dcbd6c9..54515f6 100644
--- a/openmeetings-server/pom.xml
+++ b/openmeetings-server/pom.xml
@@ -117,7 +117,7 @@
 			<id>prepare-red5-server</id>
 			<activation>
 				<file>
-					<missing>red5-server/red5-server-1.0.9-M4.tar.gz</missing> <!-- TODO should be in-sync with global property -->
+					<missing>red5-server/red5-server-1.0.9-M6.tar.gz</missing> <!-- TODO should be in-sync with global property -->
 				</file>
 			</activation>
 			<build>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/56329016/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 153d666..5bc839f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,8 +43,8 @@
 		<wicket.version>8.0.0-M4</wicket.version>
 		<wicketju.version>8.0.0-M4.1</wicketju.version>
 		<wickets.version>8.0.0-M4</wickets.version>
-		<red5-server.version>1.0.9-M4</red5-server.version>
-		<red5-client.version>1.0.9-M4</red5-client.version>
+		<red5-server.version>1.0.9-M6</red5-server.version>
+		<red5-client.version>1.0.9-M6</red5-client.version>
 		<spring.version>4.3.6.RELEASE</spring.version>
 		<mina.version>2.0.16</mina.version>
 		<tomcat.version>8.5.11</tomcat.version>


[02/50] [abbrv] openmeetings git commit: [OPENMEETINGS-690] self notification is added for haveQuestion

Posted by so...@apache.org.
[OPENMEETINGS-690] self notification is added for haveQuestion


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/ad627cc5
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/ad627cc5
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/ad627cc5

Branch: refs/heads/3.2.x
Commit: ad627cc5eee18b379b0e876ae10619c63dfb3e9a
Parents: 5e028d6
Author: Maxim Solodovnik <so...@apache.org>
Authored: Tue Mar 14 13:23:52 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Tue Mar 14 13:23:52 2017 +0000

----------------------------------------------------------------------
 .../src/main/java/org/apache/openmeetings/web/room/RoomPanel.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/ad627cc5/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index 768ec35..9db123f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -411,7 +411,7 @@ public class RoomPanel extends BasePanel {
 						activities.remove(((TextRoomMessage)m).getText(), handler);
 						break;
 					case haveQuestion:
-						if (getClient().hasRight(Room.Right.moderator)) {
+						if (getClient().hasRight(Room.Right.moderator) || getUserId().equals(m.getUserId())) {
 							activities.add(new Activity(m, Activity.Type.haveQuestion), handler);
 						}
 						break;


[23/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1617] backup export is improved

Posted by so...@apache.org.
[OPENMEETINGS-1617] backup export is improved


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/d532ba9a
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/d532ba9a
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/d532ba9a

Branch: refs/heads/3.2.x
Commit: d532ba9aed1fb5b44a549630a0b7c01d36eaa53b
Parents: 0d93bd2
Author: Maxim Solodovnik <so...@apache.org>
Authored: Wed Mar 29 14:03:28 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Wed Mar 29 14:03:28 2017 +0000

----------------------------------------------------------------------
 .../openmeetings/backup/BackupExport.java       | 557 +++++++++----------
 .../java/org/apache/openmeetings/cli/Admin.java |   2 +-
 .../web/admin/backup/BackupPanel.java           |  12 +-
 3 files changed, 268 insertions(+), 303 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d532ba9a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java
index 53eb680..7522528 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupExport.java
@@ -25,6 +25,7 @@ import static org.apache.openmeetings.util.OmFileHelper.BCKP_ROOM_FILES;
 import static org.apache.openmeetings.util.OmFileHelper.IMPORT_DIR;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -81,13 +82,13 @@ import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 
 /**
- * 
+ *
  * @author sebastianwagner
- * 
+ *
  */
 public class BackupExport {
 	private static final Logger log = Red5LoggerFactory.getLogger(BackupExport.class, webAppRootKey);
-	private static final String BACKUP_COMMENT = 
+	private static final String BACKUP_COMMENT =
 			"###############################################\n"
 			+ "This File is auto-generated by the Backup Tool \n"
 			+ "you should use the BackupPanel to modify or change this file \n"
@@ -131,315 +132,297 @@ public class BackupExport {
 	@Autowired
 	private RoomGroupDao roomGroupDao;
 
-	public void performExport(File filePath, File backup_dir, boolean includeFiles, ProgressHolder progressHolder) throws Exception {
-		if (!backup_dir.exists()) {
-			backup_dir.mkdirs();
-		}
-		Serializer simpleSerializer = new Persister();
-		
-		progressHolder.setProgress(0);
-		/*
-		 * ##################### Backup Groups
-		 */
-		writeList(simpleSerializer, backup_dir, "organizations.xml", "organisations", groupDao.get(0, Integer.MAX_VALUE));
-		progressHolder.setProgress(5);
-		/*
-		 * ##################### Backup Users
-		 */
-		exportUsers(backup_dir, userDao.getAllBackupUsers());
-		progressHolder.setProgress(10);
-
-		/*
-		 * ##################### Backup Room
-		 */
-		{
-			Registry registry = new Registry();
-			Strategy strategy = new RegistryStrategy(registry);
-			Serializer serializer = new Persister(strategy);
-	
-			registry.bind(User.class, UserConverter.class);
-			registry.bind(Room.Type.class, RoomTypeConverter.class);
-			
-			writeList(serializer, backup_dir, "rooms.xml", "rooms", roomDao.get());
-			progressHolder.setProgress(15);
+	public void performExport(File zip, boolean includeFiles, ProgressHolder progressHolder) throws Exception {
+		if (!zip.getParentFile().exists()) {
+			zip.getParentFile().mkdirs();
 		}
+		try (FileOutputStream fos = new FileOutputStream(zip); ZipOutputStream zos = new ZipOutputStream(fos)) {
 
-		/*
-		 * ##################### Backup Room Groups
-		 */
-		{
-			Registry registry = new Registry();
-			Strategy strategy = new RegistryStrategy(registry);
-			Serializer serializer = new Persister(strategy);
-	
-			registry.bind(Group.class, GroupConverter.class);
-			registry.bind(Room.class, RoomConverter.class);
-			
-			writeList(serializer, backup_dir, "rooms_organisation.xml", "room_organisations", roomGroupDao.get());
-			progressHolder.setProgress(17);
-		}
+			Serializer ser = new Persister();
 
-		/*
-		 * ##################### Backup Calendars
-		 */
-		{
-			List<OmCalendar> list = calendarDao.get();
-			Registry registry = new Registry();
-			Strategy strategy = new RegistryStrategy(registry);
-			Serializer serializer = new Persister(strategy);
-			registry.bind(User.class, UserConverter.class);
-
-			writeList(serializer, backup_dir, "calendars.xml", "calendars", list);
-			progressHolder.setProgress(22);
-		}
-		/*
-		 * ##################### Backup Appointments
-		 */
-		{
-			List<Appointment> list = appointmentDao.get();
-			Registry registry = new Registry();
-			Strategy strategy = new RegistryStrategy(registry);
-			Serializer serializer = new Persister(strategy);
-
-			registry.bind(User.class, UserConverter.class);
-			registry.bind(Appointment.Reminder.class, AppointmentReminderTypeConverter.class);
-			registry.bind(Room.class, RoomConverter.class);
-			if (list != null && !list.isEmpty()) {
-				for (Appointment a : list) {
-					if (a.getStart() != null) {
-						registry.bind(a.getStart().getClass(), DateConverter.class);
-						break;
-					} else if (a.getInserted() != null) {
-						registry.bind(a.getInserted().getClass(), DateConverter.class);
-						break;
-					}
-				}
+			progressHolder.setProgress(0);
+			/*
+			 * ##################### Backup Groups
+			 */
+			writeList(ser, zos, "organizations.xml", "organisations", groupDao.get(0, Integer.MAX_VALUE));
+			progressHolder.setProgress(5);
+			/*
+			 * ##################### Backup Users
+			 */
+			exportUsers(zos, userDao.getAllBackupUsers());
+			progressHolder.setProgress(10);
+
+			/*
+			 * ##################### Backup Room
+			 */
+			{
+				Registry registry = new Registry();
+				Strategy strategy = new RegistryStrategy(registry);
+				Serializer serializer = new Persister(strategy);
+
+				registry.bind(User.class, UserConverter.class);
+				registry.bind(Room.Type.class, RoomTypeConverter.class);
+
+				writeList(serializer, zos, "rooms.xml", "rooms", roomDao.get());
+				progressHolder.setProgress(15);
 			}
 
-			writeList(serializer, backup_dir, "appointements.xml", "appointments", list);
-			progressHolder.setProgress(25);
-		}
+			/*
+			 * ##################### Backup Room Groups
+			 */
+			{
+				Registry registry = new Registry();
+				Strategy strategy = new RegistryStrategy(registry);
+				Serializer serializer = new Persister(strategy);
 
-		/*
-		 * ##################### Backup Meeting Members
-		 */
-		{
-			Registry registry = new Registry();
-			Strategy strategy = new RegistryStrategy(registry);
-			Serializer serializer = new Persister(strategy);
-	
-			registry.bind(User.class, UserConverter.class);
-			registry.bind(Appointment.class, AppointmentConverter.class);
-			
-			writeList(serializer, backup_dir, "meetingmembers.xml",
-					"meetingmembers", meetingMemberDao.getMeetingMembers());
-			progressHolder.setProgress(30);
-		}
+				registry.bind(Group.class, GroupConverter.class);
+				registry.bind(Room.class, RoomConverter.class);
 
-		/*
-		 * ##################### LDAP Configs
-		 */
-		List<LdapConfig> ldapList = ldapConfigDao.get();
-		if (!ldapList.isEmpty()) {
-			ldapList.remove(0);
-		}
-		writeList(simpleSerializer, backup_dir, "ldapconfigs.xml", "ldapconfigs", ldapList);
-		progressHolder.setProgress(35);
-
-		/*
-		 * ##################### Cluster servers
-		 */
-		writeList(simpleSerializer, backup_dir, "servers.xml", "servers", serverDao.get(0, Integer.MAX_VALUE));
-		progressHolder.setProgress(40);
-
-		/*
-		 * ##################### OAuth2 servers
-		 */
-		writeList(simpleSerializer, backup_dir, "oauth2servers.xml", "oauth2servers", auth2Dao.get(0, Integer.MAX_VALUE));
-		progressHolder.setProgress(45);
-
-		/*
-		 * ##################### Private Messages
-		 */
-		{
-			List<PrivateMessage> list = privateMessageDao.get(0, Integer.MAX_VALUE);
-			Registry registry = new Registry();
-			Strategy strategy = new RegistryStrategy(registry);
-			Serializer serializer = new Persister(strategy);
-	
-			registry.bind(User.class, UserConverter.class);
-			registry.bind(Room.class, RoomConverter.class);
-			if (list != null && !list.isEmpty()) {
-				registry.bind(list.get(0).getInserted().getClass(), DateConverter.class);
+				writeList(serializer, zos, "rooms_organisation.xml", "room_organisations", roomGroupDao.get());
+				progressHolder.setProgress(17);
 			}
-			
-			writeList(serializer, backup_dir, "privateMessages.xml",
-					"privatemessages", list);
-			progressHolder.setProgress(50);
-		}
 
-		/*
-		 * ##################### Private Message Folders
-		 */
-		writeList(simpleSerializer, backup_dir, "privateMessageFolder.xml",
-				"privatemessagefolders", privateMessageFolderDao.get(0, Integer.MAX_VALUE));
-		progressHolder.setProgress(55);
-
-		/*
-		 * ##################### User Contacts
-		 */
-		{
-			Registry registry = new Registry();
-			Strategy strategy = new RegistryStrategy(registry);
-			Serializer serializer = new Persister(strategy);
-	
-			registry.bind(User.class, UserConverter.class);
-			
-			writeList(serializer, backup_dir, "userContacts.xml",
-					"usercontacts", userContactDao.get());
-			progressHolder.setProgress(60);
-		}
+			/*
+			 * ##################### Backup Calendars
+			 */
+			{
+				List<OmCalendar> list = calendarDao.get();
+				Registry registry = new Registry();
+				Strategy strategy = new RegistryStrategy(registry);
+				Serializer serializer = new Persister(strategy);
+				registry.bind(User.class, UserConverter.class);
+
+				writeList(serializer, zos, "calendars.xml", "calendars", list);
+				progressHolder.setProgress(22);
+			}
+			/*
+			 * ##################### Backup Appointments
+			 */
+			{
+				List<Appointment> list = appointmentDao.get();
+				Registry registry = new Registry();
+				Strategy strategy = new RegistryStrategy(registry);
+				Serializer serializer = new Persister(strategy);
+
+				registry.bind(User.class, UserConverter.class);
+				registry.bind(Appointment.Reminder.class, AppointmentReminderTypeConverter.class);
+				registry.bind(Room.class, RoomConverter.class);
+				if (list != null && !list.isEmpty()) {
+					for (Appointment a : list) {
+						if (a.getStart() != null) {
+							registry.bind(a.getStart().getClass(), DateConverter.class);
+							break;
+						} else if (a.getInserted() != null) {
+							registry.bind(a.getInserted().getClass(), DateConverter.class);
+							break;
+						}
+					}
+				}
 
-		/*
-		 * ##################### File-Explorer
-		 */
-		{
-			List<FileExplorerItem> list = fileExplorerItemDao.get();
-			Registry registry = new Registry();
-			Strategy strategy = new RegistryStrategy(registry);
-			Serializer serializer = new Persister(strategy);
-	
-			if (list != null && !list.isEmpty()) {
-				registry.bind(list.get(0).getInserted().getClass(), DateConverter.class);
+				writeList(serializer, zos, "appointements.xml", "appointments", list);
+				progressHolder.setProgress(25);
 			}
-			
-			writeList(serializer, backup_dir, "fileExplorerItems.xml",
-					"fileExplorerItems", list);
-			progressHolder.setProgress(65);
-		}
 
-		/*
-		 * ##################### Recordings
-		 */
-		{
-			List<Recording> list = recordingDao.get();
-			Registry registry = new Registry();
-			Strategy strategy = new RegistryStrategy(registry);
-			Serializer serializer = new Persister(strategy);
-	
-			if (list != null && !list.isEmpty()) {
-				registry.bind(list.get(0).getInserted().getClass(), DateConverter.class);
+			/*
+			 * ##################### Backup Meeting Members
+			 */
+			{
+				Registry registry = new Registry();
+				Strategy strategy = new RegistryStrategy(registry);
+				Serializer serializer = new Persister(strategy);
+
+				registry.bind(User.class, UserConverter.class);
+				registry.bind(Appointment.class, AppointmentConverter.class);
+
+				writeList(serializer, zos, "meetingmembers.xml",
+						"meetingmembers", meetingMemberDao.getMeetingMembers());
+				progressHolder.setProgress(30);
 			}
-			
-			writeList(serializer, backup_dir, "flvRecordings.xml", "flvrecordings", list);
-			progressHolder.setProgress(70);
-		}
 
-		/*
-		 * ##################### Polls
-		 */
-		{
-			List<RoomPoll> list = pollManager.get();
-			Registry registry = new Registry();
-			Strategy strategy = new RegistryStrategy(registry);
-			Serializer serializer = new Persister(strategy);
-	
-			registry.bind(User.class, UserConverter.class);
-			registry.bind(Room.class, RoomConverter.class);
-			registry.bind(RoomPoll.Type.class, PollTypeConverter.class);
-			if (list != null && !list.isEmpty()) {
-				registry.bind(list.get(0).getCreated().getClass(), DateConverter.class);
+			/*
+			 * ##################### LDAP Configs
+			 */
+			List<LdapConfig> ldapList = ldapConfigDao.get();
+			if (!ldapList.isEmpty()) {
+				ldapList.remove(0);
 			}
-			
-			writeList(serializer, backup_dir, "roompolls.xml", "roompolls", list);
-			progressHolder.setProgress(75);
-		}
+			writeList(ser, zos, "ldapconfigs.xml", "ldapconfigs", ldapList);
+			progressHolder.setProgress(35);
+
+			/*
+			 * ##################### Cluster servers
+			 */
+			writeList(ser, zos, "servers.xml", "servers", serverDao.get(0, Integer.MAX_VALUE));
+			progressHolder.setProgress(40);
+
+			/*
+			 * ##################### OAuth2 servers
+			 */
+			writeList(ser, zos, "oauth2servers.xml", "oauth2servers", auth2Dao.get(0, Integer.MAX_VALUE));
+			progressHolder.setProgress(45);
+
+			/*
+			 * ##################### Private Messages
+			 */
+			{
+				List<PrivateMessage> list = privateMessageDao.get(0, Integer.MAX_VALUE);
+				Registry registry = new Registry();
+				Strategy strategy = new RegistryStrategy(registry);
+				Serializer serializer = new Persister(strategy);
+
+				registry.bind(User.class, UserConverter.class);
+				registry.bind(Room.class, RoomConverter.class);
+				if (list != null && !list.isEmpty()) {
+					registry.bind(list.get(0).getInserted().getClass(), DateConverter.class);
+				}
 
-		/*
-		 * ##################### Config
-		 */
-		{
-			List<Configuration> list = configurationDao.getConfigurations(0, Integer.MAX_VALUE, "c.id", true);
-			Registry registry = new Registry();
-			registry.bind(User.class, UserConverter.class);
-			Strategy strategy = new RegistryStrategy(registry);
-			Serializer serializer = new Persister(strategy);
-	
-			if (list != null && !list.isEmpty()) {
-				registry.bind(list.get(0).getInserted().getClass(), DateConverter.class);
+				writeList(serializer, zos, "privateMessages.xml",
+						"privatemessages", list);
+				progressHolder.setProgress(50);
 			}
-			
-			writeList(serializer, backup_dir, "configs.xml", "configs", list);
-			progressHolder.setProgress(80);
-		}
-		
-		/*
-		 * ##################### Chat
-		 */
-		{
-			List<ChatMessage> list = chatDao.get(0, Integer.MAX_VALUE);
-			Registry registry = new Registry();
-			registry.bind(User.class, UserConverter.class);
-			registry.bind(Room.class, RoomConverter.class);
-			Strategy strategy = new RegistryStrategy(registry);
-			Serializer serializer = new Persister(strategy);
-	
-			if (list != null && !list.isEmpty()) {
-				registry.bind(list.get(0).getSent().getClass(), DateConverter.class);
+
+			/*
+			 * ##################### Private Message Folders
+			 */
+			writeList(ser, zos, "privateMessageFolder.xml",
+					"privatemessagefolders", privateMessageFolderDao.get(0, Integer.MAX_VALUE));
+			progressHolder.setProgress(55);
+
+			/*
+			 * ##################### User Contacts
+			 */
+			{
+				Registry registry = new Registry();
+				Strategy strategy = new RegistryStrategy(registry);
+				Serializer serializer = new Persister(strategy);
+
+				registry.bind(User.class, UserConverter.class);
+
+				writeList(serializer, zos, "userContacts.xml", "usercontacts", userContactDao.get());
+				progressHolder.setProgress(60);
 			}
-			
-			writeList(serializer, backup_dir, "chat_messages.xml", "chat_messages", list);
-			progressHolder.setProgress(85);
-		}
-		if (includeFiles) {
+
 			/*
-			 * ##################### Backup Room Files
+			 * ##################### File-Explorer
 			 */
-			File targetRootDir = new File(backup_dir, BCKP_ROOM_FILES);
+			{
+				List<FileExplorerItem> list = fileExplorerItemDao.get();
+				Registry registry = new Registry();
+				Strategy strategy = new RegistryStrategy(registry);
+				Serializer serializer = new Persister(strategy);
+
+				if (list != null && !list.isEmpty()) {
+					registry.bind(list.get(0).getInserted().getClass(), DateConverter.class);
+				}
 
-			if (!targetRootDir.exists()) {
-				targetRootDir.mkdir();
+				writeList(serializer, zos, "fileExplorerItems.xml", "fileExplorerItems", list);
+				progressHolder.setProgress(65);
 			}
 
-			File sourceDir = OmFileHelper.getUploadDir();
+			/*
+			 * ##################### Recordings
+			 */
+			{
+				List<Recording> list = recordingDao.get();
+				Registry registry = new Registry();
+				Strategy strategy = new RegistryStrategy(registry);
+				Serializer serializer = new Persister(strategy);
+
+				if (list != null && !list.isEmpty()) {
+					registry.bind(list.get(0).getInserted().getClass(), DateConverter.class);
+				}
 
-			File[] files = sourceDir.listFiles();
-			for (File file : files) {
-				if (file.isDirectory()) {
-					String fName = file.getName();
-					if (!IMPORT_DIR.equals(fName) && !BACKUP_DIR.equals(fName)) {
-						log.debug("### " + file.getName());
+				writeList(serializer, zos, "flvRecordings.xml", "flvrecordings", list);
+				progressHolder.setProgress(70);
+			}
 
-						FileUtils.copyDirectory(file, new File(targetRootDir, file.getName()));
-					}
+			/*
+			 * ##################### Polls
+			 */
+			{
+				List<RoomPoll> list = pollManager.get();
+				Registry registry = new Registry();
+				Strategy strategy = new RegistryStrategy(registry);
+				Serializer serializer = new Persister(strategy);
+
+				registry.bind(User.class, UserConverter.class);
+				registry.bind(Room.class, RoomConverter.class);
+				registry.bind(RoomPoll.Type.class, PollTypeConverter.class);
+				if (list != null && !list.isEmpty()) {
+					registry.bind(list.get(0).getCreated().getClass(), DateConverter.class);
 				}
+
+				writeList(serializer, zos, "roompolls.xml", "roompolls", list);
+				progressHolder.setProgress(75);
 			}
 
 			/*
-			 * ##################### Backup Recording Files
+			 * ##################### Config
 			 */
-			File targetDirRec = new File(backup_dir, BCKP_RECORD_FILES);
+			{
+				List<Configuration> list = configurationDao.getConfigurations(0, Integer.MAX_VALUE, "c.id", true);
+				Registry registry = new Registry();
+				registry.bind(User.class, UserConverter.class);
+				Strategy strategy = new RegistryStrategy(registry);
+				Serializer serializer = new Persister(strategy);
+
+				if (list != null && !list.isEmpty()) {
+					registry.bind(list.get(0).getInserted().getClass(), DateConverter.class);
+				}
 
-			if (!targetDirRec.exists()) {
-				targetDirRec.mkdir();
+				writeList(serializer, zos, "configs.xml", "configs", list);
+				progressHolder.setProgress(80);
 			}
 
-			File sourceDirRec = OmFileHelper.getStreamsHibernateDir();
+			/*
+			 * ##################### Chat
+			 */
+			{
+				List<ChatMessage> list = chatDao.get(0, Integer.MAX_VALUE);
+				Registry registry = new Registry();
+				registry.bind(User.class, UserConverter.class);
+				registry.bind(Room.class, RoomConverter.class);
+				Strategy strategy = new RegistryStrategy(registry);
+				Serializer serializer = new Persister(strategy);
+
+				if (list != null && !list.isEmpty()) {
+					registry.bind(list.get(0).getSent().getClass(), DateConverter.class);
+				}
 
-			FileUtils.copyDirectory(sourceDirRec, targetDirRec);
-			progressHolder.setProgress(90);
-		}
+				writeList(serializer, zos, "chat_messages.xml", "chat_messages", list);
+				progressHolder.setProgress(85);
+			}
+			if (includeFiles) {
+				//##################### Backup Room Files
+				for (File file : OmFileHelper.getUploadDir().listFiles()) {
+					if (file.isDirectory()) {
+						String fName = file.getName();
+						if (!IMPORT_DIR.equals(fName) && !BACKUP_DIR.equals(fName)) {
+							log.debug("### " + file.getName());
+							writeZipDir(BCKP_ROOM_FILES, file.getParentFile().toURI(), file, zos);
+						}
+					}
+				}
 
-		writeZipDir(backup_dir, filePath);
+				//##################### Backup Recording Files
+				File recDir = OmFileHelper.getStreamsHibernateDir();
+				writeZipDir(BCKP_RECORD_FILES, recDir.toURI(), recDir, zos);
+				progressHolder.setProgress(90);
+			}
+		}
 		progressHolder.setProgress(100);
 		log.debug("---Done");
 	}
-	
-	private static <T> void writeList(Serializer ser, File backup_dir, String fileName, String listElement, List<T> list) throws Exception {
-		FileOutputStream fos = new FileOutputStream(new File(backup_dir, fileName));
-		writeList(ser, fos, listElement, list);
+
+	private static <T> void writeList(Serializer ser, ZipOutputStream zos, String fileName, String listElement, List<T> list) throws Exception {
+		ZipEntry e = new ZipEntry(fileName);
+		zos.putNextEntry(e);
+		ByteArrayOutputStream baos = new ByteArrayOutputStream(10 * 1024); //10K
+		writeList(ser, baos, listElement, list);
+		zos.write(baos.toByteArray());
+		zos.closeEntry();
 	}
-	
+
 	private static <T> void writeList(Serializer ser, OutputStream os, String listElement, List<T> list) throws Exception {
 		Format format = new Format("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
 		OutputNode doc = NodeBuilder.write(new OutputStreamWriter(os, UTF_8), format);
@@ -459,15 +442,10 @@ public class BackupExport {
 		root.commit();
 	}
 
-	public void exportUsers(File backup_dir, List<User> list) throws Exception {
-		FileOutputStream fos = new FileOutputStream(new File(backup_dir, "users.xml"));
-		exportUsers(fos, list);
-	}
-	
-	public void exportUsers(OutputStream os, List<User> list) throws Exception {
+	public void exportUsers(ZipOutputStream zos, List<User> list) throws Exception {
 		Registry registry = new Registry();
 		Strategy strategy = new RegistryStrategy(registry);
-		Serializer serializer = new Persister(strategy);
+		Serializer ser = new Persister(strategy);
 
 		registry.bind(Group.class, GroupConverter.class);
 		registry.bind(Salutation.class, SalutationConverter.class);
@@ -475,25 +453,16 @@ public class BackupExport {
 			Class<?> dateClass = list.get(0).getRegdate() != null ? list.get(0).getRegdate().getClass() : list.get(0).getInserted().getClass();
 			registry.bind(dateClass, DateConverter.class);
 		}
-		
-		writeList(serializer, os, "users", list);
-	}
 
-	private void writeZipDir(File directoryToZip, File zipFile) throws IOException {
-		try (FileOutputStream fos = new FileOutputStream(zipFile); ZipOutputStream zos = new ZipOutputStream(fos)) {
-			writeZipDir(directoryToZip.toURI(), directoryToZip, zos, zipFile);
-		}
+		writeList(ser, zos, "users.xml", "users", list);
 	}
-	
-	private void writeZipDir(URI base, File dir, ZipOutputStream zos, File zipFile) throws IOException {
+
+	private void writeZipDir(String prefix, URI base, File dir, ZipOutputStream zos) throws IOException {
 		for (File file : dir.listFiles()) {
-			if (zipFile.equals(file)) {
-				continue;
-			}
 			if (file.isDirectory()) {
-				writeZipDir(base, file, zos, zipFile);
+				writeZipDir(prefix, base, file, zos);
 			} else {
-				String path = base.relativize(file.toURI()).toString();
+				String path = prefix + "/" + base.relativize(file.toURI()).toString();
 				log.debug("Writing '" + path + "' to zip file");
 				ZipEntry zipEntry = new ZipEntry(path);
 				zos.putNextEntry(zipEntry);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d532ba9a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
index f5375ea..2162223 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
@@ -295,7 +295,7 @@ public class Admin {
 					backup_dir.mkdirs();
 
 					BackupExport export = getApplicationContext().getBean(BackupExport.class);
-					export.performExport(f, backup_dir, includeFiles, new ProgressHolder());
+					export.performExport(f, includeFiles, new ProgressHolder());
 					FileUtils.deleteDirectory(backup_dir);
 					backup_dir.delete();
 				} catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d532ba9a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
index 74020d9..f804ba6 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
@@ -114,16 +114,14 @@ public class BackupPanel extends AdminPanel {
 
 				@Override
 				protected void onSubmit(AjaxRequestTarget target) {
-					File workingDir = OmFileHelper.getUploadBackupDir();
 					String dateString = "backup_" + CalendarPatterns.getTimeForStreamId(new Date());
-					File backupDir = new File(workingDir, dateString);
-					backupFile = new File(backupDir, dateString + ".zip");
+					backupFile = new File(OmFileHelper.getUploadBackupDir(), dateString + ".zip");
 					th = null;
 					started = true;
 					progressHolder = new ProgressHolder();
 
 					timer.restart(target);
-					new Thread(new BackupProcess(getBean(BackupExport.class), backupDir, includeFilesInBackup.getObject())
+					new Thread(new BackupProcess(getBean(BackupExport.class), includeFilesInBackup.getObject())
 						, "Openmeetings - " + dateString).start();
 
 					// repaint the feedback panel so that it is hidden
@@ -209,12 +207,10 @@ public class BackupPanel extends AdminPanel {
 
 		private class BackupProcess implements Runnable {
 			private BackupExport backup;
-			private File backupDir;
 			private boolean includeFiles;
 
-			public BackupProcess(BackupExport backup, File backupDir, boolean includeFiles) {
+			public BackupProcess(BackupExport backup, boolean includeFiles) {
 				this.backup = backup;
-				this.backupDir = backupDir;
 				this.includeFiles = includeFiles;
 				th = null;
 			}
@@ -222,7 +218,7 @@ public class BackupPanel extends AdminPanel {
 			@Override
 			public void run() {
 				try {
-					backup.performExport(backupFile, backupDir, includeFiles, progressHolder);
+					backup.performExport(backupFile, includeFiles, progressHolder);
 				} catch (Exception e) {
 					log.error("Exception on panel backup download ", e);
 					th = e;


[37/50] [abbrv] openmeetings git commit: Changelog is updated to have changes for all versions

Posted by so...@apache.org.
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/7872a872/CHANGELOG
----------------------------------------------------------------------
diff --git a/CHANGELOG b/CHANGELOG
index 54f707d..f8cebf7 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -59,3 +59,1481 @@ Release Notes - Openmeetings - Version 3.2.1
 
 ** New Feature
     * [OPENMEETINGS-573] - Audio notification for new chat message
+
+
+Release Notes - Openmeetings - Version 3.2.0
+================================================================================================================
+** Sub-task
+    * [OPENMEETINGS-896] - Basic room layout should be created
+    * [OPENMEETINGS-1030] - Add Files section
+    * [OPENMEETINGS-1045] - Screen-sharing button/action should be added
+    * [OPENMEETINGS-1085] - Room Rights should be implemented
+    * [OPENMEETINGS-1120] - Activities section should be added
+    * [OPENMEETINGS-1376] - User list should be fully implemented
+    * [OPENMEETINGS-1386] - CalDAV client prerequisites
+    * [OPENMEETINGS-1391] - Fix CalDAV4j issues
+    * [OPENMEETINGS-1392] - Implement OM CalDAV client
+    * [OPENMEETINGS-1454] - Interview room should work as expected
+    * [OPENMEETINGS-1455] - invitationHash/securityHash should work
+    * [OPENMEETINGS-1458] - Show nickname dialog should be added
+    * [OPENMEETINGS-1459] - External users need to be redirected on connection error
+    * [OPENMEETINGS-1469] - Download functionality is missing in file tree
+
+** Bug
+    * [OPENMEETINGS-508] - Network testing page is not localized
+    * [OPENMEETINGS-653] - playing video follow the scrolling of the screen and leave its player.
+    * [OPENMEETINGS-827] - Video play/stop event acceptable one time in all tab
+    * [OPENMEETINGS-840] - Strange uploaded video behaviour 
+    * [OPENMEETINGS-863] - Video Problem
+    * [OPENMEETINGS-1327] - Messages are being displayed in the folder right after creation
+    * [OPENMEETINGS-1358] - RTMPS SSHHandshakeFailed error  in 3.0.7 and working fine with 3.0.4
+    * [OPENMEETINGS-1377] - Backup fails when appointment has deleted room
+    * [OPENMEETINGS-1379] - XSS in Chat window leading to DOS
+    * [OPENMEETINGS-1380] - Chat messages are not being imported
+    * [OPENMEETINGS-1384] - SIP dial to room need to be fixed
+    * [OPENMEETINGS-1385] - Moving Uploaded Images
+    * [OPENMEETINGS-1396] - Swf selection should be improved
+    * [OPENMEETINGS-1399] - OpenMeetings is vulnerable to session fixation
+    * [OPENMEETINGS-1400] - Admin>Conference Rooms>Appointment Room Checkbox
+    * [OPENMEETINGS-1401] - Email Reminders for Calendared Events Not Issued
+    * [OPENMEETINGS-1402] - Screen Sharing issue with Greek language
+    * [OPENMEETINGS-1406] - View profile form is broken
+    * [OPENMEETINGS-1410] - Om failed to install using Oracle
+    * [OPENMEETINGS-1411] - allowSameURLMultipleTimes parameter for secure hash is broken
+    * [OPENMEETINGS-1412] - Window too big when changing resolution in Audio-Video Recording Test Application
+    * [OPENMEETINGS-1414] - spring-mvc and batik need to be removed
+    * [OPENMEETINGS-1416] - Users with moderator's flag in usergroup do not become moderators in rooms.
+    * [OPENMEETINGS-1417] - Check/uncheck of moderator flag in usergroups doesn't work.
+    * [OPENMEETINGS-1422] - WB is not usable for the appointment room
+    * [OPENMEETINGS-1423] - Aspect ration is being changed for WB video
+    * [OPENMEETINGS-1432] - Recording download from Moodle is broken
+    * [OPENMEETINGS-1433] - WB vertical tools panel is broken
+    * [OPENMEETINGS-1434] - Only the first group is added in ATTRIBUTE mode
+    * [OPENMEETINGS-1435] - Whiteboard Pointer in OM-3.1.2 gives wrong user name
+    * [OPENMEETINGS-1438] - Recordings permission check is broken
+    * [OPENMEETINGS-1442] - Remote keyboard is not working in screen-sharing app
+    * [OPENMEETINGS-1443] - Invitations are broken
+    * [OPENMEETINGS-1444] - Language editor is broken
+    * [OPENMEETINGS-1448] - Recordings backup fails "Enum missing"
+    * [OPENMEETINGS-1449] - Check box "Do not ask again" in "Choose device" dialog doesn't work
+    * [OPENMEETINGS-1451] - SOAP/REST API documentation need to be improved
+    * [OPENMEETINGS-1457] - flvRecordings and fileExplorerItem::Video file name depends on id
+    * [OPENMEETINGS-1460] - Application.ONLINE_USERS does not reflect changes to Client instances
+    * [OPENMEETINGS-1461] - We need to switch to java8
+    * [OPENMEETINGS-1464] - Clear objects on current slide only is not working
+    * [OPENMEETINGS-1465] - Password field is enabled when Password protected is not checked
+    * [OPENMEETINGS-1466] - REST/SOAP methods are incomplete
+    * [OPENMEETINGS-1468] - problems with keyborad usage while screensharing with remote desktop 
+    * [OPENMEETINGS-1470] - WB video is not displayed
+    * [OPENMEETINGS-1472] - User cannot be deleted
+    * [OPENMEETINGS-1476] - Deleted records are shown under trash
+    * [OPENMEETINGS-1478] - Admin->Connections displays outdated connections
+    * [OPENMEETINGS-1479] - Dashboard Chat not disabled when dashboard.show.chat value is 0
+    * [OPENMEETINGS-1482] - Om performance issues
+    * [OPENMEETINGS-1483] - Error while installing OM on MSSQL
+    * [OPENMEETINGS-1486] - Registration dialog is broken
+    * [OPENMEETINGS-1487] - Clear text passwords shouldn't be sent via email
+    * [OPENMEETINGS-1489] - Calendar in broken in French
+    * [OPENMEETINGS-1492] - OM 3.1.3 duplication records in database
+    * [OPENMEETINGS-1494] - Calendar & Events
+    * [OPENMEETINGS-1495] - Labels in admin forms are overlapping with inputs
+    * [OPENMEETINGS-1496] - Dates from backup files are being parsed with errors
+    * [OPENMEETINGS-1498] - Exception is thown when user exit from the room
+    * [OPENMEETINGS-1499] - Backup import is crached under OS Windows
+    * [OPENMEETINGS-1500] - Image drop is broken, in case "don't ask" is selected
+    * [OPENMEETINGS-1502] - NullPointerException while checking existing LDAP user
+    * [OPENMEETINGS-1504] - User with no password is being created in Web installer
+    * [OPENMEETINGS-1505] - Password is not checked when owner invite guest to the room with password protected invitation
+    * [OPENMEETINGS-1508] - Italian translation
+    * [OPENMEETINGS-1509] - Count of users in the room on the rooms page is not updated when any user exit from room
+    * [OPENMEETINGS-1510] - WB drawing should be more smooth
+    * [OPENMEETINGS-1511] - LDAP user profile picture
+    * [OPENMEETINGS-1513] - The Installer Converters page should be improved
+    * [OPENMEETINGS-1518] - Recorgings should not be converted to ogg/avi format
+    * [OPENMEETINGS-1521] - 'null' is shown instead of usergroup when user update and save User details
+    * [OPENMEETINGS-1524] - Poll description is missed in the Poll results
+    * [OPENMEETINGS-1525] - Openmeetings 3.1.3 - Problem with script red5-highperf.sh 
+    * [OPENMEETINGS-1532] - Recording folders not always imported as expected
+    * [OPENMEETINGS-1533] - Impossible to create Appointment using calendar WebService
+    * [OPENMEETINGS-1534] - Video upload to room is broken
+    * [OPENMEETINGS-1535] - Calendar web service range method is broken
+    * [OPENMEETINGS-1537] - external soap users unable to login to the conference room created
+    * [OPENMEETINGS-1539] - Calendar web service: delete method returns nothing on success
+    * [OPENMEETINGS-1540] - Placeholder in reset template email is not being replaced
+    * [OPENMEETINGS-1541] - Appointment invitations are not always accessible
+    * [OPENMEETINGS-1542] - Ajax busy status is not displayed in the room
+    * [OPENMEETINGS-1543] - Webservice Calendar/range
+    * [OPENMEETINGS-1545] - Screen-sharing is broken
+    * [OPENMEETINGS-1546] - Secure hash is not working every other time
+    * [OPENMEETINGS-1548] - EmoticonsBehavior should be removed to speed up OM in FF
+    * [OPENMEETINGS-1549] - Command line admin fails to install
+
+** Improvement
+    * [OPENMEETINGS-652] - video playback is not very clear and there isn't a pause button.
+    * [OPENMEETINGS-1138] - In the general interface, provide a way to access links to recordings, which can be shared with others (both registered users and external people).
+    * [OPENMEETINGS-1366] - Recommendations
+    * [OPENMEETINGS-1373] - 3.2.0 Library versions should be updated
+    * [OPENMEETINGS-1382] - Update default avatar of user 
+    * [OPENMEETINGS-1383] - Updated French translation for OpenMeetings 3.1.1/3.1.1+
+    * [OPENMEETINGS-1393] - Missing text strings are not internationalized for translation
+    * [OPENMEETINGS-1403] - External cameras should be supported
+    * [OPENMEETINGS-1405] - Appointment dialog should be simplified
+    * [OPENMEETINGS-1419] - Connect to Oracle DB with Service Name through Web Installer
+    * [OPENMEETINGS-1445] - 3.1.2 Build Compilation Warnings
+    * [OPENMEETINGS-1446] - SSL installation not fully working
+    * [OPENMEETINGS-1462] - Implementation for a delete button for the chat content on the principal chat window 
+    * [OPENMEETINGS-1480] - Ukrainian translation need to be improved
+    * [OPENMEETINGS-1488] - Additional functionality for groups
+    * [OPENMEETINGS-1490] - Jodconverter should be added to openmeetings project
+    * [OPENMEETINGS-1507] - Remove "application.base.url" configuration key
+    * [OPENMEETINGS-1512] - Wrong LDAP value can cause error on My Profile Page
+    * [OPENMEETINGS-1527] - Multiselect using Shift/Ctrl need to be added to file tree
+
+** New Feature
+    * [OPENMEETINGS-895] - HTML5 room should be implemented
+    * [OPENMEETINGS-1408] - provide device-settings dialog via link
+    * [OPENMEETINGS-1427] - Re-name Witheboards tabs
+    * [OPENMEETINGS-1453] - Provision for getting OpenMeetings version from SOAP/REST api
+    * [OPENMEETINGS-1501] - Openmeetings - deleting emails
+
+** Task
+    * [OPENMEETINGS-1515] - Fluido skin for the site should be replaced with reflow
+
+** Test
+    * [OPENMEETINGS-1516] - Users are kicked off the rooms and participant list is incomplete
+
+** Wish
+    * [OPENMEETINGS-853] - temporary uploaded files
+
+
+Release Notes - Openmeetings - Version 3.1.5
+================================================================================================================
+** Bug
+    * [OPENMEETINGS-863] - Video Problem
+    * [OPENMEETINGS-1401] - Email Reminders for Calendared Events Not Issued
+    * [OPENMEETINGS-1530] - Secure Hash is broken
+    * [OPENMEETINGS-1532] - Recording folders not always imported as expected
+    * [OPENMEETINGS-1533] - Impossible to create Appointment using calendar WebService
+    * [OPENMEETINGS-1535] - Calendar web service range method is broken
+    * [OPENMEETINGS-1537] - external soap users unable to login to the conference room created
+    * [OPENMEETINGS-1539] - Calendar web service: delete method returns nothing on success
+    * [OPENMEETINGS-1540] - Placeholder in reset template email is not being replaced
+    * [OPENMEETINGS-1541] - Appointment invitations are not always accessible
+
+** Improvement
+    * [OPENMEETINGS-1531] - 3.1.5 - Library versions should be updated
+
+
+Release Notes - Openmeetings - Version 3.1.4
+================================================================================================================
+** Bug
+    * [OPENMEETINGS-827] - Video play/stop event acceptable one time in all tab
+    * [OPENMEETINGS-1451] - SOAP/REST API documentation need to be improved
+    * [OPENMEETINGS-1475] - Select area is not unattached from cursor
+    * [OPENMEETINGS-1476] - Deleted records are shown under trash
+    * [OPENMEETINGS-1478] - Admin->Connections displays outdated connections
+    * [OPENMEETINGS-1479] - Dashboard Chat not disabled when dashboard.show.chat value is 0
+    * [OPENMEETINGS-1482] - Om performance issues
+    * [OPENMEETINGS-1483] - Error while installing OM on MSSQL
+    * [OPENMEETINGS-1484] - Super moderator is not moderator
+    * [OPENMEETINGS-1485] - Scroll is broken in restricted room
+    * [OPENMEETINGS-1486] - Registration dialog is broken
+    * [OPENMEETINGS-1487] - Clear text passwords shouldn't be sent via email
+    * [OPENMEETINGS-1489] - Calendar in broken in French
+    * [OPENMEETINGS-1492] - OM 3.1.3 duplication records in database
+    * [OPENMEETINGS-1494] - Calendar & Events
+    * [OPENMEETINGS-1495] - Labels in admin forms are overlapping with inputs
+    * [OPENMEETINGS-1496] - Dates from backup files are being parsed with errors
+    * [OPENMEETINGS-1499] - Backup import is crached under OS Windows
+    * [OPENMEETINGS-1500] - Image drop is broken, in case "don't ask" is selected
+    * [OPENMEETINGS-1502] - NullPointerException while checking existing LDAP user
+    * [OPENMEETINGS-1503] - WML file (saved WB) cannot be loaded - file not found
+    * [OPENMEETINGS-1504] - User with no password is being created in Web installer
+    * [OPENMEETINGS-1508] - Italian translation
+    * [OPENMEETINGS-1510] - WB drawing should be more smooth
+    * [OPENMEETINGS-1511] - LDAP user profile picture
+    * [OPENMEETINGS-1513] - The Installer Converters page should be improved
+    * [OPENMEETINGS-1514] - No show whiteboard after send invitation-meeting from Calendar
+    * [OPENMEETINGS-1517] - Close private chat is broken
+    * [OPENMEETINGS-1518] - Recorgings should not be converted to ogg/avi format
+    * [OPENMEETINGS-1521] - 'null' is shown instead of usergroup when user update and save User details
+    * [OPENMEETINGS-1523] - Inplace folder rename is not working
+    * [OPENMEETINGS-1524] - Poll description is missed in the Poll results
+    * [OPENMEETINGS-1525] - Openmeetings 3.1.3 - Problem with script red5-highperf.sh 
+
+** Improvement
+    * [OPENMEETINGS-1366] - Recommendations
+    * [OPENMEETINGS-1462] - Implementation for a delete button for the chat content on the principal chat window 
+    * [OPENMEETINGS-1467] - 3.1.4 Library versions should be updated
+    * [OPENMEETINGS-1480] - Ukrainian translation need to be improved
+    * [OPENMEETINGS-1488] - Additional functionality for groups
+    * [OPENMEETINGS-1490] - Jodconverter should be added to openmeetings project
+    * [OPENMEETINGS-1507] - Remove "application.base.url" configuration key
+    * [OPENMEETINGS-1512] - Wrong LDAP value can cause error on My Profile Page
+    * [OPENMEETINGS-1526] - Multiselect using Shift/Ctrl need to be added to file tree
+
+** New Feature
+    * [OPENMEETINGS-1427] - Re-name Witheboards tabs
+    * [OPENMEETINGS-1477] - Default chat font is too small
+    * [OPENMEETINGS-1501] - Openmeetings - deleting emails
+
+** Task
+    * [OPENMEETINGS-1515] - Fluido skin for the site should be replaced with reflow
+
+** Test
+    * [OPENMEETINGS-1516] - Users are kicked off the rooms and participant list is incomplete
+
+
+Release Notes - Openmeetings - Version 3.1.3
+================================================================================================================
+** Bug
+    * [OPENMEETINGS-508] - Network testing page is not localized
+    * [OPENMEETINGS-1267] - inproper handover of rtmphostlocal to screenshare-client
+    * [OPENMEETINGS-1358] - RTMPS SSHHandshakeFailed error  in 3.0.7 and working fine with 3.0.4
+    * [OPENMEETINGS-1448] - Recordings backup fails "Enum missing"
+    * [OPENMEETINGS-1460] - Application.ONLINE_USERS does not reflect changes to Client instances
+    * [OPENMEETINGS-1461] - We need to switch to java8
+    * [OPENMEETINGS-1464] - Clear objects on current slide only is not working
+    * [OPENMEETINGS-1465] - Password field is enabled when Password protected is not checked
+    * [OPENMEETINGS-1466] - REST/SOAP methods are incomplete
+    * [OPENMEETINGS-1468] - problems with keyborad usage while screensharing with remote desktop 
+    * [OPENMEETINGS-1470] - WB video is not displayed
+    * [OPENMEETINGS-1472] - User cannot be deleted
+    * [OPENMEETINGS-1473] - JPG file display in the room is broken
+    * [OPENMEETINGS-1474] - Users are not being displayed in restricted room
+
+** Improvement
+    * [OPENMEETINGS-652] - video playback is not very clear and there isn't a pause button.
+    * [OPENMEETINGS-1138] - In the general interface, provide a way to access links to recordings, which can be shared with others (both registered users and external people).
+    * [OPENMEETINGS-1445] - 3.1.2 Build Compilation Warnings
+    * [OPENMEETINGS-1446] - SSL installation not fully working
+    * [OPENMEETINGS-1447] - 3.1.3 - Library versions should be updated
+
+** New Feature
+    * [OPENMEETINGS-1408] - provide device-settings dialog via link
+    * [OPENMEETINGS-1453] - Provision for getting OpenMeetings version from SOAP/REST api
+
+
+Release Notes - Openmeetings - Version 3.1.2
+================================================================================================================
+** Vulnerability
+    * CVE-2016-3089 - Apache Openmeetings XSS in SWF panel
+
+** Bug
+    * [OPENMEETINGS-412] - Spacebar and enter key cause keyboard remote control to fail while screen sharing
+    * [OPENMEETINGS-653] - playing video follow the scrolling of the screen and leave its player.
+    * [OPENMEETINGS-1319] - Flash player crashes
+    * [OPENMEETINGS-1327] - Messages are being displayed in the folder right after creation
+    * [OPENMEETINGS-1330] - Contact being deleted from contact list without confirmation dialog
+    * [OPENMEETINGS-1342] - Incorrect user type set when user enter to the OpenMeeitings via plugins
+    * [OPENMEETINGS-1344] - MD5 should not be used for password encryption
+    * [OPENMEETINGS-1349] - Custom address states sets to NULL while restoring from backup
+    * [OPENMEETINGS-1350] - rtmpT connection problem
+    * [OPENMEETINGS-1359] - Links to apache-extras.org should be removed from the site
+    * [OPENMEETINGS-1361] - Room name is shown incorrectly when guest ente to the rom
+    * [OPENMEETINGS-1365] - Network Test Page error and fix URL path
+    * [OPENMEETINGS-1370] - JRE 8 is blocking screen sharing/recording by default
+    * [OPENMEETINGS-1371] - After scaling a document scrolling does not work on the whiteboard
+    * [OPENMEETINGS-1372] - openmeetings-flash is not compilable under OS windows
+    * [OPENMEETINGS-1377] - Backup fails when appointment has deleted room
+    * [OPENMEETINGS-1379] - XSS in Chat window leading to DOS
+    * [OPENMEETINGS-1380] - Chat messages are not being imported
+    * [OPENMEETINGS-1384] - SIP dial to room need to be fixed
+    * [OPENMEETINGS-1385] - Moving Uploaded Images
+    * [OPENMEETINGS-1396] - Swf selection should be improved
+    * [OPENMEETINGS-1399] - OpenMeetings is vulnerable to session fixation
+    * [OPENMEETINGS-1400] - Admin>Conference Rooms>Appointment Room Checkbox
+    * [OPENMEETINGS-1402] - Screen Sharing issue with Greek language
+    * [OPENMEETINGS-1406] - View profile form is broken
+    * [OPENMEETINGS-1410] - Om failed to install using Oracle
+    * [OPENMEETINGS-1411] - allowSameURLMultipleTimes parameter for secure hash is broken
+    * [OPENMEETINGS-1412] - Window too big when changing resolution in Audio-Video Recording Test Application
+    * [OPENMEETINGS-1414] - spring-mvc and batik need to be removed
+    * [OPENMEETINGS-1416] - Users with moderator's flag in usergroup do not become moderators in rooms.
+    * [OPENMEETINGS-1417] - Check/uncheck of moderator flag in usergroups doesn't work.
+    * [OPENMEETINGS-1422] - WB is not usable for the appointment room
+    * [OPENMEETINGS-1423] - Aspect ration is being changed for WB video
+    * [OPENMEETINGS-1432] - Recording download from Moodle is broken
+    * [OPENMEETINGS-1433] - WB vertical tools panel is broken
+    * [OPENMEETINGS-1434] - Only the first group is added in ATTRIBUTE mode
+    * [OPENMEETINGS-1435] - Whiteboard Pointer in OM-3.1.2 gives wrong user name
+    * [OPENMEETINGS-1438] - Recordings permission check is broken
+    * [OPENMEETINGS-1442] - Remote keyboard is not working in screen-sharing app
+    * [OPENMEETINGS-1443] - Invitations are broken
+    * [OPENMEETINGS-1444] - Language editor is broken
+
+** Improvement
+    * [OPENMEETINGS-16] - Missing functionality in SOAP/REST API
+    * [OPENMEETINGS-413] - A good idea could be to add default parameter like default country, default language, default domain, etc
+    * [OPENMEETINGS-649] - Add email management functions to Om Admin
+    * [OPENMEETINGS-1356] - Build should be speed up by reducing forking
+    * [OPENMEETINGS-1357] - maven-dependency-plugin should be used to download/unpack OpenLaszlo
+    * [OPENMEETINGS-1360] - Library versions should be updated (3.1.2)
+    * [OPENMEETINGS-1382] - Update default avatar of user
+    * [OPENMEETINGS-1383] - Updated French translation for OpenMeetings 3.1.1/3.1.1+
+    * [OPENMEETINGS-1393] - Missing text strings are not internationalized for translation
+    * [OPENMEETINGS-1403] - External cameras should be supported
+    * [OPENMEETINGS-1405] - Appointment dialog should be simplified
+    * [OPENMEETINGS-1419] - Connect to Oracle DB with Service Name through Web Installer
+
+** Task
+    * [OPENMEETINGS-90] - Default Country
+
+** Wish
+    * [OPENMEETINGS-853] - temporary uploaded files
+
+
+Release Notes - Openmeetings - Version 3.1.1
+================================================================================================================
+** Vulnerability
+    * CVE-2016-0783 - Predictable password reset token
+    * CVE-2016-0784 - ZIP file path traversal
+    * CVE-2016-2164 - Arbitrary file read via SOAP API
+    * CVE-2016-2163 - Stored Cross Site Scripting in Event description
+
+** Bug
+    * [OPENMEETINGS-1328] - ConfirmAjaxCallListener should be changed on standard wicket dialog in the MessagesContactsPanel
+    * [OPENMEETINGS-1339] - Poll results shows uncorrectly
+    * [OPENMEETINGS-1341] - White page is shown when user try to reset password
+    * [OPENMEETINGS-1343] - Release signatures should be created automatically
+    * [OPENMEETINGS-1346] - Error while import a backup from OM version 3.0.2
+    * [OPENMEETINGS-1347] - missing sort functionality in administration view
+    * [OPENMEETINGS-1348] - Backup import with LDAP users from 2.1.0 fails
+    * [OPENMEETINGS-1351] - Call for Logo page does not say where to send contributions
+    * [OPENMEETINGS-1354] - Backup zip is being extracted without necessary checks
+    * [OPENMEETINGS-1355] - random UUID should be user to generate password reset hash
+
+** Improvement
+    * [OPENMEETINGS-1337] - Library versions should be updated (3.1.1)
+
+
+Release Notes - Openmeetings - Version 3.1.0
+================================================================================================================
+** Sub-task
+    * [OPENMEETINGS-1118] - SOAP/REST methods need to be implemented using CXF
+    * [OPENMEETINGS-1277] - roomtype in laszlo code need to be changed
+    * [OPENMEETINGS-1278] - newmessage and some other dialogs need to be replaced with HTML5 dialogs
+    * [OPENMEETINGS-1285] - Number of servlets need to be reduced
+    * [OPENMEETINGS-1286] - Srceensharing is not started
+
+** Bug
+    * [OPENMEETINGS-570] - Some issues with device settings and attach Camera
+    * [OPENMEETINGS-823] - Images are not dragged on whiteboard correctly if user re-enter to the room
+    * [OPENMEETINGS-887] - Global chat is not implemented completly for OM 3.0
+    * [OPENMEETINGS-992] - upload image in profile
+    * [OPENMEETINGS-1237] - Desktop-sharing: keyboard input gets duplicated or triplicated.
+    * [OPENMEETINGS-1252] - Allow/deny screen sharing and remote control does not work as expected
+    * [OPENMEETINGS-1255] - Incorrect work of "Show contact data to contacts only"
+    * [OPENMEETINGS-1258] - The latest chat messeages are not shown in the global chat
+    * [OPENMEETINGS-1260] - Period invitation created from room is shifted one month
+    * [OPENMEETINGS-1261] - docs folder should removed from 3.0.x sources
+    * [OPENMEETINGS-1263] - component.getString() should not be called from constructor
+    * [OPENMEETINGS-1264] - "Old style" confirm dialogs should be replaced with jquery-ui confirmations
+    * [OPENMEETINGS-1266] - Width/height parameters are missing in RecordingDTO
+    * [OPENMEETINGS-1268] - Error while use wsdl service
+    * [OPENMEETINGS-1269] - 'Internal Error' Message on Deleting / Selecting a User in Admin/User Panel
+    * [OPENMEETINGS-1271] - Maximum number of users in restricted room need to be enlarged
+    * [OPENMEETINGS-1272] - Exception and Internal Errror When "To complete your registration please click on the following link"
+    * [OPENMEETINGS-1273] - Poll error
+    * [OPENMEETINGS-1274] - After registration I don't see confirmation
+    * [OPENMEETINGS-1275] - Invalid invitation generates for contact if creat few invitations
+    * [OPENMEETINGS-1276] - Trunk should be merged with 3.1.x
+    * [OPENMEETINGS-1281] - Bad URL to download language files to translate in OpenMeetings website
+    * [OPENMEETINGS-1283] - It is impossible to remove moderator permissions given to a user
+    * [OPENMEETINGS-1284] - Incorrect display of a video player
+    * [OPENMEETINGS-1287] - Mail templates are excluded from the build artefact
+    * [OPENMEETINGS-1288] - Search User page is broken
+    * [OPENMEETINGS-1292] - OM 3.1 When clic on Upload file picture button profile, nothings happens
+    * [OPENMEETINGS-1293] - OM 3.1 When clic on Conference Room button, show turning circle and nothing happens
+    * [OPENMEETINGS-1295] - OM 3.0.7 - No upload image for widget user 
+    * [OPENMEETINGS-1296] - Unable to upload image to profile
+    * [OPENMEETINGS-1297] - svn tree need to be restructured
+    * [OPENMEETINGS-1299] - In Application_zh_CN.properties file, from entry 1465 to entry 1600, we should have Chinese entries, but there are still English entries.
+    * [OPENMEETINGS-1303] - Report a bug URL
+    * [OPENMEETINGS-1308] - "File tree" is broken in room after installation
+    * [OPENMEETINGS-1309] -  Issue with playing the recordings in OM 3.1.0
+    * [OPENMEETINGS-1310] - Flash permission dialog is not displayed
+    * [OPENMEETINGS-1312] - "User recording" message is not removed on recording stop
+    * [OPENMEETINGS-1314] - A no user receive an invitation  and he tries to send an invitation 
+    * [OPENMEETINGS-1316] - Older timezone's in OM
+    * [OPENMEETINGS-1317] - Whiteboard is not displayed for guests in the restricted moderated rooms
+    * [OPENMEETINGS-1318] - Firstname and lastname are shown in the userlist when last user exit from the restricted room
+    * [OPENMEETINGS-1320] - Whiteboard is not saved
+    * [OPENMEETINGS-1321] - Files are not shown correctly when contact enter to the restricted room as moderator
+    * [OPENMEETINGS-1322] - Chat is not shown in the room when document loads on whiteborad
+    * [OPENMEETINGS-1323] - Error is thrown to the log file during conversion recording
+    * [OPENMEETINGS-1326] - Password is not verified when owner send invitation with password
+    * [OPENMEETINGS-1329] - "null" adds to the Subject when user send private masage to contact
+    * [OPENMEETINGS-1331] - Openmeeting is not responsed when moderator kick user from the room
+    * [OPENMEETINGS-1332] - Vote is not work correctly
+    * [OPENMEETINGS-1333] - Recording and sharing is not started when contact try to start recording or sharing 
+    * [OPENMEETINGS-1334] - It's impossible to invite om user to the my rooms
+    * [OPENMEETINGS-1335] - Screen sharing icons and favicon need to be updated
+    * [OPENMEETINGS-1336] - User can not enter to group room
+    * [OPENMEETINGS-1338] - Screen sharing application failed to connect to the server
+    * [OPENMEETINGS-1340] - Moderator can't kick user from the conference room
+
+** Improvement
+    * [OPENMEETINGS-794] - Add a possibility to enter brief name for users with same invitation url (grouped mail)
+    * [OPENMEETINGS-846] - Invitation of a complete usergroup as a one-click operation
+    * [OPENMEETINGS-1245] - Offer drop-down list for inviting users when in conference room
+    * [OPENMEETINGS-1256] - Fetch users from AD into contacts
+    * [OPENMEETINGS-1259] - Library versions should be updated (3.1.0)
+    * [OPENMEETINGS-1262] - Install wizard need to be updated to use wicket-jquery-ui
+    * [OPENMEETINGS-1270] - Outdated documentation
+    * [OPENMEETINGS-1279] - swf8 code need to be converted to swf11
+    * [OPENMEETINGS-1290] - Room SIP# should be displayed as a hint
+    * [OPENMEETINGS-1294] - OM 3.1.0 spanish translation attached
+    * [OPENMEETINGS-1304] - CLONE - In the general interface, provide a way to access links to recordings, which can be shared with others (both registered users and external people).
+    * [OPENMEETINGS-1306] - modifica dei campi e grafica
+    * [OPENMEETINGS-1313] - Support for Google Analytics scripts should be added
+
+** Task
+    * [OPENMEETINGS-1302] - Current maven build doesn't create source artifact
+    * [OPENMEETINGS-1305] - REST/SOAP should be tested
+    * [OPENMEETINGS-1311] - Outdated jquery.ui.menubar should be replaced with jqueryui menu component
+
+** Test
+    * [OPENMEETINGS-1315] - build code sucess, but run red5.bat happen error
+
+
+Release Notes - Openmeetings - Version 3.0.7
+================================================================================================================
+** Bug
+    * [OPENMEETINGS-1211] - the use of icons in users tab is illogical
+    * [OPENMEETINGS-1213] - Error is shown when contact try to send invitation
+    * [OPENMEETINGS-1218] - Wrong birthday date is displayed on the User datails at Administration->Users page
+    * [OPENMEETINGS-1221] - Language is not loaded after changes
+    * [OPENMEETINGS-1230] - Clustering seems not to work as expected
+    * [OPENMEETINGS-1231] - chat bar on landing page without lable an delete function missing
+    * [OPENMEETINGS-1234] - Unable to take backup using GUI or Admin.sh
+    * [OPENMEETINGS-1238] - Share/record screen: go to HTTP STATUS 404- Apache Tomcat page
+    * [OPENMEETINGS-1239] - Can't import REST URL properly
+    * [OPENMEETINGS-1248] - Clustering not working from external system (for ex. Moodle)
+    * [OPENMEETINGS-1249] - Guest can't enter to the room when room is booked via private message
+    * [OPENMEETINGS-1250] - Video is not availble in the interview rooms
+    * [OPENMEETINGS-1251] - When room is full kicked user not redirected to Rooms list
+    * [OPENMEETINGS-1253] - Crash when searching at language editor.
+    * [OPENMEETINGS-1254] - Crash when adding OAuth2 config
+
+** Improvement
+    * [OPENMEETINGS-954] - Need implement OM client for Android devices.
+    * [OPENMEETINGS-1100] - Seperate video/audio permissions capability 
+    * [OPENMEETINGS-1101] - Live presenter activity (typing , drawing)
+    * [OPENMEETINGS-1212] - Library versions should be updated (3.0.7)
+
+** Wish
+    * [OPENMEETINGS-1214] - LDAP import AD groups
+
+
+Release Notes - Openmeetings - Version 3.0.6
+================================================================================================================
+** Bug
+    * [OPENMEETINGS-1202] - Send Invitation error with moodle
+    * [OPENMEETINGS-1203] - Screen sharing is not started when external guest try to start sharing
+    * [OPENMEETINGS-1205] - Invitation is not sent from the toom
+    * [OPENMEETINGS-1207] - Create a poll
+    * [OPENMEETINGS-1208] - default_group_id ...?
+
+** Improvement
+    * [OPENMEETINGS-1197] - Library versions should be updated (3.0.6)
+    * [OPENMEETINGS-1206] - Room service should be updated to be able to generate invitation hash with first and last name
+
+
+Release Notes - Openmeetings - Version 3.0.5
+================================================================================================================
+** Bug
+    * [OPENMEETINGS-889] - "Upload new image" button should have the same style with other buttons
+    * [OPENMEETINGS-1161] - Dashboard start widget is not correctly aligned when language is RTL
+    * [OPENMEETINGS-1168] - Request for contact multi-language + RTL issues
+    * [OPENMEETINGS-1181] - Date pickers are not localized
+    * [OPENMEETINGS-1182] - User entered the room from Joomla plugin is displayed with "null" as lastname
+    * [OPENMEETINGS-1183] - It is impossible to change 'chatOpened' room parameter using modifyRoomParameter SOAP call
+    * [OPENMEETINGS-1185] - Appointments returned by SOAP service get wrong start/end time
+    * [OPENMEETINGS-1187] - Send One-Time Invitation does not work if we Generate URL first.
+    * [OPENMEETINGS-1188] - less data for getRoomById
+    * [OPENMEETINGS-1189] - Room' s session seems to expire in less than 1.5 hours when in rooms
+    * [OPENMEETINGS-1190] - keystore file pw is disclosed in the screen sharing log
+    * [OPENMEETINGS-1196] - Meaningless internal error in case OAuth email is in use
+    * [OPENMEETINGS-1199] - Cluster status is missed on admin->connection page
+    * [OPENMEETINGS-1200] - Main menu items shows incorrectly
+    * [OPENMEETINGS-1201] - Header of moderators list box shows incorrectly
+
+** Improvement
+    * [OPENMEETINGS-1133] - Direct sign-in from another site
+    * [OPENMEETINGS-1184] - Library versions should be updated (3.0.5)
+    * [OPENMEETINGS-1198] - Simplify Database Install
+
+
+Release Notes - Openmeetings - Version 3.0.4
+================================================================================================================
+** Bug
+    * [OPENMEETINGS-878] - Sign Web-Start application with trusted root cert
+    * [OPENMEETINGS-1041] - It is impossible drag and drop recordings to public folder when recordings list is scrolled
+    * [OPENMEETINGS-1055] - Error is thrown and connection is closed when external user try to generate URL and send email invitation
+    * [OPENMEETINGS-1062] - Contact data of other users are shown not all.
+    * [OPENMEETINGS-1063] - When "Show contact data to contacts only" was selected, contact data are not showing for users from contacts.
+    * [OPENMEETINGS-1074] - Sharing of the screen gives remote access to the other user
+    * [OPENMEETINGS-1075] - system does not save the mark "do not ask me" when choosing a camera and video expansion
+    * [OPENMEETINGS-1079] - Synchronous backup does not work through the web interface with a large volume of data
+    * [OPENMEETINGS-1080] - Connection with the server is canceled after recordings
+    * [OPENMEETINGS-1083] - Impossible to add user to group, moderator to room
+    * [OPENMEETINGS-1084] - cannot remove auto created user by invite for conference room 
+    * [OPENMEETINGS-1087] - X-UA-Compatible should be set as first META tag
+    * [OPENMEETINGS-1088] - error installing with mssql
+    * [OPENMEETINGS-1089] - Spanish installation screens contains bad UTF-8 chars
+    * [OPENMEETINGS-1091] - the attendees can chaange the start and end dates of calendar appointment rooms !!!
+    * [OPENMEETINGS-1092] - users can use the calendar room to make conference after the end-date of the conference room!!!
+    * [OPENMEETINGS-1094] - Ldap authorisation is not working correctly if var ldap_search_scope=SUBTREE
+    * [OPENMEETINGS-1098] - Login via OAuth2 is broken due to redirectUri is wrong
+    * [OPENMEETINGS-1102] - Room web service is broken
+    * [OPENMEETINGS-1103] - Pressing 'play' on the video player while a video is already playing starts a new player
+    * [OPENMEETINGS-1105] - Dereferencing Aliases using LDAP and eDirectory.
+    * [OPENMEETINGS-1109] - Appointment with existing room is displayed as appointment with 'appointment special room'
+    * [OPENMEETINGS-1110] - Audio/video is being broadcasted to the room after room exit
+    * [OPENMEETINGS-1114] - LDAP config is not Unicode aware
+    * [OPENMEETINGS-1117] - RTL is not fully supported by OM
+    * [OPENMEETINGS-1121] - Blank field (invited user)
+    * [OPENMEETINGS-1123] - RedirectLoop while trying to install
+    * [OPENMEETINGS-1124] - Calendar interface bug
+    * [OPENMEETINGS-1126] - Timezone bug
+    * [OPENMEETINGS-1127] - Unexpected behaivor when user enter to the room if room type is udefined
+    * [OPENMEETINGS-1128] - users can not be deleted ("ghost users")
+    * [OPENMEETINGS-1131] - New events are not shown in the calendar
+    * [OPENMEETINGS-1134] - Removed folder shows in the "Move to folder..." dropdown box
+    * [OPENMEETINGS-1137] - Reducing load times of rooms via invitations api
+    * [OPENMEETINGS-1139] - When users are in different timezones, the meeting setup was not shown correctly on invitee's caleander
+    * [OPENMEETINGS-1143] - Recordings list order
+    * [OPENMEETINGS-1146] - RTMPS uses rtmpport
+    * [OPENMEETINGS-1149] - "AVI", "FLV" and "Re-convert" buttons are not visible on recordings panel when recordings list box is scrolled
+    * [OPENMEETINGS-1150] - NullPointerException is thrown when user try enter to the room via calendar
+    * [OPENMEETINGS-1151] - Recording Java Application is blocked by Security Settings
+    * [OPENMEETINGS-1153] - "Record started" remains in upper right corner after record was stoped (interviewroom)
+    * [OPENMEETINGS-1154] - Too big waiting time after pressing the "Stop recording" button
+    * [OPENMEETINGS-1156] - The "Allow recording" flag is not checked when screen sharing is started
+    * [OPENMEETINGS-1157] - Calendar web service is broken
+    * [OPENMEETINGS-1159] - Chat is not correctly aligned then language is RTL
+    * [OPENMEETINGS-1160] - Edit user settings is not correctly aligned when language is RTL
+    * [OPENMEETINGS-1162] - Admin->users is not correctly aligned when language is RTL
+    * [OPENMEETINGS-1163] - Admin->OAuth is not correctly aligned when language is RTL
+    * [OPENMEETINGS-1164] - Admin->Servers is not correctly aligned when language is RTL
+    * [OPENMEETINGS-1165] - Admin->Configurations is not correctly aligned when language is RTL
+    * [OPENMEETINGS-1166] - Admin->Groups is not correctly aligned when language is RTL
+    * [OPENMEETINGS-1167] - Admin->Labels is not correctly aligned when language is RTL
+    * [OPENMEETINGS-1169] - Send Message dialog is not properly aligned when RTL language is selected
+    * [OPENMEETINGS-1170] - Profile page is not updated when user changes settings
+    * [OPENMEETINGS-1173] - The "Internal error" is thrown when uncheck the "Create/Modify appointment special room" flag
+    * [OPENMEETINGS-1174] - Unenrolled user not redirected to Rooms list
+    * [OPENMEETINGS-1175] - It is impossible to send private message from the room
+    * [OPENMEETINGS-1177] - Calendar is not properly aligned when RTL language is selected
+
+** Improvement
+    * [OPENMEETINGS-547] - Deferred recordings converting possibility.
+    * [OPENMEETINGS-623] - OpenMeetings\u600e\u4e48\u4fee\u6539\u53d1\u9001\u90ae\u4ef6\u7684\u683c\u5f0f
+    * [OPENMEETINGS-1082] - Library versions should be updated
+    * [OPENMEETINGS-1099] - Build should be ready for web-start code-signing
+    * [OPENMEETINGS-1130] - Emails should be created using templates, not string concatenation
+    * [OPENMEETINGS-1135] - logback config should be updated to use log rotation and keep old logs
+    * [OPENMEETINGS-1136] - Improving portuguese-brazil installation translation
+
+** New Feature
+    * [OPENMEETINGS-1104] - Enable change first day in the Calendar
+
+** Wish
+    * [OPENMEETINGS-1065] - add ability to minimize screen-sharing video
+
+
+Release Notes - Openmeetings - Version 3.0.3
+================================================================================================================
+** Bug
+    * [OPENMEETINGS-270] - MemoryLeak / Dead-Lock in FlvRecorderConverter
+    * [OPENMEETINGS-292] - Inviting people during conference
+    * [OPENMEETINGS-409] - Interview Room (2)
+    * [OPENMEETINGS-452] - LDAP issue. Cannot relogin with user that already was logined before and then logged out
+    * [OPENMEETINGS-532] - Generated hash issue
+    * [OPENMEETINGS-616] - Openmeetings for Drupal got a 500 error
+    * [OPENMEETINGS-680] - The "," symbol is used for the multiple e-mail instead of standard ";" symbol
+    * [OPENMEETINGS-683] - Somtimes vido frame is not visible for other users in the room
+    * [OPENMEETINGS-686] - Recording faild when pause is used
+    * [OPENMEETINGS-697] - Authentification Ldap
+    * [OPENMEETINGS-809] - Global chat issues in rooms
+    * [OPENMEETINGS-888] - Room name is not translated correctly in the "My room" widget
+    * [OPENMEETINGS-915] - Regression in 3.0: Incorrect moderator list update in the room screen.
+    * [OPENMEETINGS-918] - Contacts should not be added to usergroup
+    * [OPENMEETINGS-931] - AD LDAP Authentication on empty install organization choice after first logon: empty list
+    * [OPENMEETINGS-953] - can not upload files while using Tomcat with SSL enabled
+    * [OPENMEETINGS-986] - Oauth2.0 Logon Not Working
+    * [OPENMEETINGS-998] - Audio and Video of recordings are not in sync after a few minutes
+    * [OPENMEETINGS-1007] - Users with externalUserId and externaluserType <> null can't login
+    * [OPENMEETINGS-1012] - Reverted timezone is set by default in invitation window
+    * [OPENMEETINGS-1013] - Profile pictures are not displayed to invited user
+    * [OPENMEETINGS-1015] - Browser time zone is not selected correctly in the invitation window until all java timezones are loaded
+    * [OPENMEETINGS-1019] - RemoteControl: problem with sql
+    * [OPENMEETINGS-1020] - create new user after adding user does not add to DB
+    * [OPENMEETINGS-1022] - cliAdmin is broken (NPE + exclude-files)
+    * [OPENMEETINGS-1023] - ChatMessages are not imported
+    * [OPENMEETINGS-1024] - Add user admin dropdown is broken when postgres is used
+    * [OPENMEETINGS-1026] - Moderator rights are not availble for admin user if enter to the room after simple user
+    * [OPENMEETINGS-1027] - Search button does not work for users
+    * [OPENMEETINGS-1029] - modifyRoomParameter SOAP/REST method is broken
+    * [OPENMEETINGS-1031] - The "New folder" dialogs moves to the bottom of the screen and becomes invisible
+    * [OPENMEETINGS-1032] - search variable in Language Editor produce java.lang.StackOverflowError
+    * [OPENMEETINGS-1034] - openmeetings start always fails with postgresql db on debian
+    * [OPENMEETINGS-1035] - "ant -Ddb=postgres" always fails
+    * [OPENMEETINGS-1037] - LDAP passwords are being printed to the log
+    * [OPENMEETINGS-1038] - PrivateRoom Widget is displayed when dashboard.show.myrooms key is disabled
+    * [OPENMEETINGS-1039] - Interview recording is broken if stop-on-close
+    * [OPENMEETINGS-1042] - .ppt file not open when i upload 
+    * [OPENMEETINGS-1048] - Appointement owner has no moderation rights
+    * [OPENMEETINGS-1050] - User list is missing room users
+    * [OPENMEETINGS-1052] - Room list not displayed after room exit
+    * [OPENMEETINGS-1059] - Language not loaded from user profile.
+    * [OPENMEETINGS-1060] - Strange view of warnings at User editing screen.
+    * [OPENMEETINGS-1061] - Font size list is not visible and availble in the global chat
+    * [OPENMEETINGS-1067] - "Move to folder.." item is not translated correctly on the "Contacts and messages" tab
+    * [OPENMEETINGS-1068] - Error is thrown and connection is closed when move event into Calendar view
+    * [OPENMEETINGS-1069] - Add/remove a user to the default moderator list not working properly
+    * [OPENMEETINGS-1070] - Strange view after auto logout from demo room
+    * [OPENMEETINGS-1076] - Export of localization to file not working.
+    * [OPENMEETINGS-1077] - Max participants in the room work incorrectly
+
+** Improvement
+    * [OPENMEETINGS-96] - Possibility to deny remote control for all when sharing screen
+    * [OPENMEETINGS-360] - Email invited meeting participants to display name not email address
+    * [OPENMEETINGS-942] - Searching for contacts
+    * [OPENMEETINGS-971] - Restrict attendees suggestions
+    * [OPENMEETINGS-984] - Recording auto-repairing should be added
+    * [OPENMEETINGS-1017] - ACLs should be added to the User
+    * [OPENMEETINGS-1021] - Red5 should be updated to the latest stable version
+    * [OPENMEETINGS-1028] - Red5 should be updated to the latest stable version
+    * [OPENMEETINGS-1033] - Improve ldap auth type adding SearchScope variable in config file
+    * [OPENMEETINGS-1036] - Improve User Form for include LDAP domain
+    * [OPENMEETINGS-1040] - Select2 should be used to display/set user groups
+    * [OPENMEETINGS-1049] - no default value for the "Quality of the screen sharing"/default FPS
+
+** New Feature
+    * [OPENMEETINGS-442] - om LDAP users controlled with a group
+    * [OPENMEETINGS-1011] - long time to load openmeetings activity in moodle
+
+** Task
+    * [OPENMEETINGS-964] - LDAP login should be refactored
+
+** Test
+    * [OPENMEETINGS-1025] - Problem with convert recording by ffmpeg
+
+** Wish
+    * [OPENMEETINGS-861] - SOAP user for creating & using om rooms via moodle can log into GUI of OM
+    * [OPENMEETINGS-1066] - re-order fields on screen-sharing applet
+
+
+Release Notes - Openmeetings - Version 3.0.2
+================================================================================================================
+** Bug
+    * [OPENMEETINGS-604] - Pop up message remain same after quitting the room created by Book conference room option in the email
+    * [OPENMEETINGS-916] - Selected recording is not highlighted and should not be moved to other folder
+    * [OPENMEETINGS-976] - Cannot restore an erased key in administration\configuration\key
+    * [OPENMEETINGS-978] - It is impossible to start OM in offline mode
+    * [OPENMEETINGS-983] - Verification URL is not generated correctly for self register users
+    * [OPENMEETINGS-985] - Send Invitation functionality is broken
+    * [OPENMEETINGS-990] - error while playing recording
+    * [OPENMEETINGS-993] - Deleted rooms are now excluded from backup
+    * [OPENMEETINGS-994] - AllowRecording option lock normal user interaction in conference Room.
+    * [OPENMEETINGS-996] - send invitation - generate URL
+    * [OPENMEETINGS-997] - error installing with mssql 
+    * [OPENMEETINGS-1002] - OM theming should be consistent
+    * [OPENMEETINGS-1004] - Internal error is thrown when you search a user on the Search Users Tab
+
+** Improvement
+    * [OPENMEETINGS-982] - ApplicationContext recreation should be avoided
+
+
+Release Notes - Openmeetings - Version 3.0.1
+================================================================================================================
+** Sub-task
+    * [OPENMEETINGS-937] - Screen sharing application should create recordings with size multiple by 16
+
+** Bug
+    * [OPENMEETINGS-913] - Booking is not working via private message
+    * [OPENMEETINGS-917] - Contacts should not be added as default moderator
+    * [OPENMEETINGS-920] - where are the controls to playback a recorded video?
+    * [OPENMEETINGS-934] - screenrecording without sound
+    * [OPENMEETINGS-935] - Names are mixed in contact request email
+    * [OPENMEETINGS-936] - First frame of the recording has size differs from all other frames
+    * [OPENMEETINGS-943] - OM3.0: login with LDAP user not working
+    * [OPENMEETINGS-949] - Add Whiteboard: untranslated string - hardcoded
+    * [OPENMEETINGS-951] - Command line installer fails if path contains spaces
+    * [OPENMEETINGS-952] - Build should be compatible with latest ant
+    * [OPENMEETINGS-956] - Recording frame is not scrolled
+    * [OPENMEETINGS-957] - Screensharing is broken
+    * [OPENMEETINGS-958] - Calendar event start and end date are not displayed correctly in the month vew for IST time zone
+    * [OPENMEETINGS-959] - "Choose Device" Dialog doesn't show (all) devices from flash-settings
+    * [OPENMEETINGS-960] - Long time without changing progressbar when enter OM
+    * [OPENMEETINGS-961] - Calendar event can be canceled by guest
+    * [OPENMEETINGS-965] - Dashboard is malfunctioning when the user language is set to french
+    * [OPENMEETINGS-966] - Invitation links are not working
+    * [OPENMEETINGS-967] - dashboard.show.myrooms and dashboard.show.rssfeed options are not working
+    * [OPENMEETINGS-972] - Default user database
+    * [OPENMEETINGS-975] - Reminder is not sent for calendar event
+    * [OPENMEETINGS-977] - Import of Appointments and UserContacts was broken
+
+** Improvement
+    * [OPENMEETINGS-938] - Recording length field should be filled by converters
+    * [OPENMEETINGS-939] - Not ready recordings should have special icon
+
+
+Release Notes - Openmeetings - Version 3.0.0
+================================================================================================================
+** Sub-task
+    * [OPENMEETINGS-746] - Replace OmTimeZone in User Entity with String tz and fix all dependencies
+    * [OPENMEETINGS-747] - Replace OmTimeZone in Invitations Entity with String tz and fix all dependencies
+    * [OPENMEETINGS-748] - Replace OmTimeZone in MeetingMembers Entity with String tz and fix all dependencies
+    * [OPENMEETINGS-749] - Fix Installer with new timezone handling, default to server timezone in UI
+    * [OPENMEETINGS-750] - Fix Backup importer to be able to import old backups (2.x) to new database schema (3.x) (User, Invitations, MeetingMembers have no OmTimeZone anymore)
+    * [OPENMEETINGS-751] - Remove OmTimeZone Entity and import mechanism for timezones.xml and some cleanup
+    * [OPENMEETINGS-752] - Create Branch and Jenkins Job for Timezone refactoring
+    * [OPENMEETINGS-754] - Fix user admin UI to have timezone as string
+    * [OPENMEETINGS-755] - Fix invitation popup in Flash to not use the OmTimeZones for creating the Invitation
+    * [OPENMEETINGS-758] - Remove OpenLaszlo Admin UI and all related API calls (only if they are not needed somewhere else)
+    * [OPENMEETINGS-759] - Remove Flash UI user settings and related API calls 
+    * [OPENMEETINGS-762] - Callers of TimezoneUtil.getTimezoneByInternalJName should be checked to work as expected
+
+** Bug
+    * [OPENMEETINGS-69] - Conference Room - Chat RTL dosn't function 
+    * [OPENMEETINGS-243] - "Updated" field in Administration -> LDAP panel contains "null" for string for empty value.
+    * [OPENMEETINGS-274] - It is impossible to display "test setup recording" once hidden
+    * [OPENMEETINGS-321] - Recording under OSX throws exception in RecordingConverter
+    * [OPENMEETINGS-337] - interview room - audio does not work when "audio only" is selected
+    * [OPENMEETINGS-348] - zoom synchonization
+    * [OPENMEETINGS-377] - Double clicking in the calendar area create two \u201cEvent details\u201d dialog windows not just one window
+    * [OPENMEETINGS-405] - microphoneRateNormal & microphoneRateBest - not change rate
+    * [OPENMEETINGS-410] - whiteboard first color
+    * [OPENMEETINGS-416] - "Hide actions menu" does not work via SOAP in "restricted" room
+    * [OPENMEETINGS-421] - Reminder to conference issue
+    * [OPENMEETINGS-426] - Html Errors/Problems
+    * [OPENMEETINGS-428] - Refactor User administration to Wicket
+    * [OPENMEETINGS-432] - video only room is coming with white board also
+    * [OPENMEETINGS-435] - Help Help Help openmeetings service is not work at the next day
+    * [OPENMEETINGS-437] - Link "...Edit your profile" form de user home page send the control to a user profile view, not to a edit profile view
+    * [OPENMEETINGS-439] - An LDAP user can't change their own profile picture.
+    * [OPENMEETINGS-444] - Create HTML/Wicket admin backup section
+    * [OPENMEETINGS-445] - Backup Export does not work at all
+    * [OPENMEETINGS-451] - Search in user groups Wicket UI does not work
+    * [OPENMEETINGS-473] - Recorded video Display blank at demo.openmeetings.com
+    * [OPENMEETINGS-481] - When I reserve a room by sending an email, users who connected to this link from an email have the same email address as me
+    * [OPENMEETINGS-486] - Sometimes OM stops responding to clicks
+    * [OPENMEETINGS-494] - Recording gives frame rate of 2 fps
+    * [OPENMEETINGS-503] - Openmeetings does not logout on the Recording panel
+    * [OPENMEETINGS-507] - Error message is shown when user save the Profile settings 
+    * [OPENMEETINGS-513] - Participant of poll can vote more than once in the "My conference room"
+    * [OPENMEETINGS-514] - Some extra links are displayed on the "Choose Usergroup" dialog
+    * [OPENMEETINGS-537] - Pop menu  in conference for files shows "Delete folder"
+    * [OPENMEETINGS-544] - some bug with SIP
+    * [OPENMEETINGS-560] - It\u2019s possible to add several records with the same key value in configuration.
+    * [OPENMEETINGS-564] - Types of rooms are not localized
+    * [OPENMEETINGS-566] - No default timezone selection in registration/sign up when user is in timezone +12
+    * [OPENMEETINGS-572] - Empty fields are replaced with string "null" after export&import
+    * [OPENMEETINGS-575] - Name of the restricted and interview rooms is not displayed when user enter to this room
+    * [OPENMEETINGS-579] - In any room not close the video and audio settings windows. Video is not broadcasting.
+    * [OPENMEETINGS-580] - Smslib 3.5.3 should be used.
+    * [OPENMEETINGS-582] - 2.0 RoomPoll and Configs restore failed
+    * [OPENMEETINGS-584] - Main window is scrolled when select value from dropdown box
+    * [OPENMEETINGS-586] - FileItem owner_id is not replaced with new id while system import
+    * [OPENMEETINGS-587] - Exclusive audio by hotkey is broken
+    * [OPENMEETINGS-590] - Useless "SIP Settings" section in the user screen.
+    * [OPENMEETINGS-591] - Whiteboard presentacion from PPT page controll event randomly broken
+    * [OPENMEETINGS-596] - ffmpeg is not work in current version
+    * [OPENMEETINGS-600] - RSS Feed
+    * [OPENMEETINGS-601] - User Profile picture
+    * [OPENMEETINGS-603] - Conference Room Types List doesn't display textual content - Book Conference Room Option Selected while Sending an Email 
+    * [OPENMEETINGS-609] - The end time shown under the Book Conference Room option in New Message is Incorrect
+    * [OPENMEETINGS-617] - Impossible to refresh video using button "(Re) Start audio/video or change device settings"
+    * [OPENMEETINGS-618] - Incorrect translation
+    * [OPENMEETINGS-619] -  Problems with a microphone 
+    * [OPENMEETINGS-620] - Self-Register, Forgot password and login by LDAP should be implemented
+    * [OPENMEETINGS-625] - Profile Pictures not working on LDAP Accounts
+    * [OPENMEETINGS-627] - Private rooms disappear after use
+    * [OPENMEETINGS-628] - Exception is thrown when search user on the Profile->Search users tab
+    * [OPENMEETINGS-629] - Event is not deleted from Calendar
+    * [OPENMEETINGS-630] - Event is not resized in calendar
+    * [OPENMEETINGS-632] - Some links are mistaked in html version of OM
+    * [OPENMEETINGS-633] - Event is not created if title is empty.
+    * [OPENMEETINGS-634] - No menu accessable after file upload, in a special condition
+    * [OPENMEETINGS-635] - Administration / Configuration : default_lang_id documentation
+    * [OPENMEETINGS-640] - Room is not resized in IE
+    * [OPENMEETINGS-642] - The "Import" and "Export" buttons are missed on the Administrator->Language editor tab
+    * [OPENMEETINGS-643] - User details is not updated in the HTML version
+    * [OPENMEETINGS-645] - Can't create installation wizard
+    * [OPENMEETINGS-647] - Drag&Drop Issue Openmeetings 1.8.8 r4555
+    * [OPENMEETINGS-650] - Can't create conference room
+    * [OPENMEETINGS-651] - User can not login
+    * [OPENMEETINGS-654] - Interview room is broken
+    * [OPENMEETINGS-655] - Calendar is not localized
+    * [OPENMEETINGS-657] - can not convert file
+    * [OPENMEETINGS-658] - Event creates in the Calendar with wrong start and end time
+    * [OPENMEETINGS-660] - Types of reminder are not localized
+    * [OPENMEETINGS-661] - Invitation is not implemented in the HTML Calendar
+    * [OPENMEETINGS-663] - OM Installer is not localized
+    * [OPENMEETINGS-664] - OM is not installed in IE 10 browser.
+    * [OPENMEETINGS-665] - File upload in the room is broken
+    * [OPENMEETINGS-666] - Main menu displays incorrectly in the IE browser.
+    * [OPENMEETINGS-667] - Recordings are not viewable on iPad
+    * [OPENMEETINGS-669] - Recording is broken
+    * [OPENMEETINGS-672] - in recordings page ,people cant logout
+    * [OPENMEETINGS-673] - Rooms form is not shown correctly in the HTML version
+    * [OPENMEETINGS-674] - Image is not uploaded on the "Profile" tab in the HTML version of OM
+    * [OPENMEETINGS-676] - User can not login
+    * [OPENMEETINGS-679] - Share/record screen
+    * [OPENMEETINGS-682] - Admin password length is not checked while installing
+    * [OPENMEETINGS-687] - Microphone is unmuted when user refresh video frame
+    * [OPENMEETINGS-688] - Library versions should be bumped
+    * [OPENMEETINGS-689] - Russian installation encoding is broken in Ubuntu.
+    * [OPENMEETINGS-691] - screen sharing / recording couldn't starting
+    * [OPENMEETINGS-693] - Tomcat 7 patch should be removed from OM build
+    * [OPENMEETINGS-695] - Rooms page is not completly in the HTML version
+    * [OPENMEETINGS-696] - Choose device dialog is not availble in the restricted room
+    * [OPENMEETINGS-702] - when uploading file in a room, after click start upload,  return a window with HTTP-ERROR: 500  
+    * [OPENMEETINGS-703] - Invitation is not implemented to the HTML Calendar
+    * [OPENMEETINGS-704] - Calendar UI - Unify button list (Cancel always on right side)
+    * [OPENMEETINGS-705] - Not possible to enter any conference room
+    * [OPENMEETINGS-707] - Calendar UI Creation Popup - clean up UI elements
+    * [OPENMEETINGS-708] - Calender UI Popup shows empty input values when Calendar UI is loaded second time
+    * [OPENMEETINGS-709] - Calendar UI Popup - no need for delete button if you create a new event
+    * [OPENMEETINGS-711] - Calendar UI add external attendee's
+    * [OPENMEETINGS-714] - Calendar does not send any invitations to the attendees
+    * [OPENMEETINGS-715] - Calendar does not send any update email if you change a calendar event to the attendees
+    * [OPENMEETINGS-716] - Calendar does not send any delete email if you delete a calendar event to the attendees
+    * [OPENMEETINGS-718] - Newly created users are unable to login
+    * [OPENMEETINGS-719] - Calendar UI delete button has no confirmation
+    * [OPENMEETINGS-720] - Calendar throws server error if any calendar event is saved (only tested with new events so far)
+    * [OPENMEETINGS-726] - Internal users do not show calendar events of events that you have been added to
+    * [OPENMEETINGS-729] - Empty / null values in email_username/password throws Exception when processing emails
+    * [OPENMEETINGS-730] - Cannot save empty value for configuration key in HTML5 UI (for instance username / pas for email configuration)
+    * [OPENMEETINGS-736] - Calendar UI - Month view does not resize to browser window by default
+    * [OPENMEETINGS-738] - Wrong successful registration message behavior
+    * [OPENMEETINGS-741] - Failed to change password
+    * [OPENMEETINGS-742] - Calendar UI - week and day view pretty useless when you can't select any day
+    * [OPENMEETINGS-743] - HTML Version Forgotten  your password email link does not work 
+    * [OPENMEETINGS-744] - Private message does not send in the HTML version
+    * [OPENMEETINGS-756] - Remove OpenLaszlo/Flash Calendar UI and Server side components API Calls/DTOs
+    * [OPENMEETINGS-757] - Several issues with external and internal meeting members
+    * [OPENMEETINGS-763] - Command line admin: --drop option is broken
+    * [OPENMEETINGS-764] - Plugins should work with OM 3.0.0
+    * [OPENMEETINGS-765] - Wicket should be used for email generation
+    * [OPENMEETINGS-768] - User is not enter to the room when rtmp port is not set correctly
+    * [OPENMEETINGS-769] - Calendar UI - Event details with link to room
+    * [OPENMEETINGS-770] - when i click button  share/recording screen , i get do download [ public 7.jnlp], not working properly
+    * [OPENMEETINGS-771] - Dashboard is not shown correctly when user exit from the room.
+    * [OPENMEETINGS-773] - Deleted users are shown in the Usergroups
+    * [OPENMEETINGS-776] - Contacts should be visible for owner and admin only
+    * [OPENMEETINGS-777] - SOAP/REST API should be fixed to create appointments as HTML5 web client
+    * [OPENMEETINGS-780] - Upload pictures and other documents on the white board, has been in the transition state.
+    * [OPENMEETINGS-784] - SOAP API service "modifyRoomParameter" converts "paramValue" into String
+    * [OPENMEETINGS-785] - Messsage " You have successfully signed up. An email with a verification code will be sent to your mailbox." comes up even if it is not supposed to
+    * [OPENMEETINGS-786] - Loading symbol in Wicket and Flash should look the same
+    * [OPENMEETINGS-787] - top navigation gone
+    * [OPENMEETINGS-788] - As soon as you hit the "start conference" button the video freezes and just nothing happens
+    * [OPENMEETINGS-789] - Interview room recording in 2.1.1
+    * [OPENMEETINGS-796] - Install Wizard displays wrong value for red5SipEnable
+    * [OPENMEETINGS-799] - SOAP methods RoomService.{getRooms,getRoomsWithCurrentUsers} and UserService.getUsersByOrganisation are broken
+    * [OPENMEETINGS-803] - Image files are not visible for attendees on whiteboard
+    * [OPENMEETINGS-804] - updateRoomWithModerationQuestionsAudioTypeAndHideOptions sets isAudioOnly always to true
+    * [OPENMEETINGS-806] - addNewUser SOAP method doe not return valid error code
+    * [OPENMEETINGS-808] - Installation using Derby default database configuration seems to have performance issues
+    * [OPENMEETINGS-810] - Entering interview room doesnt have option to select camera size - it inhetits the last used size
+    * [OPENMEETINGS-815] - Exception in sign up
+    * [OPENMEETINGS-818] - Room login via secureHash is broken
+    * [OPENMEETINGS-819] - Zoom is not synchronyzed on whiteboard
+    * [OPENMEETINGS-821] - Can't upload file
+    * [OPENMEETINGS-822] - Closed room was created by addRoom and addRoomWithModeration REST/SOAP methods
+    * [OPENMEETINGS-830] - Recording is broken without screen sharing
+    * [OPENMEETINGS-832] - SOAP doesn't work
+    * [OPENMEETINGS-835] - no proper db-type option for postgresql db (Command Line Admin)
+    * [OPENMEETINGS-836] - OM layout error  - item from vicket is hide the room chat elements
+    * [OPENMEETINGS-841] - Only the first user in a room is displayed and can be heard by others
+    * [OPENMEETINGS-842] - External users should not be redirected to dashboard
+    * [OPENMEETINGS-844] - Invitations are broken after last refactoring
+    * [OPENMEETINGS-848] - RoomService.getRoomCounters REST/SOAP method is not working
+    * [OPENMEETINGS-849] - some remains after the purge of deleted recordings and a system cleanup via admin.sh
+    * [OPENMEETINGS-851] - There is no way to use uploaded files in an interview room
+    * [OPENMEETINGS-852] - Whiteboard Objects not clickable
+    * [OPENMEETINGS-855] - NPE using ./admin.sh -v -f --cleanup
+    * [OPENMEETINGS-856] - Invitation link is broken
+    * [OPENMEETINGS-859] - Audio and Video in recordings is no more in sync
+    * [OPENMEETINGS-860] - Invite window is opened with long delay
+    * [OPENMEETINGS-864] - Exception is thrown when update event in the calendar
+    * [OPENMEETINGS-865] - Upload buttons has artifacts
+    * [OPENMEETINGS-866] - NPE if frontend register is not allowed
+    * [OPENMEETINGS-868] - User creation via SOAP availability should be controlled by separate option
+    * [OPENMEETINGS-869] - Email subject is not displayed correctly for UTF-8 charset
+    * [OPENMEETINGS-870] - Plugins should work in version 3.0
+    * [OPENMEETINGS-871] - Internal error is thrown when search user on the Search users tab
+    * [OPENMEETINGS-872] - The "to" field is not filed in the "Write new message dialog"
+    * [OPENMEETINGS-873] - Ajax error is thrown when click on the "Show user profile" icon
+    * [OPENMEETINGS-875] - Widgets title are not translated when user change language
+    * [OPENMEETINGS-876] - The "Click here to enter room" link is attached to cancel email notification.
+    * [OPENMEETINGS-877] - New line "<br/>" tag does not applied for invitation message
+    * [OPENMEETINGS-880] - 3.0 regression: "Forgotten your password?" does not work on the login screen.
+    * [OPENMEETINGS-882] - OpenMeetings calendar allows create events with the end date/time earlier than the start date/time
+    * [OPENMEETINGS-883] - Strange behaviour during the external guest entering
+    * [OPENMEETINGS-884] - Regression in 3.0: Drop-down lists in the user registration screen work incorrectly in Google Chrome
+    * [OPENMEETINGS-885] - Record is not played under Chrome browser
+    * [OPENMEETINGS-886] - Impossible to save editable fields in My Profile.
+    * [OPENMEETINGS-890] - The "Login" field is not displayed on the connection panel.
+    * [OPENMEETINGS-891] - Wrong birthday date is displayed on the profile->edit settings panel
+    * [OPENMEETINGS-892] - "Add user" button is disabled when add new group
+    * [OPENMEETINGS-893] - Removed user is not added to usergroup again
+    * [OPENMEETINGS-898] - Time zone is not defined correctly on sign in page
+    * [OPENMEETINGS-899] - Calendar event start and end time are not displayed correctly
+    * [OPENMEETINGS-900] - Deleted contact is selected when user invite external guest to calendar invitation
+    * [OPENMEETINGS-901] - Password is not requested when password protected invitation send to external guest.
+    * [OPENMEETINGS-902] - Records are not created correctly
+    * [OPENMEETINGS-904] - Default landing zone
+    * [OPENMEETINGS-906] - Cannot create new group with users
+    * [OPENMEETINGS-907] - "password is required" message is displayed when "Password protected" checkbox is not  checked
+    * [OPENMEETINGS-908] - Calendar event start and end date are not displayed correctly in the month vew
+    * [OPENMEETINGS-909] - Event owners is not receive email notification
+    * [OPENMEETINGS-910] - Contacts are availble to search on the Search user page
+    * [OPENMEETINGS-912] - Email disappears when move emial to the new folder
+    * [OPENMEETINGS-914] - "Mark unread" action does not work on Contacts and message page
+    * [OPENMEETINGS-919] - Access logs will not be generated
+    * [OPENMEETINGS-922] - Add folder button does not add a folder.
+    * [OPENMEETINGS-923] - Drag and drop of files in the recordings section does not work
+    * [OPENMEETINGS-924] - deleting recordings?
+    * [OPENMEETINGS-925] - Recording details previously showed the room name not the id
+    * [OPENMEETINGS-927] - Memory leak in OM wicket application
+    * [OPENMEETINGS-930] - getInvitationHash method allow creation of invalid users (login too small)
+    * [OPENMEETINGS-932] - SIP dialer menu item is not availble in the OM 3.x
+
+** Improvement
+    * [OPENMEETINGS-167] - Main menu of OM
+    * [OPENMEETINGS-168] - Adding system date on dashboard
+    * [OPENMEETINGS-183] - Replacing "Timezone" column in "Users search" interface with a most important information = "statue" (connected /  absent).
+    * [OPENMEETINGS-273] - calendar time is not updating dynamically
+    * [OPENMEETINGS-280] - Update ATutor Module for OM
+    * [OPENMEETINGS-358] - Remove or hide the "Domian" selection from the "Login" dialog when there is only one "Domain"
+    * [OPENMEETINGS-368] - Allow users to zoom their view of the Whiteboard by default and not being controlled by "Draw on the Whiteboard" permissions
+    * [OPENMEETINGS-375] - Allow an administrative option to control whether to display the "Mute microphone globally" dialog box or not
+    * [OPENMEETINGS-429] - [Wicket] Language admin should be implemented
+    * [OPENMEETINGS-484] - Poor quality of bitmapped pictures in pdf files on the whiteboard.
+    * [OPENMEETINGS-548] - Open meetings in a new window or tab
+    * [OPENMEETINGS-556] - GSOC: Faster screen sharing
+    * [OPENMEETINGS-558] - GSOC: Need wysiwyg editor Wicket component
+    * [OPENMEETINGS-574] - wicket-jquery-ui should be used instead of adding jquery-ui manually to every page
+    * [OPENMEETINGS-578] - Latest Red5 server should be used in OM
+    * [OPENMEETINGS-583] - Ability to disable enhanced microphone should be added
+    * [OPENMEETINGS-589] - Configurable hot key for Mute/Unmute should be added
+    * [OPENMEETINGS-594] - Add translated word in thai language
+    * [OPENMEETINGS-610] - push2talk button
+    * [OPENMEETINGS-612] - Dashboard need to be implemented
+    * [OPENMEETINGS-615] - User Profile panel need to be implemented
+    * [OPENMEETINGS-626] - Recordings panel need to be added
+    * [OPENMEETINGS-631] - Updated French translation
+    * [OPENMEETINGS-637] - Admin: Connections panel need to be implemented
+    * [OPENMEETINGS-638] - Room enter/exit should be implemented
+    * [OPENMEETINGS-639] - Installer should be implemented on Wicket
+    * [OPENMEETINGS-646] - Emotions should be added to the chat
+    * [OPENMEETINGS-685] - Japanese translation update for v2.1.1 / v3.1
+    * [OPENMEETINGS-692] - HTML admin should be improved to highlight record which changes 
+    * [OPENMEETINGS-701] - Wicket HTML templates should be stored unarchived
+    * [OPENMEETINGS-727] - no warning for too short login names
+    * [OPENMEETINGS-772] - Project tree structure should be updated
+    * [OPENMEETINGS-778] - Cannot install simplified Chinese
+    * [OPENMEETINGS-798] - MSSQL support should be added to OM
+    * [OPENMEETINGS-820] - No function to match user groups with rooms via SOAP
+    * [OPENMEETINGS-854] - SOAP/REST call getFlvRecordingByExternalUserId should take into account both external id and type
+
+** New Feature
+    * [OPENMEETINGS-152] - Background image
+    * [OPENMEETINGS-491] - LDAP authentication filter
+    * [OPENMEETINGS-576] - Suggestion about the tunnelling implementation.
+    * [OPENMEETINGS-656] - Callback URL when client drop/log out from room
+    * [OPENMEETINGS-802] - Integration with Chamilo LMS
+    * [OPENMEETINGS-857] - sound/voice warning when disconnected
+
+** Task
+    * [OPENMEETINGS-81] - Unify Upload Components
+    * [OPENMEETINGS-721] - is it possible to add new user from soap method?
+    * [OPENMEETINGS-740] - Login via OAuth2
+    * [OPENMEETINGS-760] - Removing all OpenLaszlo /Flash UI that is no more maintained all all connected server side API calls.
+    * [OPENMEETINGS-767] - Redundant fields should be removed from MeetingMember object
+
+** Wish
+    * [OPENMEETINGS-38] - Default language
+    * [OPENMEETINGS-534] - How to set When the user is registered, need administrator audit to register?
+    * [OPENMEETINGS-607] - Refine the UI
+    * [OPENMEETINGS-622] - Removing the menu items and customizing dashboard
+
+
+Release Notes - Openmeetings - Version 2.2.0 Apache Release
+================================================================================================================
+** Bug
+    * [OPENMEETINGS-671] - Calendar is shown incompletely when book conference room
+    * [OPENMEETINGS-763] - Command line admin: --drop option is broken
+    * [OPENMEETINGS-789] - Interview room recording in 2.1.1
+    * [OPENMEETINGS-791] - Backup import is broken
+    * [OPENMEETINGS-799] - SOAP methods RoomService.{getRooms,getRoomsWithCurrentUsers} and UserService.getUsersByOrganisation are broken
+    * [OPENMEETINGS-803] - Image files are not visible for attendees on whiteboard
+    * [OPENMEETINGS-804] - updateRoomWithModerationQuestionsAudioTypeAndHideOptions sets isAudioOnly always to true
+    * [OPENMEETINGS-806] - addNewUser SOAP method doe not return valid error code
+    * [OPENMEETINGS-810] - Entering interview room doesnt have option to select camera size - it inhetits the last used size
+    * [OPENMEETINGS-811] - Recordings does not downloaded via Google Chrome browser
+    * [OPENMEETINGS-819] - Zoom is not synchronyzed on whiteboard
+    * [OPENMEETINGS-832] - SOAP doesn't work
+    * [OPENMEETINGS-835] - no proper db-type option for postgresql db (Command Line Admin)
+    * [OPENMEETINGS-837] - "Choose Device" Dialog stops working after a few Changes
+    * [OPENMEETINGS-842] - External users should not be redirected to dashboard
+    * [OPENMEETINGS-848] - RoomService.getRoomCounters REST/SOAP method is not working
+
+** Improvement
+    * [OPENMEETINGS-368] - Allow users to zoom their view of the Whiteboard by default and not being controlled by "Draw on the Whiteboard" permissions
+    * [OPENMEETINGS-556] - GSOC: Faster screen sharing
+    * [OPENMEETINGS-798] - MSSQL support should be added to OM
+    * [OPENMEETINGS-820] - No function to match user groups with rooms via SOAP
+
+** New Feature
+    * [OPENMEETINGS-491] - LDAP authentication filter
+
+** Task
+    * [OPENMEETINGS-790] - Red5 version in 2.x branch should be bumped
+
+
+Release Notes - Openmeetings - Version 2.1.1 Apache Release
+================================================================================================================
+** Bug
+    * [OPENMEETINGS-432] - video only room is coming with white board also
+    * [OPENMEETINGS-439] - An LDAP user can't change their own profile picture.
+    * [OPENMEETINGS-481] - When I reserve a room by sending an email, users who connected to this link from an email have the same email address as me
+    * [OPENMEETINGS-503] - Openmeetings does not logout on the Recording panel
+    * [OPENMEETINGS-507] - Error message is shown when user save the Profile settings 
+    * [OPENMEETINGS-537] - Pop menu  in conference for files shows "Delete folder"
+    * [OPENMEETINGS-586] - FileItem owner_id is not replaced with new id while system import
+    * [OPENMEETINGS-587] - Exclusive audio by hotkey is broken
+    * [OPENMEETINGS-598] - dont build trunk on JDK 1.7 x64
+    * [OPENMEETINGS-608] - Office file are uploaded but not displayed
+    * [OPENMEETINGS-609] - The end time shown under the Book Conference Room option in New Message is Incorrect
+    * [OPENMEETINGS-618] - Incorrect translation
+    * [OPENMEETINGS-625] - Profile Pictures not working on LDAP Accounts
+    * [OPENMEETINGS-634] - No menu accessable after file upload, in a special condition
+    * [OPENMEETINGS-635] - Administration / Configuration : default_lang_id documentation
+    * [OPENMEETINGS-654] - Interview room is broken
+    * [OPENMEETINGS-670] - The webinar is already closed, you wil be rediredcted to some interesting offerings in X sek
+    * [OPENMEETINGS-687] - Microphone is unmuted when user refresh video frame
+
+** Improvement
+    * [OPENMEETINGS-589] - Configurable hot key for Mute/Unmute should be added
+
+
+Release Notes - Openmeetings - Version 2.1 Apache Release
+================================================================================================================
+** Sub-task
+    * [OPENMEETINGS-448] - Test and fix latest trunk to be able to import all old download zip's
+
+** Bug
+    * [OPENMEETINGS-34] - missing entries in XML language files
+    * [OPENMEETINGS-49] - Synchronisation between Calendar and Dashboard
+    * [OPENMEETINGS-92] - The documents are not deleted from the server after removing them from the system
+    * [OPENMEETINGS-94] - References to the code.google.com need to be updated
+    * [OPENMEETINGS-157] - Registration bug
+    * [OPENMEETINGS-166] - Meeting is created with incorrect start time in the calendar.
+    * [OPENMEETINGS-180] - bug sending invitation
+    * [OPENMEETINGS-196] - Calendar Ical / Simple Mail - double invitation mail
+    * [OPENMEETINGS-212] - Activities and actions: "Deny and remove message " button is not worked
+    * [OPENMEETINGS-243] - "Updated" field in Administration -> LDAP panel contains "null" for string for empty value.
+    * [OPENMEETINGS-251] - Minors layout problems when translating
+    * [OPENMEETINGS-267] - missing translation
+    * [OPENMEETINGS-291] - light does not indicate when the user is speaking
+    * [OPENMEETINGS-310] - Moodle plugin version
+    * [OPENMEETINGS-311] - Language problem after Openmeetings update (accessing from Moodle only)
+    * [OPENMEETINGS-312] - File was null or did not exist: TEST_SETUP_1338945244240.flv
+    * [OPENMEETINGS-314] - Webcam Title of user is username of default OM user
+    * [OPENMEETINGS-316] - ICS attachments for emails not working with Exchange 2003/2007 and Outlook 2003/2007
+    * [OPENMEETINGS-320] - Exception and layout for screensharing/recording client
+    * [OPENMEETINGS-322] - Several Exception in Log
+    * [OPENMEETINGS-327] - Add Restart Save Mail-Queue
+    * [OPENMEETINGS-328] - screen sharing is not closing automatically
+    * [OPENMEETINGS-331] - tooltip for cmd_applyforWhiteBoard room action is not set
+    * [OPENMEETINGS-343] - OM crashes if Invite\u0432 guest with screen sharing rights tries to start screen sharing
+    * [OPENMEETINGS-346] - Screen Sharing does not end with end of meeting
+    * [OPENMEETINGS-362] - Download of profile images broken
+    * [OPENMEETINGS-363] - Some minor bugs in private chat
+    * [OPENMEETINGS-364] - User is not removed from user list when he leaves the room
+    * [OPENMEETINGS-366] - File upload does not show images as options when doing file upload
+    * [OPENMEETINGS-376] - \u201cNotification type\u201d text overflows the drop down data selection area and is partly covered
+    * [OPENMEETINGS-378] - Update Calendar email notification rules to send notification only when data relevant to the users has been changed
+    * [OPENMEETINGS-379] - The Calendar ics format email notification is incorrectly formed
+    * [OPENMEETINGS-380] - Calendar "Add attendee" option has a second option of itself to "Add external" but adding an external attendee does not close this dialog
+    * [OPENMEETINGS-381] - ivy jar in our repository
+    * [OPENMEETINGS-382] - LICENSE file mentions both CDDL and GPL
+    * [OPENMEETINGS-385] - contextmenu  contextmenuitem
+    * [OPENMEETINGS-389] - Create Drupal plugin for OpenMeetings
+    * [OPENMEETINGS-391] - Private and public folder does not appear
+    * [OPENMEETINGS-392] - privateChatTabBottom
+    * [OPENMEETINGS-393] - NumberFormatException while creating user or room
+    * [OPENMEETINGS-394] - save and load whiteboard does not work
+    * [OPENMEETINGS-396] - ICS attachments not recognised in Outlook 2003
+    * [OPENMEETINGS-402] - I cannot open Interview recorded
+    * [OPENMEETINGS-403] - Missing rooms
+    * [OPENMEETINGS-408] - Interview Room (1)
+    * [OPENMEETINGS-415] - NetStream NetStatus event does not work when attached to client object
+    * [OPENMEETINGS-418] - ScreenShare russian charset
+    * [OPENMEETINGS-420] - small problems in the current version
+    * [OPENMEETINGS-422] - Java error: TEST_SETUP_xxx.flv does not exist; javax error : ClientBroadCast Stream; published name=null
+    * [OPENMEETINGS-423] - Installation OM2.0
+    * [OPENMEETINGS-424] - Adjust Stream Volume
+    * [OPENMEETINGS-428] - Refactor User administration to Wicket
+    * [OPENMEETINGS-431] - OpenMeetings behind a proxy doesn't work for screen sharing
+    * [OPENMEETINGS-433] - Add Wicket enabled room administration
+    * [OPENMEETINGS-434] - Create admin area for groups, configurations, ldaps, servers
+    * [OPENMEETINGS-438] - Some bugs
+    * [OPENMEETINGS-440] - Problem in installation process
+    * [OPENMEETINGS-441] - Can't backup
+    * [OPENMEETINGS-445] - Backup Export does not work at all
+    * [OPENMEETINGS-449] - Cannot import backup file
+    * [OPENMEETINGS-450] - Wicket UI locked after accepting download of backup
+    * [OPENMEETINGS-451] - Search in user groups Wicket UI does not work
+    * [OPENMEETINGS-453] - Recordings associated with wrong user after import if already a user was in the database
+    * [OPENMEETINGS-454] - Scrennsharing initiated by invited user ends up in exception report
+    * [OPENMEETINGS-455] - Create RTMPClient to do a load test
+    * [OPENMEETINGS-458] - Missing language string "pluginname"
+    * [OPENMEETINGS-459] - Remove RoomClient from database
+    * [OPENMEETINGS-466] - Screen Sharing window, Chinese Simplified (lang_id=11) text display "?????"
+    * [OPENMEETINGS-467] - No internal user can be selected when planning a meeting
+    * [OPENMEETINGS-469] - Deleted meeting data remains in SIP db tables
+    * [OPENMEETINGS-472] - red5sip rev68 will not run
+    * [OPENMEETINGS-474] - Links to rooms sent via email do not work
+    * [OPENMEETINGS-482] - Network check script hangs after the second "Port" button click 
+    * [OPENMEETINGS-489] - Start recording test hangs if no webcamera connected
+    * [OPENMEETINGS-490] - Wrong directory for test file in "Choose device" window
+    * [OPENMEETINGS-492] - Restoration of backup failed
+    * [OPENMEETINGS-493] - Uploading Libreoffice-format files only results in "Deleted"
+    * [OPENMEETINGS-496] - It's unable to send localized SMS message.
+    * [OPENMEETINGS-498] - Backup fails with Exception
+    * [OPENMEETINGS-502] - Some labels are hardcoded on the System backup tab 
+    * [OPENMEETINGS-504] - Some labels are not translated to russian language
+    * [OPENMEETINGS-505] - Values of the "Unerole User" and "Server Address" fields are mixed on the Administrator -> Connections tab.
+    * [OPENMEETINGS-506] - Localized (russian) file name is not uploaded on the Profile tab
+    * [OPENMEETINGS-509] - Comment is shown incorrectly in the Choose device dialog
+    * [OPENMEETINGS-512] - Files are not uploaded in the rooms
+    * [OPENMEETINGS-515] - Video recording artifacts at the begin of the file
+    * [OPENMEETINGS-516] - After graduation tasks
+    * [OPENMEETINGS-517] - sensSMS flag is not imported/exported by admin.
+    * [OPENMEETINGS-519] - Need to update Configuration page on Openmeetings site.
+    * [OPENMEETINGS-520] - Missing areas on the recorded video
+    * [OPENMEETINGS-521] - The "Show/Copy chat log" and "Delete server chat log" buttons are not available for the Ptivate Chat
+    * [OPENMEETINGS-523] - download manual ghostcript download link is dead
+    * [OPENMEETINGS-524] - Unenroled user is not thrown from the conference room 
+    * [OPENMEETINGS-525] - Font styles icon is enabled for Ptivate Chat if the "Allow font styles" is not enabled for conference room
+    * [OPENMEETINGS-526] - Not enough checking in the screensharing/recording
+    * [OPENMEETINGS-530] - Network testing tool on login page does not work when having OM configured for HTTPS and RTMPS
+    * [OPENMEETINGS-531] - Error Missing[XXXX]
+    * [OPENMEETINGS-536] - In upload dialog "Select file" does not work
+    * [OPENMEETINGS-540] - Uploading of .odt files
+    * [OPENMEETINGS-552] - Release blocking UI issues
+    * [OPENMEETINGS-561] - Video is not removed on Whiteboard closing
+    * [OPENMEETINGS-563] - "Black box" is displayed on test audio/video setup dialog
+    * [OPENMEETINGS-565] - Stackoverflow Exception when you goto your user profile and try to save it.
+    * [OPENMEETINGS-566] - No default timezone selection in registration/sign up when user is in timezone +12
+    * [OPENMEETINGS-567] - If you hit the "start upload" button twice, while the conversion is running, Openmeetings will run into an error
+    * [OPENMEETINGS-568] - OpenMeetings requests access to Cam even if there is none
+    * [OPENMEETINGS-569] - Faulty highperf settings in bat script
+    * [OPENMEETINGS-572] - Empty fields are replaced with string "null" after export&import
+    * [OPENMEETINGS-580] - Smslib 3.5.3 should be used.
+    * [OPENMEETINGS-582] - 2.0 RoomPoll and Configs restore failed
+
+** Improvement
+    * [OPENMEETINGS-93] - Create Openmeetings plug-in
+    * [OPENMEETINGS-119] - New users french manual
+    * [OPENMEETINGS-299] - Language import should be improved to take less time
+    * [OPENMEETINGS-339] - File location detection should be centralized
+    * [OPENMEETINGS-349] - OM should be scalable 
+    * [OPENMEETINGS-356] - Modify Rooms menu to have three options for each of the room types
+    * [OPENMEETINGS-357] - Users should first log into "Private rooms", have as a Admin selectable option for where users first log into
+    * [OPENMEETINGS-361] - It should be available to set logo in OM
+    * [OPENMEETINGS-384] - Mention that the file parameter is optional for the admin setup script
+    * [OPENMEETINGS-386] - Import/Export should be automatic based on Annotations
+    * [OPENMEETINGS-387] - It should be possible to create Appointment and use existent room
+    * [OPENMEETINGS-390] - Openmeetings Plugin for Bitrix need to be implemented
+    * [OPENMEETINGS-395] - Ability to add multiple external attendees should be added to the calendar
+    * [OPENMEETINGS-397] - Private chat with chat disabled
+    * [OPENMEETINGS-398] - Updated french translation for OM 2.1
+    * [OPENMEETINGS-399] - jitsi openmeetings plugin
+    * [OPENMEETINGS-400] - Improve volume slider
+    * [OPENMEETINGS-436] - Ability to moderate room chat should be added
+    * [OPENMEETINGS-470] - SIP meeting extensions
+    * [OPENMEETINGS-477] - Possibility to copy invitation link to the clipboard should be added
+    * [OPENMEETINGS-478] - It should be possible to enable auto videopod selection
+    * [OPENMEETINGS-480] - It would be better to remove confirmation dialog when user turns micro on/off.
+    * [OPENMEETINGS-497] - Confirmation diolog for the turning micro on/off is inconvenient.
+    * [OPENMEETINGS-501] - fresh build fails with class org/jdom/JDOMException not found in anakia build section
+    * [OPENMEETINGS-518] - Sms text sent as a meeting reminder is too long sometime.
+    * [OPENMEETINGS-527] - Confirm an exclusive audio
+    * [OPENMEETINGS-529] - AEC should be utilized in OM
+    * [OPENMEETINGS-535] - an update of the german language file
+    * [OPENMEETINGS-541] - Updated version of French language file
+    * [OPENMEETINGS-562] - To import ppt presentation delete page
+    * [OPENMEETINGS-583] - Ability to disable enhanced microphone should be added
+
+** New Feature
+    * [OPENMEETINGS-111] - Command line admin need to be created
+    * [OPENMEETINGS-342] - Private Chat should be available in the room
+    * [OPENMEETINGS-350] - Hot key should be added to be able to "rearrange" video windows in the room
+    * [OPENMEETINGS-351] - Add a possibility to send sms as an appointment reminder
+    * [OPENMEETINGS-354] - Volume slider
+    * [OPENMEETINGS-383] - Plugin for Joomla should be added to Openmeetings
+
+** Task
+    * [OPENMEETINGS-41] - OM without private storage area
+    * [OPENMEETINGS-107] - Unify database schema
+    * [OPENMEETINGS-248] - Remove LGPL Icons from Symbol/Cliparts and Emoticons
+    * [OPENMEETINGS-306] - Initial network quality test
+    * [OPENMEETINGS-341] - Update to portugues brasil Language
+    * [OPENMEETINGS-414] - Delete SIP Applet from stack
+    * [OPENMEETINGS-417] - How to add/register SIP extension in OpenMeeting ?
+    * [OPENMEETINGS-446] - Create a Master backup File for last versions (including all generated data)
+    * [OPENMEETINGS-522] - add Redmine Plugin Link to HomePage
+    * [OPENMEETINGS-585] - Clustering documentation
+
+** Test
+    * [OPENMEETINGS-50] - content of whiteboards
+
+
+Release Notes - OpenMeetings - Version 2.0-INCUBATING
+================================================================================================================
+** Sub-task
+    [OPENMEETINGS-8] - Generate CalendarAPI for SOAP/REST WebServices
+    [OPENMEETINGS-9] - Design MockUp for new Calendar UI
+    [OPENMEETINGS-40] - Merge Audio/Video components to trunk
+    [OPENMEETINGS-44] - remove all old audio/video components
+    [OPENMEETINGS-47] - fix ScopeApplicationAdapter / sync and message broadcasting mechanism to not send messages to SWF10 client
+    [OPENMEETINGS-51] - fix url params (invitationHash / secureHash / language_id / roomScopeId / et cetera ) to be forwarded to inner SWF components
+    [OPENMEETINGS-52] - fix icon status in new video components
+    [OPENMEETINGS-53] - Add security mechanism to LocalConnection subscribers
+    [OPENMEETINGS-54] - fix recorder to use new audio/video components and fix recording itself to reference correct streams
+    [OPENMEETINGS-55] - fix testing application (5 second video recording on room enter) to use new a/v components
+    [OPENMEETINGS-61] - fix screensharing player to use the new audio/video components
+    [OPENMEETINGS-62] - Clean up 5-second recordings using a scheduler
+    [OPENMEETINGS-65] - fix whiteboard video player to use the new audio/video components
+    [OPENMEETINGS-71] - fix interview room type to use new audio/video components
+    [OPENMEETINGS-73] - fix mute functionality in new video components
+    [OPENMEETINGS-77] - changeDevice.lzx must be transformed to SWF10
+    [OPENMEETINGS-79] - Share

<TRUNCATED>

[13/50] [abbrv] openmeetings git commit: no jira: version is switched, code clean-up

Posted by so...@apache.org.
no jira: version is switched, code clean-up


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/52791442
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/52791442
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/52791442

Branch: refs/heads/3.2.x
Commit: 527914424ed9968c123eb05779cea4c4585b9a95
Parents: 914da1d
Author: Maxim Solodovnik <so...@apache.org>
Authored: Tue Mar 21 06:23:20 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Tue Mar 21 06:23:20 2017 +0000

----------------------------------------------------------------------
 openmeetings-core/pom.xml                       |  2 +-
 .../openmeetings/core/mail/MailHandler.java     |  6 ++--
 .../test/asf/AsfCopyRightReplace.java           | 27 +++++++-------
 .../openmeetings/test/rdc/KeyCodesTest.java     | 38 +++++++++++---------
 .../openmeetings/test/rdc/ReadKeyCodesTest.java | 12 ++++---
 .../openmeetings/test/rtmp/SimulateLoad.java    |  3 +-
 openmeetings-db/pom.xml                         |  6 +---
 openmeetings-flash/pom.xml                      |  2 +-
 openmeetings-install/pom.xml                    |  2 +-
 .../java/org/apache/openmeetings/cli/Admin.java | 10 +-----
 openmeetings-screenshare/pom.xml                |  2 +-
 .../apache/openmeetings/screenshare/Core.java   |  1 +
 .../screenshare/gui/ScreenSharerFrame.java      |  5 +--
 openmeetings-server/pom.xml                     | 23 +++++++++++-
 openmeetings-service/pom.xml                    |  2 +-
 .../mail/template/AbstractTemplatePanel.java    |  4 +--
 openmeetings-util/pom.xml                       |  6 +++-
 .../apache/openmeetings/util/mail/MailUtil.java | 18 +++++-----
 openmeetings-web/pom.xml                        | 17 +--------
 .../web/admin/groups/GroupUsersPanel.java       |  4 +--
 .../openmeetings/web/admin/rooms/RoomForm.java  |  4 +--
 .../openmeetings/web/app/Application.java       |  9 ++---
 .../openmeetings/web/common/menu/MenuPanel.java | 10 +++---
 .../web/common/tree/FolderPanel.java            | 11 ++----
 .../apache/openmeetings/web/pages/BasePage.java |  3 +-
 .../apache/openmeetings/web/room/RoomPanel.java | 10 +++---
 .../web/room/activities/ActivitiesPanel.java    |  3 +-
 .../web/room/menu/RoomMenuPanel.java            |  5 +--
 .../web/room/sidebar/RoomClientPanel.java       | 10 +++---
 .../web/room/sidebar/RoomSidebar.java           |  2 +-
 .../web/room/sidebar/UploadDialog.java          |  4 +--
 .../web/room/sidebar/icon/ClientIcon.java       | 10 +++---
 .../web/user/profile/MessagesContactsPanel.java | 15 ++++----
 .../web/user/profile/UserSearchPanel.java       |  9 +++--
 .../test/calendar/TestSendIcalMessage.java      |  2 +-
 openmeetings-webservice/pom.xml                 |  2 +-
 pom.xml                                         | 16 +++++----
 37 files changed, 159 insertions(+), 156 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-core/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-core/pom.xml b/openmeetings-core/pom.xml
index 96d5a32..54295e6 100644
--- a/openmeetings-core/pom.xml
+++ b/openmeetings-core/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.2.1-SNAPSHOT</version>
+		<version>3.2.2-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-core</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java
index 6ac52e9..a77e397 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java
@@ -203,7 +203,7 @@ public class MailHandler {
 		String replyTo = m.getReplyTo();
 		if (replyTo != null && mailAddReplyTo) {
 			log.debug("setReplyTo " + replyTo);
-			if (MailUtil.matches(replyTo)) {
+			if (MailUtil.isValid(replyTo)) {
 				msg.setReplyTo(new InternetAddress[]{new InternetAddress(replyTo)});
 			}
 		}
@@ -246,9 +246,7 @@ public class MailHandler {
 						log.error("Error while sending message", e);
 						m.setErrorCount(m.getErrorCount() + 1);
 						StringWriter sw = new StringWriter();
-						try (PrintWriter pw = new PrintWriter(sw)) {
-							e.printStackTrace(pw);
-						}
+						e.printStackTrace(new PrintWriter(sw));
 						m.setLastError(sw.getBuffer().toString());
 						m.setStatus(m.getErrorCount() < MAXIMUM_ERROR_COUNT ? Status.NONE : Status.ERROR);
 					}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-core/src/test/java/org/apache/openmeetings/test/asf/AsfCopyRightReplace.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/test/asf/AsfCopyRightReplace.java b/openmeetings-core/src/test/java/org/apache/openmeetings/test/asf/AsfCopyRightReplace.java
index cdcc13a..acab791 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/test/asf/AsfCopyRightReplace.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/test/asf/AsfCopyRightReplace.java
@@ -36,7 +36,7 @@ import org.slf4j.Logger;
 public class AsfCopyRightReplace {
 	private static final Logger log = Red5LoggerFactory.getLogger(AsfCopyRightReplace.class, webAppRootKey);
 
-	String asf_copyright = "/*\n"
+	private static String asf_copyright = "/*\n"
 			+ " * Licensed to the Apache Software Foundation (ASF) under one\n"
 			+ " * or more contributor license agreements.  See the NOTICE file\n"
 			+ " * distributed with this work for additional information\n"
@@ -54,7 +54,7 @@ public class AsfCopyRightReplace {
 			+ " * specific language governing permissions and limitations\n"
 			+ " * under the License.\n" + " */\n";
 
-	String asf_xml_copyright = "<!--\n"
+	private static String asf_xml_copyright = "<!--\n"
 			+ "  Licensed to the Apache Software Foundation (ASF) under one\n"
 			+ "  or more contributor license agreements.  See the NOTICE file\n"
 			+ "  distributed with this work for additional information\n"
@@ -62,16 +62,17 @@ public class AsfCopyRightReplace {
 			+ "  to you under the Apache License, Version 2.0 (the\n"
 			+ "  \"License\"); you may not use this file except in compliance\n"
 			+ "  with the License.  You may obtain a copy of the License at\n"
-			+ "  \n" + "      http://www.apache.org/licenses/LICENSE-2.0\n"
-			+ "    	  \n"
+			+ "\n"
+			+ "      http://www.apache.org/licenses/LICENSE-2.0\n"
+			+ "\n"
 			+ "  Unless required by applicable law or agreed to in writing,\n"
 			+ "  software distributed under the License is distributed on an\n"
 			+ "  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n"
 			+ "  KIND, either express or implied.  See the License for the\n"
 			+ "  specific language governing permissions and limitations\n"
 			+ "  under the License.\n" + "  \n" + "-->\n";
-	
-	String asf_vm_copyright = "#\n"
+
+	private static String asf_vm_copyright = "#\n"
 			+ "# Licensed to the Apache Software Foundation (ASF) under one\n"
 			+ "# or more contributor license agreements.  See the NOTICE file\n"
 			+ "# distributed with this work for additional information\n"
@@ -90,14 +91,10 @@ public class AsfCopyRightReplace {
 			+ "# under the License.\n" + "#/\n";
 
 	public static void main(String... args) {
-		new AsfCopyRightReplace();
-	}
-
-	public AsfCopyRightReplace() {
 		scanFolder(new File("./src/main"));
 	}
 
-	private void scanFolder(File folder) {
+	private static void scanFolder(File folder) {
 
 		for (File javaFile : folder.listFiles(new FilenameFilter() {
 			@Override
@@ -128,7 +125,7 @@ public class AsfCopyRightReplace {
 		}
 	}
 
-	private void scanAndWriteXMLFile(File javaFile) {
+	private static void scanAndWriteXMLFile(File javaFile) {
 		StringWriter strWriter = new StringWriter();
 		try (BufferedReader is = new BufferedReader(new InputStreamReader(new FileInputStream(javaFile), UTF_8))) {
 			log.debug("Processing " + javaFile.getCanonicalPath());
@@ -140,7 +137,7 @@ public class AsfCopyRightReplace {
 			while ((line = is.readLine()) != null) {
 				if (i == 0) {
 					firstline = line;
-					
+
 					if (firstline.startsWith("<canvas")) {
 						strWriter.append(asf_xml_copyright);
 					} else if (firstline.startsWith("<library")) {
@@ -173,7 +170,7 @@ public class AsfCopyRightReplace {
 		}
 	}
 
-	private void scanAndWriteJavaFile(File javaFile) {
+	private static void scanAndWriteJavaFile(File javaFile) {
 		StringWriter strWriter = new StringWriter();
 		try (BufferedReader is = new BufferedReader(new InputStreamReader(new FileInputStream(javaFile), UTF_8))) {
 			log.debug("Processing " + javaFile.getCanonicalPath());
@@ -185,7 +182,7 @@ public class AsfCopyRightReplace {
 				if (i == 0) {
 					if (line.startsWith("package ")) {
 						strWriter.append(asf_copyright);
-					} else if (line.startsWith("## OpenMeetings") 
+					} else if (line.startsWith("## OpenMeetings")
 							&& javaFile.getName().endsWith(".vm")) {
 						strWriter.append(asf_vm_copyright);
 					}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-core/src/test/java/org/apache/openmeetings/test/rdc/KeyCodesTest.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/test/rdc/KeyCodesTest.java b/openmeetings-core/src/test/java/org/apache/openmeetings/test/rdc/KeyCodesTest.java
index c33f590..cfb0ef3 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/test/rdc/KeyCodesTest.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/test/rdc/KeyCodesTest.java
@@ -18,8 +18,13 @@
  */
 package org.apache.openmeetings.test.rdc;
 
-import java.awt.*;
-import java.awt.event.*;
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
 
 class WindowClosingAdapter extends WindowAdapter {
 	@Override
@@ -35,6 +40,7 @@ public class KeyCodesTest extends Frame implements KeyListener {
 	String msg1 = "";
 	String msg2 = "";
 
+	@SuppressWarnings("unused")
 	public static void main(String[] args) {
 		new KeyCodesTest();
 	}
@@ -76,17 +82,17 @@ public class KeyCodesTest extends Frame implements KeyListener {
 	public void keyPressed(KeyEvent event) {
 		msg1 = "";
 		System.out.println("keyPressed CODE1 "+event.getKeyCode());
-		
+
 		int myCode = event.getKeyCode();
-		
+
 		System.out.println("keyPressed CODE2 "+myCode);
-		
+
 		System.out.println("keyPressed CHAR3 "+event.getKeyChar());
-		
+
 		System.out.println("keyPressed CHAR4 "+KeyEvent.getKeyText(event.getKeyCode()));
-		
+
 		System.out.println("keyPressed CHAR5 "+KeyEvent.getKeyText(myCode));
-		
+
 		System.out.println("keyPressed isActionKey "+event.isActionKey());
 		System.out.println("keyPressed isAltDown "+event.isAltDown());
 		System.out.println("keyPressed isAltGraphDown "+event.isAltGraphDown());
@@ -96,7 +102,7 @@ public class KeyCodesTest extends Frame implements KeyListener {
 		System.out.println("keyPressed isShiftDown "+event.isShiftDown());
 
 		System.out.println("keyPressed paramString "+event.paramString());
-		
+
 		if (event.getKeyChar() == KeyEvent.CHAR_UNDEFINED) {
 			int key = event.getKeyCode();
 			// Funktionstaste abfragen
@@ -132,19 +138,19 @@ public class KeyCodesTest extends Frame implements KeyListener {
 	@Override
 	public void keyTyped(KeyEvent event) {
 		char key = event.getKeyChar();
-		
+
 //		System.out.println("keyTyped CODE1 "+event.getKeyCode());
-//		
+//
 //		Integer myCode = event.getKeyCode();
-//		
+//
 //		System.out.println("keyTyped CODE2 "+myCode);
-//		
+//
 //		System.out.println("keyTyped CHAR3 "+event.getKeyChar());
-//		
+//
 //		System.out.println("keyTyped CHAR4 "+event.getKeyText(event.getKeyCode()));
-//		
+//
 //		System.out.println("keyTyped CHAR5 "+event.getKeyText(myCode));
-		
+
 		if (key == KeyEvent.VK_BACK_SPACE) {
 			if (msg2.length() > 0) {
 				msg2 = msg2.substring(0, msg2.length() - 1);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-core/src/test/java/org/apache/openmeetings/test/rdc/ReadKeyCodesTest.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/test/rdc/ReadKeyCodesTest.java b/openmeetings-core/src/test/java/org/apache/openmeetings/test/rdc/ReadKeyCodesTest.java
index 9233769..12d73b2 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/test/rdc/ReadKeyCodesTest.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/test/rdc/ReadKeyCodesTest.java
@@ -18,14 +18,18 @@
  */
 package org.apache.openmeetings.test.rdc;
 
-import java.awt.*;
-import java.awt.event.*;
+import java.awt.Color;
+import java.awt.Frame;
+import java.awt.Graphics;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
 
 public class ReadKeyCodesTest extends Frame implements KeyListener {
 	private static final long serialVersionUID = 1L;
 	String msg1 = "";
 	String msg2 = "";
 
+	@SuppressWarnings("unused")
 	public static void main(String[] args) {
 		new ReadKeyCodesTest();
 	}
@@ -102,9 +106,9 @@ public class ReadKeyCodesTest extends Frame implements KeyListener {
 	@Override
 	public void keyTyped(KeyEvent event) {
 		char key = event.getKeyChar();
-		
+
 		System.out.println("keyTyped "+event.getKeyCode());
-		
+
 		if (key == KeyEvent.VK_BACK_SPACE) {
 			if (msg2.length() > 0) {
 				msg2 = msg2.substring(0, msg2.length() - 1);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/SimulateLoad.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/SimulateLoad.java b/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/SimulateLoad.java
index ed9927e..fd95155 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/SimulateLoad.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/test/rtmp/SimulateLoad.java
@@ -40,8 +40,7 @@ public class SimulateLoad extends Thread {
 	public static void main(String... args) {
 		try {
 			if (args.length != 4) {
-				new RuntimeException(
-						"4 args needed, host, port, context, instanceId");
+				throw new RuntimeException("4 args needed, host, port, context, instanceId");
 			}
 			for (String arg : args) {
 				System.err.println("arg: " + arg);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-db/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-db/pom.xml b/openmeetings-db/pom.xml
index 5a311e6..6fd9b17 100644
--- a/openmeetings-db/pom.xml
+++ b/openmeetings-db/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.2.1-SNAPSHOT</version>
+		<version>3.2.2-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-db</artifactId>
@@ -44,10 +44,6 @@
 			<artifactId>openmeetings-util</artifactId>
 		</dependency>
 		<dependency>
-			<groupId>org.apache.wicket</groupId>
-			<artifactId>wicket-extensions</artifactId>
-		</dependency>
-		<dependency>
 			<groupId>org.apache.openjpa</groupId>
 			<artifactId>openjpa</artifactId>
 			<version>${openjpa.version}</version>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-flash/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-flash/pom.xml b/openmeetings-flash/pom.xml
index 0d48f63..5a518d3 100644
--- a/openmeetings-flash/pom.xml
+++ b/openmeetings-flash/pom.xml
@@ -21,7 +21,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.2.1-SNAPSHOT</version>
+		<version>3.2.2-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-flash</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-install/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-install/pom.xml b/openmeetings-install/pom.xml
index 29f59b3..56ca27c 100644
--- a/openmeetings-install/pom.xml
+++ b/openmeetings-install/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.2.1-SNAPSHOT</version>
+		<version>3.2.2-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-install</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
----------------------------------------------------------------------
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
index 15436c2..f5375ea 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
@@ -34,9 +34,6 @@ import java.util.Date;
 import java.util.Map;
 import java.util.TimeZone;
 
-import javax.mail.internet.AddressException;
-import javax.mail.internet.InternetAddress;
-
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
 import org.apache.commons.cli.DefaultParser;
@@ -411,12 +408,7 @@ public class Admin {
 			System.exit(1);
 		}
 
-		try {
-			if (cfg.email == null || !MailUtil.matches(cfg.email)) {
-				throw new AddressException("Invalid address");
-			}
-			new InternetAddress(cfg.email, true);
-		} catch (AddressException ae) {
+		if (!MailUtil.isValid(cfg.email)) {
 			System.out.println("Please provide non-empty valid email: '" + cfg.email + "' is not valid.");
 			System.exit(1);
 		}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-screenshare/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/pom.xml b/openmeetings-screenshare/pom.xml
index b426490..ec6b8b6 100644
--- a/openmeetings-screenshare/pom.xml
+++ b/openmeetings-screenshare/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.2.1-SNAPSHOT</version>
+		<version>3.2.2-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-screenshare</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java
index 3f826d2..defeadc 100644
--- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java
+++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java
@@ -188,6 +188,7 @@ public class Core implements IPendingServiceCallback, INetStreamEventHandler {
 		}
 	}
 
+	@SuppressWarnings("unused")
 	public static void main(String[] args) {
 		new Core(args);
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenSharerFrame.java
----------------------------------------------------------------------
diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenSharerFrame.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenSharerFrame.java
index 60a4d0a..bab4136 100644
--- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenSharerFrame.java
+++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenSharerFrame.java
@@ -50,6 +50,7 @@ import javax.swing.JPanel;
 import javax.swing.JTabbedPane;
 import javax.swing.JTextField;
 import javax.swing.SwingConstants;
+import javax.swing.WindowConstants;
 import javax.swing.border.EmptyBorder;
 import javax.swing.event.ChangeEvent;
 import javax.swing.event.ChangeListener;
@@ -76,7 +77,7 @@ public class ScreenSharerFrame extends JFrame {
 	private HorizontalSlider leftSlider = new HorizontalSlider();
 	private HorizontalSlider rightSlider = new HorizontalSlider();
 	private BlankArea virtualScreen = new BlankArea(new Color(255, 255, 255, 100));
-	private JTabbedPane tabbedPane = new JTabbedPane(JTabbedPane.TOP);
+	private JTabbedPane tabbedPane = new JTabbedPane(SwingConstants.TOP);
 	private boolean doUpdateBounds = true;
 	private boolean showWarning = true;
 	private JButton btnStartStopSharing;
@@ -232,7 +233,7 @@ public class ScreenSharerFrame extends JFrame {
 		setTitle(getTextLabel(textLabels, 0)); //#id 730
 		setBackground(Color.WHITE);
 		setResizable(false);
-		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
+		setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
 		addWindowListener(new WindowAdapter() {
 			@Override
 			public void windowClosing(WindowEvent e) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-server/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/pom.xml b/openmeetings-server/pom.xml
index b64cd5b..febb20b 100644
--- a/openmeetings-server/pom.xml
+++ b/openmeetings-server/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.2.1-SNAPSHOT</version>
+		<version>3.2.2-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-server</artifactId>
@@ -316,6 +316,27 @@
 										<ignore></ignore>
 									</action>
 								</pluginExecution>
+								<pluginExecution>
+									<pluginExecutionFilter>
+										<groupId>
+											com.internetitem
+										</groupId>
+										<artifactId>
+											write-properties-file-maven-plugin
+										</artifactId>
+										<versionRange>
+											[1.0.1,)
+										</versionRange>
+										<goals>
+											<goal>
+												write-properties-file
+											</goal>
+										</goals>
+									</pluginExecutionFilter>
+									<action>
+										<ignore></ignore>
+									</action>
+								</pluginExecution>
 							</pluginExecutions>
 						</lifecycleMappingMetadata>
 					</configuration>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-service/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-service/pom.xml b/openmeetings-service/pom.xml
index 0baa405..616e2ec 100644
--- a/openmeetings-service/pom.xml
+++ b/openmeetings-service/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.2.1-SNAPSHOT</version>
+		<version>3.2.2-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-service</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePanel.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePanel.java
index 54be034..ac3e666 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePanel.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/mail/template/AbstractTemplatePanel.java
@@ -27,7 +27,7 @@ import org.apache.openmeetings.IWebSession;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.label.LabelDao;
 import org.apache.openmeetings.db.util.FormatHelper;
-import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.markup.html.TransparentWebMarkupContainer;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.protocol.http.WebSession;
@@ -53,7 +53,7 @@ public abstract class AbstractTemplatePanel extends Panel {
 	public AbstractTemplatePanel(Locale locale) {
 		super(COMP_ID);
 		this.locale = locale == null ? getDefault() : locale;
-		add(new TransparentWebMarkupContainer("container").add(AttributeAppender.append("dir", FormatHelper.isRtlLanguage(this.locale.toLanguageTag()) ? "rtl" : "ltr")));
+		add(new TransparentWebMarkupContainer("container").add(AttributeModifier.append("dir", FormatHelper.isRtlLanguage(this.locale.toLanguageTag()) ? "rtl" : "ltr")));
 	}
 
 	public static String getString(String id, Locale locale, String... params) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-util/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-util/pom.xml b/openmeetings-util/pom.xml
index eb5fa5a..acfa2b7 100644
--- a/openmeetings-util/pom.xml
+++ b/openmeetings-util/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.2.1-SNAPSHOT</version>
+		<version>3.2.2-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-util</artifactId>
@@ -99,5 +99,9 @@
 			<artifactId>wicket-native-websocket-core</artifactId>
 			<version>${wicket.version}</version>
 		</dependency>
+		<dependency>
+			<groupId>org.apache.wicket</groupId>
+			<artifactId>wicket-extensions</artifactId>
+		</dependency>
 	</dependencies>
 </project>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/MailUtil.java
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/MailUtil.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/MailUtil.java
index f54fe9d..e43cfaa 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/MailUtil.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/MailUtil.java
@@ -18,15 +18,17 @@
  */
 package org.apache.openmeetings.util.mail;
 
-import java.util.regex.Pattern;
+import org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
+import org.apache.wicket.util.string.Strings;
+import org.apache.wicket.validation.Validatable;
 
 public class MailUtil {
-	
-	private static final Pattern rfc2822 = Pattern.compile(
-	        "^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$"
-	);
-	
-	public static boolean matches(String email) {
-		return rfc2822.matcher(email).matches();
+	public static boolean isValid(String email) {
+		if (Strings.isEmpty(email)) {
+			return false;
+		}
+		Validatable<String> eml = new Validatable<>(email);
+		RfcCompliantEmailAddressValidator.getInstance().validate(eml);
+		return eml.isValid();
 	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-web/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index 3880610..fac0bf4 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.2.1-SNAPSHOT</version>
+		<version>3.2.2-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-web</artifactId>
@@ -372,10 +372,6 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.wicket</groupId>
-			<artifactId>wicket-extensions</artifactId>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.wicket</groupId>
 			<artifactId>wicket-auth-roles</artifactId>
 			<version>${wicket.version}</version>
 		</dependency>
@@ -436,17 +432,6 @@
 		</dependency>
 		<dependency>
 			<groupId>org.wicketstuff</groupId>
-			<artifactId>wicketstuff-whiteboard</artifactId>
-			<version>${wickets.version}</version>
-			<exclusions>
-				<exclusion>
-					<groupId>org.apache.wicket</groupId>
-					<artifactId>wicket-native-websocket-tomcat</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
-		<dependency>
-			<groupId>org.wicketstuff</groupId>
 			<artifactId>wicketstuff-select2</artifactId>
 			<version>${wickets.version}</version>
 		</dependency>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
index 6cb9fff..4284b86 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupUsersPanel.java
@@ -32,9 +32,9 @@ import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import org.apache.openmeetings.web.common.PagedEntityListPanel;
 import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
-import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.CheckBox;
 import org.apache.wicket.markup.html.panel.Panel;
@@ -69,7 +69,7 @@ public class GroupUsersPanel extends Panel {
 				User u = grpUser.getUser();
 				Label label = new Label("label", u == null ? "" : GroupForm.formatUser(u));
 				if (grpUser.getId() == null) {
-					label.add(AttributeAppender.append("class", "newItem"));
+					label.add(AttributeModifier.append("class", "newItem"));
 				}
 				item.add(label);
 				item.add(new ConfirmableAjaxBorder("deleteUserBtn", getString("80"), getString("833")) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
index fd87950..f2e3a2a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
@@ -47,11 +47,11 @@ import org.apache.openmeetings.web.admin.AdminUserChoiceProvider;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import org.apache.openmeetings.web.util.RoomTypeDropDown;
+import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
 import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
-import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.CheckBox;
@@ -289,7 +289,7 @@ public class RoomForm extends AdminBaseForm<Room> {
 				RoomModerator moderator = item.getModelObject();
 				Label name = new Label("uName", moderator.getUser().getFirstname() + " " + moderator.getUser().getLastname());
 				if (moderator.getId() == null) {
-					name.add(AttributeAppender.append("class", "newItem"));
+					name.add(AttributeModifier.append("class", "newItem"));
 				}
 				item.add(new CheckBox("superModerator", new PropertyModel<Boolean>(moderator, "superModerator")))
 					.add(new Label("userId", "" + moderator.getUser().getId()))

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index 51d57f9..b40c9e2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -84,6 +84,7 @@ import org.apache.wicket.Localizer;
 import org.apache.wicket.Page;
 import org.apache.wicket.RestartResponseException;
 import org.apache.wicket.RuntimeConfigurationType;
+import org.apache.wicket.Session;
 import org.apache.wicket.ThreadContext;
 import org.apache.wicket.authroles.authentication.AbstractAuthenticatedWebSession;
 import org.apache.wicket.authroles.authentication.AuthenticatedWebApplication;
@@ -91,7 +92,6 @@ import org.apache.wicket.core.request.handler.BookmarkableListenerRequestHandler
 import org.apache.wicket.core.request.handler.ListenerRequestHandler;
 import org.apache.wicket.core.request.mapper.MountedMapper;
 import org.apache.wicket.markup.html.WebPage;
-import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.component.IRequestablePage;
@@ -138,6 +138,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 		//chain of Resource Loaders, if not found it will search in Wicket's internal
 		//Resource Loader for a the property key
 		getResourceSettings().getStringResourceLoaders().add(0, new LabelResourceLoader());
+		//FIXME TODO v3 on the way
 		getJavaScriptLibrarySettings().setJQueryReference(new JavaScriptResourceReference(DynamicJQueryResourceReference.class, DynamicJQueryResourceReference.VERSION_2));
 
 		super.init();
@@ -216,7 +217,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 	}
 
 	public static Application get() {
-		return (Application) WebApplication.get(wicketApplicationName);
+		return (Application)org.apache.wicket.Application.get(wicketApplicationName);
 	}
 
 	public static DashboardContext getDashboardContext() {
@@ -492,7 +493,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 	public static Locale getLocale(final long languageId) {
 		Locale loc = LabelDao.languages.get(languageId);
 		if (loc == null) {
-			loc = WebSession.exists() ? WebSession.get().getLocale() : Locale.ENGLISH;
+			loc = Session.exists() ? WebSession.get().getLocale() : Locale.ENGLISH;
 		}
 		return loc;
 	}
@@ -511,7 +512,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
 
 	public static String getString(String key, final Locale loc, String... params) {
 		if (!exists()) {
-			ThreadContext.setApplication(Application.get(appName));
+			ThreadContext.setApplication(org.apache.wicket.Application.get(appName));
 		}
 		if ((params == null || params.length == 0) && STRINGS_WITH_APP.contains(key)) {
 			params = new String[]{getBean(ConfigurationDao.class).getAppName()};

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
index e234636..f22381f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/menu/MenuPanel.java
@@ -21,7 +21,7 @@ package org.apache.openmeetings.web.common.menu;
 import java.util.List;
 
 import org.apache.openmeetings.web.common.BasePanel;
-import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.util.string.Strings;
@@ -32,7 +32,7 @@ import com.googlecode.wicket.jquery.ui.widget.menu.Menu;
 
 /**
  * Loads the menu items into the main area
- * 
+ *
  * @author sebawagner
  *
  */
@@ -52,12 +52,12 @@ public class MenuPanel extends BasePanel {
 			protected void addMenuItem(ListItem<IMenuItem> item, IMenuItem menuItem) {
 				super.addMenuItem(item, menuItem);
 				MenuItem m = (MenuItem)menuItem;
-				item.add(AttributeAppender.append("class", m.isTop() ? "top" : "sub"));
+				item.add(AttributeModifier.append("class", m.isTop() ? "top" : "sub"));
 				if (!Strings.isEmpty(m.getDesc())) {
-					item.add(AttributeAppender.append("title", m.getDesc()));
+					item.add(AttributeModifier.append("title", m.getDesc()));
 				}
 				if (!Strings.isEmpty(m.getIcon())) {
-					item.add(AttributeAppender.append("class", m.getIcon()));
+					item.add(AttributeModifier.append("class", m.getIcon()));
 				}
 			}
 		});

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
index 2cc6eaf..4f50487 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FolderPanel.java
@@ -28,10 +28,10 @@ import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 import org.apache.openmeetings.db.entity.file.FileItem;
 import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.extensions.ajax.markup.html.AjaxEditableLabel;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
@@ -93,7 +93,7 @@ public class FolderPanel extends Panel {
 					behavior.setOption("helper", "dragHelper");
 				}
 			}.setContainment(treePanel.getContainment());
-			drag.add(AttributeAppender.append("class", r instanceof Recording ? "recorditem" : "fileitem"));
+			drag.add(AttributeModifier.append("class", r instanceof Recording ? "recorditem" : "fileitem"));
 		}
 		Component name = r.getId() == null || !editable ? new Label("name", r.getName()) : new AjaxEditableLabel<String>("name", Model.of(model.getObject().getName())) {
 			private static final long serialVersionUID = 1L;
@@ -114,13 +114,8 @@ public class FolderPanel extends Panel {
 					getBean(FileExplorerItemDao.class).update((FileExplorerItem)fi);
 				}
 			}
-
-			@Override
-			public void onEdit(AjaxRequestTarget target) {
-				super.onEdit(target);
-			}
 		};
-		drag.add(name.add(AttributeAppender.append("title", r.getName())));
+		drag.add(name.add(AttributeModifier.append("title", r.getName())));
 		add(drop.add(drag).setOutputMarkupId(true));
 	}
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
index 3a97427..1339a2d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/BasePage.java
@@ -33,7 +33,6 @@ import org.apache.openmeetings.web.util.OmUrlFragment.AreaKeys;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.RuntimeConfigurationType;
 import org.apache.wicket.markup.head.CssHeaderItem;
-import org.apache.wicket.markup.head.CssReferenceHeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
@@ -100,7 +99,7 @@ public abstract class BasePage extends AsyncUrlFragmentAwarePage {
 	public void renderHead(IHeaderResponse response) {
 		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(Application.get().getJavaScriptLibrarySettings().getJQueryReference())));
 		super.renderHead(response);
-		response.render(CssReferenceHeaderItem.forUrl(String.format("css/theme_om/jquery-ui.%scss"
+		response.render(CssHeaderItem.forUrl(String.format("css/theme_om/jquery-ui.%scss"
 				, RuntimeConfigurationType.DEVELOPMENT == getApplication().getConfigurationType() ? "" : "min.")));
 		if (isRtl()) {
 			response.render(CssHeaderItem.forUrl("css/theme-rtl.css"));

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index 378ee2a..861c352 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -66,11 +66,11 @@ import org.apache.openmeetings.web.room.activities.Activity;
 import org.apache.openmeetings.web.room.menu.RoomMenuPanel;
 import org.apache.openmeetings.web.room.sidebar.RoomSidebar;
 import org.apache.openmeetings.web.user.record.JpgRecordingResourceReference;
+import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
-import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.event.IEvent;
 import org.apache.wicket.markup.head.IHeaderResponse;
@@ -173,7 +173,7 @@ public class RoomPanel extends BasePanel {
 		Component eventDetail = new WebMarkupContainer(EVENT_DETAILS_ID).setVisible(false);
 
 		room.add(menu = new RoomMenuPanel("menu", this));
-		room.add(AttributeAppender.append("data-room-id", r.getId()));
+		room.add(AttributeModifier.append("data-room-id", r.getId()));
 		Droppable<FileItem> wbArea = new Droppable<FileItem>("wb-area") {
 			private static final long serialVersionUID = 1L;
 
@@ -367,18 +367,18 @@ public class RoomPanel extends BasePanel {
 						}
 						break;
 					case rightUpdated:
-						sidebar.updateUsers(handler);
+						sidebar.update(handler);
 						menu.update(handler);
 						break;
 					case roomEnter:
-						sidebar.updateUsers(handler);
+						sidebar.update(handler);
 						menu.update(handler);
 						// TODO should this be fixed?
 						//activities.addActivity(new Activity(m, Activity.Type.roomEnter), handler);
 						break;
 					case roomExit:
 						//TODO check user/remove tab
-						sidebar.updateUsers(handler);
+						sidebar.update(handler);
 						activities.add(new Activity(m, Activity.Type.roomExit), handler);
 						break;
 					case roomClosed:

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
index c08d5c9..f15b5a7 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
@@ -40,6 +40,7 @@ import org.apache.openmeetings.util.message.RoomMessage;
 import org.apache.openmeetings.util.message.TextRoomMessage;
 import org.apache.openmeetings.web.common.BasePanel;
 import org.apache.openmeetings.web.room.RoomPanel;
+import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -216,7 +217,7 @@ public class ActivitiesPanel extends BasePanel {
 			}
 			item.add(new WebMarkupContainer("close").add(new AttributeAppender("onclick", String.format("activityAction(%s, '%s', '%s');", roomId, Action.close.name(), a.getId()))));
 			item.add(accept, decline, new Label("text", text));
-			item.add(AttributeAppender.append("class", getClass(a)));
+			item.add(AttributeModifier.append("class", getClass(a)));
 		}
 
 		private String getClass(Activity a) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
index 0679589..6cbec34 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
@@ -51,6 +51,7 @@ import org.apache.openmeetings.web.room.RoomPanel;
 import org.apache.openmeetings.web.room.poll.CreatePollDialog;
 import org.apache.openmeetings.web.room.poll.PollResultsDialog;
 import org.apache.openmeetings.web.room.poll.VoteDialog;
+import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
@@ -224,7 +225,7 @@ public class RoomMenuPanel extends Panel {
 
 				@Override
 				protected void onTimer(int remain) {
-					getComponent().add(AttributeAppender.replace("title", getText("639", remain)));
+					getComponent().add(AttributeModifier.replace("title", getText("639", remain)));
 				}
 
 				@Override
@@ -311,7 +312,7 @@ public class RoomMenuPanel extends Panel {
 				roomClass.append(" screen");
 			}
 		}
-		handler.add(roomName.add(AttributeAppender.replace("class", roomClass), AttributeAppender.replace("title", roomTitle)));
+		handler.add(roomName.add(AttributeModifier.replace("class", roomClass), AttributeModifier.replace("title", roomTitle)));
 		handler.add(askBtn.setVisible(!moder && r.isAllowUserQuestions()));
 		handler.add(shareBtn.setVisible(shareVisible));
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomClientPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomClientPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomClientPanel.java
index afadb18..f6eeee2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomClientPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomClientPanel.java
@@ -27,7 +27,7 @@ import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.room.RoomPanel;
 import org.apache.openmeetings.web.room.sidebar.icon.KickIcon;
 import org.apache.openmeetings.web.room.sidebar.icon.RefreshIcon;
-import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.list.ListItem;
@@ -42,8 +42,8 @@ public class RoomClientPanel extends Panel {
 		setRenderBodyOnly(true);
 		Client c = item.getModelObject();
 		item.setMarkupId(String.format("user%s", c.getUid()));
-		item.add(AttributeAppender.append("style", String.format("background-image: url(profile/%s);", c.getUserId())));
-		item.add(AttributeAppender.append("data-userid", c.getUserId()));
+		item.add(AttributeModifier.append("style", String.format("background-image: url(profile/%s);", c.getUserId())));
+		item.add(AttributeModifier.append("data-userid", c.getUserId()));
 		add(new RefreshIcon("refresh", c, room));
 		add(new Label("name", getName(c)));
 		WebMarkupContainer actions = new WebMarkupContainer("actions");
@@ -52,7 +52,7 @@ public class RoomClientPanel extends Panel {
 		actions.setVisible(room.getClient().hasRight(Right.moderator));
 		if (c.getUid().equals(room.getClient().getUid())) {
 			actions.add(new SelfIconsPanel("icons", c, room, false));
-			item.add(AttributeAppender.append("class", "current"));
+			item.add(AttributeModifier.append("class", "current"));
 		} else {
 			actions.add(new ClientIconsPanel("icons", c, room));
 		}
@@ -97,6 +97,6 @@ public class RoomClientPanel extends Panel {
 		}
 		//FIXME TODO add 'typingActivity'
 		//FIXME TODO add ability to change 'first/last name'
-		add(new WebMarkupContainer("status").add(AttributeAppender.append("class", status), AttributeAppender.replace("title", getString(statusTitle))));
+		add(new WebMarkupContainer("status").add(AttributeModifier.append("class", status), AttributeModifier.replace("title", getString(statusTitle))));
 	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
index d69c7f0..611031f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
@@ -365,7 +365,7 @@ public class RoomSidebar extends Panel {
 		roomFiles.setReadOnly(!showFiles, handler);
 	}
 
-	public void updateUsers(IPartialPageRequestHandler handler) {
+	public void update(IPartialPageRequestHandler handler) {
 		updateShowFiles(handler);
 		updateUsers();
 		selfRights.setVisible(room.getRoom().isAllowUserQuestions() || room.getClient().hasRight(Right.moderator));

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
index b7f14cc..d01c588 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
@@ -37,10 +37,10 @@ import org.apache.openmeetings.util.process.ConverterProcessResultList;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.room.RoomPanel;
 import org.apache.openmeetings.web.util.upload.BootstrapFileUploadBehavior;
+import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
 import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
-import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
 import org.apache.wicket.markup.head.IHeaderResponse;
@@ -123,7 +123,7 @@ public class UploadDialog extends AbstractFormDialog<String> {
 				return null;
 			}
 		}));
-		uploadField.add(AttributeAppender.append("accept", StoredFile.getAcceptAttr()));
+		uploadField.add(AttributeModifier.append("accept", StoredFile.getAcceptAttr()));
 		Form<String> nameForm = new Form<>("name-form");
 		fileName = new HiddenField<>("name", Model.of(""));
 		fileName.add(new AjaxFormSubmitBehavior(nameForm, "change") {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/ClientIcon.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/ClientIcon.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/ClientIcon.java
index bddda75..8a6af36 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/ClientIcon.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/ClientIcon.java
@@ -20,7 +20,7 @@ package org.apache.openmeetings.web.room.sidebar.icon;
 
 import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.web.room.RoomPanel;
-import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 
@@ -71,13 +71,13 @@ public abstract class ClientIcon extends WebMarkupContainer {
 		if (isClickable()) {
 			//request/remove
 			cls.append(CLS_CLICKABLE);
-			add(AttributeAppender.replace("onclick", getScript()));
+			add(AttributeModifier.replace("onclick", getScript()));
 		} else {
-			add(AttributeAppender.replace("onclick", ""));
+			add(AttributeModifier.replace("onclick", ""));
 		}
 		internalUpdate();
-		add(AttributeAppender.replace("title", getTitle()));
-		add(AttributeAppender.replace("class", cls.append(cssClass)));
+		add(AttributeModifier.replace("title", getTitle()));
+		add(AttributeModifier.replace("class", cls.append(cssClass)));
 		if (handler != null) {
 			handler.add(this);
 		}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
index 2a62170..bc68354 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
@@ -61,7 +61,6 @@ import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
 import org.apache.wicket.ajax.attributes.AjaxRequestAttributes.EventPropagation;
 import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
-import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
@@ -150,17 +149,17 @@ public class MessagesContactsPanel extends UserPanel {
 	private WebMarkupContainer selectedFolder;
 
 	private void setDefaultFolderClass() {
-		inbox.add(AttributeAppender.replace("class", "email inbox clickable"));
-		sent.add(AttributeAppender.replace("class", "email sent clickable"));
-		trash.add(AttributeAppender.replace("class", "email trash clickable"));
+		inbox.add(AttributeModifier.replace("class", "email inbox clickable"));
+		sent.add(AttributeModifier.replace("class", "email sent clickable"));
+		trash.add(AttributeModifier.replace("class", "email trash clickable"));
 	}
 
 	private static void selectFolder(WebMarkupContainer folder) {
-		folder.add(AttributeAppender.append("class", "ui-widget-header ui-corner-all"));
+		folder.add(AttributeModifier.append("class", "ui-widget-header ui-corner-all"));
 	}
 
 	private void setFolderClass(ListItem<PrivateMessageFolder> folder) {
-		folder.add(AttributeAppender.replace("class", "email folder clickable"));
+		folder.add(AttributeModifier.replace("class", "email folder clickable"));
 		if (folder.getModelObject().getId().equals(selectedFolderModel.getObject())) {
 			selectFolder(folder);
 		}
@@ -578,8 +577,8 @@ public class MessagesContactsPanel extends UserPanel {
 						updateContacts(target);
 					}
 				}).setVisible(uc.isPending()));
-				item.add(new WebMarkupContainer("view").add(AttributeAppender.append("onclick", String.format("showUserInfo(%s);", userId))));
-				item.add(new WebMarkupContainer("message").add(AttributeAppender.append("onclick", String.format("privateMessage(%s);", userId))).setVisible(!uc.isPending()));
+				item.add(new WebMarkupContainer("view").add(AttributeModifier.append("onclick", String.format("showUserInfo(%s);", userId))));
+				item.add(new WebMarkupContainer("message").add(AttributeModifier.append("onclick", String.format("privateMessage(%s);", userId))).setVisible(!uc.isPending()));
 				item.add(new ConfirmableAjaxBorder("delete", getString("80"), getString("833")) {
 					private static final long serialVersionUID = 1L;
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
index 2d3f3fe..02be695 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
@@ -35,7 +35,6 @@ import org.apache.openmeetings.web.common.PagingNavigatorPanel;
 import org.apache.openmeetings.web.common.UserPanel;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
@@ -125,11 +124,11 @@ public class UserSearchPanel extends UserPanel {
 				item.add(new Label("tz", getBean(TimezoneUtil.class).getTimeZone(u).getID()));
 				item.add(new Label("offer", u.getUserOffers()));
 				item.add(new Label("search", u.getUserSearchs()));
-				item.add(new WebMarkupContainer("view").add(AttributeAppender.append("onclick", String.format("showUserInfo(%s);", userId))));
+				item.add(new WebMarkupContainer("view").add(AttributeModifier.append("onclick", String.format("showUserInfo(%s);", userId))));
 				item.add(new WebMarkupContainer("add").setVisible(userId != getUserId() && !contactsDao.isContact(userId, getUserId()))
-						.add(AttributeAppender.append("onclick", String.format("addContact(%s);", userId))));
-				item.add(new WebMarkupContainer("message").setVisible(userId != getUserId()).add(AttributeAppender.append("onclick", String.format("privateMessage(%s);", userId))));
-				item.add(new WebMarkupContainer("invite").setVisible(userId != getUserId()).add(AttributeAppender.append("onclick", String.format("inviteUser(%s);", userId))));
+						.add(AttributeModifier.append("onclick", String.format("addContact(%s);", userId))));
+				item.add(new WebMarkupContainer("message").setVisible(userId != getUserId()).add(AttributeModifier.append("onclick", String.format("privateMessage(%s);", userId))));
+				item.add(new WebMarkupContainer("invite").setVisible(userId != getUserId()).add(AttributeModifier.append("onclick", String.format("inviteUser(%s);", userId))));
 				//item.add(new TooltipBehavior(new Options("content", "TODO:: Picture will be displayed"))); //FIXME
 			}
 		};

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestSendIcalMessage.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestSendIcalMessage.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestSendIcalMessage.java
index a319ecf..91b1827 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestSendIcalMessage.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestSendIcalMessage.java
@@ -182,7 +182,7 @@ public class TestSendIcalMessage extends AbstractJUnitDefaults {
 			// Create ICal Message
 			String meetingId = handler.addNewMeeting(start.getTime(), end.getTime(), "test event",
 					atts, "localhost:5080/link_openmeetings",
-					organizerAttendee, "", TimeZone.getDefault().getID());
+					organizerAttendee, "", java.util.TimeZone.getDefault().getID());
 
 			log.debug("meetingId " + meetingId);
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/openmeetings-webservice/pom.xml
----------------------------------------------------------------------
diff --git a/openmeetings-webservice/pom.xml b/openmeetings-webservice/pom.xml
index a0c383b..2588c67 100644
--- a/openmeetings-webservice/pom.xml
+++ b/openmeetings-webservice/pom.xml
@@ -22,7 +22,7 @@
 	<parent>
 		<groupId>org.apache.openmeetings</groupId>
 		<artifactId>openmeetings-parent</artifactId>
-		<version>3.2.1-SNAPSHOT</version>
+		<version>3.2.2-SNAPSHOT</version>
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-webservice</artifactId>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/52791442/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index a993c9a..701586f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,7 +26,7 @@
 	</parent>
 	<groupId>org.apache.openmeetings</groupId>
 	<artifactId>openmeetings-parent</artifactId>
-	<version>3.2.1-SNAPSHOT</version>
+	<version>3.2.2-SNAPSHOT</version>
 	<packaging>pom</packaging>
 	<name>Openmeetings</name>
 	<description>Parent project for all OpenMeetings Maven modules. Required to hold general settings</description>
@@ -442,14 +442,10 @@
 	</mailingLists>
 	<repositories>
 		<repository>
-			<releases><enabled>false</enabled></releases>
-			<snapshots><enabled>true</enabled></snapshots>
 			<id>apache-snapshots</id>
 			<url>https://repository.apache.org/content/groups/snapshots</url>
-		</repository>
-		<repository>
-			<id>openmeetings-bintray</id>
-			<url>https://dl.bintray.com/openmeetings/maven</url>
+			<releases><enabled>false</enabled></releases>
+			<snapshots><enabled>true</enabled></snapshots>
 		</repository>
 		<repository>
 			<id>sonatype-snapshots</id>
@@ -458,6 +454,12 @@
 			<releases><enabled>false</enabled></releases>
 			<snapshots><enabled>true</enabled></snapshots>
 		</repository>
+		<repository>
+			<id>openmeetings-bintray</id>
+			<url>https://dl.bintray.com/openmeetings/maven</url>
+			<releases><enabled>true</enabled></releases>
+			<snapshots><enabled>false</enabled></snapshots>
+		</repository>
 	</repositories>
 	<pluginRepositories>
 		<pluginRepository>


[44/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1631] polls seems to be fixed

Posted by so...@apache.org.
[OPENMEETINGS-1631] polls seems to be fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/87fed748
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/87fed748
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/87fed748

Branch: refs/heads/3.2.x
Commit: 87fed7489507bf787d45c200f4e9da802a77463d
Parents: 7ea97eb
Author: Maxim Solodovnik <so...@apache.org>
Authored: Wed Apr 19 03:29:00 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Wed Apr 19 03:29:00 2017 +0000

----------------------------------------------------------------------
 .../org/apache/openmeetings/web/room/menu/RoomMenuPanel.java | 2 ++
 .../apache/openmeetings/web/room/poll/PollResultsDialog.java | 8 ++------
 .../org/apache/openmeetings/web/room/poll/VoteDialog.java    | 3 +++
 3 files changed, 7 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/87fed748/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
index 86fa8f0..37d7115 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
@@ -325,6 +325,8 @@ public class RoomMenuPanel extends Panel {
 		RoomPoll rp = getBean(PollDao.class).getByRoom(room.getRoom().getId());
 		if (rp != null) {
 			vote.updateModel(handler, rp);
+		} else {
+			vote.close(handler, null);
 		}
 		if (createdBy != null && !getUserId().equals(createdBy)) {
 			vote.open(handler);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/87fed748/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
index 866b6b6..3f3b210 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
@@ -101,8 +101,8 @@ public class PollResultsDialog extends AbstractDialog<RoomPoll> {
 
 					RoomPoll p = getBean(PollDao.class).get(id);
 					selForm.select.setModelObject(p);
-					dispForm.updateModel(p, false, handler);
-					//TODO result dialogs of other users should also be updated
+					dispForm.updateModel(p, true, handler);
+					sendRoom(new RoomMessage(roomId, getUserId(), RoomMessage.Type.pollUpdated));
 				}
 			}
 		});
@@ -278,10 +278,6 @@ public class PollResultsDialog extends AbstractDialog<RoomPoll> {
 		ChartConfiguration<Long> cfg = barChart.getChartConfiguration();
 		cfg.setLegend(null).setHighlighter(h);
 		cfg.axesInstance().setXaxis(null);
-		/*
-		 * cfg.axesInstance().xAxisInstance().setRenderer(JqPlotResources.
-		 * AxisTickRenderer);
-		 */
 		cfg.axesInstance().yAxisInstance().setTicks(ticks).setRenderer(JqPlotResources.CategoryAxisRenderer);
 		return barChart;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/87fed748/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java
index 4b7ad40..f3d350e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/VoteDialog.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.web.room.poll;
 
+import static org.apache.openmeetings.core.util.WebSocketHelper.sendRoom;
 import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
@@ -30,6 +31,7 @@ import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.room.RoomPoll;
 import org.apache.openmeetings.db.entity.room.RoomPollAnswer;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.util.message.RoomMessage;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
@@ -121,6 +123,7 @@ public class VoteDialog extends AbstractFormDialog<RoomPollAnswer> {
 		a.setVoteDate(new Date());
 		a.getRoomPoll().getAnswers().add(a);
 		getBean(PollDao.class).update(a.getRoomPoll());
+		sendRoom(new RoomMessage(a.getRoomPoll().getRoom().getId(), getUserId(), RoomMessage.Type.pollUpdated));
 	}
 
 	@Override


[32/50] [abbrv] openmeetings git commit: add dbezhetskov as developer

Posted by so...@apache.org.
add dbezhetskov as developer


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/79282146
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/79282146
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/79282146

Branch: refs/heads/3.2.x
Commit: 792821467d39ea684cd52d48b9d3606ce9ae051d
Parents: a20fa35
Author: Dmitry Bezhetskov <db...@apache.org>
Authored: Sat Apr 1 03:41:36 2017 +0000
Committer: Dmitry Bezhetskov <db...@apache.org>
Committed: Sat Apr 1 03:41:36 2017 +0000

----------------------------------------------------------------------
 pom.xml | 8 ++++++++
 1 file changed, 8 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/79282146/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index f0f16ef..1a5a261 100644
--- a/pom.xml
+++ b/pom.xml
@@ -340,6 +340,14 @@
 			</roles>
 		</developer>
 		<developer>
+			<name>Dmitry Bezhetskov</name>
+			<organization>Unipro</organization>
+			<organizationUrl>http://unipro.ru</organizationUrl>
+			<roles>
+				<role>developer</role>
+			</roles>
+		</developer>
+		<developer>
 			<id>albus</id>
 			<name>Alvaro Bustos</name>
 			<email>zurcamos@gmail.com</email>


[41/50] [abbrv] openmeetings git commit: [OPENMEETINGS-551] merged changes to 3.2.x

Posted by so...@apache.org.
[OPENMEETINGS-551] merged changes to 3.2.x


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/97f7b9a3
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/97f7b9a3
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/97f7b9a3

Branch: refs/heads/3.2.x
Commit: 97f7b9a3695c650d6ea05af7e07c2ecc5bc8138a
Parents: b40d794
Author: Maxim Solodovnik <so...@apache.org>
Authored: Sat Apr 8 11:02:23 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Sat Apr 8 11:02:23 2017 +0000

----------------------------------------------------------------------
 .../core/converter/BaseConverter.java           |  5 ++-
 .../core/converter/GenerateSWF.java             | 20 ++++-----
 .../openmeetings/web/common/NameDialog.java     |  2 +-
 .../web/common/tree/FileTreePanel.java          |  4 +-
 .../web/pages/InvitationPasswordDialog.java     |  6 +--
 .../web/pages/auth/ForgetPasswordDialog.java    | 13 +-----
 .../web/pages/auth/KickMessageDialog.java       |  5 +--
 .../web/pages/auth/RegisterDialog.java          | 25 ++---------
 .../web/pages/auth/ResetPasswordDialog.java     | 19 ++------
 .../web/pages/auth/SignInDialog.java            |  6 +--
 .../web/pages/install/InstallWizard.java        | 20 ++++-----
 .../openmeetings/web/room/NicknameDialog.java   |  6 +--
 .../web/room/RedirectMessageDialog.java         | 25 +++++------
 .../web/room/RoomFileResourceReference.java     |  3 +-
 .../web/room/RoomPdfResourceReference.java      |  3 +-
 .../web/room/RoomResourceReference.java         |  2 +-
 .../web/room/sidebar/icon/SettingsIcon.java     |  2 +-
 .../web/user/calendar/AppointmentDialog.java    |  2 +-
 .../record/JpgRecordingResourceReference.java   |  3 +-
 .../record/Mp4RecordingResourceReference.java   |  3 +-
 .../web/util/FileItemResourceReference.java     | 10 ++---
 .../web/util/NonClosableDialog.java             | 39 +++++++++++++++++
 .../web/util/NonClosableMessageDialog.java      | 46 ++++++++++++++++++++
 23 files changed, 154 insertions(+), 115 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
index 7d72bf8..4d66de3 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/BaseConverter.java
@@ -55,6 +55,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 public abstract class BaseConverter {
 	private static final Logger log = Red5LoggerFactory.getLogger(BaseConverter.class, webAppRootKey);
 	private static final Pattern p = Pattern.compile("\\d{2,5}(x)\\d{2,5}");
+	public final static String EXEC_EXT = System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") < 0 ? "" : ".exe";
 
 	@Autowired
 	private ConfigurationDao configurationDao;
@@ -91,11 +92,11 @@ public abstract class BaseConverter {
 	}
 
 	protected String getPathToConvert() {
-		return getPath(CONFIG_IMAGEMAGIC_PATH, "convert") + GenerateSWF.execExt;
+		return getPath(CONFIG_IMAGEMAGIC_PATH, "convert") + EXEC_EXT;
 	}
 
 	protected String getPathToIdentify() {
-		return getPath(CONFIG_IMAGEMAGIC_PATH, "identify") + GenerateSWF.execExt;
+		return getPath(CONFIG_IMAGEMAGIC_PATH, "identify") + EXEC_EXT;
 	}
 
 	protected File getStreamFolder(Recording recording) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateSWF.java
----------------------------------------------------------------------
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateSWF.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateSWF.java
index eecacad..b0f6d6d 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateSWF.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/GenerateSWF.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.core.converter;
 
+import static org.apache.openmeetings.core.converter.BaseConverter.EXEC_EXT;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
 import java.io.File;
@@ -33,16 +34,11 @@ import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 
 public class GenerateSWF {
-
 	public static final Logger log = Red5LoggerFactory.getLogger(GenerateSWF.class, webAppRootKey);
 
 	@Autowired
 	private ConfigurationDao configurationDao;
 
-	public final static boolean isPosix = System.getProperty("os.name").toUpperCase().indexOf("WINDOWS") == -1;
-
-	public final static String execExt = isPosix ? "" : ".exe";
-
 	private String getPathToSwfTools() {
 		String pathToSWFTools = configurationDao.getConfValue("swftools_path", String.class, "");
 		// If SWFTools Path is not blank a File.separator at the end of the path
@@ -72,16 +68,16 @@ public class GenerateSWF {
 	}
 
 	public ConverterProcessResult generateSwf(File in, File out) throws IOException {
-		
+
 		// Create the Content of the Converter Script (.bat or .sh File)
 		String[] argv = new String[] {
-				getPathToSwfTools() + "pdf2swf" + execExt, "-s",
+				getPathToSwfTools() + "pdf2swf" + EXEC_EXT, "-s",
 				"insertstop", // insert Stop command into every frame
 				"-s","poly2bitmap", //http://www.swftools.org/gfx_tutorial.html#Rendering_pages_to_SWF_files
 				"--flashversion=9", //option to generate as3 compatible files
 				"-i", // change draw order to reduce pdf complexity
-				"-j", "" + getSwfJpegQuality(), // JPEG Quality 
-				"-s", "zoom=" + getSwfZoom(), // set zoom dpi 
+				"-j", "" + getSwfJpegQuality(), // JPEG Quality
+				"-s", "zoom=" + getSwfZoom(), // set zoom dpi
 				in.getCanonicalPath(),
 				out.getCanonicalPath() };
 
@@ -93,7 +89,7 @@ public class GenerateSWF {
 	 */
 	public ConverterProcessResult generateSwfByImages(List<String> images, String outputfile, int fps) {
 		List<String> argvList = Arrays.asList(new String[] {
-				getPathToSwfTools() + "png2swf" + execExt, "-s", 
+				getPathToSwfTools() + "png2swf" + EXEC_EXT, "-s",
 				"insertstop", // Insert Stop command into every frame
 				"-o", outputfile, "-r", Integer.toString(fps), "-z" });
 
@@ -106,7 +102,7 @@ public class GenerateSWF {
 	 */
 	public ConverterProcessResult generateSWFByCombine(List<String> swfs, String outputswf, int fps) {
 		List<String> argvList = Arrays.asList(new String[] {
-				getPathToSwfTools() + "swfcombine" + execExt, "-s",
+				getPathToSwfTools() + "swfcombine" + EXEC_EXT, "-s",
 				"insertstop", // Insert Stop command into every frame
 				"-o", outputswf, "-r", Integer.toString(fps), "-z", "-a" });
 
@@ -117,7 +113,7 @@ public class GenerateSWF {
 	public ConverterProcessResult generateSWFByFFMpeg(String inputWildCard,
 			String outputswf, int fps, int width, int height) {
 		// FIXME: ffmpeg should be on the system path
-		String[] argv = new String[] { "ffmpeg" + execExt, "-r",
+		String[] argv = new String[] { "ffmpeg" + EXEC_EXT, "-r",
 				Integer.toString(fps), "-i", inputWildCard, "-s",
 				width + "x" + height, "-b", "750k", "-ar", "44100", "-y",
 				outputswf };

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/NameDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/NameDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/NameDialog.java
index ab4c811..5a7992d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/NameDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/NameDialog.java
@@ -40,7 +40,7 @@ public abstract class NameDialog extends AbstractFormDialog<String> {
 	private final DialogButton add;
 	private final DialogButton cancel = new DialogButton("cancel", Application.getString(219));
 	private final Form<String> form;
-	private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
+	protected final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
 	private final String name;
 	private RequiredTextField<String> title;
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
index dff9122..37552d2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
@@ -38,9 +38,9 @@ import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 import org.apache.openmeetings.db.entity.file.FileItem;
 import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.db.entity.record.Recording;
-import org.apache.openmeetings.web.common.NameDialog;
 import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
 import org.apache.openmeetings.web.common.ConfirmableAjaxBorder.ConfirmableBorderDialog;
+import org.apache.openmeetings.web.common.NameDialog;
 import org.apache.openmeetings.web.util.AjaxDownload;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
@@ -149,7 +149,7 @@ public abstract class FileTreePanel extends Panel {
 								String statement = "var $drop = $(this);";
 								statement += "$('body').append('<div id=" + dialogId + ">" + getString("713") + "</div>');";
 								statement += "$( '#" + dialogId
-										+ "' ).dialog({ title: '" + escapeEcmaScript(getString("80")) + "', dialogClass: 'no-close', buttons: [";
+										+ "' ).dialog({ title: '" + escapeEcmaScript(getString("80")) + "', classes: {'ui-dialog-titlebar': 'ui-corner-all no-close'}, buttons: [";
 								statement += "	{ text: '" + escapeEcmaScript(getString("54")) + "', click: function() { $drop.append(ui.draggable); $(this).dialog('close'); " + super.getCallbackFunctionBody(parameters) + " } },";
 								statement += "	{ text: '" + escapeEcmaScript(getString("25")) + "', click: function() { $(this).dialog('close'); } } ";
 								statement += "],";

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.java
index ef994a0..2dddfbb 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.java
@@ -26,6 +26,7 @@ import org.apache.openmeetings.util.crypt.CryptProvider;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.IUpdatable;
+import org.apache.openmeetings.web.util.NonClosableDialog;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxButton;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
@@ -38,11 +39,10 @@ import org.apache.wicket.validation.ValidationError;
 
 import com.googlecode.wicket.jquery.core.JQueryBehavior;
 import com.googlecode.wicket.jquery.core.Options;
-import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
 import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
 
-public class InvitationPasswordDialog extends AbstractFormDialog<Invitation> {
+public class InvitationPasswordDialog extends NonClosableDialog<Invitation> {
 	private static final long serialVersionUID = 1L;
 	private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
 	private final DialogButton check = new DialogButton("check", Application.getString(537));
@@ -87,8 +87,6 @@ public class InvitationPasswordDialog extends AbstractFormDialog<Invitation> {
 		super.onConfigure(behavior);
 		Invitation i = WebSession.get().getInvitation();
 		behavior.setOption("autoOpen", i != null && i.isPasswordProtected());
-		behavior.setOption("closeOnEscape", false);
-		behavior.setOption("dialogClass", Options.asString("no-close"));
 		behavior.setOption("resizable", false);
 	}
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
index e89f9f7..0767e03 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
@@ -32,6 +32,7 @@ import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.service.mail.template.ResetPasswordTemplate;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.pages.ResetPage;
+import org.apache.openmeetings.web.util.NonClosableMessageDialog;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormChoiceComponentUpdatingBehavior;
 import org.apache.wicket.ajax.markup.html.form.AjaxButton;
@@ -48,12 +49,9 @@ import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
-import com.googlecode.wicket.jquery.core.JQueryBehavior;
 import com.googlecode.wicket.jquery.core.Options;
 import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
 import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
 import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
 
@@ -136,17 +134,10 @@ public class ForgetPasswordDialog extends AbstractFormDialog<String> {
 				super.onDetach();
 			}
 		});
-		confirmDialog = new MessageDialog("confirmDialog", Application.getString(312), Application.getString(321), DialogButtons.OK, DialogIcon.INFO){
+		confirmDialog = new NonClosableMessageDialog("confirmDialog", Application.getString(312), Application.getString(321)){
 			private static final long serialVersionUID = 1L;
 
 			@Override
-			public void onConfigure(JQueryBehavior behavior) {
-				super.onConfigure(behavior);
-				behavior.setOption("dialogClass", Options.asString("no-close"));
-				behavior.setOption("closeOnEscape", false);
-			}
-
-			@Override
 			public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
 				s.open(handler);
 			}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java
index 0bea145..b2f489f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java
@@ -24,7 +24,6 @@ import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.html.basic.Label;
 
 import com.googlecode.wicket.jquery.core.JQueryBehavior;
-import com.googlecode.wicket.jquery.core.Options;
 import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractDialog;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
 
@@ -40,13 +39,13 @@ public class KickMessageDialog extends AbstractDialog<String> {
 		super.onInitialize();
 		add(new Label("message", getString("606")));
 	};
-	
+
 	@Override
 	public void onConfigure(JQueryBehavior behavior) {
 		super.onConfigure(behavior);
 		behavior.setOption("autoOpen", true);
 		behavior.setOption("closeOnEscape", false);
-		behavior.setOption("dialogClass", Options.asString("no-close"));
+		behavior.setOption("classes", "{'ui-dialog-titlebar': 'ui-corner-all no-close'}");
 		behavior.setOption("resizable", false);
 	}
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
index 9306db1..b2fc869 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
@@ -39,6 +39,8 @@ import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.LanguageDropDown;
 import org.apache.openmeetings.web.util.CountryDropDown;
+import org.apache.openmeetings.web.util.NonClosableDialog;
+import org.apache.openmeetings.web.util.NonClosableMessageDialog;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxButton;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
@@ -55,16 +57,12 @@ import org.apache.wicket.util.string.Strings;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
-import com.googlecode.wicket.jquery.core.JQueryBehavior;
 import com.googlecode.wicket.jquery.core.Options;
-import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
 import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
 import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
 
-public class RegisterDialog extends AbstractFormDialog<String> {
+public class RegisterDialog extends NonClosableDialog<String> {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = Red5LoggerFactory.getLogger(RegisterDialog.class, webAppRootKey);
 	private DialogButton cancelBtn = new DialogButton("cancel", Application.getString(122));
@@ -92,18 +90,10 @@ public class RegisterDialog extends AbstractFormDialog<String> {
 		form.setOutputMarkupId(true);
 		tzDropDown.setOutputMarkupId(true);
 
-		confirmRegistration = new MessageDialog("confirmRegistration", Application.getString(235),
-				Application.getString(674), DialogButtons.OK, DialogIcon.INFO) {
+		confirmRegistration = new NonClosableMessageDialog("confirmRegistration", Application.getString(235), Application.getString(674)) {
 			private static final long serialVersionUID = 1L;
 
 			@Override
-			public void onConfigure(JQueryBehavior behavior) {
-				super.onConfigure(behavior);
-				behavior.setOption("dialogClass", Options.asString("no-close"));
-				behavior.setOption("closeOnEscape", false);
-			}
-
-			@Override
 			public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
 				s.open(handler);
 			}
@@ -112,13 +102,6 @@ public class RegisterDialog extends AbstractFormDialog<String> {
 		reset();
 	}
 
-	@Override
-	public void onConfigure(JQueryBehavior behavior) {
-		super.onConfigure(behavior);
-		behavior.setOption("dialogClass", Options.asString("no-close"));
-		behavior.setOption("closeOnEscape", false);
-	}
-
 	public void setSignInDialog(SignInDialog s) {
 		this.s = s;
 	}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
index e0fefec..8346aa1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
@@ -29,6 +29,8 @@ import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.util.NonClosableDialog;
+import org.apache.openmeetings.web.util.NonClosableMessageDialog;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxButton;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
@@ -39,14 +41,11 @@ import org.apache.wicket.model.Model;
 
 import com.googlecode.wicket.jquery.core.JQueryBehavior;
 import com.googlecode.wicket.jquery.core.Options;
-import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
-import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
 import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
 import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
 
-public class ResetPasswordDialog extends AbstractFormDialog<String> {
+public class ResetPasswordDialog extends NonClosableDialog<String> {
 	private static final long serialVersionUID = 1L;
 	private DialogButton resetBtn = new DialogButton("reset", Application.getString(327));
 	private Form<String> form;
@@ -101,18 +100,10 @@ public class ResetPasswordDialog extends AbstractFormDialog<String> {
 			}
 
 		});
-		confirmReset = new MessageDialog("confirmReset", Application.getString(325), Application.getString(332),
-				DialogButtons.OK, DialogIcon.INFO) {
+		confirmReset = new NonClosableMessageDialog("confirmReset", Application.getString(325), Application.getString(332)) {
 			private static final long serialVersionUID = 1L;
 
 			@Override
-			public void onConfigure(JQueryBehavior behavior) {
-				super.onConfigure(behavior);
-				behavior.setOption("dialogClass", Options.asString("no-close"));
-				behavior.setOption("closeOnEscape", false);
-			}
-
-			@Override
 			public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
 				setResponsePage(Application.get().getSignInPageClass());
 			}
@@ -124,8 +115,6 @@ public class ResetPasswordDialog extends AbstractFormDialog<String> {
 	public void onConfigure(JQueryBehavior behavior) {
 		super.onConfigure(behavior);
 		behavior.setOption("autoOpen", true);
-		behavior.setOption("dialogClass", Options.asString("no-close"));
-		behavior.setOption("closeOnEscape", false);
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
index 186a72b..4349a8f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
@@ -42,6 +42,7 @@ import org.apache.openmeetings.web.app.OmAuthenticationStrategy;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.OmAjaxClientInfoBehavior;
 import org.apache.openmeetings.web.pages.HashPage;
+import org.apache.openmeetings.web.util.NonClosableDialog;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.RestartResponseException;
 import org.apache.wicket.ajax.AjaxEventBehavior;
@@ -72,11 +73,10 @@ import com.googlecode.wicket.jquery.core.JQueryBehavior;
 import com.googlecode.wicket.jquery.core.Options;
 import com.googlecode.wicket.jquery.ui.effect.JQueryEffectBehavior;
 import com.googlecode.wicket.jquery.ui.form.button.Button;
-import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
 import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
 
-public class SignInDialog extends AbstractFormDialog<String> {
+public class SignInDialog extends NonClosableDialog<String> {
 	private static final long serialVersionUID = 1L;
 	private Form<String> form;
 	private DialogButton loginBtn = new DialogButton("login", Application.getString(112));
@@ -107,8 +107,6 @@ public class SignInDialog extends AbstractFormDialog<String> {
 	public void onConfigure(JQueryBehavior behavior) {
 		super.onConfigure(behavior);
 		behavior.setOption("autoOpen", true);
-		behavior.setOption("closeOnEscape", false);
-		behavior.setOption("dialogClass", Options.asString("no-close"));
 		behavior.setOption("resizable", false);
 	}
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
index f9196ae..fc006ba 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.web.pages.install;
 
+import static org.apache.openmeetings.core.converter.BaseConverter.EXEC_EXT;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_LOGIN_MINIMUM_LENGTH;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_PASSWORD_MINIMUM_LENGTH;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
@@ -40,7 +41,6 @@ import java.util.Locale;
 import java.util.Map;
 
 import org.apache.openmeetings.cli.ConnectionPropertiesPatcher;
-import org.apache.openmeetings.core.converter.GenerateSWF;
 import org.apache.openmeetings.db.dao.label.LabelDao;
 import org.apache.openmeetings.installation.ImportInitvalues;
 import org.apache.openmeetings.installation.InstallationConfig;
@@ -135,7 +135,7 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> {
 	public void onConfigure(JQueryBehavior behavior) {
 		super.onConfigure(behavior);
 		behavior.setOption("closeOnEscape", false);
-		behavior.setOption("dialogClass", Options.asString("no-close"));
+		behavior.setOption("classes", "{'ui-dialog-titlebar': 'ui-corner-all no-close'}");
 		behavior.setOption("resizable", false);
 	}
 
@@ -505,7 +505,7 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> {
 				private static final long serialVersionUID = 1L;
 				@Override
 				protected void onSubmit(AjaxRequestTarget target) {
-					checkToolPath(swfPath, new String[] {InstallWizard.getPath(swfPath.getValue(), "pdf2swf" + GenerateSWF.execExt), "--version"});
+					checkToolPath(swfPath, new String[] {InstallWizard.getPath(swfPath.getValue(), "pdf2swf" + EXEC_EXT), "--version"});
 					target.add(getFeedbackPanel());
 				}
 			});
@@ -514,7 +514,7 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> {
 				private static final long serialVersionUID = 1L;
 				@Override
 				protected void onSubmit(AjaxRequestTarget target) {
-					checkToolPath(imageMagicPath, new String[] {InstallWizard.getPath(imageMagicPath.getValue(), "convert" + GenerateSWF.execExt), "-version"});
+					checkToolPath(imageMagicPath, new String[] {InstallWizard.getPath(imageMagicPath.getValue(), "convert" + EXEC_EXT), "-version"});
 					target.add(getFeedbackPanel());
 				}
 			});
@@ -523,7 +523,7 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> {
 				private static final long serialVersionUID = 1L;
 				@Override
 				protected void onSubmit(AjaxRequestTarget target) {
-					checkToolPath(ffmpegPath, new String[] {InstallWizard.getPath(ffmpegPath.getValue(), "ffmpeg" + GenerateSWF.execExt), "-version"});
+					checkToolPath(ffmpegPath, new String[] {InstallWizard.getPath(ffmpegPath.getValue(), "ffmpeg" + EXEC_EXT), "-version"});
 					target.add(getFeedbackPanel());
 				}
 			});
@@ -532,7 +532,7 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> {
 				private static final long serialVersionUID = 1L;
 				@Override
 				protected void onSubmit(AjaxRequestTarget target) {
-					checkToolPath(soxPath, new String[] {InstallWizard.getPath(soxPath.getValue(), "sox" + GenerateSWF.execExt), "--version"});
+					checkToolPath(soxPath, new String[] {InstallWizard.getPath(soxPath.getValue(), "sox" + EXEC_EXT), "--version"});
 					target.add(getFeedbackPanel());
 				}
 			});
@@ -580,10 +580,10 @@ public class InstallWizard extends AbstractWizard<InstallationConfig> {
 		}
 
 		private boolean checkAllPath() {
-			boolean result = checkToolPath(swfPath, new String[] {InstallWizard.getPath(swfPath.getValue(), "pdf2swf" + GenerateSWF.execExt), "--version"});
-			result = checkToolPath(imageMagicPath, new String[] {InstallWizard.getPath(imageMagicPath.getValue(), "convert" + GenerateSWF.execExt), "-version"}) && result;
-			result = checkToolPath(ffmpegPath, new String[] {InstallWizard.getPath(ffmpegPath.getValue(), "ffmpeg" + GenerateSWF.execExt), "-version"}) && result;
-			result = checkToolPath(soxPath, new String[] {InstallWizard.getPath(soxPath.getValue(), "sox" + GenerateSWF.execExt), "--version"}) && result;
+			boolean result = checkToolPath(swfPath, new String[] {InstallWizard.getPath(swfPath.getValue(), "pdf2swf" + EXEC_EXT), "--version"});
+			result = checkToolPath(imageMagicPath, new String[] {InstallWizard.getPath(imageMagicPath.getValue(), "convert" + EXEC_EXT), "-version"}) && result;
+			result = checkToolPath(ffmpegPath, new String[] {InstallWizard.getPath(ffmpegPath.getValue(), "ffmpeg" + EXEC_EXT), "-version"}) && result;
+			result = checkToolPath(soxPath, new String[] {InstallWizard.getPath(soxPath.getValue(), "sox" + EXEC_EXT), "--version"}) && result;
 			result = checkOfficePath() && result;
 			isAllChecked = true;
 			return result;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NicknameDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NicknameDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NicknameDialog.java
index 094e38b..76879e5 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NicknameDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/NicknameDialog.java
@@ -27,6 +27,7 @@ import java.util.List;
 import org.apache.commons.lang3.time.FastDateFormat;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.util.NonClosableDialog;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
 import org.apache.wicket.markup.html.form.Form;
@@ -37,11 +38,10 @@ import org.apache.wicket.util.string.Strings;
 
 import com.googlecode.wicket.jquery.core.JQueryBehavior;
 import com.googlecode.wicket.jquery.core.Options;
-import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
 import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
 
-public class NicknameDialog extends AbstractFormDialog<User> {
+public class NicknameDialog extends NonClosableDialog<User> {
 	private static final long serialVersionUID = 1L;
 	private static final FastDateFormat TIME_DF = FastDateFormat.getInstance("HH:mm:ss");
 	private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
@@ -72,8 +72,6 @@ public class NicknameDialog extends AbstractFormDialog<User> {
 	public void onConfigure(JQueryBehavior behavior) {
 		super.onConfigure(behavior);
 		behavior.setOption("autoOpen", isVisible(form.getModelObject()));
-		behavior.setOption("closeOnEscape", false);
-		behavior.setOption("dialogClass", Options.asString("no-close"));
 		behavior.setOption("resizable", false);
 	}
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java
index 9da7695..76bd5c5 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
 
 import org.apache.directory.api.util.Strings;
 import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.util.NonClosableMessageDialog;
 import org.apache.wicket.Component;
 import org.apache.wicket.RestartResponseException;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -30,26 +31,24 @@ import org.apache.wicket.model.IModel;
 import org.apache.wicket.request.flow.RedirectToUrlException;
 
 import com.googlecode.wicket.jquery.core.JQueryBehavior;
-import com.googlecode.wicket.jquery.core.Options;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
 import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
-import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
 
-public class RedirectMessageDialog extends MessageDialog {
+public class RedirectMessageDialog extends NonClosableMessageDialog {
 	private static final long serialVersionUID = 1L;
 	private final String labelId;
 	private final String url;
 	private final int delay = 5;
 	private final boolean autoOpen;
-	private Component label; 
-	
+	private Component label;
+
 	public RedirectMessageDialog(String id, String labelId, boolean autoOpen, String url) {
 		super(id, Application.getString(204), "", new ArrayList<DialogButton>(), DialogIcon.ERROR);
 		this.labelId = labelId;
 		this.url = url;
 		this.autoOpen = autoOpen;
 	}
-	
+
 	@Override
 	protected void onInitialize() {
 		super.onInitialize();
@@ -75,36 +74,34 @@ public class RedirectMessageDialog extends MessageDialog {
 			handler.add(label);
 		}
 	}
-	
+
 	@Override
 	protected void onOpen(IPartialPageRequestHandler handler) {
 		super.onOpen(handler);
 		startTimer(handler);
 	}
-	
+
 	@Override
 	public void onConfigure(JQueryBehavior behavior) {
 		super.onConfigure(behavior);
 		behavior.setOption("autoOpen", autoOpen);
-		behavior.setOption("closeOnEscape", false);
-		behavior.setOption("dialogClass", Options.asString("no-close"));
 		behavior.setOption("resizable", false);
 	}
-	
+
 	@Override
 	public boolean isModal() {
 		return true;
 	}
-	
+
 	@Override
 	public boolean isDefaultCloseEventEnabled() {
 		return false;
 	}
-	
+
 	@Override
 	public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
 	}
-	
+
 	@Override
 	protected Component newLabel(String id, IModel<String> model) {
 		label = super.newLabel(id, model);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomFileResourceReference.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomFileResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomFileResourceReference.java
index 91ea518..2d6831f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomFileResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomFileResourceReference.java
@@ -23,6 +23,7 @@ import static org.apache.openmeetings.util.OmFileHelper.getFileExt;
 import java.io.File;
 
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.wicket.request.resource.IResource.Attributes;
 
 public class RoomFileResourceReference extends RoomResourceReference {
 	private static final long serialVersionUID = 1L;
@@ -42,7 +43,7 @@ public class RoomFileResourceReference extends RoomResourceReference {
 	}
 
 	@Override
-	protected File getFile(FileExplorerItem r) {
+	protected File getFile(FileExplorerItem r, Attributes attr) {
 		return getFile(r, getFileExt(r.getName()));
 	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPdfResourceReference.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPdfResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPdfResourceReference.java
index 113c98a..36fba0f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPdfResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPdfResourceReference.java
@@ -21,6 +21,7 @@ package org.apache.openmeetings.web.room;
 import java.io.File;
 
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.wicket.request.resource.IResource.Attributes;
 
 public class RoomPdfResourceReference extends RoomResourceReference {
 	private static final long serialVersionUID = 1L;
@@ -40,7 +41,7 @@ public class RoomPdfResourceReference extends RoomResourceReference {
 	}
 
 	@Override
-	protected File getFile(FileExplorerItem r) {
+	protected File getFile(FileExplorerItem r, Attributes attr) {
 		return getFile(r, "pdf");
 	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
index 1b614d8..4df920d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
@@ -125,7 +125,7 @@ public class RoomResourceReference extends FileItemResourceReference<FileExplore
 	}
 
 	@Override
-	protected File getFile(FileExplorerItem f) {
+	protected File getFile(FileExplorerItem f, Attributes attr) {
 		return getFile(f, Type.Video == f.getType() && preview ? EXTENSION_JPG : null);
 	}
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/SettingsIcon.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/SettingsIcon.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/SettingsIcon.java
index 566dae5..2f0565b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/SettingsIcon.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/SettingsIcon.java
@@ -24,7 +24,7 @@ import org.apache.openmeetings.web.room.RoomPanel;
 
 public class SettingsIcon extends ClientIcon {
 	private static final long serialVersionUID = 1L;
-	
+
 	public SettingsIcon(String id, Client client, RoomPanel room) {
 		super(id, client, room);
 		mainCssClass = "settings ";

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
index bb7e55a..e468e36 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/AppointmentDialog.java
@@ -129,7 +129,7 @@ public class AppointmentDialog extends AbstractFormDialog<Appointment> {
 	@Override
 	public void onConfigure(JQueryBehavior behavior) {
 		super.onConfigure(behavior);
-		behavior.setOption("dialogClass", Options.asString("appointment"));
+		behavior.setOption("classes", "{'ui-dialog': 'ui-corner-all appointment'}");
 	}
 
 	public void setModelObjectWithAjaxTarget(Appointment a, AjaxRequestTarget target) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java
index f854d5b..5eb2acb 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java
@@ -25,6 +25,7 @@ import static org.apache.openmeetings.util.OmFileHelper.recordingFileName;
 import java.io.File;
 
 import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.wicket.request.resource.IResource.Attributes;
 
 public class JpgRecordingResourceReference extends RecordingResourceReference {
 	private static final long serialVersionUID = 1L;
@@ -44,7 +45,7 @@ public class JpgRecordingResourceReference extends RecordingResourceReference {
 	}
 
 	@Override
-	protected File getFile(Recording r) {
+	protected File getFile(Recording r, Attributes attr) {
 		return r.getFile(EXTENSION_JPG);
 	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java
index fa37bf9..3008d81 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java
@@ -25,6 +25,7 @@ import static org.apache.openmeetings.util.OmFileHelper.recordingFileName;
 import java.io.File;
 
 import org.apache.openmeetings.db.entity.record.Recording;
+import org.apache.wicket.request.resource.IResource.Attributes;
 
 public class Mp4RecordingResourceReference extends RecordingResourceReference {
 	private static final long serialVersionUID = 1L;
@@ -44,7 +45,7 @@ public class Mp4RecordingResourceReference extends RecordingResourceReference {
 	}
 
 	@Override
-	protected File getFile(Recording r) {
+	protected File getFile(Recording r, Attributes attr) {
 		return r.getFile();
 	}
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
index c82f55a..d2f5ac0 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
@@ -54,10 +54,10 @@ public abstract class FileItemResourceReference<T extends FileItem> extends File
 			}
 
 			@Override
-			protected ResourceResponse newResourceResponse(Attributes attributes) {
-				r = getFileItem(attributes);
+			protected ResourceResponse newResourceResponse(Attributes attr) {
+				r = getFileItem(attr);
 				if (r != null) {
-					file = getFile(r);
+					file = getFile(r, attr);
 					ResourceResponse rr = createResourceResponse(file.toPath());
 					rr.setFileName(getFileName(r));
 					return rr;
@@ -73,6 +73,6 @@ public abstract class FileItemResourceReference<T extends FileItem> extends File
 
 	protected abstract String getMimeType(T r);
 	protected abstract String getFileName(T r);
-	protected abstract File getFile(T r);
-	protected abstract T getFileItem(Attributes attributes);
+	protected abstract File getFile(T r, Attributes attr);
+	protected abstract T getFileItem(Attributes attr);
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/NonClosableDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/NonClosableDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/NonClosableDialog.java
new file mode 100644
index 0000000..8f8a5ec
--- /dev/null
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/NonClosableDialog.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.util;
+
+import java.io.Serializable;
+
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
+
+public abstract class NonClosableDialog<T extends Serializable> extends AbstractFormDialog<T> {
+	private static final long serialVersionUID = 1L;
+
+	public NonClosableDialog(String id, String title) {
+		super(id, title);
+	}
+
+	@Override
+	public void onConfigure(JQueryBehavior behavior) {
+		super.onConfigure(behavior);
+		behavior.setOption("closeOnEscape", false);
+		behavior.setOption("classes", "{'ui-dialog-titlebar': 'ui-corner-all no-close'}");
+	}
+}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/97f7b9a3/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/NonClosableMessageDialog.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/NonClosableMessageDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/NonClosableMessageDialog.java
new file mode 100644
index 0000000..2778268
--- /dev/null
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/NonClosableMessageDialog.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License") +  you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.util;
+
+import java.util.List;
+
+import com.googlecode.wicket.jquery.core.JQueryBehavior;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButtons;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
+import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;;
+
+public abstract class NonClosableMessageDialog extends MessageDialog {
+	private static final long serialVersionUID = 1L;
+
+	public NonClosableMessageDialog(String id, String title, String message) {
+		super(id, title, message, DialogButtons.OK, DialogIcon.INFO);
+	}
+
+	public NonClosableMessageDialog(String id, String title, String message, List<DialogButton> buttons, DialogIcon icon) {
+		super(id, title, message, buttons, icon);
+	}
+
+	@Override
+	public void onConfigure(JQueryBehavior behavior) {
+		super.onConfigure(behavior);
+		behavior.setOption("classes", "{'ui-dialog-titlebar': 'ui-corner-all no-close'}");
+		behavior.setOption("closeOnEscape", false);
+	}
+}


[27/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1607] 'find user' functionality is added

Posted by so...@apache.org.
[OPENMEETINGS-1607] 'find user' functionality is added


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/d24410c2
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/d24410c2
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/d24410c2

Branch: refs/heads/3.2.x
Commit: d24410c24750ddb9c6baaa09281bfa9c2b1e9cf1
Parents: 3e28df2
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Mar 30 09:21:50 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Mar 30 09:21:50 2017 +0000

----------------------------------------------------------------------
 .../web/app/Application.properties.xml          |   1 +
 .../web/app/Application_ar.properties.xml       |   1 +
 .../web/app/Application_bg.properties.xml       |   1 +
 .../web/app/Application_ca.properties.xml       |   1 +
 .../web/app/Application_cs.properties.xml       |   1 +
 .../web/app/Application_da.properties.xml       |   1 +
 .../web/app/Application_de.properties.xml       |   1 +
 .../web/app/Application_el.properties.xml       |   1 +
 .../web/app/Application_es.properties.xml       |   1 +
 .../web/app/Application_fa.properties.xml       |   1 +
 .../web/app/Application_fi.properties.xml       |   1 +
 .../web/app/Application_fr.properties.xml       |   1 +
 .../web/app/Application_gl.properties.xml       |   1 +
 .../web/app/Application_hu.properties.xml       |   1 +
 .../web/app/Application_id.properties.xml       |   1 +
 .../web/app/Application_it.properties.xml       |   1 +
 .../web/app/Application_ja.properties.xml       |   1 +
 .../web/app/Application_ko.properties.xml       |   1 +
 .../web/app/Application_nl.properties.xml       |   1 +
 .../web/app/Application_pl.properties.xml       |   1 +
 .../web/app/Application_pt.properties.xml       |   1 +
 .../web/app/Application_pt_BR.properties.xml    |   1 +
 .../web/app/Application_ru.properties.xml       |   1 +
 .../web/app/Application_sk.properties.xml       |   1 +
 .../web/app/Application_sv.properties.xml       |   1 +
 .../web/app/Application_th.properties.xml       |   1 +
 .../web/app/Application_tr.properties.xml       |   1 +
 .../web/app/Application_uk.properties.xml       |   1 +
 .../web/app/Application_zh_CN.properties.xml    |   1 +
 .../web/app/Application_zh_TW.properties.xml    |   1 +
 .../apache/openmeetings/web/room/RoomPanel.java |   2 +-
 .../web/room/activities/ActivitiesPanel.html    |   7 +--
 .../web/room/activities/ActivitiesPanel.java    |   7 ++-
 .../web/room/activities/activities.js           |  12 +++++
 .../web/room/menu/RoomMenuPanel.java            |   7 ++-
 .../src/main/webapp/css/activities.css          |  47 -------------------
 .../src/main/webapp/css/images/crosshair.png    | Bin 0 -> 283 bytes
 openmeetings-web/src/main/webapp/css/room.css   |  35 +++++++++++++-
 openmeetings-web/src/main/webapp/css/theme.css  |   4 +-
 39 files changed, 93 insertions(+), 58 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
index 7bc6f18..bb66839 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ar.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ar.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ar.properties.xml
index b7c288a..98b745a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ar.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ar.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bg.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bg.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bg.properties.xml
index 4b3a832..6c8f5f7 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bg.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_bg.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ca.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ca.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ca.properties.xml
index 7c5f522..c3a4397 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ca.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ca.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_cs.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_cs.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_cs.properties.xml
index 97b45d4..6992065 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_cs.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_cs.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_da.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_da.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_da.properties.xml
index f3c94e9..a781513 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_da.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_da.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_de.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_de.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_de.properties.xml
index 1a27940..e295db4 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_de.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_de.properties.xml
@@ -1939,4 +1939,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_el.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_el.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_el.properties.xml
index 9a584ac..cf352af 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_el.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_el.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_es.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_es.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_es.properties.xml
index 9e36b54..c4c44da 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_es.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_es.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fa.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fa.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fa.properties.xml
index 143a88a..e7ae399 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fa.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fa.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fi.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fi.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fi.properties.xml
index d6ed20a..982ccc9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fi.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fi.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fr.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fr.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fr.properties.xml
index 15e2cb4..4cb0941 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fr.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_fr.properties.xml
@@ -1907,4 +1907,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_gl.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_gl.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_gl.properties.xml
index a3a23dd..dc5566e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_gl.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_gl.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hu.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hu.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hu.properties.xml
index ad4df2c..946e5b0 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hu.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_hu.properties.xml
@@ -1902,4 +1902,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_id.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_id.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_id.properties.xml
index fa6a270..108ba7e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_id.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_id.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_it.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_it.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_it.properties.xml
index 6529300..fb6547f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_it.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_it.properties.xml
@@ -1920,4 +1920,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ja.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ja.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ja.properties.xml
index bf18b04..dd6d2bb 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ja.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ja.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ko.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ko.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ko.properties.xml
index 8153210..522c304 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ko.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ko.properties.xml
@@ -1920,4 +1920,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_nl.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_nl.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_nl.properties.xml
index 8a7200b..a700a59 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_nl.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_nl.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pl.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pl.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pl.properties.xml
index 5b1e7f1..3676fc0 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pl.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pl.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt.properties.xml
index 41895a1..2d86b78 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml
index 226709d..1fb79d0 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_pt_BR.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ru.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ru.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ru.properties.xml
index 46a230f..cbd9122 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ru.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_ru.properties.xml
@@ -1919,4 +1919,5 @@
 	<entry key="files.root.group">\u0424\u0430\u0439\u043b\u044b \u0433\u0440\u0443\u043f\u043f\u044b</entry>
 	<entry key="recordings.root.group">\u0417\u0430\u043f\u0438\u0441\u0438 \u0433\u0440\u0443\u043f\u043f\u044b</entry>
 	<entry key="restricted.group.files">\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0433\u0440\u0443\u043f\u043f\u043e\u0432\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d</entry>
+	<entry key="find.user">\u041d\u0430\u0439\u0442\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sk.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sk.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sk.properties.xml
index 7445549..3d19f6c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sk.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sk.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sv.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sv.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sv.properties.xml
index 8d40105..88eb501 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sv.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_sv.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_th.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_th.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_th.properties.xml
index ea36782..50cd0cc 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_th.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_th.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tr.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tr.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tr.properties.xml
index b7c1940..42339f2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tr.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_tr.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_uk.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_uk.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_uk.properties.xml
index 3f6c48d..edbe70c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_uk.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_uk.properties.xml
@@ -1919,4 +1919,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_CN.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_CN.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_CN.properties.xml
index af65d28..73e1352 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_CN.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_CN.properties.xml
@@ -1904,4 +1904,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_TW.properties.xml
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_TW.properties.xml b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_TW.properties.xml
index 13a5598..2acdbe7 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_TW.properties.xml
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application_zh_TW.properties.xml
@@ -1918,4 +1918,5 @@
 	<entry key="files.root.group">Group files</entry>
 	<entry key="recordings.root.group">Group recordings</entry>
 	<entry key="restricted.group.files">Group files are restricted</entry>
+	<entry key="find.user">Find user</entry>
 </properties>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index 861c352..8569aec 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -414,7 +414,7 @@ public class RoomPanel extends BasePanel {
 						break;
 					case haveQuestion:
 						if (getClient().hasRight(Room.Right.moderator) || getUserId().equals(m.getUserId())) {
-							activities.add(new Activity(m, Activity.Type.haveQuestion), handler);
+							activities.add(new Activity((TextRoomMessage)m, Activity.Type.haveQuestion), handler);
 						}
 						break;
 					case kick:

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
index 6845474..b2b31fe 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.html
@@ -7,16 +7,16 @@
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at
-  
+
       http://www.apache.org/licenses/LICENSE-2.0
-  
+
   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
-  
+
 -->
 <html xmlns:wicket="http://wicket.apache.org">
 <wicket:panel>
@@ -28,6 +28,7 @@
 			<span wicket:id="close" class="ui-icon ui-icon-close ui-corner-all align-right clickable" wicket:message="title:85"></span>
 			<span wicket:id="accept" class="ui-icon ui-icon-check ui-corner-all align-right clickable" wicket:message="title:1360"></span>
 			<span wicket:id="decline" class="ui-icon ui-icon-cancel ui-corner-all align-right clickable" wicket:message="title:1361"></span>
+			<span wicket:id="find" class="ui-icon crosshair ui-corner-all align-right clickable" wicket:message="title:find.user"></span>
 			<div wicket:id="text"></div>
 		</div>
 	</div>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
index f15b5a7..fbdd97e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
@@ -158,6 +158,8 @@ public class ActivitiesPanel extends BasePanel {
 			Long roomId = room.getRoom().getId();
 			Component accept = new WebMarkupContainer("accept").add(new AttributeAppender("onclick", String.format("activityAction(%s, '%s', '%s');", roomId, Action.accept.name(), a.getId())));
 			Component decline = new WebMarkupContainer("decline").add(new AttributeAppender("onclick", String.format("activityAction(%s, '%s', '%s');", roomId, Action.decline.name(), a.getId())));
+			Component find = new WebMarkupContainer("find").add(new AttributeAppender("onclick", String.format("Activities.findUser('%s');", a.getUid()))).setVisible(false);
+			boolean self = getUserId().equals(a.getSender());
 			switch (a.getType()) {
 				case reqRightModerator:
 				case reqRightWb:
@@ -171,6 +173,7 @@ public class ActivitiesPanel extends BasePanel {
 					decline.setVisible(room.getClient().hasRight(Right.moderator));
 					break;
 				case haveQuestion:
+					find.setVisible(!self);
 				case roomEnter:
 				case roomExit:
 					accept.setVisible(false);
@@ -178,7 +181,7 @@ public class ActivitiesPanel extends BasePanel {
 					break;
 			}
 			User u = getBean(UserDao.class).get(a.getSender());
-			String name = getUserId().equals(a.getSender()) ? getString("1362") : String.format("%s %s", u.getFirstname(), u.getLastname());
+			String name = self ? getString("1362") : String.format("%s %s", u.getFirstname(), u.getLastname());
 			switch (a.getType()) {
 				case roomEnter:
 					text = ""; // TODO should this be fixed?
@@ -216,7 +219,7 @@ public class ActivitiesPanel extends BasePanel {
 					break;
 			}
 			item.add(new WebMarkupContainer("close").add(new AttributeAppender("onclick", String.format("activityAction(%s, '%s', '%s');", roomId, Action.close.name(), a.getId()))));
-			item.add(accept, decline, new Label("text", text));
+			item.add(accept, decline, find, new Label("text", text));
 			item.add(AttributeModifier.append("class", getClass(a)));
 		}
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
index e3d6fb8..fd8162d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
@@ -70,5 +70,17 @@ var Activities = function() {
 				close();
 			}
 		}
+		, findUser: function(uid) {
+			var m = '5px', t = 50, u = $('#user'+uid);
+			if (u.length === 1) {
+				u[0].scrollIntoView();
+				u.addClass('ui-state-highlight');
+				for(i = 0; i < 10; i++) {
+					u.animate({marginTop: '-='+m}, t)
+						.animate({marginTop: '+='+m}, t);
+				}
+				u.removeClass('ui-state-highlight', 1500);
+			}
+		}
 	};
 }();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
index 6cbec34..74040e3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
@@ -33,12 +33,14 @@ import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.room.PollDao;
 import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.room.Room.RoomElement;
 import org.apache.openmeetings.db.entity.room.RoomPoll;
 import org.apache.openmeetings.db.entity.user.Group;
 import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.util.message.RoomMessage;
+import org.apache.openmeetings.util.message.RoomMessage.Type;
+import org.apache.openmeetings.util.message.TextRoomMessage;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.ImagePanel;
@@ -82,7 +84,8 @@ public class RoomMenuPanel extends Panel {
 		}
 		@Override
 		public void onClick(AjaxRequestTarget target) {
-			WebSocketHelper.sendRoom(new RoomMessage(room.getRoom().getId(), getUserId(), RoomMessage.Type.haveQuestion));
+			Client c = room.getClient();
+			WebSocketHelper.sendRoom(new TextRoomMessage(c.getRoomId(), c.getUserId(), Type.haveQuestion, c.getUid()));
 		}
 	};
 	private final RoomPanel room;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/webapp/css/activities.css
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/activities.css b/openmeetings-web/src/main/webapp/css/activities.css
deleted file mode 100644
index 07b8864..0000000
--- a/openmeetings-web/src/main/webapp/css/activities.css
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-#activities {
-	position: fixed;
-	z-index: 2000;
-	bottom: 0px;
-	left: 10px;
-	width: 600px;
-	height: 20px;
-}
-#activities .control.block .ui-icon {
-	text-align: center;
-}
-#activities .control.block .label {
-	display: inline-block;
-	padding-left: 20px;
-}
-#activities .area {
-	height: 319px;
-	overflow-y: auto;
-}
-.activity.item {
-	position: relative;
-	padding: 5px;
-	margin-bottom: 3px
-}
-.activity.item .ui-icon {
-	border-width: 1px;
-	border-style: solid;
-	margin-left: 2px;
-}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/webapp/css/images/crosshair.png
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/images/crosshair.png b/openmeetings-web/src/main/webapp/css/images/crosshair.png
new file mode 100644
index 0000000..775901e
Binary files /dev/null and b/openmeetings-web/src/main/webapp/css/images/crosshair.png differ

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/webapp/css/room.css
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/room.css b/openmeetings-web/src/main/webapp/css/room.css
index a4fae3c..dcad44c 100644
--- a/openmeetings-web/src/main/webapp/css/room.css
+++ b/openmeetings-web/src/main/webapp/css/room.css
@@ -369,7 +369,40 @@
 .room.sidebar.left .tab.om-icon.big.file {
 	background-image: url(images/folder_explore.png);
 }
-/**************************/
+/******** Activities **********/
+#activities {
+	position: fixed;
+	z-index: 2000;
+	bottom: 0px;
+	left: 10px;
+	width: 600px;
+	height: 20px;
+}
+#activities .control.block .ui-icon {
+	text-align: center;
+}
+#activities .control.block .label {
+	display: inline-block;
+	padding-left: 20px;
+}
+#activities .area {
+	height: 319px;
+	overflow-y: auto;
+}
+.activity.item {
+	position: relative;
+	padding: 5px;
+	margin-bottom: 3px
+}
+.activity.item .ui-icon {
+	border-width: 1px;
+	border-style: solid;
+	margin-left: 2px;
+}
+.ui-icon.crosshair {
+	background-image: url(images/crosshair.png);
+}
+/************ WB **************/
 .wb-settings {
 	position: absolute;
 }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/d24410c2/openmeetings-web/src/main/webapp/css/theme.css
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/theme.css b/openmeetings-web/src/main/webapp/css/theme.css
index d9382fa..aff4d76 100644
--- a/openmeetings-web/src/main/webapp/css/theme.css
+++ b/openmeetings-web/src/main/webapp/css/theme.css
@@ -578,8 +578,8 @@ select.messages.selector {
 	font-weight: bold !important;
 	text-align: left;
 }
-#ui-datepicker-div{
-    z-index: 100 !important;
+#ui-datepicker-div {
+	z-index: 100 !important;
 }
 .room-list {
 	border-collapse: collapse;


[14/50] [abbrv] openmeetings git commit: [OPENMEETINGS-1609] color chooser is fully visible

Posted by so...@apache.org.
[OPENMEETINGS-1609] color chooser is fully visible


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/1a85ede7
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/1a85ede7
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/1a85ede7

Branch: refs/heads/3.2.x
Commit: 1a85ede7118bde6c5e4247fce14e83fdaab4b266
Parents: 5279144
Author: Maxim Solodovnik <so...@apache.org>
Authored: Thu Mar 23 13:31:52 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Thu Mar 23 13:31:52 2017 +0000

----------------------------------------------------------------------
 .../src/main/swf/base/components/lps/fillColorChoose.lzx         | 4 ++--
 .../src/main/swf/base/components/lps/lineColorChoose.lzx         | 4 ++--
 .../src/main/swf/base/components/lps/lineOnlyColorChoose.lzx     | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1a85ede7/openmeetings-flash/src/main/swf/base/components/lps/fillColorChoose.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/components/lps/fillColorChoose.lzx b/openmeetings-flash/src/main/swf/base/components/lps/fillColorChoose.lzx
index 14c47fc..864d9be 100644
--- a/openmeetings-flash/src/main/swf/base/components/lps/fillColorChoose.lzx
+++ b/openmeetings-flash/src/main/swf/base/components/lps/fillColorChoose.lzx
@@ -84,11 +84,11 @@
     <method name="toggle">
         if (this.boxPosition=="up"){
 	        this.colorPickRef = new lz.colorpicker(canvas,{btnRef:this,
-	        	x:(this.getAttributeRelative('x',canvas)-(250-this.width)),
+	        	x:(this.getAttributeRelative('x',canvas)-(200-this.width)),
 	        	y:(this.getAttributeRelative('y',canvas)-154+this.height)});
         } else {
 	        this.colorPickRef = new lz.colorpicker(canvas,{btnRef:this,
-	        	x:(this.getAttributeRelative('x',canvas)-(250-this.width)),
+	        	x:(this.getAttributeRelative('x',canvas)-(200-this.width)),
 	        	y:(this.getAttributeRelative('y',canvas))});
         }
         this.colorPickRef.doDefaultColor(selectedColor);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1a85ede7/openmeetings-flash/src/main/swf/base/components/lps/lineColorChoose.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/components/lps/lineColorChoose.lzx b/openmeetings-flash/src/main/swf/base/components/lps/lineColorChoose.lzx
index 38311fe..eccb2db 100644
--- a/openmeetings-flash/src/main/swf/base/components/lps/lineColorChoose.lzx
+++ b/openmeetings-flash/src/main/swf/base/components/lps/lineColorChoose.lzx
@@ -86,11 +86,11 @@
     <method name="toggle">
         if (this.boxPosition=="up"){
 	        this.colorPickRef = new lz.colorpicker(canvas,{btnRef:this,
-	        	x:(this.getAttributeRelative('x',canvas)-(250-this.width)),
+	        	x:(this.getAttributeRelative('x',canvas)-(200-this.width)),
 	        	y:(this.getAttributeRelative('y',canvas)-154+this.height)});
         } else {
 	        this.colorPickRef = new lz.colorpicker(canvas,{btnRef:this,
-	        	x:(this.getAttributeRelative('x',canvas)-(250-this.width)),
+	        	x:(this.getAttributeRelative('x',canvas)-(200-this.width)),
 	        	y:(this.getAttributeRelative('y',canvas))});
         }
 

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1a85ede7/openmeetings-flash/src/main/swf/base/components/lps/lineOnlyColorChoose.lzx
----------------------------------------------------------------------
diff --git a/openmeetings-flash/src/main/swf/base/components/lps/lineOnlyColorChoose.lzx b/openmeetings-flash/src/main/swf/base/components/lps/lineOnlyColorChoose.lzx
index c4bcb63..98c0337 100644
--- a/openmeetings-flash/src/main/swf/base/components/lps/lineOnlyColorChoose.lzx
+++ b/openmeetings-flash/src/main/swf/base/components/lps/lineOnlyColorChoose.lzx
@@ -40,7 +40,7 @@
     </method>    
     
     <method name="toggle">
-        this.colorPickRef = new lz.colorpicker(canvas,{btnRef:this,x:(this.getAttributeRelative('x',canvas)-(250-this.width)),y:(this.getAttributeRelative('y',canvas))});
+        this.colorPickRef = new lz.colorpicker(canvas,{btnRef:this,x:(this.getAttributeRelative('x',canvas)-(200-this.width)),y:(this.getAttributeRelative('y',canvas))});
         this.colorPickRef.doDefaultColor(selectedColor);
         lz.ModeManager.makeModal( this.colorPickRef );
     </method>


[22/50] [abbrv] openmeetings git commit: no jira: OurUsers page is added

Posted by so...@apache.org.
no jira: OurUsers page is added


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/0d93bd27
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/0d93bd27
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/0d93bd27

Branch: refs/heads/3.2.x
Commit: 0d93bd273bc5d67b50d419a2fa6db48851244c98
Parents: 1f06a14
Author: Maxim Solodovnik <so...@apache.org>
Authored: Wed Mar 29 09:12:52 2017 +0000
Committer: Maxim Solodovnik <so...@apache.org>
Committed: Wed Mar 29 09:12:52 2017 +0000

----------------------------------------------------------------------
 openmeetings-server/src/site/site.xml          |  1 +
 openmeetings-server/src/site/xdoc/OurUsers.xml | 61 +++++++++++++++++++++
 2 files changed, 62 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/0d93bd27/openmeetings-server/src/site/site.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/site.xml b/openmeetings-server/src/site/site.xml
index ece786c..d36a3ab 100644
--- a/openmeetings-server/src/site/site.xml
+++ b/openmeetings-server/src/site/site.xml
@@ -35,6 +35,7 @@
 		<menu name="Community">
 			<item name="Get Involved" href="/get-involved.html" />
 			<item name="Committers" href="/team-list.html" />
+			<item name="Our Users" href="/OurUsers.html" />
 			<item name="Mailing Lists" href="/mail-lists.html" />
 			<item name="Wiki" href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/" />
 		</menu>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/0d93bd27/openmeetings-server/src/site/xdoc/OurUsers.xml
----------------------------------------------------------------------
diff --git a/openmeetings-server/src/site/xdoc/OurUsers.xml b/openmeetings-server/src/site/xdoc/OurUsers.xml
new file mode 100644
index 0000000..222e95e
--- /dev/null
+++ b/openmeetings-server/src/site/xdoc/OurUsers.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+ -->
+<document xmlns="http://maven.apache.org/XDOC/2.0"
+		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+		xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+
+	<properties>
+		<title>Our Users</title>
+		<author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author>
+	</properties>
+
+	<body>
+		<section name="List companies/institutions using OpenMeetings">
+			<p></p>
+			<table>
+				<tr>
+					<th> company/institution </th>
+					<th> city </th>
+					<th> country </th>
+					<th> type </th>
+				</tr>
+				<tr>
+					<td> Schulnetz Koblenz </td>
+					<td> Koblenz </td>
+					<td> Germany </td>
+					<td> edu </td>
+				</tr>
+				<tr>
+					<td> P�dgogisches Landesinstitut  RLP </td>
+					<td> Speyer </td>
+					<td> Germany </td>
+					<td> edu </td>
+				</tr>
+				<tr>
+					<td> VCRP - Virtueller Campus Rheinland Pfalz </td>
+					<td> Kaiserslautern </td>
+					<td> Germany </td>
+					<td> edu </td>
+				</tr>
+				<tr>
+					<td> Beuth Hochschule f�r Technik </td>
+					<td> Berlin </td>
+					<td> Germany </td>
+					<td> edu </td>
+				</tr>
+			</table>
+		</section>
+	</body>
+</document>