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/12/27 04:10:30 UTC

svn commit: r1776086 - in /openmeetings/application: branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/ branches/3.2.x/openmeetings-web/src/ma...

Author: solomax
Date: Tue Dec 27 04:10:30 2016
New Revision: 1776086

URL: http://svn.apache.org/viewvc?rev=1776086&view=rev
Log:
[OPENMEETINGS-1505] password is checked for the room invitation

Modified:
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.html
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.java
    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/room.js
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.html
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.java
    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/room.js
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html?rev=1776086&r1=1776085&r2=1776086&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html Tue Dec 27 04:10:30 2016
@@ -9,7 +9,7 @@
   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
@@ -25,10 +25,9 @@
 			<div wicket:id="info"></div>
 			<div wicket:id="player"></div>
 		</div>
-		<div wicket:id="i-pass"></div>
 	</div>
+	<div wicket:id="i-pass"></div>
 	<div wicket:id="panel-main" style="width: 100%; height: 100%;"></div>
 	<div wicket:id="access-denied"></div>
 </wicket:extend>
 </html>
-

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java?rev=1776086&r1=1776085&r2=1776086&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java Tue Dec 27 04:10:30 2016
@@ -64,6 +64,8 @@ public class HashPage extends BaseInited
 	private final VideoPlayer vp = new VideoPlayer("player", null);
 	private String errorKey = "invalid.hash";
 	private boolean error = true;
+	private MainPanel mp = null;
+	private RoomPanel rp = null;
 
 	public HashPage(PageParameters p) {
 		StringValue secure = p.get(HASH);
@@ -95,6 +97,10 @@ public class HashPage extends BaseInited
 				Room r = i.getRoom();
 				if (r != null) {
 					createRoom(r.getId());
+					if (i.isPasswordProtected() && rp != null) {
+						mp.getChat().setVisible(false);
+						rp.setOutputMarkupPlaceholderTag(true).setVisible(false);
+					}
 				}
 			}
 		} else if (!secure.isEmpty()) {
@@ -117,7 +123,7 @@ public class HashPage extends BaseInited
 			error = false;
 		}
 		add(recContainer.add(vi.setShowShare(false).setOutputMarkupPlaceholderTag(true),
-				vp.setOutputMarkupPlaceholderTag(true), new InvitationPasswordDialog("i-pass", this)));
+				vp.setOutputMarkupPlaceholderTag(true)), new InvitationPasswordDialog("i-pass", this));
 	}
 
 	private void createRoom(Long roomId) {
@@ -126,7 +132,9 @@ public class HashPage extends BaseInited
 		// need to re-fetch Room object to initialize all collections
 		Room room = getBean(RoomDao.class).get(roomId);
 		if (room != null) {
-			replace(new MainPanel(PANEL_MAIN, new RoomPanel(CHILD_ID, room)));
+			rp = new RoomPanel(CHILD_ID, room);
+			mp = new MainPanel(PANEL_MAIN, rp);
+			replace(mp);
 		}
 	}
 
@@ -158,8 +166,12 @@ public class HashPage extends BaseInited
 	@Override
 	public void update(AjaxRequestTarget target) {
 		Invitation i = WebSession.get().getInvitation();
-		target.add(vi.update(target, i.getRecording()).setVisible(true)
-				, vp.update(target, i.getRecording()).setVisible(true));
+		if (i.getRoom() != null && rp != null) {
+			rp.show(target);
+		} else if (i.getRecording() != null) {
+			target.add(vi.update(target, i.getRecording()).setVisible(true)
+					, vp.update(target, i.getRecording()).setVisible(true));
+		}
 	}
 
 	@Override

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.html?rev=1776086&r1=1776085&r2=1776086&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.html (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.html Tue Dec 27 04:10:30 2016
@@ -9,7 +9,7 @@
   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
@@ -23,7 +23,8 @@
 	<form wicket:id="form">
 		<div wicket:id="feedback"></div>
 		<label wicket:for="password"><wicket:message key="536"/></label>
-		<input wicket:id="password" type="password"/>
+		<input wicket:id="password" type="password" autofocus="autofocus"/>
+		<input type="submit" wicket:id="submit" class="invisible-form-component"/>
 	</form>
 </wicket:panel>
 </html>

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.java?rev=1776086&r1=1776085&r2=1776086&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.java Tue Dec 27 04:10:30 2016
@@ -27,6 +27,7 @@ import org.apache.openmeetings.web.app.A
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.IUpdatable;
 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.PasswordTextField;
@@ -63,6 +64,22 @@ public class InvitationPasswordDialog ex
 			}
 		});
 		add(form.add(password, feedback.setOutputMarkupId(true)));
+		AjaxButton ab = new AjaxButton("submit", form) { //FAKE button so "submit-on-enter" works as expected
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+				InvitationPasswordDialog.this.onSubmit(target);
+				InvitationPasswordDialog.this.close(target, null);
+			}
+
+			@Override
+			protected void onError(AjaxRequestTarget target, Form<?> form) {
+				InvitationPasswordDialog.this.onError(target);
+			}
+		};
+		form.add(ab);
+		form.setDefaultButton(ab);
 	}
 
 	@Override
@@ -76,6 +93,11 @@ public class InvitationPasswordDialog ex
 	}
 
 	@Override
+	public boolean isDefaultCloseEventEnabled() {
+		return false;
+	}
+
+	@Override
 	protected void onOpen(IPartialPageRequestHandler handler) {
 		password.setModelObject(null);
 	}
@@ -104,5 +126,4 @@ public class InvitationPasswordDialog ex
 	protected void onSubmit(AjaxRequestTarget target) {
 		comp.update(target);
 	}
-
 }

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=1776086&r1=1776085&r2=1776086&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 Tue Dec 27 04:10:30 2016
@@ -386,7 +386,7 @@ public class RoomPanel extends BasePanel
 							String uid = ((TextRoomMessage)m).getText();
 							if (getClient().getUid().equals(uid)) {
 								handler.add(room.setVisible(false));
-								//FIXME TODO chat still available for the client being kicked
+								getMainPanel().getChat().toggle(handler, false);
 								clientKicked.open(handler);
 							}
 						}
@@ -466,23 +466,33 @@ public class RoomPanel extends BasePanel
 	public BasePanel onMenuPanelLoad(IPartialPageRequestHandler handler) {
 		getBasePage().getHeader().setVisible(false);
 		getMainPanel().getTopControls().setVisible(false);
-		if (r.isHidden(RoomElement.Chat)) {
+		if (r.isHidden(RoomElement.Chat) || !isVisible()) {
 			getMainPanel().getChat().toggle(handler, false);
 		}
 		if (handler != null) {
 			handler.add(getBasePage().getHeader(), getMainPanel().getTopControls());
-			handler.appendJavaScript("roomLoad();");
+			if (isVisible()) {
+				handler.appendJavaScript("roomLoad();");
+			}
 		}
 		return this;
 	}
 
+	public void show(IPartialPageRequestHandler handler) {
+		if (!r.isHidden(RoomElement.Chat)) {
+			getMainPanel().getChat().toggle(handler, true);
+		}
+		handler.add(this.setVisible(true));
+		handler.appendJavaScript("roomLoad();");
+	}
+
 	@Override
 	public void cleanup(IPartialPageRequestHandler handler) {
 		handler.add(getBasePage().getHeader().setVisible(true), getMainPanel().getTopControls().setVisible(true));
 		if (r.isHidden(RoomElement.Chat)) {
 			getMainPanel().getChat().toggle(handler, true);
 		}
-		handler.appendJavaScript("roomUnload();");
+		handler.appendJavaScript("if (typeof roomUnload == 'function') { roomUnload(); }");
 		RoomMenuPanel.roomExit(getClient());
 		getMainPanel().getChat().roomExit(r, handler);
 	}
@@ -490,7 +500,7 @@ public class RoomPanel extends BasePanel
 	private static ResourceReference newResourceReference() {
 		return new JavaScriptResourceReference(RoomPanel.class, "room.js");
 	}
-	
+
 	@Override
 	public void renderHead(IHeaderResponse response) {
 		super.renderHead(response);

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js?rev=1776086&r1=1776085&r2=1776086&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js Tue Dec 27 04:10:30 2016
@@ -36,6 +36,7 @@ function roomReload(event, ui) {
 function roomClosed(jqEvent, msg) {
 	roomUnload();
 	$(".room.container").remove();
+	$("#chatPanel").remove();
 	var dlg = $('#disconnected-dlg');
 	dlg.dialog({
 		modal: true

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java?rev=1776086&r1=1776085&r2=1776086&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java Tue Dec 27 04:10:30 2016
@@ -217,7 +217,7 @@ public class ChatPanel extends BasePanel
 		if (r.isHidden(RoomElement.Chat)) {
 			return;
 		}
-		handler.appendJavaScript(String.format("removeChatTab('%1$s%2$d');", ID_ROOM_PREFIX, r.getId()));
+		handler.appendJavaScript(String.format("if (typeof removeChatTab == 'function') { removeChatTab('%1$s%2$d'); }", ID_ROOM_PREFIX, r.getId()));
 		if (!showDashboardChat) {
 			StringBuilder sb = new StringBuilder();
 			sb.append("$(function() {");
@@ -231,7 +231,9 @@ public class ChatPanel extends BasePanel
 		setVisible(visible);
 		if (handler != null) {
 			handler.add(this);
-			handler.appendJavaScript("reinit();");
+			if (visible) {
+				handler.appendJavaScript("reinit();");
+			}
 		}
 	}
 

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html?rev=1776086&r1=1776085&r2=1776086&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.html Tue Dec 27 04:10:30 2016
@@ -9,7 +9,7 @@
   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
@@ -25,10 +25,9 @@
 			<div wicket:id="info"></div>
 			<div wicket:id="player"></div>
 		</div>
-		<div wicket:id="i-pass"></div>
 	</div>
+	<div wicket:id="i-pass"></div>
 	<div wicket:id="panel-main" style="width: 100%; height: 100%;"></div>
 	<div wicket:id="access-denied"></div>
 </wicket:extend>
 </html>
-

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java?rev=1776086&r1=1776085&r2=1776086&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/HashPage.java Tue Dec 27 04:10:30 2016
@@ -64,6 +64,8 @@ public class HashPage extends BaseInited
 	private final VideoPlayer vp = new VideoPlayer("player", null);
 	private String errorKey = "invalid.hash";
 	private boolean error = true;
+	private MainPanel mp = null;
+	private RoomPanel rp = null;
 
 	public HashPage(PageParameters p) {
 		StringValue secure = p.get(HASH);
@@ -95,6 +97,10 @@ public class HashPage extends BaseInited
 				Room r = i.getRoom();
 				if (r != null) {
 					createRoom(r.getId());
+					if (i.isPasswordProtected() && rp != null) {
+						mp.getChat().setVisible(false);
+						rp.setOutputMarkupPlaceholderTag(true).setVisible(false);
+					}
 				}
 			}
 		} else if (!secure.isEmpty()) {
@@ -117,7 +123,7 @@ public class HashPage extends BaseInited
 			error = false;
 		}
 		add(recContainer.add(vi.setShowShare(false).setOutputMarkupPlaceholderTag(true),
-				vp.setOutputMarkupPlaceholderTag(true), new InvitationPasswordDialog("i-pass", this)));
+				vp.setOutputMarkupPlaceholderTag(true)), new InvitationPasswordDialog("i-pass", this));
 	}
 
 	private void createRoom(Long roomId) {
@@ -126,7 +132,9 @@ public class HashPage extends BaseInited
 		// need to re-fetch Room object to initialize all collections
 		Room room = getBean(RoomDao.class).get(roomId);
 		if (room != null) {
-			replace(new MainPanel(PANEL_MAIN, new RoomPanel(CHILD_ID, room)));
+			rp = new RoomPanel(CHILD_ID, room);
+			mp = new MainPanel(PANEL_MAIN, rp);
+			replace(mp);
 		}
 	}
 
@@ -158,8 +166,12 @@ public class HashPage extends BaseInited
 	@Override
 	public void update(AjaxRequestTarget target) {
 		Invitation i = WebSession.get().getInvitation();
-		target.add(vi.update(target, i.getRecording()).setVisible(true)
-				, vp.update(target, i.getRecording()).setVisible(true));
+		if (i.getRoom() != null && rp != null) {
+			rp.show(target);
+		} else if (i.getRecording() != null) {
+			target.add(vi.update(target, i.getRecording()).setVisible(true)
+					, vp.update(target, i.getRecording()).setVisible(true));
+		}
 	}
 
 	@Override

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.html
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.html?rev=1776086&r1=1776085&r2=1776086&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.html (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.html Tue Dec 27 04:10:30 2016
@@ -9,7 +9,7 @@
   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
@@ -23,7 +23,8 @@
 	<form wicket:id="form">
 		<div wicket:id="feedback"></div>
 		<label wicket:for="password"><wicket:message key="536"/></label>
-		<input wicket:id="password" type="password"/>
+		<input wicket:id="password" type="password" autofocus="autofocus"/>
+		<input type="submit" wicket:id="submit" class="invisible-form-component"/>
 	</form>
 </wicket:panel>
 </html>

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.java?rev=1776086&r1=1776085&r2=1776086&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/InvitationPasswordDialog.java Tue Dec 27 04:10:30 2016
@@ -27,6 +27,7 @@ import org.apache.openmeetings.web.app.A
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.IUpdatable;
 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.PasswordTextField;
@@ -63,6 +64,22 @@ public class InvitationPasswordDialog ex
 			}
 		});
 		add(form.add(password, feedback.setOutputMarkupId(true)));
+		AjaxButton ab = new AjaxButton("submit", form) { //FAKE button so "submit-on-enter" works as expected
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+				InvitationPasswordDialog.this.onSubmit(target);
+				InvitationPasswordDialog.this.close(target, null);
+			}
+
+			@Override
+			protected void onError(AjaxRequestTarget target, Form<?> form) {
+				InvitationPasswordDialog.this.onError(target);
+			}
+		};
+		form.add(ab);
+		form.setDefaultButton(ab);
 	}
 
 	@Override
@@ -76,6 +93,11 @@ public class InvitationPasswordDialog ex
 	}
 
 	@Override
+	public boolean isDefaultCloseEventEnabled() {
+		return false;
+	}
+
+	@Override
 	protected void onOpen(IPartialPageRequestHandler handler) {
 		password.setModelObject(null);
 	}
@@ -104,5 +126,4 @@ public class InvitationPasswordDialog ex
 	protected void onSubmit(AjaxRequestTarget target) {
 		comp.update(target);
 	}
-
 }

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1776086&r1=1776085&r2=1776086&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java Tue Dec 27 04:10:30 2016
@@ -389,7 +389,7 @@ public class RoomPanel extends BasePanel
 							String uid = ((TextRoomMessage)m).getText();
 							if (getClient().getUid().equals(uid)) {
 								handler.add(room.setVisible(false));
-								//FIXME TODO chat still available for the client being kicked
+								getMainPanel().getChat().toggle(handler, false);
 								clientKicked.open(handler);
 							}
 						}
@@ -469,23 +469,33 @@ public class RoomPanel extends BasePanel
 	public BasePanel onMenuPanelLoad(IPartialPageRequestHandler handler) {
 		getBasePage().getHeader().setVisible(false);
 		getMainPanel().getTopControls().setVisible(false);
-		if (r.isHidden(RoomElement.Chat)) {
+		if (r.isHidden(RoomElement.Chat) || !isVisible()) {
 			getMainPanel().getChat().toggle(handler, false);
 		}
 		if (handler != null) {
 			handler.add(getBasePage().getHeader(), getMainPanel().getTopControls());
-			handler.appendJavaScript("roomLoad();");
+			if (isVisible()) {
+				handler.appendJavaScript("roomLoad();");
+			}
 		}
 		return this;
 	}
 
+	public void show(IPartialPageRequestHandler handler) {
+		if (!r.isHidden(RoomElement.Chat)) {
+			getMainPanel().getChat().toggle(handler, true);
+		}
+		handler.add(this.setVisible(true));
+		handler.appendJavaScript("roomLoad();");
+	}
+
 	@Override
 	public void cleanup(IPartialPageRequestHandler handler) {
 		handler.add(getBasePage().getHeader().setVisible(true), getMainPanel().getTopControls().setVisible(true));
 		if (r.isHidden(RoomElement.Chat)) {
 			getMainPanel().getChat().toggle(handler, true);
 		}
-		handler.appendJavaScript("roomUnload();");
+		handler.appendJavaScript("if (typeof roomUnload == 'function') { roomUnload(); }");
 		RoomMenuPanel.roomExit(getClient());
 		getMainPanel().getChat().roomExit(r, handler);
 	}
@@ -493,7 +503,7 @@ public class RoomPanel extends BasePanel
 	private static ResourceReference newResourceReference() {
 		return new JavaScriptResourceReference(RoomPanel.class, "room.js");
 	}
-	
+
 	@Override
 	public void renderHead(IHeaderResponse response) {
 		super.renderHead(response);

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js?rev=1776086&r1=1776085&r2=1776086&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js Tue Dec 27 04:10:30 2016
@@ -76,6 +76,7 @@ function roomReload(event, ui) {
 function roomClosed(jqEvent, msg) {
 	roomUnload();
 	$(".room.container").remove();
+	$("#chatPanel").remove();
 	var dlg = $('#disconnected-dlg');
 	dlg.dialog({
 		modal: true

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java?rev=1776086&r1=1776085&r2=1776086&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/ChatPanel.java Tue Dec 27 04:10:30 2016
@@ -217,7 +217,7 @@ public class ChatPanel extends BasePanel
 		if (r.isHidden(RoomElement.Chat)) {
 			return;
 		}
-		handler.appendJavaScript(String.format("removeChatTab('%1$s%2$d');", ID_ROOM_PREFIX, r.getId()));
+		handler.appendJavaScript(String.format("if (typeof removeChatTab == 'function') { removeChatTab('%1$s%2$d'); }", ID_ROOM_PREFIX, r.getId()));
 		if (!showDashboardChat) {
 			StringBuilder sb = new StringBuilder();
 			sb.append("$(function() {");
@@ -231,7 +231,9 @@ public class ChatPanel extends BasePanel
 		setVisible(visible);
 		if (handler != null) {
 			handler.add(this);
-			handler.appendJavaScript("reinit();");
+			if (visible) {
+				handler.appendJavaScript("reinit();");
+			}
 		}
 	}