diff --git a/file/js/TimWolla.WCF.Chat.coffee b/file/js/TimWolla.WCF.Chat.coffee index 771550f..515ec10 100644 --- a/file/js/TimWolla.WCF.Chat.coffee +++ b/file/js/TimWolla.WCF.Chat.coffee @@ -2,19 +2,35 @@ # TimWolla.WCF.Chat # # @author Tim Düsterhus -# @copyright 2010-2011 Tim Düsterhus +# @copyright 2010-2012 Tim Düsterhus # @license Creative Commons Attribution-NonCommercial-ShareAlike # @package timwolla.wcf.chat ### TimWolla ?= {} TimWolla.WCF ?= {} +consoleMock ?= + log: () ->, + warn: () -> -(($, window) -> +(($, window, console) -> TimWolla.WCF.Chat = + # Templates titleTemplate: null messageTemplate: null + + # Notifications newMessageCount: null + isActive: true + + # Autocompleter + autocompleteOffset: 0 + autocompleteValue: null + + # Autoscroll + oldScrollTop: null + + # Events events: newMessage: $.Callbacks() userMenu: $.Callbacks() @@ -24,16 +40,30 @@ TimWolla.WCF ?= {} @events.newMessage.add $.proxy @notify, @ new WCF.PeriodicalExecuter $.proxy(@refreshRoomList, @), 60e3 - new WCF.PeriodicalExecuter $.proxy(@getMessages, @), @config.reloadTime * 1000 + new WCF.PeriodicalExecuter $.proxy(@getMessages, @), @config.reloadTime * 1e3 @refreshRoomList() @getMessages() console.log '[TimWolla.WCF.Chat] Finished initializing' ### + # Autocompletes a username + ### + autocomplete: (firstChars, offset = @autocompleteOffset) -> + users = [] + + # Search all matching users + for user in $ '.chatUser' + username = $(user).data('username'); + if username.indexOf(firstChars) is 0 + users.push username + + # None found -> return firstChars + # otherwise return the user at the current offset + return if users.length is 0 then firstChars else users[offset % users.length] + ### # Binds all the events needed for Tims Chat. ### bindEvents: () -> - @isActive = true $(window).focus $.proxy () -> document.title = @titleTemplate.fetch title: $('#chatRoomList .activeMenuItem a').text() @@ -45,25 +75,56 @@ TimWolla.WCF ?= {} @isActive = false , @ + # Insert a smiley $('.smiley').click $.proxy (event) -> @insertText ' ' + $(event.target).attr('alt') + ' ' , @ + # Switch sidebar tab $('.chatSidebarTabs li').click $.proxy (event) -> event.preventDefault() @toggleSidebarContents $ event.target , @ + # Submit Handler $('#chatForm').submit $.proxy (event) -> event.preventDefault() @submit $ event.target , @ + # Autocompleter + $('#chatInput').keydown $.proxy (event) -> + # tab key + if event.keyCode is 9 + event.preventDefault() + if @autocompleteValue is null + @autocompleteValue = $('#chatInput').val() + + firstChars = @autocompleteValue.substring(@autocompleteValue.lastIndexOf(' ')+1) + + console.log '[TimWolla.WCF.Chat] Autocompleting "' + firstChars + '"' + return if firstChars.length is 0 + + # Insert name and increment offset + $('#chatInput').val(@autocompleteValue.substring(0, @autocompleteValue.lastIndexOf(' ') + 1) + @autocomplete(firstChars) + ', ') + @autocompleteOffset++ + else + @autocompleteOffset = 0 + @autocompleteValue = null + , @ + + # Refreshes the roomlist + $('#chatRoomList button').click $.proxy(@refreshRoomList, @) + + # Clears the stream $('#chatClear').click (event) -> event.preventDefault() $('.chatMessage').remove() + @oldScrollTop = $('.chatMessageContainer').scrollTop() + $('.chatMessageContainer').scrollTop $('.chatMessageContainer ul').height() $('#chatInput').focus() - + + # Toggle Buttons $('.chatToggle').click (event) -> element = $ @ icon = element.find 'img' @@ -75,9 +136,18 @@ TimWolla.WCF ?= {} element.data 'status', 1 icon.attr 'src', icon.attr('src').replace /disabled(\d?).([a-z]{3})$/, 'enabled$1.$2' element.attr 'title', element.data 'disableMessage' - if typeof window.webkitNotifications isnt 'undefined' + + # Immediatly scroll down when activating autoscroll + $('#chatAutoscroll').click (event) -> + $(this).removeClass('hot') + if $(this).data 'status' + $('.chatMessageContainer').scrollTop $('.chatMessageContainer ul').height() + @oldScrollTop = $('.chatMessageContainer').scrollTop() + + # Desktop Notifications + unless typeof window.webkitNotifications is 'undefined' $('#chatNotify').click (event) -> - window.webkitNotifications.requestPermission() + window.webkitNotifications.requestPermission() if $(this).data 'status' ### # Changes the chat-room. @@ -96,11 +166,11 @@ TimWolla.WCF ?= {} @loading = false target.parent().removeClass 'ajaxLoad' - # mark as active + # Mark as active $('.activeMenuItem .chatRoom').parent().removeClass 'activeMenuItem' target.parent().addClass 'activeMenuItem' - # set new topic + # Set new topic if data.topic is '' return if $('#topic').text().trim() is '' @@ -110,11 +180,11 @@ TimWolla.WCF ?= {} $('#topic').text data.topic $('#topic').wcfBlindIn() if $('#topic').text().trim() isnt '' and $('#topic').is(':hidden') - $('title').text @titleTemplate.fetch data - @getMessages() + @handleMessages data.messages + document.title = @titleTemplate.fetch data , @) error: () -> - # reload page to change the room the old fashion-way + # Reload the page to change the room the old fashion-way # inclusive the error-message :) window.location.reload true beforeSend: $.proxy(() -> @@ -129,7 +199,7 @@ TimWolla.WCF ?= {} freeTheFish: () -> return if $.wcfIsset('fish') console.warn '[TimWolla.WCF.Chat] Freeing the fish' - fish = $ '
' + WCF.String.escapeHTML('><((((°>') + '
' + fish = $ '
' + WCF.String.escapeHTML('><((((\u00B0>') + '
' fish.css position: 'absolute' top: '150px' @@ -140,20 +210,20 @@ TimWolla.WCF ?= {} fish.appendTo $ 'body' new WCF.PeriodicalExecuter(() -> - left = (Math.random() * 100 - 50) - top = (Math.random() * 100 - 50) + left = Math.random() * 100 - 50 + top = Math.random() * 100 - 50 fish = $('#fish') - left *= -1 if((fish.position().left + left) < (0 + fish.width()) or (fish.position().left + left) > ($(document).width() - fish.width())) - top *= -1 if((fish.position().top + top) < (0 + fish.height()) or (fish.position().top + top) > ($(document).height() - fish.height())) + left *= -1 unless fish.width() < (fish.position().left + left) < ($(document).width() - fish.width()) + top *= -1 unless fish.height() < (fish.position().top + top) < ($(document).height() - fish.height()) - fish.text('><((((°>') if (left > 0) - fish.text('<°))))><') if (left < 0) + fish.text('><((((\u00B0>') if left > 0 + fish.text('<\u00B0))))><') if left < 0 fish.animate top: '+=' + top left: '+=' + left - , 1000 + , 1e3 , 1.5e3); ### # Loads new messages. @@ -172,6 +242,14 @@ TimWolla.WCF ?= {} # @param array messages ### handleMessages: (messages) -> + # Disable scrolling automagically when user manually scrolled + unless @oldScrollTop is null + if $('.chatMessageContainer').scrollTop() < @oldScrollTop + if $('#chatAutoscroll').data('status') is 1 + $('#chatAutoscroll').click() + $('#chatAutoscroll').addClass('hot').fadeOut('slow').fadeIn('slow') + + # Insert the messages for message in messages @events.newMessage.fire message @@ -182,23 +260,34 @@ TimWolla.WCF ?= {} li.append output li.appendTo $ '.chatMessageContainer ul' - $('.chatMessageContainer').animate - scrollTop: $('.chatMessageContainer ul').height() - , 1000 + + # Autoscroll down + if $('#chatAutoscroll').data('status') is 1 + $('.chatMessageContainer').scrollTop $('.chatMessageContainer ul').height() + @oldScrollTop = $('.chatMessageContainer').scrollTop() + ### + # Builds the userlist. + # + # @param array users + ### handleUsers: (users) -> - foundUsers = {} + foundUsers = { } for user in users id = 'chatUser-'+user.userID element = $('#'+id) + + # Move the user to the correct position if element[0] - console.log '[TimWolla.WCF.Chat] Shifting user ' + user.userID + console.log '[TimWolla.WCF.Chat] Moving User: "' + user.username + '"' element = element.detach() $('#chatUserList').append element + # Insert the user else - console.log '[TimWolla.WCF.Chat] Inserting user ' + user.userID + console.log '[TimWolla.WCF.Chat] Inserting User: "' + user.username + '"' li = $ '
  • ' li.attr 'id', id li.addClass 'chatUser' + li.data 'username', user.username a = $ ''+user.username+'' a.click $.proxy (event) -> event.preventDefault() @@ -217,9 +306,12 @@ TimWolla.WCF ?= {} foundUsers[id] = true + # Remove users that were not found $('.chatUser').each () -> if typeof foundUsers[$(@).attr('id')] is 'undefined' - $(@).remove() + console.log '[TimWolla.WCF.Chat] Removing User: "' + $(@).data('username') + '"' + $(@).remove(); + $('#toggleUsers .badge').text(users.length); ### @@ -248,12 +340,13 @@ TimWolla.WCF ?= {} # @param object message ### notify: (message) -> - return if (@isActive or $('#chatNotify').data('status') is 0) + return if @isActive or $('#chatNotify').data('status') is 0 @newMessageCount++ document.title = '(' + @newMessageCount + ') ' + @titleTemplate.fetch title: $('#chatRoomList .activeMenuItem a').text() + # Desktop Notifications if typeof window.webkitNotifications isnt 'undefined' if window.webkitNotifications.checkPermission() is 0 title = WCF.Language.get('wcf.chat.newMessages') @@ -263,12 +356,12 @@ TimWolla.WCF ?= {} notification.show() setTimeout(() -> notification.cancel() - , 5000) + , 5e3) ### # Refreshes the room-list. ### refreshRoomList: () -> - console.log '[TimWolla.WCF.Chat] Refreshing the room-list' + console.log '[TimWolla.WCF.Chat] Refreshing the roomlist' $('#toggleRooms a').addClass 'ajaxLoad' $.ajax $('#toggleRooms a').data('refreshUrl'), @@ -299,9 +392,10 @@ TimWolla.WCF ?= {} # @param jQuery-object target ### submit: (target) -> - # break if input contains only whitespace + # Break if input contains only whitespace return false if $('#chatInput').val().trim().length is 0 + # Finally free the fish @freeTheFish() if $('#chatInput').val().trim().toLowerCase() is '/free the fish' $.ajax $('#chatForm').attr('action'), @@ -352,4 +446,4 @@ TimWolla.WCF ?= {} else li.addClass 'activeMenuItem' li.find('.chatUserMenu').wcfBlindIn 'vertical' -)(jQuery, @) +)(jQuery, @, consoleMock) diff --git a/file/lib/data/chat/message/ChatMessage.class.php b/file/lib/data/chat/message/ChatMessage.class.php index 2e2557f..ebbddfa 100755 --- a/file/lib/data/chat/message/ChatMessage.class.php +++ b/file/lib/data/chat/message/ChatMessage.class.php @@ -6,7 +6,7 @@ use \wcf\system\WCF; * Represents a chat message. * * @author Tim Düsterhus - * @copyright 2010-2011 Tim Düsterhus + * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike * @package timwolla.wcf.chat * @subpackage data.chat.message diff --git a/file/lib/data/chat/message/ChatMessageAction.class.php b/file/lib/data/chat/message/ChatMessageAction.class.php index 2423d31..4d6d4ff 100644 --- a/file/lib/data/chat/message/ChatMessageAction.class.php +++ b/file/lib/data/chat/message/ChatMessageAction.class.php @@ -5,7 +5,7 @@ namespace wcf\data\chat\message; * Executes message related actions. * * @author Tim Düsterhus - * @copyright 2010-2011 Tim Düsterhus + * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike * @package timwolla.wcf.chat * @subpackage data.chat.message diff --git a/file/lib/data/chat/message/ChatMessageEditor.class.php b/file/lib/data/chat/message/ChatMessageEditor.class.php index b2f8a60..abad314 100644 --- a/file/lib/data/chat/message/ChatMessageEditor.class.php +++ b/file/lib/data/chat/message/ChatMessageEditor.class.php @@ -5,7 +5,7 @@ namespace wcf\data\chat\message; * Provides functions to edit chat messages. * * @author Tim Düsterhus - * @copyright 2010-2011 Tim Düsterhus + * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike * @package timwolla.wcf.chat * @subpackage data.chat.message diff --git a/file/lib/data/chat/message/ChatMessageList.class.php b/file/lib/data/chat/message/ChatMessageList.class.php index 10f474f..2f3e01e 100644 --- a/file/lib/data/chat/message/ChatMessageList.class.php +++ b/file/lib/data/chat/message/ChatMessageList.class.php @@ -5,7 +5,7 @@ namespace wcf\data\chat\message; * Represents a list of chat messages. * * @author Tim Düsterhus - * @copyright 2010-2011 Tim Düsterhus + * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike * @package timwolla.wcf.chat * @subpackage data.chat.room diff --git a/file/lib/data/chat/room/ChatRoom.class.php b/file/lib/data/chat/room/ChatRoom.class.php index 565d8ba..9193bf0 100644 --- a/file/lib/data/chat/room/ChatRoom.class.php +++ b/file/lib/data/chat/room/ChatRoom.class.php @@ -6,7 +6,7 @@ use \wcf\system\cache\CacheHandler; * Represents a chat room. * * @author Tim Düsterhus - * @copyright 2010-2011 Tim Düsterhus + * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike * @package timwolla.wcf.chat * @subpackage data.chat.room diff --git a/file/lib/data/chat/room/ChatRoomEditor.class.php b/file/lib/data/chat/room/ChatRoomEditor.class.php index a928ad8..73e0a2a 100644 --- a/file/lib/data/chat/room/ChatRoomEditor.class.php +++ b/file/lib/data/chat/room/ChatRoomEditor.class.php @@ -5,7 +5,7 @@ namespace wcf\data\chat\room; * Provides functions to edit chat rooms. * * @author Tim Düsterhus - * @copyright 2010-2011 Tim Düsterhus + * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike * @package timwolla.wcf.chat * @subpackage data.chat.room diff --git a/file/lib/data/chat/room/ChatRoomList.class.php b/file/lib/data/chat/room/ChatRoomList.class.php index 0c34470..6a311d7 100644 --- a/file/lib/data/chat/room/ChatRoomList.class.php +++ b/file/lib/data/chat/room/ChatRoomList.class.php @@ -5,7 +5,7 @@ namespace wcf\data\chat\room; * Represents a list of chat rooms. * * @author Tim Düsterhus - * @copyright 2010-2011 Tim Düsterhus + * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike * @package timwolla.wcf.chat * @subpackage data.chat.room diff --git a/file/lib/form/ChatForm.class.php b/file/lib/form/ChatForm.class.php index 25b29af..1d12d46 100644 --- a/file/lib/form/ChatForm.class.php +++ b/file/lib/form/ChatForm.class.php @@ -10,7 +10,7 @@ use \wcf\util\StringUtil; * Inserts a message * * @author Tim Düsterhus - * @copyright 2010-2011 Tim Düsterhus + * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike * @package timwolla.wcf.chat * @subpackage form diff --git a/file/lib/page/ChatCopyrightPage.class.php b/file/lib/page/ChatCopyrightPage.class.php index 15bf231..cf4deea 100644 --- a/file/lib/page/ChatCopyrightPage.class.php +++ b/file/lib/page/ChatCopyrightPage.class.php @@ -6,7 +6,7 @@ use \wcf\system\WCF; * Shows information about Tims chat. * * @author Tim Düsterhus - * @copyright 2010-2011 Tim Düsterhus + * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike * @package timwolla.wcf.chat * @subpackage page diff --git a/file/lib/page/ChatMessagePage.class.php b/file/lib/page/ChatMessagePage.class.php index d7f2fbf..873e95a 100644 --- a/file/lib/page/ChatMessagePage.class.php +++ b/file/lib/page/ChatMessagePage.class.php @@ -7,7 +7,7 @@ use \wcf\system\WCF; * Loads new messages. * * @author Tim Düsterhus - * @copyright 2010-2011 Tim Düsterhus + * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike * @package timwolla.wcf.chat * @subpackage page diff --git a/file/lib/page/ChatPage.class.php b/file/lib/page/ChatPage.class.php index a3922fb..d7dbe78 100644 --- a/file/lib/page/ChatPage.class.php +++ b/file/lib/page/ChatPage.class.php @@ -8,7 +8,7 @@ use \wcf\system\WCF; * Shows the chat-interface * * @author Tim Düsterhus - * @copyright 2010-2011 Tim Düsterhus + * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike * @package timwolla.wcf.chat * @subpackage page @@ -66,8 +66,6 @@ class ChatPage extends AbstractPage { $this->readRoom(); $this->userData['color'] = \wcf\util\ChatUtil::readUserData('color'); \wcf\util\ChatUtil::writeUserData(array('roomID' => $this->room->roomID)); - $this->newestMessages = chat\message\ChatMessageList::getNewestMessages($this->room, CHAT_LASTMESSAGES); - \wcf\util\ChatUtil::writeUserData(array('lastSeen' => count($this->newestMessages) ? end($this->newestMessages)->messageID : 0)); if (CHAT_DISPLAY_JOIN_LEAVE) { $messageAction = new chat\message\ChatMessageAction(array(), 'create', array( @@ -86,6 +84,9 @@ class ChatPage extends AbstractPage { $return = $messageAction->getReturnValues(); } + $this->newestMessages = chat\message\ChatMessageList::getNewestMessages($this->room, CHAT_LASTMESSAGES); + \wcf\util\ChatUtil::writeUserData(array('lastSeen' => end($this->newestMessages)->messageID)); + $this->readDefaultSmileys(); $this->readChatVersion(); } @@ -173,9 +174,12 @@ class ChatPage extends AbstractPage { if ($this->useTemplate) exit; @header('Content-type: application/json'); + $messages = array(); + foreach ($this->newestMessages as $message) $messages[] = $message->jsonify(true); echo \wcf\util\JSON::encode(array( 'title' => $this->room->getTitle(), - 'topic' => WCF::getLanguage()->get($this->room->topic) + 'topic' => WCF::getLanguage()->get($this->room->topic), + 'messages' => $messages )); exit; } diff --git a/file/lib/page/ChatRefreshRoomListPage.class.php b/file/lib/page/ChatRefreshRoomListPage.class.php index 56d0267..36f4156 100644 --- a/file/lib/page/ChatRefreshRoomListPage.class.php +++ b/file/lib/page/ChatRefreshRoomListPage.class.php @@ -8,7 +8,7 @@ use \wcf\system\WCF; * Shows the chat-interface * * @author Tim Düsterhus - * @copyright 2010-2011 Tim Düsterhus + * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike * @package timwolla.wcf.chat * @subpackage page diff --git a/file/lib/system/cache/builder/ChatRoomCacheBuilder.class.php b/file/lib/system/cache/builder/ChatRoomCacheBuilder.class.php index 9fca599..c21267f 100644 --- a/file/lib/system/cache/builder/ChatRoomCacheBuilder.class.php +++ b/file/lib/system/cache/builder/ChatRoomCacheBuilder.class.php @@ -5,7 +5,7 @@ namespace wcf\system\cache\builder; * Caches all chat rooms. * * @author Tim Düsterhus - * @copyright 2010-2011 Tim Düsterhus + * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike * @package timwolla.wcf.chat * @subpackage system.cache.builder diff --git a/file/lib/system/chat/permissions/ChatPermissionHandler.class.php b/file/lib/system/chat/permissions/ChatPermissionHandler.class.php index c8ef28e..d525b9e 100644 --- a/file/lib/system/chat/permissions/ChatPermissionHandler.class.php +++ b/file/lib/system/chat/permissions/ChatPermissionHandler.class.php @@ -7,8 +7,8 @@ use \wcf\system\WCF; /** * Handles chat-permissions. * - * @author Tim Düsterhus, Marcel Werk - * @copyright 2010-2011 WoltLab GmbH + * @author Tim Düsterhus, Marcel Werk + * @copyright 2010-2012 WoltLab GmbH * @license GNU Lesser General Public License * @package timwolla.wcf.chat * @subpackage system.chat.permissions diff --git a/file/lib/system/event/listener/ChatRouteListener.class.php b/file/lib/system/event/listener/ChatRouteListener.class.php index 443a8cb..991bb35 100644 --- a/file/lib/system/event/listener/ChatRouteListener.class.php +++ b/file/lib/system/event/listener/ChatRouteListener.class.php @@ -5,7 +5,7 @@ namespace wcf\system\event\listener; * Adds a new route to RouteHandler * * @author Maximilian Mader - * @copyright 2010-2011 Tim Düsterhus + * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike * @package timwolla.wcf.chat * @subpackage system.event.listener diff --git a/file/lib/system/menu/page/ChatPageMenuItemProvider.class.php b/file/lib/system/menu/page/ChatPageMenuItemProvider.class.php index 29e201f..978c956 100644 --- a/file/lib/system/menu/page/ChatPageMenuItemProvider.class.php +++ b/file/lib/system/menu/page/ChatPageMenuItemProvider.class.php @@ -6,7 +6,7 @@ use \wcf\data\chat\room\ChatRoom; * PageMenuItemProvider for chat. * * @author Tim Düsterhus - * @copyright 2010-2011 Tim Düsterhus + * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike * @package timwolla.wcf.chat * @subpackage system.menu.page diff --git a/file/lib/system/option/TimeIntervalOptionType.class.php b/file/lib/system/option/TimeIntervalOptionType.class.php index 1fa6bb1..7f35c22 100644 --- a/file/lib/system/option/TimeIntervalOptionType.class.php +++ b/file/lib/system/option/TimeIntervalOptionType.class.php @@ -5,7 +5,7 @@ namespace wcf\system\option; * TimeIntervalOptionType is an implementation of IOptionType for time intervals. * * @author Tim Düsterhus - * @copyright 2010-2011 Tim Düsterhus + * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike * @package timwolla.wcf.chat * @subpackage system.option diff --git a/file/lib/util/ChatUtil.class.php b/file/lib/util/ChatUtil.class.php index 3d03ba5..2cfde2c 100644 --- a/file/lib/util/ChatUtil.class.php +++ b/file/lib/util/ChatUtil.class.php @@ -8,7 +8,7 @@ use \wcf\system\WCF; * Chat utilities * * @author Tim Düsterhus - * @copyright 2010-2011 Tim Düsterhus + * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike * @package timwolla.wcf.chat * @subpackage util diff --git a/file/style/timwolla.wcf.chat.scss b/file/style/timwolla.wcf.chat.scss index 5eea3a3..1625fda 100644 --- a/file/style/timwolla.wcf.chat.scss +++ b/file/style/timwolla.wcf.chat.scss @@ -2,7 +2,7 @@ * Chat-Styles * * @author Tim Düsterhus, Maximilian Mader - * @copyright 2010-2011 Tim Düsterhus + * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike * @package timwolla.wcf.chat */ diff --git a/package.xml b/package.xml index 6a8f69f..7c3bf7b 100644 --- a/package.xml +++ b/package.xml @@ -5,7 +5,7 @@ 0 1 - 3.0.0 Alpha 2 + 3.0.0 Alpha 3 2011-11-26 com.woltlab.wcf.bbcode @@ -45,4 +45,4 @@ templatelistener.xml acloptions.xml - \ No newline at end of file + diff --git a/template/chat.tpl b/template/chat.tpl index 87e1c19..adfaba3 100755 --- a/template/chat.tpl +++ b/template/chat.tpl @@ -119,6 +119,7 @@ {/if} {/foreach} +
    @@ -153,27 +154,27 @@ @@ -182,21 +183,20 @@ {include file='chatCopyright'} - {include file='chatJavascriptInclude'}