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 2016/04/17 13:27:21 UTC

svn commit: r1739582 [1/2] - in /openmeetings/application: branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ branches/3.2.x/openm...

Author: solomax
Date: Sun Apr 17 11:27:20 2016
New Revision: 1739582

URL: http://svn.apache.org/viewvc?rev=1739582&view=rev
Log:
[OPENMEETINGS-896] additional checks and dialogs are added

Added:
    openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/
      - copied from r1739576, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/ExpiredMessageDialog.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/OmRedirectTimerBehavior.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java
    openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/
      - copied from r1739323, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/ExpiredMessageDialog.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/OmRedirectTimerBehavior.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java
Removed:
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/message/
Modified:
    openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceService.java
    openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
    openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
    openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java
    openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
    openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx
    openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/mainMethods.lzx
    openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx
    openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/interviewuserlist/interviewUserList.lzx
    openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/participants/participants.lzx
    openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/restricted/restrictedUserList.lzx
    openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/invitation/invitationQuickLoader.lzx
    openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
    openmeetings/application/branches/3.2.x/openmeetings-util/pom.xml
    openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java
    openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/TextRoomMessage.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java
    openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
    openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceService.java
    openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
    openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
    openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java
    openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
    openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
    openmeetings/application/trunk/openmeetings-util/pom.xml
    openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java
    openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/TextRoomMessage.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java
    openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java

Modified: openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceService.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceService.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceService.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceService.java Sun Apr 17 11:27:20 2016
@@ -290,23 +290,6 @@ public class ConferenceService {
 	 * return all participants of a room
 	 * 
 	 * @param roomId
-	 * @return - true if room is full, false otherwise
-	 */
-	public boolean isRoomFull(Long roomId) {
-		try {
-			Room room = roomDao.get(roomId);
-			
-			return room.getNumberOfPartizipants() <= sessionManager.getClientListByRoom(roomId).size();
-		} catch (Exception err) {
-			log.error("[isRoomFull]", err);
-		}
-		return true;
-	}
-
-	/**
-	 * return all participants of a room
-	 * 
-	 * @param roomId
 	 * @return - all participants of a room
 	 */
 	public List<Client> getRoomClientsListByRoomId(Long roomId) {

Modified: openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java Sun Apr 17 11:27:20 2016
@@ -1163,10 +1163,6 @@ public class ScopeApplicationAdapter ext
 			// Return Object
 			RoomStatus roomStatus = new RoomStatus();
 			// appointed meeting or moderated Room? => Check Max Users first
-			if (clientListRoom.size() > room.getNumberOfPartizipants()) {
-				roomStatus.setRoomFull(true);
-				return roomStatus;
-			}
 
 			// default logic for non regular rooms
 			if (!room.isAppointment()) {

Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java Sun Apr 17 11:27:20 2016
@@ -242,7 +242,6 @@ public class RoomDao implements IDataPro
 			room.setComment("My Rooms of ownerId " + ownerId);
 			room.setNumberOfPartizipants(Room.Type.conference == type ? 25L : 150L);
 			room.setAllowUserQuestions(true);
-			room.setAllowFontStyles(true);
 			room.setOwnerId(ownerId);
 			room.setAllowRecording(true);
 

Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java Sun Apr 17 11:27:20 2016
@@ -23,10 +23,8 @@ import java.util.List;
 import org.apache.openmeetings.db.entity.room.Client;
 
 public class RoomStatus {
-	
 	List<Client> clientList;
 	BrowserStatus browserStatus;
-	boolean roomFull = false;
 	
 	public RoomStatus() {}
 	
@@ -42,11 +40,4 @@ public class RoomStatus {
 	public void setBrowserStatus(BrowserStatus browserStatus) {
 		this.browserStatus = browserStatus;
 	}
-	public boolean getRoomFull() {
-		return roomFull;
-	}
-	public void setRoomFull(boolean roomFull) {
-		this.roomFull = roomFull;
-	}
-	
 }

Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java Sun Apr 17 11:27:20 2016
@@ -202,10 +202,6 @@ public class Room implements IDataProvid
 	@Element(name = "isAudioOnly", data = true, required = false)
 	private boolean audioOnly;
 	
-	@Column(name = "allow_font_styles", nullable = false)
-	@Element(data = true, required = false)
-	private boolean allowFontStyles = false;
-
 	@Column(name = "is_closed")
 	@Element(data = true, required = false)
 	private boolean closed;
@@ -450,14 +446,6 @@ public class Room implements IDataProvid
 		this.audioOnly = audioOnly;
 	}
 
-	public boolean getAllowFontStyles() {
-		return allowFontStyles;
-	}
-
-	public void setAllowFontStyles(boolean allowFontStyles) {
-		this.allowFontStyles = allowFontStyles;
-	}
-
 	public boolean isClosed() {
 		return closed;
 	}

Modified: openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/hibernate/hibRtmpConnection.lzx Sun Apr 17 11:27:20 2016
@@ -92,7 +92,6 @@
 	<attribute name="modus" value="" type="string" />
 	
 	<attribute name="showKickMessage" value="false" type="boolean"/>
-	<attribute name="showFullMessage" value="false" type="boolean"/>
 		 
 	<attribute name="useRTMPT" value="false" type="boolean" />
 	<attribute name="connected" value="false" type="boolean" />
@@ -213,22 +212,8 @@
 	<handler name="onerror" >
 	<![CDATA[
 		canvas.remoteLogWrite("error status='" + this.status + "'; src='" + this.src + "'; lastCalled='" + this.lastCalled
-			+ "'; showKickMessage='" + this.showKickMessage + "'; showFullMessage='" + this.showFullMessage
-			+ "'; reconnectionAction='" + this.reconnectionAction + "'");
-		if (this.showFullMessage) {
-			new lz.labelerrorPopup(canvas,
-				{
-					errorlabelid: 99
-					, closeFunc: function() {
-					   if (this.makeModal) {
-						   lz.ModeManager.releaseAll();
-					   }
-					   if ($debug) Debug.write("Error dialog is being closed, calling QUIT");
-					}
-				});
-			this.showFullMessage = false;
-			return;
-		} else if (this.showKickMessage) {
+			+ "'; showKickMessage='" + this.showKickMessage + "'; reconnectionAction='" + this.reconnectionAction + "'");
+		if (this.showKickMessage) {
 			new lz.labelerrorPopup(canvas,{
 				errorlabelid:606
 				, closeFunc: function() {
@@ -1330,8 +1315,6 @@
 				canvas._drawarea.startStreaming(value);
 			} else if (value.message=='stopStreaming'){
 				canvas._drawarea.stopStreaming(value);
-			} else if (value.message=='roomClosed'){
-				canvas.roomClosed();
 			} else {
 				if ($debug) Debug.warn("Unknown Event -newMessageByRoomAndDomain- ",value);
 			}

Modified: openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/mainMethods.lzx
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/mainMethods.lzx?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/mainMethods.lzx (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/base/mainMethods.lzx Sun Apr 17 11:27:20 2016
@@ -273,13 +273,6 @@
 		}
 	</method>
 
-	<method name="roomClosed">
-		<![CDATA[
-			if ($debug) Debug.write("canvas.currentRoomObj ",canvas.currentRoomObj);
-			new lz.redirectBox(canvas,{redirectURL:canvas.currentRoomObj.redirectURL});
-		]]>
-	</method>
-
 	<method name="parseLanugageObject" args="obj">
 	
 		////Debug.write('parseLanugageObject: ',obj);

Modified: openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/flexibleConferenceRoom/baseConferenceRoom.lzx Sun Apr 17 11:27:20 2016
@@ -69,14 +69,6 @@
 		var r = this.roomobj;
 		r.currentusers = ''; //this might be huge list
 		
-		if (this.roomobj.closed) {
-			canvas.roomClosed();
-		}
-		
-		if (this.roomobj.waitForRecording) {
-			new lz.labelerrorPopup(canvas, {labelid: 1316, errorlabelid: 1315});
-		}
-		
 		canvas.currentBaseConferenceRoom = this;
 		
 		if ($debug) Debug.write("this.roomobj ",this.roomobj);

Modified: openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/interviewuserlist/interviewUserList.lzx
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/interviewuserlist/interviewUserList.lzx?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/interviewuserlist/interviewUserList.lzx (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/interviewuserlist/interviewUserList.lzx Sun Apr 17 11:27:20 2016
@@ -122,11 +122,6 @@
             //if ($debug) Debug.write("setRoomValues1: ",value);
             //if ($debug) Debug.write("setRoomValues2: ",hib.currentroomid);
             
-            if (roomStatus.roomFull) {
-                canvas.thishib.showFullMessage = true;
-                canvas.thishib.disconnect();
-            }
-            
             if (roomStatus.browserStatus.browserInited) {
                 var tObj = new Object();
                 tObj[0] = "newBrowserURL";

Modified: openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/participants/participants.lzx
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/participants/participants.lzx?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/participants/participants.lzx (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/participants/participants.lzx Sun Apr 17 11:27:20 2016
@@ -136,11 +136,6 @@
             if ($debug) Debug.write("+++++++++++++++++");
             if ($debug) Debug.write("+++++++++++++++++ setRoomValues1: ",roomStatus);
             
-            if (roomStatus.roomFull) {
-                canvas.thishib.showFullMessage = true;
-                canvas.thishib.disconnect();
-            }
-            
             if (roomStatus.browserStatus.browserInited) {
                 var tObj = new Object();
                 tObj[0] = "newBrowserURL";

Modified: openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/restricted/restrictedUserList.lzx
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/restricted/restrictedUserList.lzx?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/restricted/restrictedUserList.lzx (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/restricted/restrictedUserList.lzx Sun Apr 17 11:27:20 2016
@@ -138,11 +138,6 @@
             
             //if ($debug) Debug.write("+++++++++++++++++ getClientListScope : ",value);
             
-            if (roomStatus.roomFull) {
-                canvas.thishib.showFullMessage = true;
-                canvas.thishib.disconnect();
-            }
-            
             if (roomStatus.browserStatus.browserInited) {
                 var tObj = new Object();
                 tObj[0] = "newBrowserURL";

Modified: openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/invitation/invitationQuickLoader.lzx
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/invitation/invitationQuickLoader.lzx?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/invitation/invitationQuickLoader.lzx (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/invitation/invitationQuickLoader.lzx Sun Apr 17 11:27:20 2016
@@ -43,7 +43,6 @@
 			if ($debug) Debug.write("invitationQuickLoader:oninit userlang = [",userlang,"]; canvas.lang = [",canvas.language_id,"]");
 			this.setRoomValues();
 			if (canvas.language_id > 0) {
-				this.isRoomFull.doCall();
 			} else {
 				this.pass_label.setAttribute('visible', false);
 				this._password.setAttribute('visible', false);
@@ -58,24 +57,6 @@
 			this.checkInvitationPass.doCall();
 		</method>
 		
-		<netRemoteCallHib name="isRoomFull" funcname="conferenceservice.isRoomFull" remotecontext="$once{ canvas.thishib }" activeErrorHandler="true" >  	
-        	<netparam name="roomId"><method name="getValue">return canvas.thishib.currentInvitation.room.id;</method></netparam>
-        	<handler name="ondata" args="value">
-        		<![CDATA[
-            		//The onResult-Handler will be called be the rtmpconnection
-            		if ($debug) Debug.write(canvas.thishib.currentInvitation.room.id);
-					if ($debug) Debug.write("isRoomFull: ",value);
-					
-					if (value) {
-						new lz.labelerrorPopup(canvas,{errorlabelid:618});
-						parent.close();
-					} else {
-						parent.login();
-					}
-            	]]>
-        	</handler>   
-    	</netRemoteCallHib> 
-		
 		<netRemoteCallHib name="checkInvitationPass" funcname="invitationservice.checkInvitationPass" remotecontext="$once{ canvas.thishib }" activeErrorHandler="true" >
 			<netparam name="invitationHash"><method name="getValue">return canvas.invitationHash;</method></netparam>
 			<netparam name="pass"><method name="getValue">return parent.parent._password.getText();</method></netparam>
@@ -171,10 +152,5 @@
 
 		<!-- label: loading -->	
 		<labelText name="labelloading" y="30" x="10" fontstyle="bold" labelid="229" visibility="hidden" />
-		
-		<!-- label: enter -->
-		<simpleLabelButton name="connect" y="80" x="120" text="start" 
-						   visibility="hidden" labelid="228" width="170" height="20" 
-						   onclick="parent.isRoomFull.doCall();" />
 	</class>
 </library>

Modified: openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java Sun Apr 17 11:27:20 2016
@@ -358,7 +358,6 @@ public class ImportInitvalues {
 		r.setIspublic(isPublic);
 		r.setAllowUserQuestions(true);
 		r.setAudioOnly(false);
-		r.setAllowFontStyles(true);
 
 		r.setAppointment(false);
 

Modified: openmeetings/application/branches/3.2.x/openmeetings-util/pom.xml
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-util/pom.xml?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-util/pom.xml (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-util/pom.xml Sun Apr 17 11:27:20 2016
@@ -72,6 +72,11 @@
 			<version>${wicket.version}</version>
 		</dependency>
 		<dependency>
+			<groupId>org.apache.wicket</groupId>
+			<artifactId>wicket-native-websocket-core</artifactId>
+			<version>${wicket.version}</version>
+		</dependency>
+		<dependency>
 			<groupId>org.threeten</groupId>
 			<artifactId>threetenbp</artifactId>
 			<version>1.3.1</version>

Modified: openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java?rev=1739582&r1=1739576&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java Sun Apr 17 11:27:20 2016
@@ -16,13 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.room.message;
+package org.apache.openmeetings.util.message;
 
 import java.io.Serializable;
 import java.util.Date;
 import java.util.UUID;
 
-import org.apache.openmeetings.web.app.WebSession;
 import org.apache.wicket.protocol.ws.api.message.IWebSocketPushMessage;
 
 public class RoomMessage implements IWebSocketPushMessage, Serializable {
@@ -30,6 +29,7 @@ public class RoomMessage implements IWeb
 	public enum Type {
 		roomEnter
 		, roomExit
+		, roomClosed
 		, pollCreated
 		, rightUpdated
 		, activityRemove
@@ -41,10 +41,6 @@ public class RoomMessage implements IWeb
 	private final Long userId;
 	private final Type type;
 
-	public RoomMessage(Long roomId, Type type) {
-		this(roomId, WebSession.getUserId(), type);
-	}
-	
 	public RoomMessage(Long roomId, Long userId, Type type) {
 		this.timestamp = new Date();
 		this.roomId = roomId;

Modified: openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/TextRoomMessage.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/TextRoomMessage.java?rev=1739582&r1=1739576&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/TextRoomMessage.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/TextRoomMessage.java Sun Apr 17 11:27:20 2016
@@ -16,14 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.room.message;
+package org.apache.openmeetings.util.message;
 
 public class TextRoomMessage extends RoomMessage {
 	private static final long serialVersionUID = 1L;
 	private final String text;
 
-	public TextRoomMessage(Long roomId, Type type, String text) {
-		super(roomId, type);
+	public TextRoomMessage(Long roomId, Long userId, Type type, String text) {
+		super(roomId, userId, type);
 		this.text = text;
 	}
 	

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java Sun Apr 17 11:27:20 2016
@@ -156,7 +156,7 @@ public class ConnectionsPanel extends Ad
 				User u = getBean(UserService.class).getUserById(getSid(), c.getUserId());
 				item.add(new Label("login", u == null ? null : u.getLogin()));
 				item.add(new Label("since", c.getConnectedSince()));
-				item.add(new Label("scope", "html5"));
+				item.add(new Label("scope", c.getRoomId() == null ? "html5" : "" + c.getRoomId()));
 				item.add(new ConfirmableAjaxBorder("kick", getString("603"), getString("605")) {
 					private static final long serialVersionUID = 1L;
 

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java Sun Apr 17 11:27:20 2016
@@ -161,11 +161,11 @@ public class RoomForm extends AdminBaseF
 		add(demoTime);
 		add(new CheckBox("allowUserQuestions"));
 		add(new CheckBox("audioOnly"));
-		add(new CheckBox("allowFontStyles"));
 		add(new CheckBox("closed"));
 		add(new TextField<String>("redirectURL"));
 		add(new CheckBox("waitForRecording"));
 		add(new CheckBox("allowRecording"));
+		add(new CheckBox("chatModerated"));
 
 		add(new CheckBox("hideTopBar"));
 		add(new CheckBox("chatHidden"));
@@ -175,7 +175,6 @@ public class RoomForm extends AdminBaseF
 		add(new CheckBox("hideScreenSharing"));
 		add(new CheckBox("hideWhiteboard"));
 		add(new CheckBox("showMicrophoneStatus"));
-		add(new CheckBox("chatModerated"));
 		add(new CheckBox("chatOpened"));
 		add(new CheckBox("filesOpened"));
 		add(new CheckBox("autoVideoSelect"));	

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.html Sun Apr 17 11:27:20 2016
@@ -96,16 +96,12 @@
 						<fieldset class="ui-widget-content">
 							<legend class="ui-widget-header"><wicket:message key="881" /></legend>
 							<div class="formelement">
+								<div class="info-text"><wicket:message key="880" /></div>
 								<label><wicket:message key="879" /></label><input type="checkbox" class="formcheckbox" wicket:id="allowUserQuestions" />
 							</div>
 							<div class="formelement">
-								<wicket:message key="880" />
-								<br/>
-								<label><wicket:message key="1076" /></label><input type="checkbox" class="formcheckbox" wicket:id="audioOnly" />
-							</div>
-							<div class="formelement">
 								<div class="info-text"><wicket:message key="1077" /></div>
-								<label><wicket:message key="1531" /></label><input type="checkbox" class="formcheckbox" wicket:id="allowFontStyles" />
+								<label><wicket:message key="1076" /></label><input type="checkbox" class="formcheckbox" wicket:id="audioOnly" />
 							</div>
 							<div class="formelement">
 								<div class="info-text"><wicket:message key="1101" /></div>
@@ -122,6 +118,9 @@
 							<div class="formelement">
 								<label><wicket:message key="1355" /></label><input type="checkbox" class="formcheckbox" wicket:id="allowRecording" />
 							</div>
+							<div class="formelement">
+								<label><wicket:message key="1513" /></label><input type="checkbox" class="formcheckbox" wicket:id="chatModerated" />
+							</div>
 						</fieldset>
 						
 						<!-- Room Layout options -->
@@ -152,9 +151,6 @@
 								<label><wicket:message key="1442" /></label><input type="checkbox" class="formcheckbox" wicket:id="showMicrophoneStatus" />
 							</div>
 							<div class="formelement">
-								<label><wicket:message key="1513" /></label><input type="checkbox" class="formcheckbox" wicket:id="chatModerated" />
-							</div>
-							<div class="formelement">
 								<label><wicket:message key="1515" /></label><input type="checkbox" class="formcheckbox" wicket:id="chatOpened" />
 							</div>
 							<div class="formelement">

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/KickMessageDialog.java Sun Apr 17 11:27:20 2016
@@ -33,32 +33,21 @@ public class KickMessageDialog extends A
 
 	public KickMessageDialog(String id) {
 		super(id, "");
-		add(new Label("message", Application.getString(606)));
 	}
 
 	@Override
 	protected void onInitialize() {
 		super.onInitialize();
-		add(new JQueryBehavior(JQueryWidget.getSelector(this), "dialog") {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-            protected String $()  {
-                return this.$(Options.asString("open"));
-            }
-        });
+		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("resizable", false);
-	}
-
-	public String getOnClickJavaScript() {
-		return "$('#" + getButtons().get(0).getMarkupId() +"').click(function(e){$('#" + getMarkupId() +"').close(); })";
+		behavior.setOption("dialogClass", Options.asString("no-close"));
+		behavior.setOption("resizable", false);
 	}
 
 	@Override

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java Sun Apr 17 11:27:20 2016
@@ -58,7 +58,7 @@ public class ResetPasswordDialog extends
 	public ResetPasswordDialog(String id, final User user) {
 		super(id, Application.getString(325));
 		this.user = user;
-		add(form = new Form<String>("form"){
+		add(form = new Form<String>("form") {
 			private static final long serialVersionUID = 1L;
 			private TextField<String> login;
 			private PasswordTextField confirmPassword;
@@ -76,14 +76,14 @@ public class ResetPasswordDialog extends
 				confirmPassword.setLabel(Model.of(Application.getString(329)));
 				confirmPassword.setRequired(true).add(minimumLength(getMinPasswdLength(cfgDao)));
 
-				add(new AjaxButton("submit") { //FAKE button so "submit-on-enter" works as expected
+				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, Form<?> form) {
 						ResetPasswordDialog.this.onSubmit(target);
 					}
-					
+
 					@Override
 					protected void onError(AjaxRequestTarget target, Form<?> form) {
 						ResetPasswordDialog.this.onError(target);
@@ -99,18 +99,19 @@ public class ResetPasswordDialog extends
 				}
 				super.onValidate();
 			}
-			
+
 		});
-		confirmReset = new MessageDialog("confirmReset", Application.getString(325), Application.getString(332), DialogButtons.OK, DialogIcon.INFO){
+		confirmReset = new MessageDialog("confirmReset", Application.getString(325), Application.getString(332), 
+				DialogButtons.OK, DialogIcon.INFO) {
 			private static final long serialVersionUID = 1L;
 
 			@Override
 			public void onConfigure(JQueryBehavior behavior) {
 				super.onConfigure(behavior);
-		        behavior.setOption("dialogClass", Options.asString("no-close"));
+				behavior.setOption("dialogClass", Options.asString("no-close"));
 				behavior.setOption("closeOnEscape", false);
 			}
-			
+
 			@Override
 			public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
 				setResponsePage(Application.get().getSignInPageClass());
@@ -118,11 +119,12 @@ public class ResetPasswordDialog extends
 		};
 		add(confirmReset);
 	}
-	
+
 	@Override
 	public void onConfigure(JQueryBehavior behavior) {
 		super.onConfigure(behavior);
-        behavior.setOption("dialogClass", Options.asString("no-close"));
+		behavior.setOption("autoOpen", true);
+		behavior.setOption("dialogClass", Options.asString("no-close"));
 		behavior.setOption("closeOnEscape", false);
 	}
 
@@ -130,7 +132,7 @@ public class ResetPasswordDialog extends
 	protected List<DialogButton> getButtons() {
 		return Arrays.asList(resetBtn);
 	}
-	
+
 	@Override
 	public DialogButton getSubmitButton() {
 		return resetBtn;
@@ -154,26 +156,13 @@ public class ResetPasswordDialog extends
 			error(e.getMessage());
 		}
 	}
-	
+
 	@Override
 	public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
-		if (resetBtn.equals(button)){
+		if (resetBtn.equals(button)) {
 			confirmReset.open(handler);
 		} else {
 			setResponsePage(Application.get().getSignInPageClass());
 		}
 	}
-	
-	@Override
-	protected void onInitialize() {
-		super.onInitialize();
-		add(new JQueryBehavior(JQueryWidget.getSelector(this), "dialog") {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			protected String $() {
-				return this.$(Options.asString("open"));
-			}
-		});
-	}
 }

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java Sun Apr 17 11:27:20 2016
@@ -62,7 +62,6 @@ import org.apache.wicket.ajax.AjaxReques
 import org.apache.wicket.ajax.json.JSONException;
 import org.apache.wicket.ajax.json.JSONObject;
 import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
 import org.apache.wicket.request.IRequestParameters;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.flow.RedirectToUrlException;
@@ -150,7 +149,6 @@ public class SignInPage extends BaseInit
 	@Override
 	public void renderHead(IHeaderResponse response) {
 		super.renderHead(response);
-		response.render(OnDomReadyHeaderItem.forScript(m.getOnClickJavaScript()));
 	}
 	
 	@Override

Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/ExpiredMessageDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/ExpiredMessageDialog.java?rev=1739582&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/ExpiredMessageDialog.java (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/ExpiredMessageDialog.java Sun Apr 17 11:27:20 2016
@@ -0,0 +1,55 @@
+/*
+ * 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.room;
+
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.room.menu.RoomMenuPanel;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+
+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 class ExpiredMessageDialog extends MessageDialog {
+	private static final long serialVersionUID = 1L;
+	private final RoomMenuPanel menu;
+
+	public ExpiredMessageDialog(String id, String message, RoomMenuPanel menu) {
+		super(id, Application.getString(204), message, DialogButtons.OK, DialogIcon.ERROR);
+		this.menu = menu;
+	}
+
+	@Override
+	public boolean isModal() {
+		return true;
+	}
+
+	@Override
+	public void onConfigure(JQueryBehavior behavior) {
+		super.onConfigure(behavior);
+		behavior.setOption("autoOpen", true);
+	}
+
+	@Override
+	public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
+		menu.exit(handler);
+	}
+}

Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/OmRedirectTimerBehavior.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/OmRedirectTimerBehavior.java?rev=1739582&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/OmRedirectTimerBehavior.java (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/OmRedirectTimerBehavior.java Sun Apr 17 11:27:20 2016
@@ -0,0 +1,80 @@
+/*
+ * 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.room;
+
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.util.time.Duration;
+
+public abstract class OmRedirectTimerBehavior extends AbstractAjaxTimerBehavior {
+	private static final long serialVersionUID = 1L;
+	private final long clock;
+	private final int delay;
+	private final String labelId;
+
+	public OmRedirectTimerBehavior(int delay, String labelId) {
+		super(Duration.ONE_SECOND);
+		clock = System.currentTimeMillis();
+		this.delay = delay;
+		this.labelId = labelId;
+	}
+	
+	protected static String getTime(int remain) {
+		return Duration.seconds(remain).toString(WebSession.get().getLocale());
+	}
+	
+	public static String getText(String text, int remain) {
+		return String.format("%s: %s", text, getTime(remain));
+	}
+	
+	protected String getText(int remain) {
+		return getText(getComponent().getString(labelId), remain);
+	}
+	
+	private int remain(long now) {
+		return (int)(delay - (now - clock) / 1000);
+	}
+
+	@Override
+	protected void onBind() {
+		super.onBind();
+		getComponent().setDefaultModelObject(getText(delay));
+		getComponent().setOutputMarkupId(true);
+		onTimer(delay);
+	}
+
+	protected void onTimer(int remain) {
+	}
+	
+	@Override
+	protected void onTimer(AjaxRequestTarget target) {
+		int remain = remain(System.currentTimeMillis());
+		if (remain > -1) {
+			getComponent().setDefaultModelObject(getText(remain));
+			onTimer(remain);
+			target.add(getComponent());
+		} else {
+			stop(target);
+			onFinish(target);
+		}
+	}
+	
+	protected abstract void onFinish(AjaxRequestTarget target);
+}

Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java?rev=1739582&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RedirectMessageDialog.java Sun Apr 17 11:27:20 2016
@@ -0,0 +1,113 @@
+/*
+ * 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.room;
+
+import java.util.ArrayList;
+
+import org.apache.directory.api.util.Strings;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.wicket.Component;
+import org.apache.wicket.RestartResponseException;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+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 {
+	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; 
+	
+	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();
+		if (autoOpen) {
+			startTimer(null);
+		}
+	}
+
+	private void startTimer(IPartialPageRequestHandler handler) {
+		label.add(new OmRedirectTimerBehavior(delay, labelId) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onFinish(AjaxRequestTarget target) {
+				if (Strings.isEmpty(url)) {
+					throw new RestartResponseException(Application.get().getHomePage());
+				} else {
+					throw new RedirectToUrlException(url);
+				}
+			}
+		});
+		if (handler != null) {
+			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);
+		return label;
+	}
+}

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html Sun Apr 17 11:27:20 2016
@@ -28,13 +28,15 @@
 </wicket:head>
 <wicket:panel>
 	<div wicket:id="roomContainer" style="height: 100%">
-		<div class="room menu" wicket:id="roomMenu"></div>
+		<div class="room menu" wicket:id="menu"></div>
 		<div class="room sidebar left" wicket:id="sidebar"></div>
 		<div class="room wb area">
 			<div class="wb" wicket:id="whiteboard"></div>
 		</div>
-		<div wicket:id="activitiesPanel"></div>
+		<div wicket:id="activities"></div>
 	</div>
-	<div wicket:id="accessDenied"></div>
+	<div wicket:id="access-denied"></div>
+	<div wicket:id="room-closed"></div>
+	<div wicket:id="wait-for-recording"></div>
 </wicket:panel>
 </html>

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java Sun Apr 17 11:27:20 2016
@@ -38,14 +38,14 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
+import org.apache.openmeetings.util.message.RoomMessage;
+import org.apache.openmeetings.util.message.TextRoomMessage;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.Client;
 import org.apache.openmeetings.web.common.BasePanel;
 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.message.RoomMessage;
-import org.apache.openmeetings.web.room.message.TextRoomMessage;
 import org.apache.openmeetings.web.room.sidebar.RoomSidebar;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
@@ -79,6 +79,7 @@ import com.googlecode.wicket.jquery.ui.w
 public class RoomPanel extends BasePanel {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = Red5LoggerFactory.getLogger(RoomPanel.class, webAppRootKey);
+	private static final String ACCESS_DENIED_ID = "access-denied";
 	private final Room r;
 	private final WebMarkupContainer room = new WebMarkupContainer("roomContainer");
 	private final AbstractDefaultAjaxBehavior aab = new AbstractDefaultAjaxBehavior() {
@@ -93,13 +94,14 @@ public class RoomPanel extends BasePanel
 				URL url = new URL(cfgDao.getBaseUrl());
 				String path = url.getPath();
 				path = path.substring(1, path.indexOf('/', 2) + 1);
-				broadcast(new RoomMessage(r.getId(), RoomMessage.Type.roomEnter));
+				broadcast(new RoomMessage(r.getId(), getUserId(), RoomMessage.Type.roomEnter));
 				getMainPage().getChat().roomEnter(r, target);
 			} catch (MalformedURLException e) {
 				log.error("Error while constructing room parameters", e);
 			}
 		}
 	};
+	private RedirectMessageDialog roomClosed;
 	private RoomMenuPanel menu;
 	private RoomSidebar sidebar;
 	private ActivitiesPanel activities;
@@ -113,64 +115,90 @@ public class RoomPanel extends BasePanel
 	protected void onInitialize() {
 		getClient().setRoomId(r.getId());
 		super.onInitialize();
-		Component accessDenied = new WebMarkupContainer("accessDenied").setVisible(false);
-		boolean allowed = false;
-		String deniedMessage = null;
-		if (r.isAppointment()) {
-			Appointment a = getBean(AppointmentDao.class).getByRoom(r.getId());
-			if (a != null && !a.isDeleted()) {
-				allowed = a.getOwner().getId().equals(getUserId());
-				log.debug("appointed room, isOwner ? " + allowed);
+		Component accessDenied = new WebMarkupContainer(ACCESS_DENIED_ID).setVisible(false);
+		add(roomClosed = new RedirectMessageDialog("room-closed", "1098", r.isClosed(), r.getRedirectURL()));
+		if (r.isClosed()) {
+			room.setVisible(false);
+		} else if (r.getNumberOfPartizipants() >= getRoomUsers(r.getId()).size()) {
+			accessDenied = new ExpiredMessageDialog(ACCESS_DENIED_ID, getString("99"), menu);
+			room.setVisible(false);
+		} else {
+			boolean allowed = false;
+			String deniedMessage = null;
+			if (r.isAppointment()) {
+				Appointment a = getBean(AppointmentDao.class).getByRoom(r.getId());
+				if (a != null && !a.isDeleted()) {
+					allowed = a.getOwner().getId().equals(getUserId());
+					log.debug("appointed room, isOwner ? " + allowed);
+					if (!allowed) {
+						for (MeetingMember mm : a.getMeetingMembers()) {
+							if (mm.getUser().getId() == getUserId()) {
+								allowed = true;
+								break;
+							}
+						}
+					}
+					/*
+					TODO need to be reviewed
+					Calendar c = WebSession.getCalendar();
+					if (c.getTime().after(a.getStart()) && c.getTime().before(a.getEnd())) {
+						allowed = true;
+					} else {
+						SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm"); //FIXME format
+						deniedMessage = getString("1271") + String.format(" %s - %s", sdf.format(a.getStart()), sdf.format(a.getEnd()));
+					}
+					*/
+				}
+			} else {
+				allowed = r.getIspublic() || (r.getOwnerId() != null && r.getOwnerId().equals(getUserId()));
+				log.debug("public ? " + r.getIspublic() + ", ownedId ? " + r.getOwnerId() + " " + allowed);
 				if (!allowed) {
-					for (MeetingMember mm : a.getMeetingMembers()) {
-						if (mm.getUser().getId() == getUserId()) {
-							allowed = true;
+					User u = getBean(UserDao.class).get(getUserId());
+					for (RoomGroup ro : r.getRoomGroups()) {
+						for (GroupUser ou : u.getGroupUsers()) {
+							if (ro.getGroup().getId().equals(ou.getGroup().getId())) {
+								allowed = true;
+								break;
+							}
+						}
+						if (allowed) {
 							break;
 						}
 					}
 				}
-				/*
-				TODO need to be reviewed
-				Calendar c = WebSession.getCalendar();
-				if (c.getTime().after(a.getStart()) && c.getTime().before(a.getEnd())) {
-					allowed = true;
-				} else {
-					SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm"); //FIXME format
-					deniedMessage = getString("1271") + String.format(" %s - %s", sdf.format(a.getStart()), sdf.format(a.getEnd()));
-				}
-				*/
 			}
-		} else {
-			allowed = r.getIspublic() || (r.getOwnerId() != null && r.getOwnerId().equals(getUserId()));
-			log.debug("public ? " + r.getIspublic() + ", ownedId ? " + r.getOwnerId() + " " + allowed);
 			if (!allowed) {
-				User u = getBean(UserDao.class).get(getUserId());
-				for (RoomGroup ro : r.getRoomGroups()) {
-					for (GroupUser ou : u.getGroupUsers()) {
-						if (ro.getGroup().getId().equals(ou.getGroup().getId())) {
-							allowed = true;
-							break;
-						}
-					}
-					if (allowed) {
-						break;
-					}
+				if (deniedMessage == null) {
+					deniedMessage = getString("1599");
 				}
+				accessDenied = new ExpiredMessageDialog(ACCESS_DENIED_ID, deniedMessage, menu);
+				room.setVisible(false);
 			}
 		}
-		if (!allowed) {
-			if (deniedMessage == null) {
-				deniedMessage = getString("1599");
-			}
-			accessDenied = new ExpiredMessageDialog("accessDenied", deniedMessage);
-			room.setVisible(false);
-		}
-		room.add((menu = new RoomMenuPanel("roomMenu", this)).setVisible(!r.getHideTopBar()));
+		room.add((menu = new RoomMenuPanel("menu", this)).setVisible(!r.getHideTopBar()));
 		room.add(new SwfPanel("whiteboard", getClient()));
 		room.add(aab);
 		room.add(sidebar = new RoomSidebar("sidebar", this));
-		room.add((activities = new ActivitiesPanel("activitiesPanel", this)).setVisible(!r.isActivitiesHidden()));
+		room.add((activities = new ActivitiesPanel("activities", this)).setVisible(!r.isActivitiesHidden()));
 		add(room, accessDenied);
+		if (r.getWaitForRecording()) {
+			add(new MessageDialog("wait-for-recording", getString("1316"), getString("1315"), DialogButtons.OK, DialogIcon.INFO) {//DialogIcon.LIGHT
+				private static final long serialVersionUID = 1L;
+	
+				@Override
+				public void onConfigure(JQueryBehavior behavior) {
+					super.onConfigure(behavior);
+					behavior.setOption("autoOpen", true);
+					behavior.setOption("resizable", false);
+				}
+				
+				@Override
+				public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
+				}
+			});
+		} else {
+			add(new WebMarkupContainer("wait-for-recording").setVisible(false));
+		}
 	}
 	
 	@Override
@@ -199,6 +227,10 @@ public class RoomPanel extends BasePanel
 						sidebar.updateUsers(handler);
 						activities.add(new Activity(m.getUid(), m.getUserId(), Activity.Type.roomExit), handler);
 						break;
+					case roomClosed:
+						handler.add(room.setVisible(false));
+						roomClosed.open(handler);
+						break;
 					case requestRightModerator:
 						if (isModerator(getUserId(), r.getId())) {
 							TextRoomMessage tm = (TextRoomMessage)m;
@@ -316,32 +348,6 @@ public class RoomPanel extends BasePanel
 		}
 	}
 
-	class ExpiredMessageDialog extends MessageDialog {
-		private static final long serialVersionUID = 1L;
-		public boolean autoOpen = false;
-		
-		public ExpiredMessageDialog(String id, String message) {
-			super(id, Application.getString(204), message, DialogButtons.OK, DialogIcon.ERROR);
-			autoOpen = true;
-		}
-		
-		@Override
-		public boolean isModal() {
-			return true;
-		}
-		
-		@Override
-		public void onConfigure(JQueryBehavior behavior) {
-			super.onConfigure(behavior);
-			behavior.setOption("autoOpen", autoOpen);
-		}
-		
-		@Override
-		public void onClose(IPartialPageRequestHandler handler, DialogButton button) {
-			menu.exit(handler);
-		}
-	}
-	
 	public Room getRoom() {
 		return r;
 	}

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/ActivitiesPanel.java Sun Apr 17 11:27:20 2016
@@ -35,12 +35,12 @@ import java.util.Map;
 
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.util.message.RoomMessage;
+import org.apache.openmeetings.util.message.TextRoomMessage;
 import org.apache.openmeetings.web.app.Client;
 import org.apache.openmeetings.web.app.Client.Right;
 import org.apache.openmeetings.web.common.BasePanel;
 import org.apache.openmeetings.web.room.RoomPanel;
-import org.apache.openmeetings.web.room.message.RoomMessage;
-import org.apache.openmeetings.web.room.message.TextRoomMessage;
 import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -94,7 +94,7 @@ public class ActivitiesPanel extends Bas
 							break;
 						case decline:
 							if (isModerator(getUserId(), roomId)) {
-								broadcast(new TextRoomMessage(room.getRoom().getId(), RoomMessage.Type.activityRemove, uid));
+								broadcast(new TextRoomMessage(room.getRoom().getId(), getUserId(), RoomMessage.Type.activityRemove, uid));
 							}
 							break;
 						case accept:
@@ -110,8 +110,8 @@ public class ActivitiesPanel extends Bas
 										}
 										if (client != null) {
 											client.getRights().add(Right.moderator);
-											broadcast(new TextRoomMessage(room.getRoom().getId(), RoomMessage.Type.activityRemove, uid));
-											broadcast(new RoomMessage(room.getRoom().getId(), RoomMessage.Type.rightUpdated));
+											broadcast(new TextRoomMessage(room.getRoom().getId(), getUserId(), RoomMessage.Type.activityRemove, uid));
+											broadcast(new RoomMessage(room.getRoom().getId(), getUserId(), RoomMessage.Type.rightUpdated));
 										}
 										break;
 									default:

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java Sun Apr 17 11:27:20 2016
@@ -34,19 +34,19 @@ import org.apache.openmeetings.db.dao.us
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.util.message.RoomMessage;
+import org.apache.openmeetings.util.message.TextRoomMessage;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.Client;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.OmButton;
 import org.apache.openmeetings.web.common.menu.MenuPanel;
 import org.apache.openmeetings.web.common.menu.RoomMenuItem;
+import org.apache.openmeetings.web.room.OmRedirectTimerBehavior;
 import org.apache.openmeetings.web.room.RoomPanel;
-import org.apache.openmeetings.web.room.message.RoomMessage;
-import org.apache.openmeetings.web.room.message.TextRoomMessage;
 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.ajax.AbstractAjaxTimerBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
@@ -55,7 +55,6 @@ import org.apache.wicket.markup.html.pan
 import org.apache.wicket.model.Model;
 import org.apache.wicket.request.flow.RedirectToUrlException;
 import org.apache.wicket.util.string.Strings;
-import org.apache.wicket.util.time.Duration;
 
 import com.googlecode.wicket.jquery.ui.widget.menu.IMenuItem;
 
@@ -75,7 +74,7 @@ public class RoomMenuPanel extends Panel
 		}
 		@Override
 		protected void onClick(AjaxRequestTarget target) {
-			RoomPanel.broadcast(new TextRoomMessage(room.getRoom().getId(), RoomMessage.Type.requestRightModerator, room.getClient().getUid()));
+			RoomPanel.broadcast(new TextRoomMessage(room.getRoom().getId(), getUserId(), RoomMessage.Type.requestRightModerator, room.getClient().getUid()));
 		}
 	};
 	private final RoomPanel room;
@@ -155,18 +154,6 @@ public class RoomMenuPanel extends Panel
 	}
 	
 	
-	private static String getDemoTime(int remain) {
-		return Duration.seconds(remain).toString(WebSession.get().getLocale());
-	}
-	
-	private String getDemoText(int remain) {
-		return String.format("%s: %s", getString("637"), getDemoTime(remain));
-	}
-	
-	private String getDemoTitle(int remain) {
-		return String.format("%s: %s", getString("639"), getDemoTime(remain));
-	}
-	
 	@Override
 	protected void onInitialize() {
 		super.onInitialize();
@@ -175,31 +162,17 @@ public class RoomMenuPanel extends Panel
 		Room r = room.getRoom();
 		add(demo.setVisible(r.isDemoRoom() && r.getDemoTime() != null && room.getRoom().getDemoTime().intValue() > 0));
 		if (demo.isVisible()) {
-			demo.setOutputMarkupId(true);
-			demo.setDefaultModelObject(getDemoText(r.getDemoTime().intValue()));
-			demo.add(AttributeAppender.replace("title", getDemoTitle(r.getDemoTime().intValue())));
-			demo.add(new AbstractAjaxTimerBehavior(Duration.ONE_SECOND) {
+			demo.add(new OmRedirectTimerBehavior(room.getRoom().getDemoTime().intValue(), "637") {
 				private static final long serialVersionUID = 1L;
-				private final long clock;
-				{
-					clock = System.currentTimeMillis();
-				}
 
-				private int remain(long now) {
-					return (int)(room.getRoom().getDemoTime().longValue() - (now - clock) / 1000);
+				@Override
+				protected void onTimer(int remain) {
+					getComponent().add(AttributeAppender.replace("title", getText("639", remain)));
 				}
-
+				
 				@Override
-				protected void onTimer(AjaxRequestTarget target) {
-					int remain = remain(System.currentTimeMillis());
-					if (remain > -1) {
-						getComponent().setDefaultModelObject(getDemoText(remain));
-						getComponent().add(AttributeAppender.replace("title", getDemoTitle(remain)));
-						target.add(getComponent());
-					} else {
-						stop(target);
-						exit(target);
-					}
+				protected void onFinish(AjaxRequestTarget target) {
+					exit(target);
 				}
 			});
 		}

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/MessageDialog.java Sun Apr 17 11:27:20 2016
@@ -193,7 +193,6 @@ public class MessageDialog extends Abstr
 			r.setNumberOfPartizipants(100L);
 			r.setAppointment(true);
 			r.setAllowUserQuestions(true);
-			r.setAllowFontStyles(true);
 			r = getBean(RoomDao.class).update(r, getUserId());
 			Appointment a = new Appointment();
 			a.setTitle(m.getSubject());

Modified: openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java Sun Apr 17 11:27:20 2016
@@ -22,9 +22,7 @@ import static org.apache.openmeetings.ut
 import static org.apache.openmeetings.webservice.Constants.TNS;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 import javax.jws.WebMethod;
 import javax.jws.WebParam;
@@ -40,7 +38,6 @@ import javax.ws.rs.QueryParam;
 import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
-import org.apache.openmeetings.core.remote.red5.ScopeApplicationAdapter;
 import org.apache.openmeetings.db.dao.room.IInvitationManager;
 import org.apache.openmeetings.db.dao.room.InvitationDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
@@ -57,7 +54,13 @@ import org.apache.openmeetings.db.entity
 import org.apache.openmeetings.db.entity.room.Invitation.MessageType;
 import org.apache.openmeetings.db.entity.room.Room;
 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.apache.wicket.protocol.ws.WebSocketSettings;
+import org.apache.wicket.protocol.ws.api.IWebSocketConnection;
+import org.apache.wicket.protocol.ws.api.registry.IWebSocketConnectionRegistry;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -86,8 +89,6 @@ public class RoomWebService {
 	@Autowired
 	private IInvitationManager invitationManager;
 	@Autowired
-	private ScopeApplicationAdapter scopeApplicationAdapter;
-	@Autowired
 	private ISessionManager sessionManager;
 	@Autowired
 	private RoomDao roomDao;
@@ -317,10 +318,16 @@ public class RoomWebService {
 
 				roomDao.update(room, userId);
 
-				Map<String, String> message = new HashMap<String, String>();
-				message.put("message", "roomClosed");
-				scopeApplicationAdapter.sendMessageByRoomAndDomain(id, message);
-				
+				Application app = Application.get(OpenmeetingsVariables.wicketApplicationName);
+				WebSocketSettings settings = WebSocketSettings.Holder.get(app);
+				IWebSocketConnectionRegistry registry = settings.getConnectionRegistry();
+				RoomMessage cm = new RoomMessage(room.getId(),  userId,  RoomMessage.Type.roomClosed);
+				for (IWebSocketConnection wc : registry.getConnections(app)) {
+					if (wc != null && wc.isOpen()) {
+						wc.sendMessage(cm);
+					}
+				}
+
 				return new ServiceResult(1L, "Closed", Type.SUCCESS);
 			} else {
 				throw new ServiceException("Insufficient permissions"); //TODO code -26

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceService.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceService.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceService.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceService.java Sun Apr 17 11:27:20 2016
@@ -290,23 +290,6 @@ public class ConferenceService {
 	 * return all participants of a room
 	 * 
 	 * @param roomId
-	 * @return - true if room is full, false otherwise
-	 */
-	public boolean isRoomFull(Long roomId) {
-		try {
-			Room room = roomDao.get(roomId);
-			
-			return room.getNumberOfPartizipants() <= sessionManager.getClientListByRoom(roomId).size();
-		} catch (Exception err) {
-			log.error("[isRoomFull]", err);
-		}
-		return true;
-	}
-
-	/**
-	 * return all participants of a room
-	 * 
-	 * @param roomId
 	 * @return - all participants of a room
 	 */
 	public List<Client> getRoomClientsListByRoomId(Long roomId) {

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java Sun Apr 17 11:27:20 2016
@@ -1163,10 +1163,6 @@ public class ScopeApplicationAdapter ext
 			// Return Object
 			RoomStatus roomStatus = new RoomStatus();
 			// appointed meeting or moderated Room? => Check Max Users first
-			if (clientListRoom.size() > room.getNumberOfPartizipants()) {
-				roomStatus.setRoomFull(true);
-				return roomStatus;
-			}
 
 			// default logic for non regular rooms
 			if (!room.isAppointment()) {

Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/RoomDao.java Sun Apr 17 11:27:20 2016
@@ -242,7 +242,6 @@ public class RoomDao implements IDataPro
 			room.setComment("My Rooms of ownerId " + ownerId);
 			room.setNumberOfPartizipants(Room.Type.conference == type ? 25L : 150L);
 			room.setAllowUserQuestions(true);
-			room.setAllowFontStyles(true);
 			room.setOwnerId(ownerId);
 			room.setAllowRecording(true);
 

Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/RoomStatus.java Sun Apr 17 11:27:20 2016
@@ -23,10 +23,8 @@ import java.util.List;
 import org.apache.openmeetings.db.entity.room.Client;
 
 public class RoomStatus {
-	
 	List<Client> clientList;
 	BrowserStatus browserStatus;
-	boolean roomFull = false;
 	
 	public RoomStatus() {}
 	
@@ -42,11 +40,4 @@ public class RoomStatus {
 	public void setBrowserStatus(BrowserStatus browserStatus) {
 		this.browserStatus = browserStatus;
 	}
-	public boolean getRoomFull() {
-		return roomFull;
-	}
-	public void setRoomFull(boolean roomFull) {
-		this.roomFull = roomFull;
-	}
-	
 }

Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/room/Room.java Sun Apr 17 11:27:20 2016
@@ -202,10 +202,6 @@ public class Room implements IDataProvid
 	@Element(name = "isAudioOnly", data = true, required = false)
 	private boolean audioOnly;
 	
-	@Column(name = "allow_font_styles", nullable = false)
-	@Element(data = true, required = false)
-	private boolean allowFontStyles = false;
-
 	@Column(name = "is_closed")
 	@Element(data = true, required = false)
 	private boolean closed;
@@ -450,14 +446,6 @@ public class Room implements IDataProvid
 		this.audioOnly = audioOnly;
 	}
 
-	public boolean getAllowFontStyles() {
-		return allowFontStyles;
-	}
-
-	public void setAllowFontStyles(boolean allowFontStyles) {
-		this.allowFontStyles = allowFontStyles;
-	}
-
 	public boolean isClosed() {
 		return closed;
 	}

Modified: openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java (original)
+++ openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java Sun Apr 17 11:27:20 2016
@@ -358,7 +358,6 @@ public class ImportInitvalues {
 		r.setIspublic(isPublic);
 		r.setAllowUserQuestions(true);
 		r.setAudioOnly(false);
-		r.setAllowFontStyles(true);
 
 		r.setAppointment(false);
 

Modified: openmeetings/application/trunk/openmeetings-util/pom.xml
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-util/pom.xml?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-util/pom.xml (original)
+++ openmeetings/application/trunk/openmeetings-util/pom.xml Sun Apr 17 11:27:20 2016
@@ -72,6 +72,11 @@
 			<version>${wicket.version}</version>
 		</dependency>
 		<dependency>
+			<groupId>org.apache.wicket</groupId>
+			<artifactId>wicket-native-websocket-core</artifactId>
+			<version>${wicket.version}</version>
+		</dependency>
+		<dependency>
 			<groupId>org.threeten</groupId>
 			<artifactId>threetenbp</artifactId>
 			<version>1.3.1</version>

Modified: openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java?rev=1739582&r1=1739323&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java (original)
+++ openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java Sun Apr 17 11:27:20 2016
@@ -16,13 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.room.message;
+package org.apache.openmeetings.util.message;
 
 import java.io.Serializable;
 import java.util.Date;
 import java.util.UUID;
 
-import org.apache.openmeetings.web.app.WebSession;
 import org.apache.wicket.protocol.ws.api.message.IWebSocketPushMessage;
 
 public class RoomMessage implements IWebSocketPushMessage, Serializable {
@@ -30,6 +29,7 @@ public class RoomMessage implements IWeb
 	public enum Type {
 		roomEnter
 		, roomExit
+		, roomClosed
 		, pollCreated
 		, rightUpdated
 		, activityRemove
@@ -41,10 +41,6 @@ public class RoomMessage implements IWeb
 	private final Long userId;
 	private final Type type;
 
-	public RoomMessage(Long roomId, Type type) {
-		this(roomId, WebSession.getUserId(), type);
-	}
-	
 	public RoomMessage(Long roomId, Long userId, Type type) {
 		this.timestamp = new Date();
 		this.roomId = roomId;

Modified: openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/TextRoomMessage.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/TextRoomMessage.java?rev=1739582&r1=1739323&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/TextRoomMessage.java (original)
+++ openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/TextRoomMessage.java Sun Apr 17 11:27:20 2016
@@ -16,14 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.room.message;
+package org.apache.openmeetings.util.message;
 
 public class TextRoomMessage extends RoomMessage {
 	private static final long serialVersionUID = 1L;
 	private final String text;
 
-	public TextRoomMessage(Long roomId, Type type, String text) {
-		super(roomId, type);
+	public TextRoomMessage(Long roomId, Long userId, Type type, String text) {
+		super(roomId, userId, type);
 		this.text = text;
 	}
 	

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/connection/ConnectionsPanel.java Sun Apr 17 11:27:20 2016
@@ -156,7 +156,7 @@ public class ConnectionsPanel extends Ad
 				User u = getBean(UserService.class).getUserById(getSid(), c.getUserId());
 				item.add(new Label("login", u == null ? null : u.getLogin()));
 				item.add(new Label("since", c.getConnectedSince()));
-				item.add(new Label("scope", "html5"));
+				item.add(new Label("scope", c.getRoomId() == null ? "html5" : "" + c.getRoomId()));
 				item.add(new ConfirmableAjaxBorder("kick", getString("603"), getString("605")) {
 					private static final long serialVersionUID = 1L;
 

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java?rev=1739582&r1=1739581&r2=1739582&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java Sun Apr 17 11:27:20 2016
@@ -161,11 +161,11 @@ public class RoomForm extends AdminBaseF
 		add(demoTime);
 		add(new CheckBox("allowUserQuestions"));
 		add(new CheckBox("audioOnly"));
-		add(new CheckBox("allowFontStyles"));
 		add(new CheckBox("closed"));
 		add(new TextField<String>("redirectURL"));
 		add(new CheckBox("waitForRecording"));
 		add(new CheckBox("allowRecording"));
+		add(new CheckBox("chatModerated"));
 
 		add(new CheckBox("hideTopBar"));
 		add(new CheckBox("chatHidden"));
@@ -175,7 +175,6 @@ public class RoomForm extends AdminBaseF
 		add(new CheckBox("hideScreenSharing"));
 		add(new CheckBox("hideWhiteboard"));
 		add(new CheckBox("showMicrophoneStatus"));
-		add(new CheckBox("chatModerated"));
 		add(new CheckBox("chatOpened"));
 		add(new CheckBox("filesOpened"));
 		add(new CheckBox("autoVideoSelect"));