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 2017/12/26 11:45:37 UTC

openmeetings git commit: [OPENMEETINGS-1775] send on enter/ctrl+enter is implemented

Repository: openmeetings
Updated Branches:
  refs/heads/4.0.x ff2db5d44 -> b3c74f7e1


[OPENMEETINGS-1775] send on enter/ctrl+enter is implemented


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/b3c74f7e
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/b3c74f7e
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/b3c74f7e

Branch: refs/heads/4.0.x
Commit: b3c74f7e162f46c2604e5d62f8e81994fcfea38f
Parents: ff2db5d
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Tue Dec 26 18:45:28 2017 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
Committed: Tue Dec 26 18:45:28 2017 +0700

----------------------------------------------------------------------
 .../openmeetings/web/user/chat/ChatToolbar.html |  2 +-
 .../openmeetings/web/user/chat/chat-base.js     | 50 ++++++++++++++++----
 2 files changed, 41 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b3c74f7e/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html
index 38e972e..8e5da6c 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/ChatToolbar.html
@@ -79,7 +79,7 @@
 				<li><a class="chat-btn chat-tool-icon btn btn-default save" wicket:message="title:197" wicket:id="save"></a></li>
 				<li><a class="chat-btn chat-tool-icon btn btn-default delete" wicket:message="title:442" wicket:id="delete"></a></li>
 				<li><a class="chat-btn chat-tool-icon btn btn-default audio" wicket:message="data-sound-enabled:sound.mute,data-sound-muted:sound.enable">&nbsp;</a></li>
-				<li><a class="chat-btn chat-tool-icon btn btn-default send-ctrl" wicket:message="data-send-enter:send.on.enter,data-send-ctrl:send.on.ctrl.enter"><b>&crarr;</b></a></li>
+				<li><a class="chat-btn chat-tool-icon btn btn-default send-btn" wicket:message="data-send-enter:send.on.enter,data-send-ctrl:send.on.ctrl.enter"><b>&crarr;</b></a></li>
 			</ul>
 		</div>
 	</div>

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/b3c74f7e/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat-base.js
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat-base.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat-base.js
index dd12af3..adb6660 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat-base.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/chat/chat-base.js
@@ -11,10 +11,11 @@ var Chat = function() {
 		, iconOpenRoom = 'ui-icon-caret-1-' + (Settings.isRtl ? 'e' : 'w')
 		, iconClose = 'ui-icon-caret-1-s'
 		, iconCloseRoom = 'ui-icon-caret-1-' + (Settings.isRtl ? 'w' : 'e')
+		, SEND_ENTER = 'enter', SEND_CTRL = 'ctrl'
 		;
 	let p, pp, ctrl, icon, tabs, openedHeight = "345px", openedWidth = "300px", allPrefix = "All"
 		, roomPrefix = "Room ", typingTimer, audio, roomMode = false, globalWidth = 600
-		, editor = $('#chatMessage .wysiwyg-editor')
+		, editor = $('#chatMessage .wysiwyg-editor'), muted = false, sendOn = SEND_CTRL;
 		;
 
 	try {
@@ -28,14 +29,32 @@ var Chat = function() {
 	function _load() {
 		const s = Settings.load();
 		if (typeof(s.chat) === 'undefined') {
-			s.chat = {};
+			s.chat = {
+				muted: false
+				, sendOn: SEND_CTRL
+			};
 		}
+		muted = s.chat.muted === true;
+		sendOn = s.chat.sendOn === SEND_ENTER ? SEND_ENTER : SEND_CTRL;
 		return s;
 	}
-	function _updateBtn(s, a) {
-		const muted = s.chat.muted === true;
-		a.removeClass('sound' + (muted ? '' : '-mute')).addClass('sound' + (muted ? '-mute' : ''))
-				.attr('title', a.data(muted ? 'sound-enabled' : 'sound-muted'));
+	function _updateAudioBtn(btn) {
+		btn.removeClass('sound' + (muted ? '' : '-mute')).addClass('sound' + (muted ? '-mute' : ''))
+				.attr('title', btn.data(muted ? 'sound-enabled' : 'sound-muted'));
+	}
+	function _updateSendBtn(btn) {
+		const ctrl = sendOn === SEND_CTRL;
+		if (ctrl) {
+			btn.addClass('send-ctrl');
+			editor.off('keydown', _sendOnEnter).keydown('Ctrl+return', _sendOnEnter);
+		} else {
+			btn.removeClass('send-ctrl');
+			editor.off('keydown', _sendOnEnter).keydown('return', _sendOnEnter);
+		}
+		btn.attr('title', btn.data(ctrl ? 'send-ctrl' : 'send-enter'));
+	}
+	function _sendOnEnter() {
+		$('#chat .send').trigger('click');
 	}
 	function doneTyping () {
 		typingTimer = null;
@@ -61,12 +80,23 @@ var Chat = function() {
 			}
 		}
 		const a = $('#chat .audio');
-		_updateBtn(_load(), a);
+		const sbtn = $('#chat .send-btn');
+		{ //scope
+			_load();
+			_updateAudioBtn(a);
+			_updateSendBtn(sbtn)
+		}
 		$('#chat .chat-btn').hover(function(){ $(this).addClass('ui-state-hover') }, function(){ $(this).removeClass('ui-state-hover') });
 		a.off().click(function() {
 			const s = _load();
-			s.chat.muted = !s.chat.muted;
-			_updateBtn(s, a);
+			muted = s.chat.muted = !s.chat.muted;
+			_updateAudioBtn(a);
+			Settings.save(s);
+		});
+		sbtn.off().click(function() {
+			const s = _load();
+			sendOn = s.chat.sendOn = s.chat.sendOn !== SEND_CTRL ? SEND_CTRL : SEND_ENTER;
+			_updateSendBtn(sbtn);
 			Settings.save(s);
 		});
 		$('#chat #hyperlink').parent().find('button').off().click(function() {
@@ -182,7 +212,7 @@ var Chat = function() {
 			if (isClosed()) {
 				ctrl.addClass('ui-state-highlight');
 				const s = _load();
-				if (p.is(':visible') && s.chat.muted !== true) {
+				if (p.is(':visible') && !muted) {
 					const playPromise = audio.play();
 
 					// In browsers that don’t yet support this functionality,