1
0
mirror of https://github.com/wbbaddons/Tims-Chat.git synced 2024-12-22 21:40:08 +00:00

First working draft of private channels

This commit is contained in:
Maximilian Mader 2013-07-09 19:41:14 +02:00
parent 9530dad294
commit 7cb15e5e9c
2 changed files with 42 additions and 10 deletions

View File

@ -216,8 +216,8 @@ Clear the chat by removing every single message once the clear button is `clicke
$('#timsChatClear').click (event) -> $('#timsChatClear').click (event) ->
event.preventDefault() event.preventDefault()
$('.timsChatMessage').remove() $('.timsChatMessageContainer.active .timsChatMessage').remove()
$('#timsChatMessageContainer').scrollTop $('#timsChatMessageContainer').prop('scrollHeight') $('.timsChatMessageContainer.active').scrollTop $('.timsChatMessageContainer.active').prop('scrollHeight')
Handle toggling of the toggleable buttons. Handle toggling of the toggleable buttons.
@ -278,9 +278,9 @@ Scroll down when autoscroll is being activated.
$('#timsChatAutoscroll').click (event) -> $('#timsChatAutoscroll').click (event) ->
if $('#timsChatAutoscroll').data 'status' if $('#timsChatAutoscroll').data 'status'
$('#timsChatMessageContainer').scrollTop $('#timsChatMessageContainer').prop('scrollHeight') $('.timsChatMessageContainer.active').scrollTop $('.timsChatMessageContainer.active').prop('scrollHeight')
$('#timsChatMessageContainer').on 'scroll', (event) -> $('.timsChatMessageContainer.active').on 'scroll', (event) ->
element = $ @ element = $ @
scrollTop = element.scrollTop() scrollTop = element.scrollTop()
scrollHeight = element.prop 'scrollHeight' scrollHeight = element.prop 'scrollHeight'
@ -413,7 +413,7 @@ Prevent loading messages in parallel.
Insert the given messages into the chat stream. Insert the given messages into the chat stream.
handleMessages = (messages) -> handleMessages = (messages) ->
$('#timsChatMessageContainer').trigger 'scroll' $('.timsChatMessageContainer.active').trigger 'scroll'
for message in messages for message in messages
events.newMessage.fire message events.newMessage.fire message
@ -436,7 +436,15 @@ Insert the given messages into the chat stream.
li.addClass 'ownMessage' if message.sender is WCF.User.userID li.addClass 'ownMessage' if message.sender is WCF.User.userID
li.append output li.append output
li.appendTo $ '#timsChatMessageContainer > ul' if message.type is parseInt v.config.messageTypes.WHISPER
if message.sender is WCF.User.userID && $.wcfIsset "timsChatMessageContainer#{message.receiver}"
li.appendTo $ "#timsChatMessageContainer#{message.receiver} > ul"
else if $.wcfIsset "timsChatMessageContainer#{message.sender}"
li.appendTo $ "#timsChatMessageContainer#{message.sender} > ul"
else
li.appendTo $ '#timsChatMessageContainer0 > ul'
else
li.appendTo $ '#timsChatMessageContainer0 > ul'
else else
message.isFollowUp = yes message.isFollowUp = yes
output = v.messageTemplate.fetch output = v.messageTemplate.fetch
@ -446,7 +454,7 @@ Insert the given messages into the chat stream.
$('.timsChatMessage:last-child .text').append $(output).find('.text li:last-child') $('.timsChatMessage:last-child .text').append $(output).find('.text li:last-child')
lastMessage = message lastMessage = message
$('#timsChatMessageContainer').scrollTop $('#timsChatMessageContainer').prop('scrollHeight') if $('#timsChatAutoscroll').data('status') is 1 $('.timsChatMessageContainer.active').scrollTop $('.timsChatMessageContainer.active').prop('scrollHeight') if $('#timsChatAutoscroll').data('status') is 1
Rebuild the userlist based on the given `users`. Rebuild the userlist based on the given `users`.
@ -541,7 +549,7 @@ Send out notifications for the given `message`. The number of unread messages wi
notify = (message) -> notify = (message) ->
if scrollUpNotifications if scrollUpNotifications
$('#timsChatMessageContainer').addClass 'notification' $('.timsChatMessageContainer.active').addClass 'notification'
return if isActive or $('#timsChatNotify').data('status') is 0 return if isActive or $('#timsChatNotify').data('status') is 0
@ -654,6 +662,28 @@ Joins a room.
failure: -> failure: ->
showError WCF.Language.get 'chat.error.join' showError WCF.Language.get 'chat.error.join'
Open private channel
openPrivateChannel = (userID) ->
$('.timsChatMessageContainer').removeClass 'active'
if !$.wcfIsset "timsChatMessageContainer#{userID}"
div = $('<div>')
div.attr 'id', "timsChatMessageContainer#{userID}"
div.addClass 'timsChatMessageContainer'
div.addClass 'marginTop'
div.addClass 'container'
div.wrapInner '<ul>'
$('#timsChatMessageContainer0').after div
$("#timsChatMessageContainer#{userID}").addClass('active')
Close private channel
closePrivateChannel = (userID) ->
$("#timsChatMessageContainer#{userID}").remove() unless userID isnt 0
$("#timsChatMessageContainer0").addClass('active')
Bind the given callback to the given event. Bind the given callback to the given event.
addListener = (event, callback) -> addListener = (event, callback) ->
@ -677,6 +707,8 @@ And finally export the public methods and variables.
insertText: insertText insertText: insertText
freeTheFish: freeTheFish freeTheFish: freeTheFish
join: join join: join
closePrivateChannel: closePrivateChannel # TODO: REMOVE AFTER DEBUGGING
openPrivateChannel: openPrivateChannel # TODO: REMOVE AFTER DEBUGGING
listener: listener:
add: addListener add: addListener
remove: removeListener remove: removeListener

View File

@ -75,7 +75,7 @@
<span class="topic">{$room->topic|language}</span> <span class="topic">{$room->topic|language}</span>
</div> </div>
<div id="timsChatMessageContainer" class="timsChatMessageContainer marginTop container active"> <div id="timsChatMessageContainer0" class="timsChatMessageContainer marginTop container active">
<p class="error noJsOnly" style="display: none;">{lang}chat.general.noJs{/lang}</p> <p class="error noJsOnly" style="display: none;">{lang}chat.general.noJs{/lang}</p>
<ul> <ul>
</ul> </ul>