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;