This is an automated email from the ASF dual-hosted git repository.
solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git
The following commit(s) were added to refs/heads/master by this push:
new f3b657f [OPENMEETINGS-2155] first step to implement 'windowless' audio
f3b657f is described below
commit f3b657fad9db8f2f6e9b9421898b8bdf99264920
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Wed Mar 18 23:02:14 2020 +0700
[OPENMEETINGS-2155] first step to implement 'windowless' audio
---
.../apache/openmeetings/web/app/ClientManager.java | 4 +-
.../web/common/tree/FileTreePanel.java | 10 +-
.../apache/openmeetings/web/room/RoomPanel.java | 53 +++++-
.../openmeetings/web/room/activities/activities.js | 2 +-
.../org/apache/openmeetings/web/room/raw-room.js | 206 +++++++++++++++++++--
.../openmeetings/web/room/raw-video-manager.js | 2 -
.../org/apache/openmeetings/web/room/raw-video.js | 2 +-
.../web/room/sidebar/ClientIconsPanel.html | 48 -----
.../web/room/sidebar/ClientIconsPanel.java | 74 --------
.../web/room/sidebar/RoomClientPanel.html | 42 -----
.../web/room/sidebar/RoomClientPanel.java | 88 ---------
.../openmeetings/web/room/sidebar/RoomSidebar.html | 59 +++++-
.../openmeetings/web/room/sidebar/RoomSidebar.java | 52 +-----
.../web/room/sidebar/SelfIconsPanel.html | 52 ------
.../web/room/sidebar/SelfIconsPanel.java | 60 ------
.../web/room/sidebar/icon/ClientIcon.java | 128 -------------
.../web/room/sidebar/icon/KickIcon.java | 54 ------
.../web/room/sidebar/icon/RefreshIcon.java | 62 -------
.../web/room/sidebar/icon/SettingsIcon.java | 43 -----
.../web/room/sidebar/icon/UserSpeaksIcon.java | 57 ------
.../sidebar/icon/activity/CamActivityIcon.java | 40 ----
.../sidebar/icon/activity/MicActivityIcon.java | 40 ----
.../sidebar/icon/activity/RoomActivityIcon.java | 62 -------
.../room/sidebar/icon/right/AudioRightIcon.java | 35 ----
.../sidebar/icon/right/ModeratorRightIcon.java | 35 ----
.../sidebar/icon/right/MuteOthersRightIcon.java | 35 ----
.../sidebar/icon/right/PresenterRightIcon.java | 43 -----
.../sidebar/icon/right/RemoteControlRightIcon.java | 40 ----
.../web/room/sidebar/icon/right/RoomRightIcon.java | 64 -------
.../sidebar/icon/right/ScreenShareRightIcon.java | 40 ----
.../room/sidebar/icon/right/VideoRightIcon.java | 40 ----
.../sidebar/icon/right/WhiteboardRightIcon.java | 50 -----
.../openmeetings/web/user/chat/ChatToolbar.html | 2 +-
.../openmeetings/web/user/chat/ChatToolbar.java | 4 +-
.../apache/openmeetings/web/user/chat/raw-chat.js | 4 +-
openmeetings-web/src/main/webapp/css/raw-room.css | 2 +
36 files changed, 306 insertions(+), 1328 deletions(-)
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
index 8163d2d..0157faf 100644
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
+++
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
@@ -34,11 +34,13 @@ import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import org.apache.openmeetings.core.remote.KurentoHandler;
+import org.apache.openmeetings.core.util.WebSocketHelper;
import org.apache.openmeetings.db.dao.log.ConferenceLogDao;
import org.apache.openmeetings.db.entity.basic.Client;
import org.apache.openmeetings.db.entity.log.ConferenceLog;
import org.apache.openmeetings.db.manager.IClientManager;
import org.apache.openmeetings.db.util.ws.RoomMessage;
+import org.apache.openmeetings.db.util.ws.TextRoomMessage;
import org.apache.wicket.util.collections.ConcurrentHashSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -134,7 +136,7 @@ public class ClientManager implements IClientManager {
Long roomId = c.getRoomId();
removeFromRoom(c);
if (roomId != null) {
- sendRoom(new RoomMessage(roomId, c,
RoomMessage.Type.ROOM_EXIT));
+ sendRoom(new TextRoomMessage(roomId, c,
RoomMessage.Type.ROOM_EXIT, c.getUid()));
confLogDao.add(
ConferenceLog.Type.ROOM_LEAVE
, c.getUserId(), "0", roomId
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
index 09a1a47..1082227 100644
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
+++
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
@@ -25,6 +25,8 @@ import static
org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
import static org.apache.openmeetings.web.common.BasePanel.EVT_CLICK;
+import static org.apache.openmeetings.web.pages.BasePage.ALIGN_LEFT;
+import static org.apache.openmeetings.web.pages.BasePage.ALIGN_RIGHT;
import java.io.File;
import java.nio.file.Path;
@@ -80,12 +82,10 @@ import
de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesome5I
public abstract class FileTreePanel extends Panel {
private static final long serialVersionUID = 1L;
- private static final String ALIGN_LEFT_CLASS = " align-left";
- private static final String ALIGN_RIGHT_CLASS = " align-right";
private static final String BASE_CLASS = " om-icon big clickable";
- private static final String UPLOAD_CLASS = "add" + BASE_CLASS +
ALIGN_LEFT_CLASS;
- private static final String CREATE_DIR_CLASS = "folder-create" +
BASE_CLASS + ALIGN_LEFT_CLASS;
- private static final String TRASH_CLASS = "trash" + BASE_CLASS +
ALIGN_RIGHT_CLASS;
+ private static final String UPLOAD_CLASS = "add" + BASE_CLASS +
ALIGN_LEFT;
+ private static final String CREATE_DIR_CLASS = "folder-create" +
BASE_CLASS + ALIGN_LEFT;
+ private static final String TRASH_CLASS = "trash" + BASE_CLASS +
ALIGN_RIGHT;
private static final String DISABLED_CLASS = " disabled";
final WebMarkupContainer trees = new
WebMarkupContainer("tree-container");
private final WebMarkupContainer sizes = new
WebMarkupContainer("sizes");
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 676587d..cf167ca 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
@@ -19,6 +19,7 @@
package org.apache.openmeetings.web.room;
import static java.time.Duration.ZERO;
+import static java.util.Comparator.naturalOrder;
import static
org.apache.openmeetings.core.util.ChatWebSocketHelper.ID_USER_PREFIX;
import static org.apache.openmeetings.web.app.WebSession.getDateFormat;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
@@ -29,6 +30,7 @@ import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Calendar;
+import java.util.Comparator;
import java.util.List;
import java.util.Map.Entry;
import java.util.Set;
@@ -138,6 +140,7 @@ public class RoomPanel extends BasePanel {
Client c = getClient();
JSONObject options =
VideoSettings.getInitJson(c.getSid())
.put("uid", c.getUid())
+ .put("userId", c.getUserId())
.put("rights",
c.toJson(true).getJSONArray("rights"))
.put("interview", interview)
.put("audioOnly", r.isAudioOnly())
@@ -149,8 +152,26 @@ public class RoomPanel extends BasePanel {
StringBuilder sb = new
StringBuilder("Room.init(").append(options.toString(new
NullStringer())).append(");")
.append(wb.getInitScript())
.append(getQuickPollJs());
+ if (c.hasRight(Room.Right.MODERATOR) ||
!r.isHidden(RoomElement.USER_COUNT)) {
+ List<Client> list = cm.listByRoom(r.getId());
+ list.sort(Comparator.<Client,
Integer>comparing(cl -> {
+ if (cl.hasRight(Room.Right.MODERATOR)) {
+ return 0;
+ }
+ if (cl.hasRight(Room.Right.PRESENTER)) {
+ return 1;
+ }
+ return 5;
+ }, naturalOrder())
+ .thenComparing(cl ->
cl.getUser().getDisplayName(), String::compareToIgnoreCase));
+ sb.append("Room.addClient([");
+ list.stream().forEach(cl ->
sb.append(cl.toJson(false).toString(new NullStringer())).append(","));
+ sb.deleteCharAt(sb.length() - 1).append("]);");
+
+ }
target.appendJavaScript(sb);
- WebSocketHelper.sendRoom(new RoomMessage(r.getId(), c,
RoomMessage.Type.ROOM_ENTER));
+
+ WebSocketHelper.sendRoom(new TextRoomMessage(r.getId(),
c, RoomMessage.Type.ROOM_ENTER, c.getUid()));
// play video from other participants
initVideos(target);
getMainPanel().getChat().roomEnter(r, target);
@@ -452,7 +473,7 @@ public class RoomPanel extends BasePanel {
return;
}
boolean self =
_c.getUid().equals(c.getUid());
-
handler.appendJavaScript(String.format("VideoManager.update(%s);"
+
handler.appendJavaScript(String.format("Room.updateClient(%s);"
,
c.toJson(self).toString(new NullStringer())));
sidebar.update(handler);
menu.update(handler);
@@ -461,14 +482,30 @@ public class RoomPanel extends BasePanel {
}
break;
case ROOM_ENTER:
- sidebar.update(handler);
- menu.update(handler);
- sidebar.addActivity(new
Activity(m, Activity.Type.roomEnter), handler);
+ {
+ sidebar.update(handler);
+ menu.update(handler);
+ String uid =
((TextRoomMessage)m).getText();
+ Client c = cm.get(uid);
+ if (c == null) {
+ log.error("Not
existing user in rightUpdated {} !!!!", uid);
+ return;
+ }
+ if
(c.hasRight(Room.Right.MODERATOR) || !r.isHidden(RoomElement.USER_COUNT)) {
+ boolean self =
_c.getUid().equals(c.getUid());
+
handler.appendJavaScript(String.format("Room.addClient([%s]);"
+
, c.toJson(self).toString(new NullStringer())));
+ }
+ sidebar.addActivity(new
Activity(m, Activity.Type.roomEnter), handler);
+ }
break;
case ROOM_EXIT:
- sidebar.update(handler);
- sidebar.addActivity(new
Activity(m, Activity.Type.roomExit), handler);
-
handler.appendJavaScript("Chat.removeTab('" + ID_USER_PREFIX + m.getUserId() +
"');");
+ {
+ String uid =
((TextRoomMessage)m).getText();
+ sidebar.update(handler);
+ sidebar.addActivity(new
Activity(m, Activity.Type.roomExit), handler);
+
handler.appendJavaScript("Room.removeClient('" + uid + "'); Chat.removeTab('" +
ID_USER_PREFIX + m.getUserId() + "');");
+ }
break;
case ROOM_CLOSED:
handler.add(room.setVisible(false));
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
index f0a083d..8126993 100644
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
+++
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/activities/activities.js
@@ -153,7 +153,7 @@ var Activities = function() {
const _id = _getId(obj.id);
(obj.action ? modArea :
area).append(OmUtil.tmpl('#activity-stub', _id).data(obj));
const a = $('#' + _id).addClass(obj.cssClass);
-
a.find('.activity-close,.activity-accept,.activity-decline,.activity-find').addClass(Settings.isRtl
? 'align-left' : 'align-right');
+
a.find('.activity-close,.activity-accept,.activity-decline,.activity-find').addClass('align-right');
const acpt = a.find('.activity-accept');
if (obj.accept) {
acpt.click(function() { _action('accept',
obj.id); });
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js
index f267c95..8c8a148 100644
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js
+++
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-room.js
@@ -187,10 +187,20 @@ var Room = (function() {
]
});
}
- function _hasRight(_rights) {
- const rights = Array.isArray(_rights) ? _rights : [];
+ function _hasRight(_inRights, _ref) {
+ const ref = _ref || options.rights;
+ let _rights;
+ if (Array.isArray(_inRights)) {
+ _rights = _inRights;
+ } else {
+ if ('SUPER_MODERATOR' === _inRights) {
+ return ref.includes(_inRights);
+ }
+ _rights = [_inRights];
+ }
+ const rights = ['SUPER_MODERATOR', 'MODERATOR', ..._rights];
for (let i = 0; i < rights.length; ++i) {
- if (options.rights.includes(rights[i])) {
+ if (ref.includes(rights[i])) {
return true;
}
}
@@ -199,7 +209,7 @@ var Room = (function() {
function _setQuickPollRights() {
const close = $('#quick-vote .close-btn');
if (close.length === 1) {
- if (_hasRight(['SUPER_MODERATOR', 'MODERATOR',
'PRESENTER'])) {
+ if (_hasRight(['PRESENTER'])) {
close.show();
if (typeof(close.data('bs.confirmation')) ===
'object') {
return;
@@ -248,17 +258,183 @@ var Room = (function() {
}
OmUtil.tmpl('#quick-vote-template', 'quick-vote');
}
+ function __activityAVIcon(c, elem, selector, predicate, onfunc,
disabledfunc) {
+ let icon = elem.find(selector);
+ if (predicate()) {
+ icon.show();
+ const on = onfunc()
+ , disabled = disabledfunc();;
+ if (disabled) {
+ icon.addClass('disabled');
+ } else {
+ icon.removeClass('disabled');
+ if (on) {
+ icon.addClass('enabled');
+ } else {
+ icon.removeClass('enabled');
+ }
+ }
+ icon.attr('title', icon.data(on ? 'off' :'on'));
+ } else {
+ icon.hide();
+ }
+ }
+ function __activityIcon(c, elem, selector, predicate, action) {
+ let icon = elem.find(selector);
+ if (predicate()) {
+ if (icon.length === 0) {
+ icon = OmUtil.tmpl('#user-actions-stub ' +
selector);
+ elem.append(icon);
+ }
+ icon.off().click(action);
+ } else {
+ icon.hide();
+ }
+ }
+ function __rightIcon(c, elem, rights, selector, predicate) {
+ const self = c.uid === options.uid
+ , hasRight = _hasRight(rights, c.rights);
+ let icon = elem.find(selector);
+ if (predicate() && !_hasRight('SUPER_MODERATOR', c.rights) && (
+ (self && options.questions && !hasRight)
+ || (!self && _hasRight('MODERATOR'))
+ )) {
+ if (icon.length === 0) {
+ icon = OmUtil.tmpl('#user-actions-stub ' +
selector);
+ elem.append(icon);
+ }
+ if (hasRight) {
+ icon.addClass('granted');
+ } else {
+ icon.removeClass('granted')
+ }
+ icon.attr('title', icon.data(self ? 'request' :
(hasRight ? 'revoke' : 'grant')));
+ icon.off().click(function() {
+ OmUtil.roomAction({action: 'toggleRight',
right: rights[0], uid: c.uid});
+ });
+ } else {
+ icon.remove();
+ }
+ }
+ function __rightAudioIcon(c, elem) {
+ __rightIcon(c, elem, ['AUDIO'], '.right.audio', () => true);
+ }
+ function __rightVideoIcon(c, elem) {
+ __rightIcon(c, elem, ['VIDEO'], '.right.camera', () =>
!options.audioOnly);
+ }
+ function __rightOtherIcons(c, elem) {
+ __rightIcon(c, elem, ['PRESENTER'], '.right.presenter', () =>
!options.interview && $('.wb-area').is(':visible'));
+ __rightIcon(c, elem, ['WHITEBOARD', 'PRESENTER'], '.right.wb',
() => !options.interview && $('.wb-area').is(':visible'));
+ __rightIcon(c, elem, ['SHARE'], '.right.screen-share', () =>
true); //FIXME TODO getRoomPanel().screenShareAllowed()
+ __rightIcon(c, elem, ['REMOTE_CONTROL'],
'.right.remote-control', () => true); //FIXME TODO
getRoomPanel().screenShareAllowed()
+ __rightIcon(c, elem, ['MODERRATOR'], '.right.moderator', () =>
true);
+ }
+ function __setStatus(c, le) {
+ const status = le.find('.user-status');
+ status.removeClass('mod wb user');
+ if (_hasRight('MODERATOR', c.rights)) {
+ status.attr('title',
status.data('mod')).addClass('mod');;
+ } else if (_hasRight('WHITEBOARD', c.rights)) {
+ status.attr('title', status.data('wb')).addClass('wb');;
+ } else {
+ status.attr('title',
status.data('user')).addClass('user');;
+ }
+ }
+ function __updateCount() {
+ $('#room-sidebar-users-tab
.user-count').text($('#room-sidebar-tab-users .user-list .users
.user.entry').length);
+ }
+ function _addClient(_clients) {
+ const clients = Array.isArray(_clients) ? _clients : [_clients];
+ clients.forEach(c => {
+ const self = c.uid === options.uid;
+ let le = $('#user' + c.uid);
+ if (le.length === 0) {
+ le = OmUtil.tmpl('#user-entry-stub', 'user' +
c.uid);
+ le.attr('id', 'user' + c.uid)
+ .attr('data-userid', c.user.id)
+ .attr('data-uid', c.uid);
+ if (self) {
+ le.addClass('current');
+ }
+ // FIXME TODO sort + .insertAfter(...)
+ $('#room-sidebar-tab-users .user-list
.users').append(le);
+ }
+ _updateClient(c);
+ });
+ __updateCount();
+ }
+ function _updateClient(c) {
+ const self = c.uid === options.uid
+ , le = $('#user' + c.uid)
+ , hasAudio = VideoUtil.hasAudio(c)
+ , hasVideo = VideoUtil.hasVideo(c)
+ , speaks = le.find('.audio-activity');
+ if (le.length === 0) {
+ return;
+ }
+ __setStatus(c, le);
+ //FIXME TODO move-on-change-order:
$('#nodeToMove').insertAfter('#insertAfterThisElement');
+ if (hasVideo || hasAudio) {
+ if (le.find('.restart').length === 0) {
+
le.prepend(OmUtil.tmpl('#user-av-restart').click(function () {
+ VideoManager.refresh(c.uid);
+ }));
+ }
+ } else {
+ le.find('.restart').remove();
+ }
+ speaks.hide().removeClass('clickable').attr('title',
speaks.data('speaks')).off();
+ if (hasAudio) {
+ speaks.show();
+ if(_hasRight('MUTE_OTHERS')) {
+ speaks.addClass('clickable').click(function () {
+ VideoManager.clickMuteOthers(c.uid);
+ }).attr('title', speaks.attr('title') +
speaks.data('mute'));
+ }
+ }
+ le.attr('title', c.user.displayName)
+ .css('background-image', 'url(' + c.user.pictureUri +
')')
+ .find('.user.name').text(c.user.displayName);
+
+ const actions = le.find('.user.actions');
+ __rightVideoIcon(c, actions);
+ __rightAudioIcon(c, actions);
+ __rightOtherIcons(c, actions);
+ __activityIcon(c, actions, '.kick'
+ , () => !self && _hasRight('MODERATOR') &&
!_hasRight('SUPER_MODERATOR', c.rights)
+ , function() { OmUtil.roomAction({action: 'kick', uid:
c.uid}); });
+ __activityIcon(c, actions, '.private-chat'
+ , () => options.userId !== c.user.id &&
$('#chatPanel').is(':visible')
+ , function() {
+ Chat.addTab('chatTab-u' + c.user.id,
c.user.displayName);
+ Chat.open();
+ $('#chatMessage
.wysiwyg-editor').click();
+ });
+ if (self) {
+ options.rights = c.rights;
+ _setQuickPollRights();
+ options.activities = c.activities;
+ const header = $('#room-sidebar-tab-users .header');
+ __rightVideoIcon(c, header);
+ __activityAVIcon(c, header, '.activity.cam', () =>
!options.audioOnly && _hasRight('VIDEO')
+ , () => hasVideo
+ , () => Settings.load().video.cam < 0);
+ __rightAudioIcon(c, header);
+ __activityAVIcon(c, header, '.activity.mic', () =>
_hasRight('AUDIO')
+ , () => hasAudio
+ , () => Settings.load().video.mic < 0);
+ __rightOtherIcons(c, header);
+ }
+ VideoManager.update(c)
+ }
+ function _removeClient(uid) {
+ $('#user' + uid).remove();
+ __updateCount();
+ }
self.init = _init;
self.getMenuHeight = function() { return menuHeight; };
self.getOptions = function() { return typeof(options) === 'object' ?
JSON.parse(JSON.stringify(options)) : {}; };
- self.setRights = function(_r) {
- options.rights = _r;
- _setQuickPollRights();
- };
- self.setActivities = function(_a) {
- options.activities = _a;
- };
self.load = _load;
self.unload = _unload;
self.showClipboard = _showClipboard;
@@ -267,13 +443,11 @@ var Room = (function() {
self.setCssVar = function(key, val) {
($('.main.room')[0]).style.setProperty(key, val);
};
+ self.addClient = _addClient;
+ self.updateClient = _updateClient;
+ self.removeClient = _removeClient;
return self;
})();
-function startPrivateChat(el) {
- Chat.addTab('chatTab-u' + el.parent().parent().data("userid"),
el.parent().parent().find('.user.name').text());
- Chat.open();
- $('#chatMessage .wysiwyg-editor').click();
-}
/***** functions required by SIP ******/
function sipBtnClick() {
const txt = $('.sip-number');
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js
index b63c059..7e3ac57 100644
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js
+++
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-manager.js
@@ -152,8 +152,6 @@ var VideoManager = (function() {
}
});
if (c.uid === Room.getOptions().uid) {
- Room.setRights(c.rights);
- Room.setActivities(c.activities);
const windows = $(VID_SEL + ' .ui-dialog-content');
for (let i = 0; i < windows.length; ++i) {
const w = $(windows[i]);
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
index 76a8de1..5fcc11c 100644
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
+++
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
@@ -440,7 +440,7 @@ var Video = (function() {
}
}
function _setRights() {
- if (Room.hasRight(['SUPER_MODERATOR', 'MODERATOR',
'MUTE_OTHERS']) && VideoUtil.hasAudio(sd)) {
+ if (Room.hasRight(['MUTE_OTHERS']) && VideoUtil.hasAudio(sd)) {
muteOthers.addClass('enabled').click(function() {
VideoManager.clickMuteOthers(sd.uid);
});
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/ClientIconsPanel.html
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/ClientIconsPanel.html
deleted file mode 100644
index 35e3321..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/ClientIconsPanel.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<!DOCTYPE html>
-<html xmlns:wicket="http://wicket.apache.org">
-<wicket:panel>
- <span wicket:id="right-video">
- <i class="fas"/>
- </span>
- <span wicket:id="right-audio">
- <i class="fas"/>
- </span>
- <span wicket:id="right-presenter">
- <i class="fas"/>
- </span>
- <span wicket:id="right-wb">
- <i class="fas"/>
- </span>
- <span wicket:id="right-screen-share">
- <i class="fas"/>
- </span>
- <span wicket:id="right-remote-control">
- <i class="fas"/>
- </span>
- <span wicket:id="right-mute-others">
- <i class="fas"/>
- </span>
- <span wicket:id="right-moder">
- <i class="fas"/>
- </span>
-</wicket:panel>
-</html>
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/ClientIconsPanel.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/ClientIconsPanel.java
deleted file mode 100644
index 814001a..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/ClientIconsPanel.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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 org.apache.openmeetings.web.room.sidebar.icon.right.AudioRightIcon;
-import org.apache.openmeetings.web.room.sidebar.icon.right.ModeratorRightIcon;
-import org.apache.openmeetings.web.room.sidebar.icon.right.MuteOthersRightIcon;
-import org.apache.openmeetings.web.room.sidebar.icon.right.PresenterRightIcon;
-import
org.apache.openmeetings.web.room.sidebar.icon.right.RemoteControlRightIcon;
-import
org.apache.openmeetings.web.room.sidebar.icon.right.ScreenShareRightIcon;
-import org.apache.openmeetings.web.room.sidebar.icon.right.VideoRightIcon;
-import org.apache.openmeetings.web.room.sidebar.icon.right.WhiteboardRightIcon;
-import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-import org.apache.wicket.markup.html.panel.Panel;
-
-public class ClientIconsPanel extends Panel {
- private static final long serialVersionUID = 1L;
- private final ModeratorRightIcon rightModer;
- private final WhiteboardRightIcon rightWb;
- private final PresenterRightIcon rightPresenter;
- private final ScreenShareRightIcon rightScreen;
- private final RemoteControlRightIcon rightRemote;
- private final AudioRightIcon rightAudio;
- private final VideoRightIcon rightVideo;
- private final MuteOthersRightIcon rightMuteOthers;
-
- public ClientIconsPanel(String id, String uid) {
- super(id);
- setOutputMarkupId(true);
- setOutputMarkupPlaceholderTag(true);
- add(rightModer = new ModeratorRightIcon("right-moder", uid));
- add(rightPresenter = new PresenterRightIcon("right-presenter",
uid));
- add(rightWb = new WhiteboardRightIcon("right-wb", uid));
- add(rightScreen = new
ScreenShareRightIcon("right-screen-share", uid));
- add(rightRemote = new
RemoteControlRightIcon("right-remote-control", uid));
- add(rightAudio = new AudioRightIcon("right-audio", uid));
- add(rightVideo = new VideoRightIcon("right-video", uid));
- add(rightMuteOthers = new
MuteOthersRightIcon("right-mute-others", uid));
- }
-
- @Override
- protected void onInitialize() {
- super.onInitialize();
- update(null);
- }
-
- public ClientIconsPanel update(IPartialPageRequestHandler handler) {
- rightModer.update(handler);
- rightPresenter.update(handler);
- rightWb.update(handler);
- rightScreen.update(handler);
- rightRemote.update(handler);
- rightAudio.update(handler);
- rightVideo.update(handler);
- rightMuteOthers.update(handler);
- return this;
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomClientPanel.html
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomClientPanel.html
deleted file mode 100644
index 63f42cf..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomClientPanel.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
-
--->
-<!DOCTYPE html>
-<html xmlns:wicket="http://wicket.apache.org">
-<wicket:panel>
- <span wicket:id="status" class="om-icon user-status"></span>
- <span wicket:id="refresh"></span>
- <span class="align-right typing-activity">
- <i class="fas fa-pen-fancy"></i>
- </span>
- <div wicket:id="name" class="user name"></div>
- <span wicket:id="user-speaks"></span>
- <div wicket:id="actions" class="user actions">
- <span wicket:id="icons"></span>
- <div wicket:id="kick">
- <i class="fas fa-ban text-danger"></i>
- </div>
- <span wicket:id="privateChat" class="om-icon align-right
clickable private-chat" wicket:message="title:1493"
onclick="startPrivateChat($(this));">
- <i class="fas fa-edit"></i>
- </span>
- <div class="clear"></div>
- </div>
-</wicket:panel>
-</html>
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomClientPanel.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomClientPanel.java
deleted file mode 100644
index d31d203..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomClientPanel.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * 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.util.OpenmeetingsVariables.ATTR_CLASS;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_TITLE;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import static org.apache.openmeetings.web.pages.BasePage.ALIGN_LEFT;
-import static org.apache.openmeetings.web.pages.BasePage.ALIGN_RIGHT;
-
-import org.apache.openmeetings.db.entity.basic.Client;
-import org.apache.openmeetings.db.entity.room.Room.Right;
-import org.apache.openmeetings.db.entity.room.Room.RoomElement;
-import org.apache.openmeetings.web.pages.BasePage;
-import org.apache.openmeetings.web.room.RoomPanel;
-import org.apache.openmeetings.web.room.sidebar.icon.KickIcon;
-import org.apache.openmeetings.web.room.sidebar.icon.RefreshIcon;
-import org.apache.openmeetings.web.room.sidebar.icon.UserSpeaksIcon;
-import org.apache.wicket.AttributeModifier;
-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, item.getModel());
- setRenderBodyOnly(true);
- Client c = item.getModelObject();
- final String uid = c.getUid();
- item.setMarkupId(String.format("user%s", c.getUid()));
- item.add(AttributeModifier.append("style",
String.format("background-image: url(%s);", c.getPictureUri())));
- item.add(AttributeModifier.append("data-userid",
c.getUserId()));
- add(new RefreshIcon("refresh", uid));
- final String name = c.getUser().getDisplayName();
- add(new Label("name", name));
- add(new UserSpeaksIcon("user-speaks", uid));
- item.add(AttributeModifier.replace(ATTR_TITLE, name));
- WebMarkupContainer actions = new WebMarkupContainer("actions");
- actions.add(new KickIcon("kick", uid));
- actions.add(new
WebMarkupContainer("privateChat").setVisible(!room.getRoom().isHidden(RoomElement.CHAT)
&& !getUserId().equals(c.getUserId())));
- actions.setVisible(room.getClient().hasRight(Right.MODERATOR));
- if (c.getUid().equals(room.getClient().getUid())) {
- actions.add(new SelfIconsPanel("icons", uid, false));
- item.add(AttributeModifier.append(ATTR_CLASS,
"current"));
- } else {
- actions.add(new ClientIconsPanel("icons", uid));
- }
- add(actions);
- }
-
- @Override
- protected void onInitialize() {
- super.onInitialize();
- Client c = (Client)getDefaultModelObject();
- String status, statusTitle;
- if (c.hasRight(Right.MODERATOR)) {
- status = "mod";
- statusTitle = "679";
- } else if (c.hasRight(Right.WHITEBOARD) ||
c.hasRight(Right.PRESENTER)) {
- status = "wb";
- statusTitle = "678";
- } else {
- status = "user";
- statusTitle = "677";
- }
- status = String.format("%s %s", status,
((BasePage)getPage()).isRtl() ? ALIGN_LEFT : ALIGN_RIGHT);
- add(new
WebMarkupContainer("status").add(AttributeModifier.append(ATTR_CLASS, status),
AttributeModifier.replace(ATTR_TITLE, getString(statusTitle))));
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html
index 7d6f8ad..cf4eb35 100644
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html
+++
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html
@@ -26,7 +26,7 @@
<li class="nav-item">
<a href="#room-sidebar-tab-users"
class="nav-link active om-icon big tab user" id="room-sidebar-users-tab"
data-toggle="tab" role="tab" aria-controls="room-sidebar-tab-users"
wicket:message="title:398">
<i class="fas fa-users"></i>
- <span class="label"><wicket:message
key="398"/> </span><span wicket:id="user-count" class="badge
badge-info">42</span>
+ <span class="label"><wicket:message
key="398"/> </span><span class="badge badge-info user-count">42</span>
</a>
</li>
<li class="nav-item" wicket:enclosure="file-tab">
@@ -42,12 +42,13 @@
</ul>
<div class="tab-content">
<div id="room-sidebar-tab-users" class="tab-pane fade
show active" role="tabpanel" aria-labelledby="room-sidebar-users-tab">
- <div wicket:id="icons" class="header"></div>
+ <div class="header">
+ <span class="om-icon align-left
settings clickable" onclick="VideoSettings.open();"
wicket:message="title:306"></span>
+ <span class="om-icon align-left
activity cam clickable" onclick="VideoManager.toggleActivity('VIDEO');"
wicket:message="data-on:camera.on,data-off:camera.off"></span>
+ <span class="om-icon align-left
activity mic bumper clickable" onclick="VideoManager.toggleActivity('AUDIO');"
wicket:message="data-on:microphone.on,data-off:microphone.off"></span>
+ </div>
<div class="user-list clear"> <!--
auto-scrollable -->
- <div wicket:id="user-list"> <!--
content -->
- <div wicket:id="user"
class="user entry">
- <div
wicket:id="user"></div>
- </div>
+ <div class="users"> <!-- content -->
</div>
</div>
</div>
@@ -61,5 +62,51 @@
<div wicket:id="upload"></div>
<div wicket:id="confirm-kick" />
<div wicket:id="settings" />
+ <div hidden="hidden">
+ <div id="user-entry-stub" class="user entry clearfix" >
+ <span class="om-icon user-status align-right "
wicket:message="data-mod:679,data-wb:678,data-user:677"></span>
+ <span class="align-right typing-activity">
+ <i class="fas fa-pen-fancy"></i>
+ </span>
+ <div class="user name"></div>
+ <span class="om-icon audio-activity"
wicket:message="data-speaks:ulist.user.speaks,data-mute:ulist.user.muteothers"></span>
+ <div class="user actions clearfix">
+ </div>
+ </div>
+ <div id="user-av-restart">
+ <span class="om-icon align-right restart clickable"
wicket:message="title:lbl.refresh">
+ <i class="fas fa-sync-alt"></i>
+ </span>
+ </div>
+ <div id="user-actions-stub">
+ <span class="om-icon align-left right camera clickable"
wicket:message="data-request:ulist.right.video.request,data-revoke:ulist.right.video.revoke,data-grant:ulist.right.video.grant">
+ <i class="fas"></i>
+ </span>
+ <span class="om-icon align-left right audio bumper
clickable"
wicket:message="data-request:ulist.right.audio.request,data-revoke:ulist.right.audio.revoke,data-grant:ulist.right.audio.grant">
+ <i class="fas"></i>
+ </span>
+ <span class="om-icon align-left right presenter bumper
clickable"
wicket:message="data-request:ulist.right.presenter.request,data-revoke:ulist.right.presenter.revoke,data-grant:ulist.right.presenter.grant">
+ <i class="fas"></i>
+ </span>
+ <span class="om-icon align-left right wb bumper
clickable"
wicket:message="data-request:ulist.right.wb.request,data-revoke:ulist.right.wb.revoke,data-grant:ulist.right.wb.grant">
+ <i class="fas"></i>
+ </span>
+ <span class="om-icon align-left right screen-share
bumper clickable"
wicket:message="data-request:ulist.right.share.request,data-revoke:ulist.right.share.revoke,data-grant:ulist.right.share.grant">
+ <i class="fas"></i>
+ </span>
+ <span class="om-icon align-left right remote-control
bumper clickable"
wicket:message="data-request:ulist.right.remote.request,data-revoke:ulist.right.remote.revoke,data-grant:ulist.right.remote.grant">
+ <i class="fas"></i>
+ </span>
+ <span class="om-icon align-left right moderator bumper
clickable"
wicket:message="data-request:ulist.right.moderator.request,data-revoke:ulist.right.moderator.revoke,data-grant:ulist.right.moderator.grant">
+ <i class="fas"></i>
+ </span>
+ <span class="om-icon align-left kick bumper clickable"
wicket:message="title:603">
+ <i class="fas fa-ban text-danger"></i>
+ </span>
+ <span class="om-icon align-right private-chat
clickable" wicket:message="title:1493">
+ <i class="fas fa-edit"></i>
+ </span>
+ </div>
+ </div>
</wicket:panel>
</html>
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 7531f66..567f63d 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
@@ -18,14 +18,10 @@
*/
package org.apache.openmeetings.web.room.sidebar;
-import static java.util.Comparator.naturalOrder;
import static org.apache.openmeetings.web.app.Application.kickUser;
import static
org.apache.openmeetings.web.util.CallbackFunctionHelper.getNamedFunction;
import static org.apache.wicket.ajax.attributes.CallbackParameter.explicit;
-import java.util.Comparator;
-import java.util.List;
-
import org.apache.openmeetings.core.remote.StreamProcessor;
import org.apache.openmeetings.core.util.WebSocketHelper;
import org.apache.openmeetings.db.entity.basic.Client;
@@ -50,12 +46,7 @@ import
org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.PriorityHeaderItem;
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.Panel;
-import org.apache.wicket.model.LoadableDetachableModel;
-import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.apache.wicket.util.string.StringValue;
@@ -76,48 +67,13 @@ public class RoomSidebar extends Panel {
private final RoomPanel room;
private UploadDialog upload;
private RoomFilePanel roomFiles;
- private final WebMarkupContainer userList = new
WebMarkupContainer("user-list");
private final WebMarkupContainer fileTab = new
WebMarkupContainer("file-tab");
- private final SelfIconsPanel selfRights;
private ConfirmationDialog confirmKick;
private boolean showFiles;
private boolean avInited = false;
private Client kickedClient;
private VideoSettings settings = new VideoSettings("settings");
private ActivitiesPanel activities;
- private final ListView<Client> users = new ListView<>("user", new
LoadableDetachableModel<List<Client>>() {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected List<Client> load() {
- Client self = room.getClient();
- List<Client> list;
- if (!self.hasRight(Room.Right.MODERATOR) &&
room.getRoom().isHidden(RoomElement.USER_COUNT)) {
- list = List.of(self);
- } else {
- list = cm.listByRoom(room.getRoom().getId());
- list.sort(Comparator.<Client,
Integer>comparing(c -> {
- if
(c.hasRight(Room.Right.MODERATOR)) {
- return 0;
- }
- if
(c.hasRight(Room.Right.PRESENTER)) {
- return 1;
- }
- return 5;
- }, naturalOrder())
- .thenComparing(c ->
c.getUser().getDisplayName(), String::compareToIgnoreCase));
- }
- userCount.setDefaultModelObject(list.size());
- return list;
- }
- }) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(ListItem<Client> item) {
- item.add(new RoomClientPanel("user", item, room));
- }
- };
private final AbstractDefaultAjaxBehavior avSettings = new
AbstractDefaultAjaxBehavior() {
private static final long serialVersionUID = 1L;
@@ -139,7 +95,6 @@ public class RoomSidebar extends Panel {
}
}
};
- private final Label userCount = new Label("user-count", Model.of(""));
@SpringBean
private ClientManager cm;
@@ -149,7 +104,6 @@ public class RoomSidebar extends Panel {
public RoomSidebar(String id, final RoomPanel room) {
super(id);
this.room = room;
- selfRights = new SelfIconsPanel("icons", room.getUid(), true);
}
@Override
@@ -165,10 +119,9 @@ public class RoomSidebar extends Panel {
}
};
roomFiles = new RoomFilePanel("tree", room, addFolder);
- add(selfRights, userList.add(users).setOutputMarkupId(true)
- , fileTab.setVisible(!room.isInterview()),
roomFiles.setVisible(!room.isInterview()));
+ add(fileTab.setVisible(!room.isInterview()),
roomFiles.setVisible(!room.isInterview()));
- add(addFolder, settings, userCount.setOutputMarkupId(true));
+ add(addFolder, settings);
add(avSettings);
add(confirmKick = new ConfirmationDialog("confirm-kick", new
ResourceModel("603"), new ResourceModel("605")) {
private static final long serialVersionUID = 1L;
@@ -202,7 +155,6 @@ public class RoomSidebar extends Panel {
return;
}
updateShowFiles(handler);
- handler.add(selfRights.update(handler), userList, userCount);
}
public void updateFiles(IPartialPageRequestHandler handler) {
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/SelfIconsPanel.html
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/SelfIconsPanel.html
deleted file mode 100644
index e92efc8..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/SelfIconsPanel.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- 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.
--->
-<!DOCTYPE html>
-<html xmlns:wicket="http://wicket.apache.org">
-<wicket:panel>
- <span wicket:id="settings"></span>
- <span wicket:id="right-video">
- <i class="fas"/>
- </span>
- <span wicket:id="cam"></span>
- <span wicket:id="right-audio">
- <i class="fas"/>
- </span>
- <span wicket:id="mic"></span>
- <span wicket:id="right-presenter">
- <i class="fas"/>
- </span>
- <span wicket:id="right-wb">
- <i class="fas"/>
- </span>
- <span wicket:id="right-screen-share">
- <i class="fas"/>
- </span>
- <span wicket:id="right-remote-control">
- <i class="fas"/>
- </span>
- <span wicket:id="right-mute-others">
- <i class="fas"/>
- </span>
- <span wicket:id="right-moder">
- <i class="fas"/>
- </span>
- <div class="clear"></div>
-</wicket:panel>
-</html>
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/SelfIconsPanel.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/SelfIconsPanel.java
deleted file mode 100644
index daea549..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/SelfIconsPanel.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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 org.apache.openmeetings.web.room.sidebar.icon.SettingsIcon;
-import org.apache.openmeetings.web.room.sidebar.icon.activity.CamActivityIcon;
-import org.apache.openmeetings.web.room.sidebar.icon.activity.MicActivityIcon;
-import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-
-public class SelfIconsPanel extends ClientIconsPanel {
- private static final long serialVersionUID = 1L;
- private final SettingsIcon settings;
- private final CamActivityIcon cam;
- private final MicActivityIcon mic;
- private final boolean header;
-
- public SelfIconsPanel(String id, String uid, boolean header) {
- super(id, uid);
- this.header = header;
- add(settings = new SettingsIcon("settings", uid)
- , cam = new CamActivityIcon("cam", uid)
- , mic = new MicActivityIcon("mic", uid));
- }
-
- @Override
- protected void onInitialize() {
- super.onInitialize();
- update(null);
- if (header) {
- //This is required to avoid initial displaying of all
icons
- setVisible(false);
- }
- }
-
- @Override
- public ClientIconsPanel update(IPartialPageRequestHandler handler) {
- setVisible(true);
- super.update(handler);
- settings.update(handler);
- cam.update(handler);
- mic.update(handler);
- return this;
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/ClientIcon.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/ClientIcon.java
deleted file mode 100644
index 8e0368a..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/ClientIcon.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * 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.icon;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_TITLE;
-import static org.apache.openmeetings.web.pages.BasePage.ALIGN_LEFT;
-import static org.apache.openmeetings.web.pages.BasePage.ALIGN_RIGHT;
-import static
org.apache.openmeetings.web.util.CallbackFunctionHelper.addOnClick;
-
-import org.apache.openmeetings.db.entity.basic.Client;
-import org.apache.openmeetings.db.entity.room.Room;
-import org.apache.openmeetings.db.entity.room.Room.Right;
-import org.apache.openmeetings.web.app.ClientManager;
-import org.apache.openmeetings.web.pages.BasePage;
-import org.apache.openmeetings.web.room.RoomPanel;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.spring.injection.annot.SpringBean;
-
-public abstract class ClientIcon extends WebMarkupContainer {
- protected static final String FUNC_ACTION = "OmUtil.roomAction";
- private static final long serialVersionUID = 1L;
- protected static final String ICON_CLASS = "om-icon ";
- protected static final String CLS_CLICKABLE = "clickable ";
- private boolean self;
- protected final String uid;
- protected String mainCssClass;
- protected final StringBuilder cssClass = new StringBuilder(ICON_CLASS);
- @SpringBean
- private ClientManager cm;
-
- public ClientIcon(String id, String uid) {
- super(id);
- this.uid = uid;
- setOutputMarkupId(true);
- setOutputMarkupPlaceholderTag(true);
- }
-
- @Override
- protected void onInitialize() {
- super.onInitialize();
- Client rc = getRoomClient();
- self = rc != null && rc.getUid().equals(uid);
- update(null);
- }
-
- protected abstract String getTitle();
-
- protected String getAlign() {
- return ((BasePage)getPage()).isRtl() ? ALIGN_RIGHT : ALIGN_LEFT;
- }
-
- protected abstract boolean isClickable();
-
- protected abstract String getScript();
-
- protected void internalUpdate() {
- }
-
- public final void update(IPartialPageRequestHandler handler) {
- cssClass.setLength(0);
- StringBuilder cls = new StringBuilder(ICON_CLASS);
- cls.append(getAlign()).append(mainCssClass);
- if (isClickable()) {
- //request/remove
- cls.append(CLS_CLICKABLE);
- add(addOnClick(getScript()));
- } else {
- add(addOnClick(""));
- }
- internalUpdate();
- add(AttributeModifier.replace(ATTR_TITLE, getTitle()));
- add(AttributeModifier.replace(ATTR_CLASS,
cls.append(cssClass)));
- if (handler != null) {
- handler.add(this);
- }
- }
-
- protected Client getClient() {
- return cm.get(uid);
- }
-
- protected boolean hasRight(Right right) {
- Client c = getClient();
- return c != null && c.hasRight(right);
- }
-
- protected boolean roomHasRight(Right right) {
- Client rc = getRoomClient();
- return rc != null && rc.hasRight(right);
- }
-
- protected Client getRoomClient() {
- RoomPanel rp = getRoomPanel();
- return rp == null ? null : rp.getClient();
- }
-
- protected RoomPanel getRoomPanel() {
- return findParent(RoomPanel.class);
- }
-
- protected Room getRoom() {
- RoomPanel rp = getRoomPanel();
- return rp == null ? null : rp.getRoom();
- }
-
- public boolean isSelf() {
- return self;
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/KickIcon.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/KickIcon.java
deleted file mode 100644
index b9c5e6f..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/KickIcon.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.icon;
-
-import org.apache.openmeetings.db.entity.basic.Client;
-import org.apache.openmeetings.db.entity.room.Room.Right;
-import org.apache.openmeetings.web.room.RoomPanel.Action;
-
-public class KickIcon extends ClientIcon {
- private static final long serialVersionUID = 1L;
-
- public KickIcon(String id, String uid) {
- super(id, uid);
- mainCssClass = "kick ";
- }
-
- @Override
- protected String getTitle() {
- return getString("603");
- }
-
- @Override
- protected boolean isClickable() {
- return !isSelf() && roomHasRight(Right.MODERATOR) &&
!hasRight(Right.SUPER_MODERATOR);
- }
-
- @Override
- protected String getScript() {
- Client c = getClient();
- return c == null ? "" : String.format("%s({action: '%s', uid:
'%s'});", FUNC_ACTION, Action.kick.name(), c.getUid());
- }
-
- @Override
- public void internalUpdate() {
- super.internalUpdate();
- setVisible(isClickable());
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/RefreshIcon.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/RefreshIcon.java
deleted file mode 100644
index b19134e..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/RefreshIcon.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.icon;
-
-import static org.apache.openmeetings.web.pages.BasePage.ALIGN_LEFT;
-import static org.apache.openmeetings.web.pages.BasePage.ALIGN_RIGHT;
-
-import org.apache.openmeetings.db.entity.basic.Client;
-import org.apache.openmeetings.db.entity.basic.Client.Activity;
-import org.apache.openmeetings.web.pages.BasePage;
-
-public class RefreshIcon extends ClientIcon {
- private static final long serialVersionUID = 1L;
-
- public RefreshIcon(String id, String uid) {
- super(id, uid);
- mainCssClass = "restart ui-icon-refresh ";
- }
-
- @Override
- protected String getTitle() {
- return getString("lbl.refresh");
- }
-
- @Override
- protected String getAlign() {
- return ((BasePage)getPage()).isRtl() ? ALIGN_LEFT : ALIGN_RIGHT;
- }
-
- @Override
- protected boolean isClickable() {
- final Client c = getClient();
- return c != null && (c.hasActivity(Activity.AUDIO) ||
c.hasActivity(Activity.VIDEO));
- }
-
- @Override
- protected String getScript() {
- return String.format("VideoManager.refresh('%s');", uid);
- }
-
- @Override
- public void internalUpdate() {
- super.internalUpdate();
- setVisible(isClickable());
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/SettingsIcon.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/SettingsIcon.java
deleted file mode 100644
index 87219e9..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/SettingsIcon.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.icon;
-
-public class SettingsIcon extends ClientIcon {
- private static final long serialVersionUID = 1L;
-
- public SettingsIcon(String id, String uid) {
- super(id, uid);
- mainCssClass = "settings ";
- }
-
- @Override
- protected String getTitle() {
- return getString("306");
- }
-
- @Override
- protected boolean isClickable() {
- return true;
- }
-
- @Override
- protected String getScript() {
- return "VideoSettings.open();";
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/UserSpeaksIcon.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/UserSpeaksIcon.java
deleted file mode 100644
index f215610..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/UserSpeaksIcon.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.icon;
-
-import org.apache.openmeetings.db.entity.basic.Client;
-import org.apache.openmeetings.db.entity.basic.Client.Activity;
-import org.apache.openmeetings.db.entity.room.Room;
-
-public class UserSpeaksIcon extends ClientIcon {
- private static final long serialVersionUID = 1L;
-
- public UserSpeaksIcon(String id, String uid) {
- super(id, uid);
- mainCssClass = "audio-activity ";
- }
-
- private boolean isActive() {
- Client c = getClient();
- return c != null && (c.hasActivity(Activity.AUDIO) &&
roomHasRight(Room.Right.MUTE_OTHERS));
- }
-
- @Override
- protected String getTitle() {
- return getString("ulist.user.speaks") + (isActive() ?
getString("ulist.user.muteothers") : "");
- }
-
- @Override
- protected String getAlign() {
- return "";
- }
-
- @Override
- protected boolean isClickable() {
- return isActive();
- }
-
- @Override
- protected String getScript() {
- return String.format("VideoManager.clickMuteOthers('%s');",
uid);
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/CamActivityIcon.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/CamActivityIcon.java
deleted file mode 100644
index 61a2089..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/CamActivityIcon.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.icon.activity;
-
-import org.apache.openmeetings.db.entity.basic.Client.Activity;
-
-public class CamActivityIcon extends RoomActivityIcon {
- private static final long serialVersionUID = 1L;
-
- public CamActivityIcon(String id, String uid) {
- super(id, uid, Activity.VIDEO);
- mainCssClass = "activity cam ";
- }
-
- @Override
- protected String getTitle() {
- return getString(getClient().hasActivity(Activity.VIDEO) ?
"camera.off" : "camera.on");
- }
-
- @Override
- public boolean isEnabled() {
- return getClient().isCamEnabled();
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/MicActivityIcon.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/MicActivityIcon.java
deleted file mode 100644
index c867406..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/MicActivityIcon.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.icon.activity;
-
-import org.apache.openmeetings.db.entity.basic.Client.Activity;
-
-public class MicActivityIcon extends RoomActivityIcon {
- private static final long serialVersionUID = 1L;
-
- public MicActivityIcon(String id, String uid) {
- super(id, uid, Activity.AUDIO);
- mainCssClass = "activity mic bumper ";
- }
-
- @Override
- protected String getTitle() {
- return getString(getClient().hasActivity(Activity.AUDIO) ?
"microphone.off" : "microphone.on");
- }
-
- @Override
- public boolean isEnabled() {
- return getClient().isMicEnabled();
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/RoomActivityIcon.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/RoomActivityIcon.java
deleted file mode 100644
index 2cf1cbd..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/activity/RoomActivityIcon.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.icon.activity;
-
-import static
org.apache.openmeetings.core.remote.KurentoHandler.activityAllowed;
-
-import org.apache.openmeetings.db.entity.basic.Client.Activity;
-import org.apache.openmeetings.db.entity.room.Room;
-import org.apache.openmeetings.web.room.sidebar.icon.ClientIcon;
-
-public abstract class RoomActivityIcon extends ClientIcon {
- private static final long serialVersionUID = 1L;
- private static final String CLS_ENABLED = "enabled ";
- private static final String CLS_DISABLED = "disabled";
- protected final Activity activity;
-
- public RoomActivityIcon(String id, String uid, Activity activity) {
- super(id, uid);
- this.activity = activity;
- }
-
- @Override
- protected String getScript() {
- return String.format("VideoManager.toggleActivity('%s');",
activity.name());
- }
-
- protected boolean visible() {
- Room r = getRoom();
- return activityAllowed(getClient(), activity, r);
- }
-
- @Override
- protected boolean isClickable() {
- return isEnabled();
- }
-
- @Override
- protected void internalUpdate() {
- setVisible(visible());
- if (!isEnabled()) {
- cssClass.append(CLS_DISABLED);
- } else if (getClient().hasActivity(activity)) {
- cssClass.append(CLS_ENABLED);
- }
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/AudioRightIcon.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/AudioRightIcon.java
deleted file mode 100644
index 8413e3f..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/AudioRightIcon.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.icon.right;
-
-import org.apache.openmeetings.db.entity.room.Room.Right;
-
-public class AudioRightIcon extends RoomRightIcon {
- private static final long serialVersionUID = 1L;
-
- public AudioRightIcon(String id, String uid) {
- super(id, uid, Right.AUDIO);
- mainCssClass = "right audio bumper ";
- }
-
- @Override
- protected String getTitle() {
- return getString(String.format("ulist.right.audio.%s", isSelf()
? "request" : (hasRight() ? "revoke" : "grant")));
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/ModeratorRightIcon.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/ModeratorRightIcon.java
deleted file mode 100644
index 1dba2cf..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/ModeratorRightIcon.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.icon.right;
-
-import org.apache.openmeetings.db.entity.room.Room.Right;
-
-public class ModeratorRightIcon extends RoomRightIcon {
- private static final long serialVersionUID = 1L;
-
- public ModeratorRightIcon(String id, String uid) {
- super(id, uid, Right.MODERATOR);
- mainCssClass = "right moderator bumper ";
- }
-
- @Override
- protected String getTitle() {
- return getString(String.format("ulist.right.moderator.%s",
isSelf() ? "request" : (hasRight() ? "revoke" : "grant")));
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/MuteOthersRightIcon.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/MuteOthersRightIcon.java
deleted file mode 100644
index a21a894..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/MuteOthersRightIcon.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.icon.right;
-
-import org.apache.openmeetings.db.entity.room.Room.Right;
-
-public class MuteOthersRightIcon extends RoomRightIcon {
- private static final long serialVersionUID = 1L;
-
- public MuteOthersRightIcon(String id, String uid) {
- super(id, uid, Right.MUTE_OTHERS);
- mainCssClass = "right mute-others ";
- }
-
- @Override
- protected String getTitle() {
- return getString(String.format("ulist.right.muteothers.%s",
isSelf() ? "request" : (hasRight() ? "revoke" : "grant")));
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/PresenterRightIcon.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/PresenterRightIcon.java
deleted file mode 100644
index 6171af3..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/PresenterRightIcon.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.icon.right;
-
-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;
-
-public class PresenterRightIcon extends RoomRightIcon {
- private static final long serialVersionUID = 1L;
-
- public PresenterRightIcon(String id, String uid) {
- super(id, uid, Right.PRESENTER);
- mainCssClass = "right presenter bumper ";
- }
-
- @Override
- protected String getTitle() {
- return getString(String.format("ulist.right.presenter.%s",
isSelf() ? "request" : (hasRight() ? "revoke" : "grant")));
- }
-
- @Override
- protected boolean visible() {
- Room r = getRoom();
- return Room.Type.INTERVIEW != r.getType() &&
!r.isHidden(RoomElement.WHITEBOARD) && super.visible();
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/RemoteControlRightIcon.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/RemoteControlRightIcon.java
deleted file mode 100644
index 2f8a126..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/RemoteControlRightIcon.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.icon.right;
-
-import org.apache.openmeetings.db.entity.room.Room.Right;
-
-public class RemoteControlRightIcon extends RoomRightIcon {
- private static final long serialVersionUID = 1L;
-
- public RemoteControlRightIcon(String id, String uid) {
- super(id, uid, Right.REMOTE_CONTROL);
- mainCssClass = "right remote-control bumper ";
- }
-
- @Override
- protected String getTitle() {
- return getString(String.format("ulist.right.remote.%s",
isSelf() ? "request" : (hasRight() ? "revoke" : "grant")));
- }
-
- @Override
- protected boolean visible() {
- return getRoomPanel().screenShareAllowed() && super.visible();
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/RoomRightIcon.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/RoomRightIcon.java
deleted file mode 100644
index e17e66e..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/RoomRightIcon.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.icon.right;
-
-import org.apache.openmeetings.db.entity.room.Room.Right;
-import org.apache.openmeetings.web.room.RoomPanel;
-import org.apache.openmeetings.web.room.sidebar.icon.ClientIcon;
-
-public abstract class RoomRightIcon extends ClientIcon {
- private static final long serialVersionUID = 1L;
- private static final String CLS_GRANTED = "granted ";
- protected final Right right;
-
- public RoomRightIcon(String id, String uid, Right right) {
- super(id, uid);
- this.right = right;
- }
-
- @Override
- protected boolean isClickable() {
- return (isSelf() && !hasRight()) || !isSelf() &&
roomHasRight(Right.MODERATOR);
- }
-
- protected boolean hasRight() {
- return hasRight(right);
- }
-
- @Override
- protected String getScript() {
- return String.format("OmUtil.roomAction({action: '%s', right:
'%s', uid: '%s'});"
- , RoomPanel.Action.toggleRight.name(),
right.name(), uid);
- }
-
- protected boolean visible() {
- return !hasRight(Right.SUPER_MODERATOR) && (
- (isSelf() && !hasRight() &&
getRoom().isAllowUserQuestions())
- || (!isSelf() && roomHasRight(Right.MODERATOR))
- );
- }
-
- @Override
- public void internalUpdate() {
- setVisible(visible());
- if (hasRight()) {
- cssClass.append(CLS_GRANTED);
- }
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/ScreenShareRightIcon.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/ScreenShareRightIcon.java
deleted file mode 100644
index c2f49ff..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/ScreenShareRightIcon.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.icon.right;
-
-import org.apache.openmeetings.db.entity.room.Room.Right;
-
-public class ScreenShareRightIcon extends RoomRightIcon {
- private static final long serialVersionUID = 1L;
-
- public ScreenShareRightIcon(String id, String uid) {
- super(id, uid, Right.SHARE);
- mainCssClass = "right screen-share ";
- }
-
- @Override
- protected String getTitle() {
- return getString(String.format("ulist.right.share.%s", isSelf()
? "request" : (hasRight() ? "revoke" : "grant")));
- }
-
- @Override
- protected boolean visible() {
- return getRoomPanel().screenShareAllowed() && super.visible();
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/VideoRightIcon.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/VideoRightIcon.java
deleted file mode 100644
index 1b9b10b..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/VideoRightIcon.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.icon.right;
-
-import org.apache.openmeetings.db.entity.room.Room.Right;
-
-public class VideoRightIcon extends RoomRightIcon {
- private static final long serialVersionUID = 1L;
-
- public VideoRightIcon(String id, String uid) {
- super(id, uid, Right.VIDEO);
- mainCssClass = "right camera ";
- }
-
- @Override
- protected String getTitle() {
- return getString(String.format("ulist.right.video.%s", isSelf()
? "request" : (hasRight() ? "revoke" : "grant")));
- }
-
- @Override
- protected boolean visible() {
- return !getRoom().isAudioOnly() && super.visible();
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/WhiteboardRightIcon.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/WhiteboardRightIcon.java
deleted file mode 100644
index a66bae1..0000000
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/icon/right/WhiteboardRightIcon.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * 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.icon.right;
-
-import org.apache.openmeetings.db.entity.basic.Client;
-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;
-
-public class WhiteboardRightIcon extends RoomRightIcon {
- private static final long serialVersionUID = 1L;
-
- public WhiteboardRightIcon(String id, String uid) {
- super(id, uid, Right.WHITEBOARD);
- mainCssClass = "right wb bumper ";
- }
-
- @Override
- protected String getTitle() {
- return getString(String.format("ulist.right.wb.%s", isSelf() ?
"request" : (hasRight() ? "revoke" : "grant")));
- }
-
- @Override
- protected boolean hasRight() {
- final Client c = getClient();
- return c != null && (c.hasRight(Right.PRESENTER) ||
c.hasRight(right));
- }
-
- @Override
- protected boolean visible() {
- Room r = getRoom();
- return Room.Type.INTERVIEW != r.getType() &&
!r.isHidden(RoomElement.WHITEBOARD) && super.visible();
- }
-}
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html
index 1d6f5f7..e532de0 100644
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html
+++
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html
@@ -54,7 +54,7 @@
<a id="hyperlink" class="chat btn btn-outline-secondary
dropdown-toggle" data-toggle="dropdown" title="Hyperlink">
<i class="fas fa-link"></i>
</a>
- <div wicket:id="hyperlink" class="dropdown-menu
input-append">
+ <div class="dropdown-menu input-append">
<input class="span2" placeholder="URL"
type="text" onkeypress="if (event.keyCode === 13)
{$(this).parent().find('button').trigger('click');}; return event.keyCode !==
13;"/>
<button class="btn btn-outline-secondary"
type="button"><wicket:message key="1261"/></button>
</div>
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java
index 7858308..e9d6428 100644
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java
+++
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.java
@@ -38,7 +38,6 @@ import org.apache.openmeetings.db.dao.basic.ChatDao;
import org.apache.openmeetings.db.entity.basic.ChatMessage;
import org.apache.openmeetings.db.entity.user.User;
import org.apache.openmeetings.web.app.ClientManager;
-import org.apache.openmeetings.web.pages.BasePage;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxEventBehavior;
@@ -180,8 +179,7 @@ public class ChatToolbar extends Panel implements
IWysiwygToolbar {
@Override
protected void onInitialize() {
super.onInitialize();
- BasePage page = (BasePage)getPage();
- add(toolbar.add(new
WebMarkupContainer("hyperlink").add(AttributeModifier.append("class",
page.isRtl() ? "dropdown-menu-left" : "dropdown-menu-right"))));
+ add(toolbar);
add(download);
delBtn = new AjaxButton("delete", chatForm) {
private static final long serialVersionUID = 1L;
diff --git
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/raw-chat.js
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/raw-chat.js
index 1c01e14..292a1b2 100644
---
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/raw-chat.js
+++
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/raw-chat.js
@@ -1,7 +1,7 @@
/* Licensed under the Apache License, Version 2.0 (the "License")
http://www.apache.org/licenses/LICENSE-2.0 */
var Chat = function() {
- const align = Settings.isRtl ? 'align-right' : 'align-left'
- , alignIco = Settings.isRtl ? 'align-left' : 'align-right'
+ const align = 'align-left'
+ , alignIco = 'align-right'
, msgIdPrefix = 'chat-msg-id-'
, closedSize = 20
, closedSizePx = closedSize + "px"
diff --git a/openmeetings-web/src/main/webapp/css/raw-room.css
b/openmeetings-web/src/main/webapp/css/raw-room.css
index d83aa36..69bb62f 100644
--- a/openmeetings-web/src/main/webapp/css/raw-room.css
+++ b/openmeetings-web/src/main/webapp/css/raw-room.css
@@ -236,6 +236,7 @@ html[dir="rtl"] .room-block .sidebar {
}
.activity.cam.enabled.om-icon::before {
content: '\f4e2';
+ color: var(--warning);
}
.activity.mic.om-icon::before {
content: '\f130';
@@ -247,6 +248,7 @@ html[dir="rtl"] .room-block .sidebar {
}
.activity.mic.enabled.om-icon::before {
content: '\f131';
+ color: var(--warning);
}
.room-block .sidebar .user-list .user.current {
font-weight: bold;