You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2017/09/02 14:21:42 UTC

openmeetings git commit: [OPENMEETINGS-1644] mute seems to work

Repository: openmeetings
Updated Branches:
  refs/heads/master d74a46a35 -> 9989606d6


[OPENMEETINGS-1644] mute seems to work


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

Branch: refs/heads/master
Commit: 9989606d6e0975f3057bfc66f919a87f9b90d661
Parents: d74a46a
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Sat Sep 2 21:21:33 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Sat Sep 2 21:21:33 2017 +0700

----------------------------------------------------------------------
 .../openmeetings/util/message/RoomMessage.java  |  1 +
 .../apache/openmeetings/web/room/RoomPanel.java | 16 ++++++-
 .../org/apache/openmeetings/web/room/room.js    | 48 ++++++++++++++------
 .../web/room/sidebar/RoomSidebar.java           | 21 +++++++++
 .../org/apache/openmeetings/web/room/wb/wb.js   |  4 +-
 5 files changed, 73 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/9989606d/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java
----------------------------------------------------------------------
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java
index 3e1cb0f..cc7eebc 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/message/RoomMessage.java
@@ -51,6 +51,7 @@ public class RoomMessage implements IWebSocketPushMessage {
 		, newStream
 		, closeStream
 		, audioActivity //user speaks
+		, mute
 	}
 	private final Date timestamp;
 	private final String uid;

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/9989606d/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index 0b05105..94974c7 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -114,9 +114,8 @@ public class RoomPanel extends BasePanel {
 	private static final String EVENT_DETAILS_ID = "event-details";
 	public enum Action {
 		kick
-		, settings
-		, refresh
 		, exclusive
+		, mute
 	}
 	private final Room r;
 	private final boolean isInterview;
@@ -593,6 +592,19 @@ public class RoomPanel extends BasePanel {
 						}
 					}
 						break;
+					case mute:
+					{
+						JSONObject obj = new JSONObject(((TextRoomMessage)m).getText());
+						Client c = getClientBySid(obj.getString("sid"));
+						if (c == null) {
+							log.error("Not existing user in mute {} !!!!", obj);
+							return;
+						}
+						if (!getClient().getUid().equals(c.getUid())) {
+							handler.appendJavaScript(String.format("if (typeof VideoManager !== 'undefined') {VideoManager.mute('%s', %s);}", obj.getString("uid"), obj.getBoolean("mute")));
+						}
+					}
+						break;
 				}
 			}
 		}

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/9989606d/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
index 54a3bca..6fc4233 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
@@ -137,7 +137,8 @@ var VideoUtil = (function() {
 	return self;
 })();
 var Video = (function() {
-	var self = {}, c, v, vc, t, f, swf, size, vol;
+	var self = {}, c, v, vc, t, f, swf, size, vol, slider, handle
+		, prevVolume = 0;
 
 	function _getName() {
 		return c.user.firstName + ' ' + c.user.lastName;
@@ -162,7 +163,7 @@ var Video = (function() {
 		vc.width(w).height(h);
 		swf.attr('width', w).attr('height', h);
 	}
-	function _handleVolume(handle, val) {
+	function _handleVolume(val) {
 		handle.text(val);
 		var ico = vol.find('.ui-icon');
 		if (val > 0 && ico.hasClass('ui-icon-volume-off')) {
@@ -188,6 +189,20 @@ var Video = (function() {
 			swf[0].setVolume(val);
 		}
 	}
+	function _mute(mute) {
+		if (!slider) {
+			return;
+		}
+		if (mute) {
+			prevVolume = slider.slider("option", "value");
+			slider.slider("option", "value", 0);
+			_handleVolume(0);
+		} else {
+			slider.slider("option", "value", prevVolume);
+			_handleVolume(prevVolume);
+			prevVolume = 0;
+		}
+	}
 	function _init(_c, _pos) {
 		c = _c;
 		pos = _pos;
@@ -237,8 +252,7 @@ var Video = (function() {
 				.append($('#video-volume-btn').children().clone())
 				.append($('#video-refresh-btn').children().clone());
 			var volume = v.parent().find('.dropdown-menu.video.volume');
-			let slider = v.parent().find('.slider');
-			let prevVolume = 0;
+			slider = v.parent().find('.slider');
 			if (opts.interview) {
 				v.parent().find('.ui-dialog-titlebar-collapse').hide();
 			}
@@ -249,29 +263,27 @@ var Video = (function() {
 				})
 				.click(function(e) {
 					e.stopImmediatePropagation();
-					if (prevVolume == 0) {
-						prevVolume = slider.slider("option", "value");
-						slider.slider("option", "value", 0);
-						_handleVolume(handle, 0);
-					} else {
-						slider.slider("option", "value", prevVolume);
-						_handleVolume(handle, prevVolume);
-						prevVolume = 0;
-					}
+					roomAction('mute', JSON.stringify({uid: c.cuid, mute: prevVolume == 0}));
+					_mute(prevVolume == 0);
+					volume.hide();
+					return false;
 				}).dblclick(function(e) {
 					e.stopImmediatePropagation();
+					return false;
 				});
 			let refresh = v.parent().find('.ui-dialog-titlebar-refresh')
 				.click(function(e) {
 					e.stopImmediatePropagation();
 					_refresh();
+					return false;
 				}).dblclick(function(e) {
 					e.stopImmediatePropagation();
+					return false;
 				});
 			volume.on('mouseleave', function() {
 				$(this).hide();
 			});
-			var handle = v.parent().find('.slider .handle');
+			handle = v.parent().find('.slider .handle');
 			slider.slider({
 				orientation: 'vertical'
 				, range: 'min'
@@ -342,6 +354,7 @@ var Video = (function() {
 
 	self.update = _update;
 	self.refresh = _refresh;
+	self.mute = _mute;
 	self.init = _init;
 	self.securityMode = _securityMode;
 	self.client = function() { return c; };
@@ -444,6 +457,12 @@ var VideoManager = (function() {
 			v.data().refresh(opts);
 		}
 	}
+	function _mute(uid, mute) {
+		var v = _find(uid);
+		if (v.length > 0) {
+			v.data().mute(mute);
+		}
+	}
 
 	self.getOptions = function() { return JSON.parse(JSON.stringify(options)); };
 	self.init = _init;
@@ -453,6 +472,7 @@ var VideoManager = (function() {
 	self.securityMode = function(uid, on) { $('#' + VideoUtil.getVid(uid)).data().securityMode(on); };
 	self.micActivity = _micActivity;
 	self.refresh = _refresh;
+	self.mute = _mute;
 	return self;
 })();
 function setRoomSizes() {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/9989606d/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
index b042bf6..d2a9ac6 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
@@ -21,6 +21,7 @@ package org.apache.openmeetings.web.room.sidebar;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.web.app.Application.getOnlineClient;
 import static org.apache.openmeetings.web.app.Application.getRoomClients;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
 import static org.apache.openmeetings.web.room.RoomBroadcaster.sendUpdatedClient;
 import static org.apache.openmeetings.web.util.CallbackFunctionHelper.getNamedFunction;
 import static org.apache.wicket.ajax.attributes.CallbackParameter.explicit;
@@ -28,12 +29,15 @@ import static org.apache.wicket.ajax.attributes.CallbackParameter.explicit;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.basic.Client.Activity;
 import org.apache.openmeetings.db.entity.basic.Client.Pod;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.room.Room.Right;
 import org.apache.openmeetings.db.entity.room.Room.RoomElement;
+import org.apache.openmeetings.util.message.RoomMessage;
+import org.apache.openmeetings.util.message.TextRoomMessage;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.WebSession;
 import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
@@ -146,6 +150,23 @@ public class RoomSidebar extends Panel {
 							}
 						}
 						break;
+					case mute:
+					{
+						JSONObject obj = uid.isEmpty() ? new JSONObject() : new JSONObject(uid);
+						Client _c = getOnlineClient(obj.getString("uid"));
+						if (_c == null || !_c.hasActivity(Activity.broadcastA)) {
+							return;
+						}
+						if (cl.hasRight(Right.moderator) || cl.getUid().equals(_c.getUid())) {
+							{
+								// basic checks, will throw in case of missing options
+								obj.getBoolean("mute");
+								obj.put("sid", cl.getSid());
+							}
+							WebSocketHelper.sendRoom(new TextRoomMessage(room.getRoom().getId(), getUserId(), RoomMessage.Type.mute, obj.toString()));
+						}
+					}
+						break;
 					default:
 				}
 			} catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/9989606d/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js
index 7deb579..ff7678f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/wb.js
@@ -1500,7 +1500,9 @@ $(function() {
 			if (m) {
 				switch(m.type) {
 					case "wb":
-						eval(m.func);
+						if (typeof WbArea !== 'undefined') {
+							eval(m.func);
+						}
 						break;
 				}
 			}