From 38e1b39c2dcd8f7b7dd34242ef0f2bc92696b736 Mon Sep 17 00:00:00 2001 From: Baris Usakli Date: Tue, 18 Jun 2013 12:11:48 -0400 Subject: [PATCH] chat windows added to taskbar --- public/src/forum/topic.js | 14 ++++++++++++++ public/src/modules/chat.js | 34 ++++++++++++++++++++-------------- 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/public/src/forum/topic.js b/public/src/forum/topic.js index 3bd9776ee2..a5a79e6bc2 100644 --- a/public/src/forum/topic.js +++ b/public/src/forum/topic.js @@ -246,6 +246,20 @@ }); + socket.on('chatMessage', function(data){ + + var username = data.username; + var fromuid = data.fromuid; + var message = data.message; + require(['chat'], function(chat) { + var chatModal = chat.createModalIfDoesntExist(username, fromuid); + chatModal.show(); + chat.bringModalToTop(chatModal); + + chat.appendChatMessage(chatModal, message); + }); + }); + 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 index 1eb308e8b3..a62d0a299b 100644 --- a/public/src/modules/chat.js +++ b/public/src/modules/chat.js @@ -20,16 +20,19 @@ define(['taskbar'], function(taskbar) { if(!chatModal.length) { var chatModal = $('#chat-modal').clone(); chatModal.attr('id','chat-modal-'+touid); + var uuid = utils.generateUUID(); + chatModal.attr('UUID', uuid); chatModal.appendTo($('body')); chatModal.draggable({ start:function(){ - bringModalToTop(chatModal); + module.bringModalToTop(chatModal); } }); chatModal.find('#chat-with-name').html(username); chatModal.find('.close').on('click',function(e){ chatModal.hide(); + taskbar.discard('chat', uuid); }); chatModal.on('click', function(e){ @@ -37,11 +40,25 @@ define(['taskbar'], function(taskbar) { }); addSendHandler(chatModal, touid); + + taskbar.push('chat', uuid, {title:'chat with '+username}); } return chatModal; } + module.load = function(uuid) { + var chatModal = $('div[UUID="'+uuid+'"]'); + chatModal.show(); + module.bringModalToTop(chatModal); + } + + module.minimize = function(uuid) { + var chatModal = $('div[UUID="'+uuid+'"]'); + chatModal.hide(); + taskbar.minimize('chat', uuid); + } + function addSendHandler(chatModal, touid) { chatModal.find('#chat-message-input').off('keypress'); chatModal.find('#chat-message-input').on('keypress', function(e) { @@ -63,23 +80,12 @@ define(['taskbar'], function(taskbar) { msg = msg +'\n'; socket.emit('sendChatMessage', { touid:touid, message:msg}); chatModal.find('#chat-message-input').val(''); - appendChatMessage(chatModal, 'You : ' + msg); + module.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){ + module.appendChatMessage = function(chatModal, message){ var chatContent = chatModal.find('#chat-content'); chatContent.append(message); chatContent.scrollTop(