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 2020/04/04 16:54:19 UTC
[openmeetings] branch master updated: [OPENMEETINGS-2165] hidden
user-count should be fixed
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 47fe95a [OPENMEETINGS-2165] hidden user-count should be fixed
47fe95a is described below
commit 47fe95a7aa50dd3b558aa0dd812cb68231d0e1f4
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sat Apr 4 23:54:02 2020 +0700
[OPENMEETINGS-2165] hidden user-count should be fixed
---
.../openmeetings/db/entity/basic/Client.java | 1 +
.../apache/openmeetings/web/room/RoomPanel.java | 65 ++++++++++++++--------
.../org/apache/openmeetings/web/room/raw-room.js | 19 +++++--
.../apache/openmeetings/web/room/raw-video-util.js | 19 +------
.../org/apache/openmeetings/web/room/raw-video.js | 2 +
.../openmeetings/web/room/sidebar/RoomSidebar.html | 2 +-
openmeetings-web/src/main/webapp/css/raw-room.css | 3 +
7 files changed, 66 insertions(+), 45 deletions(-)
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
index bd52e33..6ce340b 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
@@ -553,6 +553,7 @@ public class Client implements IDataProviderEntity, IWsClient {
.put("width", swidth)
.put("height", sheight)
.put("activities", new JSONArray(sactivities))
+ .put("level", hasRight(Right.MODERATOR) ? 5 : (hasRight(Right.WHITEBOARD) ? 3 : 1))
.put("cuid", uid));
}
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 a8477a4..ffd9ca3 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,7 +19,6 @@
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;
@@ -30,7 +29,6 @@ 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;
@@ -152,23 +150,7 @@ 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("]);");
-
- }
+ sb.append(sendClientsOnInit());
target.appendJavaScript(sb);
WebSocketHelper.sendRoom(new TextRoomMessage(r.getId(), c, RoomMessage.Type.ROOM_ENTER, c.getUid()));
@@ -473,8 +455,11 @@ public class RoomPanel extends BasePanel {
return;
}
boolean self = _c.getUid().equals(c.getUid());
- handler.appendJavaScript(String.format("Room.updateClient(%s);"
- , c.toJson(self).toString(new NullStringer())));
+ StringBuilder sb = new StringBuilder("Room.updateClient(")
+ .append(c.toJson(self).toString(new NullStringer()))
+ .append(");")
+ .append(sendClientsOnUpdate());
+ handler.appendJavaScript(sb);
sidebar.update(handler);
menu.update(handler);
wb.update(handler);
@@ -491,8 +476,8 @@ public class RoomPanel extends BasePanel {
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());
+ boolean self = _c.getUid().equals(c.getUid());
+ if (self || _c.hasRight(Room.Right.MODERATOR) || !r.isHidden(RoomElement.USER_COUNT)) {
handler.appendJavaScript(String.format("Room.addClient([%s]);"
, c.toJson(self).toString(new NullStringer())));
}
@@ -856,9 +841,43 @@ public class RoomPanel extends BasePanel {
private void showIdeaAlert(IPartialPageRequestHandler handler, String msg) {
showAlert(handler, "info", msg, "far fa-lightbulb");
}
+
private void showAlert(IPartialPageRequestHandler handler, String type, String msg, String icon) {
handler.appendJavaScript("OmUtil.alert('" + type + "', '<i class=\"" + icon + "\"></i> "
+ StringEscapeUtils.escapeEcmaScript(msg)
+ "', 10000)");
}
+
+ private CharSequence createAddClientJs(Client c) {
+ JSONArray arr = new JSONArray();
+ cm.listByRoom(r.getId()).stream().forEach(cl -> {
+ arr.put(cl.toJson(c.getUid().equals(cl.getUid())));
+ });
+ return new StringBuilder()
+ .append("Room.addClient(")
+ .append(arr.toString(new NullStringer()))
+ .append(");");
+ }
+
+ private CharSequence sendClientsOnInit() {
+ Client c = getClient();
+ StringBuilder res = new StringBuilder();
+ if (c.hasRight(Room.Right.MODERATOR) || !r.isHidden(RoomElement.USER_COUNT)) {
+ res.append(createAddClientJs(c));
+ }
+ return res;
+ }
+
+ private CharSequence sendClientsOnUpdate() {
+ Client c = getClient();
+ StringBuilder res = new StringBuilder();
+ if (r.isHidden(RoomElement.USER_COUNT)) {
+ if (c.hasRight(Room.Right.MODERATOR)) {
+ res.append(createAddClientJs(c));
+ } else {
+ res.append("Room.removeOthers();");
+ }
+ }
+ return res;
+ }
}
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 6f64354..dc58aad 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
@@ -430,10 +430,6 @@ var Room = (function() {
}
VideoManager.update(c)
}
- function _removeClient(uid) {
- Room.getClient(uid).remove();
- __updateCount();
- }
self.init = _init;
self.getMenuHeight = function() { return menuHeight; };
@@ -448,7 +444,20 @@ var Room = (function() {
};
self.addClient = _addClient;
self.updateClient = _updateClient;
- self.removeClient = _removeClient;
+ self.removeClient = function(uid) {
+ Room.getClient(uid).remove();
+ __updateCount();
+ };
+ self.removeOthers = function() {
+ const selfUid = Room.getOptions().uid;
+ $('.user-list .user.entry').each(function() {
+ const c = $(this);
+ if (c.data('uid') !== selfUid) {
+ c.remove();
+ }
+ });
+ __updateCount();
+ };
self.getClient = function(uid) {
return $('#user' + uid);
};
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-util.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-util.js
index f500fa9..2d971b9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-util.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video-util.js
@@ -160,23 +160,10 @@ var VideoUtil = (function() {
function __getDialog(_v) {
return $(_v).find('.video-container.ui-dialog-content');
}
- function __getClient(_v) {
- return Room.getClient(__getDialog(_v).data('clientUid'));
- }
- function __getClient(_v) {
- return Room.getClient(__getDialog(_v).data('clientUid'));
- }
- function __getMod(c) {
- return c.find('.user-status').hasClass('mod') ? 1 : 0;
- }
$(VIDWIN_SEL).toArray().sort((v1, v2) => {
- const c1 = __getClient(v1)
- , c2 = __getClient(v2)
- , m1 = __getMod(c1)
- , m2 = __getMod(c2)
- , name1 = c1.attr('title')
- , name2 = c2.attr('title');
- return m1 - m2 || name1.localeCompare(name2);
+ const c1 = __getDialog(v1).data().stream()
+ , c2 = __getDialog(v2).data().stream();
+ return c1.level - c2.level || c1.user.displayName.localeCompare(c2.user.displayName);
}).forEach(_v => {
const v = $(_v);
__getDialog(v)
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 0a04646..4ffd497 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
@@ -379,8 +379,10 @@ var Video = (function() {
function _update(_c) {
const prevA = sd.activities;
sd.activities = _c.activities.sort();
+ sd.level = _c.level;
sd.user.firstName = _c.user.firstName;
sd.user.lastName = _c.user.lastName;
+ sd.user.displayName = _c.user.displayName;
const name = sd.user.displayName
, hasVideo = VideoUtil.hasVideo(sd);
if (hasVideo) {
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 0988a8f..ea936d8 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 class="badge badge-info user-count">42</span>
+ <span class="label"><wicket:message key="398"/> </span><span class="badge badge-info user-count"></span>
</a>
</li>
<li class="nav-item" wicket:enclosure="file-tab">
diff --git a/openmeetings-web/src/main/webapp/css/raw-room.css b/openmeetings-web/src/main/webapp/css/raw-room.css
index 92f1a94..cd24fc1 100644
--- a/openmeetings-web/src/main/webapp/css/raw-room.css
+++ b/openmeetings-web/src/main/webapp/css/raw-room.css
@@ -316,6 +316,9 @@ html[dir="rtl"] .room-block .sidebar {
content: '\f03d';
color: var(--success);
}
+.activity.cam.om-icon, .activity.mic.om-icon {
+ display: none;
+}
.activity.cam.om-icon::before {
content: '\f4e2';
color: var(--warning);