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 2019/12/19 13:46:56 UTC
[openmeetings] branch 4.0.x updated: [OPENMEETINGS-2021] action
icons are not being copy/pasted
This is an automated email from the ASF dual-hosted git repository.
solomax pushed a commit to branch 4.0.x
in repository https://gitbox.apache.org/repos/asf/openmeetings.git
The following commit(s) were added to refs/heads/4.0.x by this push:
new 0631a14 [OPENMEETINGS-2021] action icons are not being copy/pasted
0631a14 is described below
commit 0631a14bb583548cb0aaa633d2250600153879ae
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Thu Dec 19 20:46:15 2019 +0700
[OPENMEETINGS-2021] action icons are not being copy/pasted
---
.../core/util/ChatWebSocketHelper.java | 2 +-
.../apache/openmeetings/web/user/chat/Chat.html | 28 ++++++++++------
.../apache/openmeetings/web/user/chat/raw-chat.js | 39 ++++++++++++++--------
openmeetings-web/src/main/webapp/css/raw-chat.css | 11 ++++--
4 files changed, 51 insertions(+), 29 deletions(-)
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/ChatWebSocketHelper.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/ChatWebSocketHelper.java
index 1db9a71..07ca398 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/ChatWebSocketHelper.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/ChatWebSocketHelper.java
@@ -73,7 +73,7 @@ public class ChatWebSocketHelper extends WebSocketHelper {
.put("id", m.getId())
.put("message", smsg)
.put("from", from)
- .put("actions", curUser.getId() == m.getFromUser().getId() ? "short" : "full")
+ .put("actions", curUser.getId().equals(m.getFromUser().getId()) ? "short" : "full")
, m, curUser, true));
}
return new JSONObject()
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 674a08a..a0f636d 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
@@ -21,9 +21,7 @@
<wicket:panel>
<div id="chatTabs">
<ul>
- <li><a href="#chatTab-all"><wicket:message key="1494"/></a></li>
</ul>
- <div id="chatTab-all" class="messageArea"></div>
</div>
<form wicket:id="sendForm">
<div wicket:id="toolbarContainer"></div>
@@ -38,7 +36,6 @@
<div id="chat-msg-template" class='msg-row'>
<div class='user-row'>
<div class='from'></div>
- <div class='clear icons'></div>
<span class='time'></span>
<div class="clear"></div>
</div>
@@ -47,16 +44,25 @@
</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-info-template" class='user om-icon clickable' wicket:message="title:1167"
- onclick='const e=$(this);showUserInfo(e.data("userId"));'></div>
- <div id="chat-add-template" class='add om-icon clickable' wicket:message="title:1186"
- onclick='const e=$(this);addContact(e.data("userId"));'></div>
- <div id="chat-message-template" class='new-email om-icon clickable' wicket:message="title:1253"
- onclick='const e=$(this);privateMessage(e.data("userId"));'></div>
- <div id="chat-invite-template" class='invite om-icon clickable' wicket:message="title:1131"
- onclick='const e=$(this);inviteUser(e.data("userId"));'></div>
<span id="chat-close-block" class='ui-icon ui-icon-close' wicket:message="title:85"
role='presentation'></span>
+
+ <div id="chat-msg-area-template" class="messageArea">
+ <div class="clear icons actions short">
+ <div class='user om-icon clickable' wicket:message="title:1167"
+ onclick='const e=$(this).parent();showUserInfo(e.data("userId"));'></div>
+ </div>
+ <div class="clear icons actions full">
+ <div class='user om-icon clickable' wicket:message="title:1167"
+ onclick='const e=$(this).parent();showUserInfo(e.data("userId"));'></div>
+ <div class='add om-icon clickable' wicket:message="title:1186"
+ onclick='const e=$(this);addContact(e.data("userId"));'></div>
+ <div class='new-email om-icon clickable' wicket:message="title:1253"
+ onclick='const e=$(this);privateMessage(e.data("userId"));'></div>
+ <div class='invite om-icon clickable' wicket:message="title:1131"
+ onclick='const e=$(this);inviteUser(e.data("userId"));'></div>
+ </div>
+ </div>
</div>
</wicket:panel>
</html>
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 81ee0e2..ca9857f 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
@@ -131,6 +131,7 @@ var Chat = function() {
icon.removeClass(function(index, className) {
return (className.match (/(^|\s)ui-icon-caret-\S+/g) || []).join(' ');
});
+ __hideActions().addClass(align);
initToolbar();
tabs = $("#chatTabs").tabs({
activate: function(event, ui) {
@@ -207,10 +208,16 @@ var Chat = function() {
li.append(OmUtil.tmpl('#chat-close-block'));
}
tabs.find(".ui-tabs-nav").append(li);
- tabs.append("<div class='messageArea' id='" + id + "'></div>");
+ tabs.append(OmUtil.tmpl('#chat-msg-area-template', id));
tabs.tabs("refresh");
activateTab(id);
}
+ function __hideActions() {
+ return $('#chat .messageArea .icons').hide();
+ }
+ function __getActions(row) {
+ return row.closest('.messageArea').find('.actions.' + ('full' === row.data('actions') ? 'full' : 'short'));
+ }
function _addMessage(m) {
if ($('#chat').length > 0 && m && m.type === "chat") {
let msg, cm, notify = false;
@@ -220,20 +227,22 @@ var Chat = function() {
notify = true;
}
msg = OmUtil.tmpl('#chat-msg-template', msgIdPrefix + cm.id)
- msg.find('.user-row').css('background-image', 'url(' + (!!cm.from.img ? cm.from.img : './profile/' + cm.from.id + '?anticache=' + Date.now()) + ')');
+ msg.find('.user-row')
+ .data('userId', cm.from.id)
+ .data('actions', cm.actions)
+ .css('background-image', 'url(' + (!!cm.from.img ? cm.from.img : './profile/' + cm.from.id + '?anticache=' + Date.now()) + ')')
+ .mouseenter(function() {
+ __hideActions();
+ __getActions($(this))
+ .data('userId', $(this).data('userId'))
+ .css('top', ($(this).closest('.msg-row')[0].offsetTop + 20) + 'px')
+ .show();
+ });
+ 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);
- const icons = msg.find('.icons').addClass(align)
- .append(OmUtil.tmpl('#chat-info-template').addClass(alignIco).data('user-id', cm.from.id));
- if ('full' === cm.actions) {
- icons.append(OmUtil.tmpl('#chat-add-template').addClass(alignIco).data('user-id', cm.from.id))
- .append(OmUtil.tmpl('#chat-message-template').addClass(alignIco).data('user-id', cm.from.id))
- .append(OmUtil.tmpl('#chat-invite-template').addClass(alignIco).data('user-id', cm.from.id));
- }
- if (cm.needModeration) {
- msg.append(OmUtil.tmpl('#chat-accept-template')
- .data('msgid', cm.id).data('roomid', cm.scope.substring(9)).find('.tick').addClass(alignIco));
- }
if (!area.length) {
_addTab(cm.scope, cm.scopeName);
area = $('#' + cm.scope);
@@ -243,7 +252,9 @@ var Chat = function() {
}
const btm = area[0].scrollHeight - (area.scrollTop() + area.innerHeight()) < 3; //approximately equal
if (area.data('lastDate') !== cm.date) {
- area.append(OmUtil.tmpl('#chat-date-template').html(cm.date));
+ area.append(OmUtil.tmpl('#chat-date-template').html(cm.date).mouseenter(function() {
+ __hideActions();
+ }));
area.data('lastDate', cm.date);
}
area.append(msg);
diff --git a/openmeetings-web/src/main/webapp/css/raw-chat.css b/openmeetings-web/src/main/webapp/css/raw-chat.css
index 922f887..746af6e 100644
--- a/openmeetings-web/src/main/webapp/css/raw-chat.css
+++ b/openmeetings-web/src/main/webapp/css/raw-chat.css
@@ -66,11 +66,15 @@
padding-left: 40px;
min-height: 40px;
}
-#chat .messageArea .user-row .icons {
+#chat .messageArea .icons {
display: none;
+ position: absolute;
+ z-index: 1;
+ left: 50px;
}
-#chat .messageArea .user-row:hover .icons {
- display: block;
+html[dir="rtl"] #chat .messageArea .icons {
+ left: initial;
+ right: 50px;
}
#chat .messageArea .from {
margin-left: 5px;
@@ -86,6 +90,7 @@
height: 165px;
overflow-y: auto;
padding: 0 5px;
+ position: relative;
}
#chatMessage {
margin-right: 22px;