From ffbd777642ec64d1140d89102a6e3f163d9a14e3 Mon Sep 17 00:00:00 2001 From: Baris Usakli Date: Tue, 18 Jun 2013 11:26:57 -0400 Subject: [PATCH] moved chat code to its own module --- public/src/forum/topic.js | 98 +++----------------------------------- public/src/modules/chat.js | 91 +++++++++++++++++++++++++++++++++++ src/topics.js | 1 - 3 files changed, 97 insertions(+), 93 deletions(-) create mode 100644 public/src/modules/chat.js diff --git a/public/src/forum/topic.js b/public/src/forum/topic.js index d62834b7e9..3bd9776ee2 100644 --- a/public/src/forum/topic.js +++ b/public/src/forum/topic.js @@ -233,105 +233,19 @@ } }); - // CHAT, move to chat.js later? - - $('.post-container').delegate('.chat', 'click', function(e){ + $('.post-container').delegate('.chat', 'click', function(e) { var username = $(this).parents('li').attr('data-username'); var touid = $(this).parents('li').attr('data-uid'); - var chatModal = createModalIfDoesntExist(username, touid); - - chatModal.show(); - bringModalToTop(chatModal); - - }); - - function bringModalToTop(chatModal) { - var topZ = 0; - $('.modal').each(function(){ - var thisZ = parseInt($(this).css('zIndex'), 10); - if (thisZ > topZ){ - topZ = thisZ; - } - }); - chatModal.css('zIndex', topZ+1); - } - - function createModalIfDoesntExist(username, touid) { - var chatModal = $('#chat-modal-'+touid); - - if(!chatModal.length) { - var chatModal = $('#chat-modal').clone(); - chatModal.attr('id','chat-modal-'+touid); - chatModal.appendTo($('body')); - chatModal.draggable({ - start:function(){ - bringModalToTop(chatModal); - } - }); - chatModal.find('#chat-with-name').html(username); - - chatModal.find('.close').on('click',function(e){ - chatModal.hide(); - }); - - chatModal.on('click', function(e){ - bringModalToTop(chatModal); - }); - - addSendHandler(chatModal, touid); - } - - return chatModal; - } - - function addSendHandler(chatModal, touid) { - chatModal.find('#chat-message-input').off('keypress'); - chatModal.find('#chat-message-input').on('keypress', function(e) { - if(e.which === 13) { - sendMessage(chatModal, touid); - } - }); - - chatModal.find('#chat-message-send-btn').off('click'); - chatModal.find('#chat-message-send-btn').on('click', function(e){ - sendMessage(chatModal, touid); - return false; + require(['chat'], function(chat){ + var chatModal = chat.createModalIfDoesntExist(username, touid); + chatModal.show(); + chat.bringModalToTop(chatModal); }); - } - - function sendMessage(chatModal, touid) { - var msg = app.strip_tags(chatModal.find('#chat-message-input').val()); - if(msg.length) { - msg = msg +'\n'; - socket.emit('sendChatMessage', { touid:touid, message:msg}); - chatModal.find('#chat-message-input').val(''); - appendChatMessage(chatModal, 'You : ' + msg); - } - } - - socket.on('chatMessage', function(data){ - var username = data.username; - var fromuid = data.fromuid; - var message = data.message; - - var chatModal = createModalIfDoesntExist(username, fromuid); - chatModal.show(); - bringModalToTop(chatModal); - - appendChatMessage(chatModal, message) + }); - function appendChatMessage(chatModal, message){ - var chatContent = chatModal.find('#chat-content'); - chatContent.append(message); - chatContent.scrollTop( - chatContent[0].scrollHeight - chatContent.height() - ); - } - //end of chat - ajaxify.register_events([ 'event:rep_up', 'event:rep_down', 'event:new_post', 'api:get_users_in_room', diff --git a/public/src/modules/chat.js b/public/src/modules/chat.js new file mode 100644 index 0000000000..1eb308e8b3 --- /dev/null +++ b/public/src/modules/chat.js @@ -0,0 +1,91 @@ +define(['taskbar'], function(taskbar) { + + var module = {}; + + + module.bringModalToTop = function(chatModal) { + var topZ = 0; + $('.modal').each(function() { + var thisZ = parseInt($(this).css('zIndex'), 10); + if (thisZ > topZ) { + topZ = thisZ; + } + }); + chatModal.css('zIndex', topZ+1); + } + + module.createModalIfDoesntExist = function(username, touid) { + var chatModal = $('#chat-modal-'+touid); + + if(!chatModal.length) { + var chatModal = $('#chat-modal').clone(); + chatModal.attr('id','chat-modal-'+touid); + chatModal.appendTo($('body')); + chatModal.draggable({ + start:function(){ + bringModalToTop(chatModal); + } + }); + chatModal.find('#chat-with-name').html(username); + + chatModal.find('.close').on('click',function(e){ + chatModal.hide(); + }); + + chatModal.on('click', function(e){ + module.bringModalToTop(chatModal); + }); + + addSendHandler(chatModal, touid); + } + + return chatModal; + } + + function addSendHandler(chatModal, touid) { + chatModal.find('#chat-message-input').off('keypress'); + chatModal.find('#chat-message-input').on('keypress', function(e) { + if(e.which === 13) { + sendMessage(chatModal, touid); + } + }); + + chatModal.find('#chat-message-send-btn').off('click'); + chatModal.find('#chat-message-send-btn').on('click', function(e){ + sendMessage(chatModal, touid); + return false; + }); + } + + function sendMessage(chatModal, touid) { + var msg = app.strip_tags(chatModal.find('#chat-message-input').val()); + if(msg.length) { + msg = msg +'\n'; + socket.emit('sendChatMessage', { touid:touid, message:msg}); + chatModal.find('#chat-message-input').val(''); + appendChatMessage(chatModal, 'You : ' + msg); + } + } + + socket.on('chatMessage', function(data){ + var username = data.username; + var fromuid = data.fromuid; + var message = data.message; + + var chatModal = module.createModalIfDoesntExist(username, fromuid); + chatModal.show(); + module.bringModalToTop(chatModal); + + appendChatMessage(chatModal, message) + }); + + function appendChatMessage(chatModal, message){ + var chatContent = chatModal.find('#chat-content'); + chatContent.append(message); + chatContent.scrollTop( + chatContent[0].scrollHeight - chatContent.height() + ); + } + + return module; +}); \ No newline at end of file diff --git a/src/topics.js b/src/topics.js index b88c800299..1a49e4359f 100644 --- a/src/topics.js +++ b/src/topics.js @@ -69,7 +69,6 @@ marked.setOptions({ var uid = postData.uid[i], pid = postData.pid[i]; - // ############ to be moved into posts.getPostsByTid ############ if (postData.deleted[i] === null || (postData.deleted[i] === '1' && privileges.view_deleted) || current_user === uid) { var post_obj = {