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/11 15:36:37 UTC
[openmeetings] branch master updated: [OPENMEETINGS-2250] moderated
chat seems to work
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 4d3d756 [OPENMEETINGS-2250] moderated chat seems to work
4d3d756 is described below
commit 4d3d75690ccfd8d910b1f404dc81d093e9ec5dd2
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sat Apr 11 22:36:23 2020 +0700
[OPENMEETINGS-2250] moderated chat seems to work
---
.../openmeetings/web/room/raw-video-manager.js | 6 +--
.../apache/openmeetings/web/user/chat/Chat.html | 27 ++++------
.../apache/openmeetings/web/user/chat/Chat.java | 4 +-
.../apache/openmeetings/web/user/chat/raw-chat.js | 58 ++++++++++++++++------
openmeetings-web/src/main/webapp/css/raw-chat.css | 4 ++
5 files changed, 62 insertions(+), 37 deletions(-)
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 cffa437..9313770 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
@@ -68,7 +68,7 @@ var VideoManager = (function() {
_closeV($(this));
});
if (share.data('cuid') === m.uid) {
- share.off('click').hide();
+ share.off().hide();
}
break;
case 'broadcastStopped':
@@ -206,7 +206,7 @@ var VideoManager = (function() {
.data('cuid', sd.cuid)
.show()
, 'btn-outline-warning', 10);
- share.tooltip().off('click').click(function() {
+ share.tooltip().off().click(function() {
_playSharing(sd, iceServers);
});
if (Room.getOptions().autoOpenSharing === true) {
@@ -225,7 +225,7 @@ var VideoManager = (function() {
_closeV(v);
}
if (!showShareBtn && uid === share.data('uid')) {
- share.off('click').hide();
+ share.off().hide();
}
}
function _find(uid) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.html
index 67f4d5c..7bd1581 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.html
@@ -41,30 +41,25 @@
<div id="chat-date-template" class='date-row'></div>
<div id="chat-msg-template" class='msg-row'>
<div class='user-row'>
- <div class='from'></div>
- <span class='time'></span>
+ <div class='from align-left'></div>
+ <span class='time align-right'></span>
<div class="clear"></div>
</div>
- <div class='msg'></div>
+ <div class='msg align-left'></div>
<div class="clear"></div>
</div>
- <div id="chat-accept-template" class='tick om-icon clickable' wicket:message="title:1190"
- onclick='const e=$(this);chatActivity("accept", e.data("roomid"), e.data("msgid")); e.parent().remove();'></div>
+ <div id="chat-actions-short-template" class='user clickable' wicket:message="title:1167"><i class="fas fa-address-card"></i></div>
+ <div id="chat-actions-others-template">
+ <div class='add clickable' wicket:message="title:1186"><i class="fas fa-plus-circle"></i></div>
+ <div class='new-email clickable' wicket:message="title:1253"><i class="fas fa-envelope"></i></div>
+ <div class='invite clickable' wicket:message="title:1131"><i class="fas fa-link"></i></div>
+ </div>
+ <div id="chat-actions-accept-template" class='accept clickable' wicket:message="title:1190"><i class="fas fa-check"></i></div>
<button id="chat-close-block" class="btn btn-sm btn-outline-secondary close-chat" wicket:message="title:85">
<i class="fas fa-times"></i>
<span class="sr-only"><wicket:message key="85"/></span>
</button>
- <div id="chat-msg-area-template" class="messageArea bg-white tab-pane h-100" role="tabpanel">
- <div class="clear icons actions short">
- <div class='user clickable' wicket:message="title:1167"><i class="fas fa-address-card"></i></div>
- </div>
- <div class="clear icons actions full">
- <div class='user clickable' wicket:message="title:1167"><i class="fas fa-address-card"></i></div>
- <div class='add clickable' wicket:message="title:1186"><i class="fas fa-plus-circle"></i></div>
- <div class='new-email clickable' wicket:message="title:1253"><i class="fas fa-envelope"></i></div>
- <div class='invite clickable' wicket:message="title:1131"><i class="fas fa-link"></i></div>
- </div>
- </div>
+ <div id="chat-msg-area-template" class="messageArea bg-white tab-pane h-100" role="tabpanel"></div>
</div>
</wicket:panel>
</html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
index d31175e..de8c9ca 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/Chat.java
@@ -63,8 +63,8 @@ import com.github.openjson.JSONObject;
public class Chat extends Panel {
private static final long serialVersionUID = 1L;
private static final Logger log = LoggerFactory.getLogger(Chat.class);
- private static final String PARAM_MSG_ID = "msgid";
- private static final String PARAM_ROOM_ID = "roomid";
+ private static final String PARAM_MSG_ID = "msgId";
+ private static final String PARAM_ROOM_ID = "roomId";
private static final String PARAM_TYPE = "type";
private boolean showDashboardChat;
private final AbstractDefaultAjaxBehavior chatActivity = new AbstractDefaultAjaxBehavior() {
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 30b90a4..94463a3 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,8 +1,6 @@
/* Licensed under the Apache License, Version 2.0 (the "License") http://www.apache.org/licenses/LICENSE-2.0 */
var Chat = function() {
- const align = 'align-left'
- , alignIco = 'align-right'
- , msgIdPrefix = 'chat-msg-id-'
+ const msgIdPrefix = 'chat-msg-id-'
, closedSize = 20
, closedSizePx = closedSize + "px"
, emoticon = new CSSEmoticon()
@@ -187,7 +185,7 @@ var Chat = function() {
});
__setCssHeight(closedSize);
}
- ctrl.off('click').click(Chat.toggle);
+ ctrl.off().click(Chat.toggle);
$('#chatMessage').off().on('input propertychange paste', function () {
const room = $('.room-block .room-container');
if (room.length) {
@@ -229,32 +227,51 @@ var Chat = function() {
link.append(OmUtil.tmpl('#chat-close-block'));
}
tabs.find('.nav.nav-tabs').append(li);
- tabs.find('.tab-content').append(OmUtil.tmpl('#chat-msg-area-template', id));
+ const msgArea = OmUtil.tmpl('#chat-msg-area-template', id);
+ tabs.find('.tab-content').append(msgArea);
+ msgArea.append($('<div class="clear icons actions align-left">').addClass('short')
+ .append(OmUtil.tmpl('#chat-actions-short-template')));
+ msgArea.append($('<div class="clear icons actions align-left">').addClass('short-mod')
+ .append(OmUtil.tmpl('#chat-actions-short-template'))
+ .append(OmUtil.tmpl('#chat-actions-accept-template')));
+ msgArea.append($('<div class="clear icons actions align-left">').addClass('full')
+ .append(OmUtil.tmpl('#chat-actions-short-template'))
+ .append(OmUtil.tmpl('#chat-actions-others-template').children().clone()));
+ msgArea.append($('<div class="clear icons actions align-left">').addClass('full-mod')
+ .append(OmUtil.tmpl('#chat-actions-short-template'))
+ .append(OmUtil.tmpl('#chat-actions-others-template').children().clone())
+ .append(OmUtil.tmpl('#chat-actions-accept-template')));
const actions = __hideActions();
- actions.addClass(align);
- actions.find('.user').off('click').click(function() {
+ actions.find('.user').off().click(function() {
const e = $(this).parent();
showUserInfo(e.data("userId"));
});
- actions.find('.add').off('click').click(function() {
+ actions.find('.add').off().click(function() {
const e = $(this).parent();
addContact(e.data("userId"));
});
- actions.find('.new-email').off('click').click(function() {
+ actions.find('.new-email').off().click(function() {
const e = $(this).parent();
privateMessage(e.data("userId"));
});
- actions.find('.invite').off('click').click(function() {
+ actions.find('.invite').off().click(function() {
const e = $(this).parent();
inviteUser(e.data("userId"));
});
+ actions.find('.accept').off().click(function() {
+ const e = $(this).parent()
+ , msgId = e.data('msgId');
+ chatActivity('accept', e.data('roomId'), msgId);
+ __hideActions();
+ $('#chat-msg-id-' + msgId).remove();
+ });
activateTab(id);
}
function __hideActions() {
return $('#chat .tab-content .messageArea .icons').hide();
}
function __getActions(row) {
- return row.closest('.messageArea').find('.actions.' + ('full' === row.data('actions') ? 'full' : 'short'));
+ return row.closest('.messageArea').find('.actions.' + row.data('actions'));
}
function _addMessage(m) {
if ($('#chat').length > 0 && m && m.type === "chat") {
@@ -264,22 +281,30 @@ var Chat = function() {
if (cm.from.id !== userId) {
notify = true;
}
+ const actions = ('full' === cm.actions ? 'full' : 'short') + (cm.needModeration ? '-mod' : '');
msg = OmUtil.tmpl('#chat-msg-template', msgIdPrefix + cm.id)
- msg.find('.user-row')
+ const row = msg.find('.user-row')
.data('userId', cm.from.id)
- .data('actions', cm.actions)
+ .data('actions', actions)
.mouseenter(function() {
__hideActions();
__getActions($(this))
.data('userId', $(this).data('userId'))
+ .data('roomId', $(this).data('roomId'))
+ .data('msgId', $(this).data('msgId'))
.css('top', ($(this).closest('.msg-row')[0].offsetTop + 20) + 'px')
.show();
});
+ if (cm.needModeration) {
+ row.parent().addClass('need-moderation');
+ row.data('roomId', cm.scope.substring(9))
+ .data('msgId', cm.id);
+ }
area.mouseleave(function() {
__hideActions();
});
- msg.find('.from').addClass(align).data('user-id', cm.from.id).html(cm.from.name || cm.from.displayName);
- msg.find('.time').addClass(alignIco).html(cm.time).attr('title', cm.sent);
+ msg.find('.from').data('user-id', cm.from.id).html(cm.from.name || cm.from.displayName);
+ msg.find('.time').html(cm.time).attr('title', cm.sent);
if (!area.length) {
_addTab(cm.scope, cm.scopeName);
area = $('#' + cm.scope);
@@ -297,7 +322,7 @@ var Chat = function() {
area.append(msg);
msg.find('.user-row')[0].style.backgroundImage = 'url(' + (!!cm.from.img ? cm.from.img : './profile/' + cm.from.id + '?anticache=' + Date.now()) + ')';
- msg.find('.msg').addClass(align).html(emoticon.emoticonize(!!cm.message ? cm.message : ""));
+ msg.find('.msg').html(emoticon.emoticonize(!!cm.message ? cm.message : ""));
if (btm) {
_scrollDown(area);
}
@@ -344,6 +369,7 @@ var Chat = function() {
p.resizable("option", "disabled", false);
}
p.removeClass('closed').animate(opts, 1000, function() {
+ __hideActions();
p.removeClass('closed');
p.css({'height': '', 'width': ''});
if (typeof(handler) === 'function') {
diff --git a/openmeetings-web/src/main/webapp/css/raw-chat.css b/openmeetings-web/src/main/webapp/css/raw-chat.css
index 4f847e8..fc5d844 100644
--- a/openmeetings-web/src/main/webapp/css/raw-chat.css
+++ b/openmeetings-web/src/main/webapp/css/raw-chat.css
@@ -49,6 +49,9 @@
.main.room #chatPanel.closed #chatPopup .control.block i::before {
content: "\f104";
}
+#chat .messageArea .msg-row.need-moderation {
+ background-color: var(--warning);
+}
#chat .messageArea .time {
margin-right: 5px;
font-style: italic;
@@ -69,6 +72,7 @@
#chat .messageArea .icons div {
display: inline-block;
vertical-align: super;
+ margin-right: 2px;
}
html[dir="rtl"] #chat .messageArea .icons {
left: initial;