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;
}
}