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 <[email protected]>
Authored: Tue Dec 26 18:45:28 2017 +0700
Committer: Maxim Solodovnik <[email protected]>
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,

Reply via email to