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/21 10:21:20 UTC

svn commit: r1740251 [2/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...

Added: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomClientPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomClientPanel.java?rev=1740251&view=auto
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomClientPanel.java (added)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomClientPanel.java Thu Apr 21 08:21:20 2016
@@ -0,0 +1,71 @@
+/*
+ * 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.sidebar;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.room.Room.RoomElement;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.app.Client;
+import org.apache.openmeetings.web.app.Client.Right;
+import org.apache.openmeetings.web.room.RoomPanel;
+import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.panel.Panel;
+
+public class RoomClientPanel extends Panel {
+	private static final long serialVersionUID = 1L;
+
+	public RoomClientPanel(String id, ListItem<Client> item, final RoomPanel room) {
+		super(id);
+		setRenderBodyOnly(true);
+		Client c = item.getModelObject();
+		item.setMarkupId(String.format("user%s", c.getUid()));
+		String status = null, statusTitle = null;
+		if (c.hasRight(Right.moderator)) {
+			status = "status-mod";
+			statusTitle = "679";
+		} else if (c.hasRight(Right.whiteBoard)) {
+			status = "status-wb";
+			statusTitle = "678";
+		} else {
+			status = "status-user";
+			statusTitle = "677";
+		}
+		add(new WebMarkupContainer("status").add(AttributeAppender.append("class", status), AttributeAppender.replace("title", getString(statusTitle))));
+		User u = getBean(UserDao.class).get(c.getUserId());
+		add(new Label("name", u.getFirstname() + " " + u.getLastname()));
+		add(AttributeAppender.append("data-userid", c.getUserId()));
+		WebMarkupContainer actions = new WebMarkupContainer("actions");
+		actions.add(new WebMarkupContainer("privateChat").setVisible(!room.getRoom().isHidden(RoomElement.Chat) && !getUserId().equals(c.getUserId())));
+		if (room.getClient() != null) {
+			actions.setVisible(room.getClient().hasRight(Right.moderator));
+			if (c.getUid().equals(room.getClient().getUid())) {
+				item.add(AttributeAppender.append("class", "current"));
+			}
+		} else {
+			actions.setVisible(false);
+		}
+		add(actions);
+	}
+}

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html?rev=1740251&r1=1740250&r2=1740251&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html Thu Apr 21 08:21:20 2016
@@ -25,23 +25,7 @@
 	<wicket:fragment wicket:id="user-panel">
 		<div class="user list">
 			<div wicket:id="user" class="user ui-corner-all ui-widget-content">
-				<span wicket:id="status" class="ui-icon align-right"></span>
-				<span class="ui-icon align-right clickable restart" wicket:message="title:610"></span>
-				<div wicket:id="name" class="user name"></div>
-				<span class="ui-icon align-right clickable audio-activity" wicket:message="title:372"></span>
-				<div wicket:id="actions" class="user actions">
-					<span class="ui-icon align-left clickable moderator-right" wicket:message="title:676"></span>
-					<span class="ui-icon align-left clickable wb-right" wicket:message="title:611"></span>
-					<span class="ui-icon align-left clickable screen-share-right" wicket:message="title:1067"></span>
-					<span class="ui-icon align-left clickable remote-control-right" wicket:message="title:1078"></span>
-					<span class="ui-icon align-left clickable audio-right" wicket:message="title:1604"></span>
-					<span class="ui-icon align-left clickable camera-right" wicket:message="title:683"></span>
-					<span class="ui-icon align-left clickable global-mute" wicket:message="title:1384"></span>
-					<span class="ui-icon align-left clickable exclsv-audio" wicket:message="title:1424"></span>
-					<span class="ui-icon align-left clickable kick" wicket:message="title:1213"></span>
-					<span wicket:id="privateChat" class="ui-icon align-right clickable private-chat" wicket:message="title:1493" onclick="startPrivateChat($(this));"></span>
-					<div class="clear"></div>
-				</div>
+				<div wicket:id="user"></div>
 			</div>
 		</div>
 	</wicket:fragment>

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java?rev=1740251&r1=1740250&r2=1740251&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java Thu Apr 21 08:21:20 2016
@@ -18,26 +18,18 @@
  */
 package org.apache.openmeetings.web.room.sidebar;
 
-import static org.apache.openmeetings.web.app.Application.getBean;
 import static org.apache.openmeetings.web.app.Application.getRoomUsers;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
-import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.List;
 
-import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.room.Room.RoomElement;
-import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.app.Client;
 import org.apache.openmeetings.web.app.Client.Right;
 import org.apache.openmeetings.web.room.RoomPanel;
-import org.apache.wicket.behavior.AttributeAppender;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.extensions.markup.html.tabs.ITab;
 import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.markup.html.panel.Fragment;
@@ -56,38 +48,12 @@ public class RoomSidebar extends Panel {
 	private final UploadDialog upload;
 	private final RoomFilePanel roomFiles;
 	private boolean showFiles;
-	private final ListView<RoomClient> users = new ListView<RoomClient>("user", new ArrayList<RoomClient>()) {
+	private final ListView<Client> users = new ListView<Client>("user", new ArrayList<Client>()) {
 		private static final long serialVersionUID = 1L;
 
 		@Override
-		protected void populateItem(ListItem<RoomClient> item) {
-			RoomClient rc = item.getModelObject();
-			item.setMarkupId(String.format("user%s", rc.c.getUid()));
-			String status = null, statusTitle = null;
-			if (rc.c.hasRight(Right.moderator)) {
-				status = "status-mod";
-				statusTitle = "679";
-			} else if (rc.c.hasRight(Right.whiteBoard)) {
-				status = "status-wb";
-				statusTitle = "678";
-			} else {
-				status = "status-user";
-				statusTitle = "677";
-			}
-			item.add(new WebMarkupContainer("status").add(AttributeAppender.append("class", status), AttributeAppender.replace("title", getString(statusTitle))));
-			item.add(new Label("name", rc.u.getFirstname() + " " + rc.u.getLastname()));
-			item.add(AttributeAppender.append("data-userid", rc.u.getId()));
-			WebMarkupContainer actions = new WebMarkupContainer("actions");
-			actions.add(new WebMarkupContainer("privateChat").setVisible(!room.getRoom().isHidden(RoomElement.Chat) && !getUserId().equals(rc.u.getId())));
-			if (room.getClient() != null) {
-				actions.setVisible(room.getClient().hasRight(Right.moderator));
-				if (rc.c.getUid().equals(room.getClient().getUid())) {
-					item.add(AttributeAppender.append("class", "current"));
-				}
-			} else {
-				actions.setVisible(false);
-			}
-			item.add(actions);
+		protected void populateItem(ListItem<Client> item) {
+			item.add(new RoomClientPanel("user", item, room));
 		}
 	};
 	
@@ -137,12 +103,19 @@ public class RoomSidebar extends Panel {
 		add(upload = new UploadDialog("upload", room, roomFiles));
 	}
 	
+	private ListView<Client> updateUsers() {
+		//TODO do we need sort??
+		users.getList().clear();
+		users.getList().addAll(getRoomUsers(room.getRoom().getId()));
+		return users;
+	}
+	
 	public class UserFragment extends Fragment {
 		private static final long serialVersionUID = 1L;
 
 		public UserFragment(String id, String markupId) {
 			super(id, markupId, RoomSidebar.this);
-			add(users.setList(getUsers()));
+			add(updateUsers());
 		}
 	}
 	
@@ -154,25 +127,6 @@ public class RoomSidebar extends Panel {
 			add(roomFiles);
 		}
 	}
-
-	private List<RoomClient> getUsers() {
-		List<RoomClient> list = new ArrayList<>();
-		for (Client cl : getRoomUsers(room.getRoom().getId())) {
-			list.add(new RoomClient(cl));
-		}
-		return list;
-	}
-	
-	static class RoomClient implements Serializable {
-		private static final long serialVersionUID = 1L;
-		private final Client c;
-		private final User u;
-		
-		RoomClient(Client c) {
-			this.c = c;
-			this.u = getBean(UserDao.class).get(c.getUserId());
-		}
-	}
 	
 	private void updateShowFiles() {
 		showFiles = !room.getRoom().isHidden(RoomElement.Files) && room.getClient().hasRight(Right.whiteBoard);
@@ -180,7 +134,7 @@ public class RoomSidebar extends Panel {
 	
 	public void updateUsers(IPartialPageRequestHandler handler) {
 		updateShowFiles();
-		users.setList(getUsers());
+		updateUsers();
 		handler.add(tabs);
 	}
 

Modified: openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css?rev=1740251&r1=1740250&r2=1740251&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/webapp/css/room.css Thu Apr 21 08:21:20 2016
@@ -52,11 +52,11 @@
 .room.menu.right .room.name {
 	font-weight: bold;
 }
-.room.menu.right .room.demo {
-}
-.room.menu.right .room.recording {
+.room.menu.right .room.name.screen {
 	color: red;
 }
+.room.menu.right .room.demo {
+}
 .room.menu.right .icon {
 	width: 30px;
 	height: 30px;
@@ -171,6 +171,7 @@
 }
 .room.sidebar.left .user.list .user.current {
 	font-weight: bold;
+	background: #00FF00;
 }
 .ui-dialog.video, .ui-dialog.video .ui-dialog-titlebar, .ui-dialog.video .video.ui-dialog-content {
 	padding: 0;

Modified: openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java?rev=1740251&r1=1740250&r2=1740251&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java (original)
+++ openmeetings/application/trunk/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java Thu Apr 21 08:21:20 2016
@@ -38,6 +38,7 @@ 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;
@@ -54,13 +55,8 @@ 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;
@@ -92,6 +88,8 @@ public class RoomWebService {
 	private ISessionManager sessionManager;
 	@Autowired
 	private RoomDao roomDao;
+	@Autowired
+	private ScopeApplicationAdapter appAdapter;
 
 	/**
 	 * Returns an Object of Type RoomsList which contains a list of
@@ -318,15 +316,7 @@ public class RoomWebService {
 
 				roomDao.update(room, userId);
 
-				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);
-					}
-				}
+				appAdapter.broadcastRoom(new RoomMessage(room.getId(),  userId,  RoomMessage.Type.roomClosed));
 
 				return new ServiceResult(1L, "Closed", Type.SUCCESS);
 			} else {