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 <[email protected]>
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;

Reply via email to