diff --git a/acloptions.xml b/acloptions.xml index 5df092e..61aea2b 100644 --- a/acloptions.xml +++ b/acloptions.xml @@ -3,30 +3,30 @@ - timwolla.wcf.chat.room + be.bastelstu.wcf.chat.room - timwolla.wcf.chat.room + be.bastelstu.wcf.chat.room diff --git a/acptemplate/chatRoomAdd.tpl b/acptemplate/chatRoomAdd.tpl index a3c0e81..2e86b46 100644 --- a/acptemplate/chatRoomAdd.tpl +++ b/acptemplate/chatRoomAdd.tpl @@ -43,7 +43,7 @@
-
+
{lang}wcf.acp.chat.room.data{/lang} diff --git a/acptemplate/chatRoomList.tpl b/acptemplate/chatRoomList.tpl index e42144a..7e4ca7e 100644 --- a/acptemplate/chatRoomList.tpl +++ b/acptemplate/chatRoomList.tpl @@ -4,7 +4,7 @@ // @@ -28,31 +28,41 @@ {/if}
-
+
{hascontent} -
    +
      {content} {foreach from=$objects item=chatRoom} -
    1. +
    2. - {$chatRoom->title|language} + {if $__wcf->session->getPermission('admin.content.chat.canEditRoom')} + {$chatRoom->title|language} + {else} + {$chatRoom->title|language} + {/if} - + {if $__wcf->session->getPermission('admin.content.chat.canEditRoom')} {/if} {if $__wcf->session->getPermission('admin.content.chat.canDeleteRoom')} - + {/if} +
      1. {/foreach} {/content}
      +
      + + +
      {hascontentelse}

      {lang}wcf.acp.chat.room.noneAvailable{/lang}

      {/hascontent}
    + {include file='footer'} \ No newline at end of file diff --git a/build.php b/build.php index 5b96816..9f0c717 100755 --- a/build.php +++ b/build.php @@ -6,7 +6,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat */ echo << - wcf\system\request\RouteHandler + \wcf\system\request\RouteHandler didInit user 0 - wcf\system\event\listener\ChatRouteListener + \wcf\system\event\listener\ChatRouteListener \ No newline at end of file diff --git a/file/acp/timwolla.wcf.chat.update.php b/file/acp/be.bastelstu.wcf.chat.update.php similarity index 92% rename from file/acp/timwolla.wcf.chat.update.php rename to file/acp/be.bastelstu.wcf.chat.update.php index 7a9c967..ba1d721 100644 --- a/file/acp/timwolla.wcf.chat.update.php +++ b/file/acp/be.bastelstu.wcf.chat.update.php @@ -1,5 +1,5 @@ - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat */ final class Update { private $rooms = null; diff --git a/file/icon/chat.svg b/file/icon/chat.svg index 19808ff..ceaa23b 100644 --- a/file/icon/chat.svg +++ b/file/icon/chat.svg @@ -4,6 +4,7 @@ @author Maximilian Mader @copyright 2011 Tim Düsterhus @license Creative Commons Attribution-NonCommercial-ShareAlike + @package be.bastelstu.wcf.chat --> Chat diff --git a/file/icon/chat1.svg b/file/icon/chat1.svg index e8adc13..d9fd61b 100644 --- a/file/icon/chat1.svg +++ b/file/icon/chat1.svg @@ -4,6 +4,7 @@ @author Maximilian Mader @copyright 2011 Tim Düsterhus @license Creative Commons Attribution-NonCommercial-ShareAlike + @package be.bastelstu.wcf.chat --> Chat diff --git a/file/js/TimWolla.WCF.Chat.coffee b/file/js/be.bastelstu.WCF.Chat.coffee similarity index 89% rename from file/js/TimWolla.WCF.Chat.coffee rename to file/js/be.bastelstu.WCF.Chat.coffee index 7bd749c..059970e 100644 --- a/file/js/TimWolla.WCF.Chat.coffee +++ b/file/js/be.bastelstu.WCF.Chat.coffee @@ -1,14 +1,16 @@ ### -# TimWolla.WCF.Chat +# be.bastelstu.WCF.Chat # # @author Tim Düsterhus # @copyright 2010-2012 Tim Düsterhus # @license Creative Commons Attribution-NonCommercial-ShareAlike -# @package timwolla.wcf.chat +# @package be.bastelstu.wcf.chat ### -TimWolla ?= {} -TimWolla.WCF ?= {} +be ?= {} +be.bastelstu ?= {} +be.bastelstu.WCF ?= {} + consoleMock = console consoleMock ?= log: () ->, @@ -16,7 +18,7 @@ consoleMock ?= error: () -> (($, window, console) -> - TimWolla.WCF.Chat = + be.bastelstu.WCF.Chat = # Tims Chat stops loading when this reaches zero # TODO: We need an explosion animation shields: 3 @@ -45,7 +47,7 @@ consoleMock ?= refreshRoomList: null fish: null init: () -> - console.log '[TimWolla.WCF.Chat] Initializing' + console.log '[be.bastelstu.WCF.Chat Initializing' @bindEvents() @events.newMessage.add $.proxy @notify, @ @@ -54,7 +56,7 @@ consoleMock ?= @refreshRoomList() @getMessages() - console.log '[TimWolla.WCF.Chat] Finished initializing - Shields at 104 percent' + console.log '[be.bastelstu.WCF.Chat Finished initializing - Shields at 104 percent' ### # Autocompletes a username ### @@ -63,7 +65,7 @@ consoleMock ?= # Search all matching users for user in $ '.timsChatUser' - username = $(user).data('username'); + username = $(user).data 'username' if username.indexOf(firstChars) is 0 users.push username @@ -120,7 +122,7 @@ consoleMock ?= firstChars = @autocompleteValue.substring(@autocompleteValue.lastIndexOf(' ')+1) - console.log '[TimWolla.WCF.Chat] Autocompleting "' + firstChars + '"' + console.log '[be.bastelstu.WCF.Chat Autocompleting "' + firstChars + '"' return if firstChars.length is 0 # Insert name and increment offset @@ -198,7 +200,7 @@ consoleMock ?= $('#timsChatTopic').text data.topic $('#timsChatTopic').wcfBlindIn() if $('#timsChatTopic').text().trim() isnt '' and $('#timsChatTopic').is(':hidden') - $('.timsChatMessage').addClass('unloaded', 800); + $('.timsChatMessage').addClass 'unloaded', 800 @handleMessages data.messages document.title = @titleTemplate.fetch data , @) @@ -217,7 +219,7 @@ consoleMock ?= ### freeTheFish: () -> return if $.wcfIsset 'fish' - console.warn '[TimWolla.WCF.Chat] Freeing the fish' + console.warn '[be.bastelstu.WCF.Chat Freeing the fish' fish = $ '
    ' + WCF.String.escapeHTML('><((((\u00B0>') + '
    ' fish.css position: 'absolute' @@ -243,7 +245,7 @@ consoleMock ?= top: '+=' + top left: '+=' + left , 1e3 - , 1.5e3); + , 1.5e3) ### # Loads new messages. ### @@ -256,12 +258,12 @@ consoleMock ?= @handleUsers(data.users) , @) error: $.proxy((jqXHR, textStatus, errorThrown) -> - console.error '[TimWolla.WCF.Chat] Battle Station hit - shields at ' + (--@shields / 3 * 104) + ' percent' + console.error '[be.bastelstu.WCF.Chat Battle Station hit - shields at ' + (--@shields / 3 * 104) + ' percent' if @shields is 0 @pe.refreshRoomList.stop() @pe.getMessages.stop() @freeTheFish() - console.error '[TimWolla.WCF.Chat] We got destroyed, but could free our friend the fish before he was killed as well. Have a nice life in freedom!' + console.error '[be.bastelstu.WCF.Chat We got destroyed, but could free our friend the fish before he was killed as well. Have a nice life in freedom!' alert 'herp i cannot load messages' , @) ### @@ -279,7 +281,7 @@ consoleMock ?= # Insert the messages for message in messages - continue if $.wcfIsset 'timsChatMessage'+message.messageID # Prevent problems with race condition + continue if $.wcfIsset 'timsChatMessage' + message.messageID # Prevent problems with race condition @events.newMessage.fire message output = @messageTemplate.fetch message @@ -304,16 +306,16 @@ consoleMock ?= foundUsers = { } for user in users id = 'timsChatUser-'+user.userID - element = $('#'+id) + element = $ '#'+id # Move the user to the correct position if element[0] - console.log '[TimWolla.WCF.Chat] Moving User: "' + user.username + '"' + console.log '[be.bastelstu.WCF.Chat Moving User: "' + user.username + '"' element = element.detach() $('#timsChatUserList').append element # Insert the user else - console.log '[TimWolla.WCF.Chat] Inserting User: "' + user.username + '"' + console.log '[be.bastelstu.WCF.Chat Inserting User: "' + user.username + '"' li = $ '
  1. ' li.attr 'id', id li.addClass 'timsChatUser' @@ -339,7 +341,7 @@ consoleMock ?= # Remove users that were not found $('.timsChatUser').each () -> if typeof foundUsers[$(@).attr('id')] is 'undefined' - console.log '[TimWolla.WCF.Chat] Removing User: "' + $(@).data('username') + '"' + console.log '[be.bastelstu.WCF.Chat Removing User: "' + $(@).data('username') + '"' $(@).remove(); @@ -370,7 +372,7 @@ consoleMock ?= # @param object message ### notify: (message) -> - return if @isActive or $('#timsChatNotify').data('status') is 0 + return if @isActive or $('#timsChatNotify').data 'status' is 0 @newMessageCount++ document.title = '(' + @newMessageCount + ') ' + @titleTemplate.fetch @@ -379,8 +381,8 @@ consoleMock ?= # Desktop Notifications if typeof window.webkitNotifications isnt 'undefined' if window.webkitNotifications.checkPermission() is 0 - title = WCF.Language.get('wcf.chat.newMessages') - icon = WCF.Icon.get('timwolla.wcf.chat.chat') + title = WCF.Language.get 'wcf.chat.newMessages' + icon = WCF.Icon.get 'be.bastelstu.wcf.chat.chat' content = message.username + message.separator + ' ' + message.message notification = window.webkitNotifications.createNotification icon, title, content notification.show() @@ -391,7 +393,7 @@ consoleMock ?= # Refreshes the room-list. ### refreshRoomList: () -> - console.log '[TimWolla.WCF.Chat] Refreshing the roomlist' + console.log '[be.bastelstu.WCF.Chat Refreshing the roomlist' $('#toggleRooms a').addClass 'ajaxLoad' $.ajax $('#toggleRooms a').data('refreshUrl'), @@ -400,7 +402,7 @@ consoleMock ?= success: $.proxy((data, textStatus, jqXHR) -> $('#timsChatRoomList li').remove() $('#toggleRooms a').removeClass 'ajaxLoad' - $('#toggleRooms .wcf-badge').text(data.length); + $('#toggleRooms .wcf-badge').text data.length for room in data li = $ '
  2. ' @@ -414,7 +416,7 @@ consoleMock ?= @changeRoom $ event.target , @ - console.log '[TimWolla.WCF.Chat] Found ' + data.length + ' rooms' + console.log '[be.bastelstu.WCF.Chat Found ' + data.length + ' rooms' , @) ### # Handles submitting of messages. @@ -428,17 +430,17 @@ consoleMock ?= # Finally free the fish @freeTheFish() if $('#timsChatInput').val().trim().toLowerCase() is '/free the fish' + text = $('#timsChatInput').val() + $('#timsChatInput').val('').focus().keyup() $.ajax $('#timsChatForm').attr('action'), data: - text: $('#timsChatInput').val(), - smilies: $('#timsChatSmilies').data('status') + text: text + smilies: $('#timsChatSmilies').data 'status' type: 'POST', beforeSend: (jqXHR) -> $('#timsChatInput').addClass 'ajaxLoad' success: $.proxy((data, textStatus, jqXHR) -> @getMessages() - $('#timsChatInput').val('').focus() - $('#timsChatInput').keyup() , @) complete: () -> $('#timsChatInput').removeClass 'ajaxLoad' diff --git a/file/js/jCounter.jQuery.coffee b/file/js/jCounter.jQuery.coffee index dd9b96d..5eee1cf 100644 --- a/file/js/jCounter.jQuery.coffee +++ b/file/js/jCounter.jQuery.coffee @@ -10,16 +10,23 @@ $.fn.jCounter = (container, options) -> options = $.extend max: 0 - counterClass: 'jsCounter' + counterClass: 'jCounter' countUp: false + cssFile: 'wcf/style/jCounter.css' + width: '100%' , options if this.attr('maxlength') max = this.attr('maxlength') else max = options.max + if $('#jCounterCSS').length == 0 + $('head').append('') + if !container - this.wrap('
    ').parent().append('
    ' + max + '
    '); + if !this.hasClass('jCounterInput') + this.addClass('jCounterInput') + this.wrap('
    ').parent().append('
    ' + max + '
    '); jCounterContainer = $(this).parent().children('.' + options.counterClass) else if typeof container is 'object' @@ -33,7 +40,14 @@ else length = max - this.val().length - if options.countUp + if options.countUp && max > 0 + if length < max / 2 + color = 1 + else if length >= max / 2 and length <= max / 1.2 + color = 2 + else + color = 3 + else if options.countUp color = 1 else if length > max / 2 diff --git a/file/lib/acp/form/ChatRoomAddForm.class.php b/file/lib/acp/form/ChatRoomAddForm.class.php index e5a95e1..90f32cb 100644 --- a/file/lib/acp/form/ChatRoomAddForm.class.php +++ b/file/lib/acp/form/ChatRoomAddForm.class.php @@ -2,7 +2,6 @@ namespace wcf\acp\form; use \wcf\system\exception\UserInputException; use \wcf\system\language\I18nHandler; -use \wcf\system\package\PackageDependencyHandler; use \wcf\system\WCF; /** @@ -11,7 +10,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage acp.form */ class ChatRoomAddForm extends ACPForm { @@ -43,7 +42,7 @@ class ChatRoomAddForm extends ACPForm { * @see \wcf\page\AbstractPage::__construct() */ public function __construct() { - $this->objectTypeID = \wcf\system\acl\ACLHandler::getInstance()->getObjectTypeID('timwolla.wcf.chat.room'); + $this->objectTypeID = \wcf\system\acl\ACLHandler::getInstance()->getObjectTypeID('be.bastelstu.wcf.chat.room'); parent::__construct(); } @@ -99,7 +98,7 @@ public function save() { $roomID = $returnValues['returnValues']->roomID; if (!I18nHandler::getInstance()->isPlainValue('title')) { - I18nHandler::getInstance()->save('title', 'wcf.chat.room.title'.$roomID, 'wcf.chat.room', PackageDependencyHandler::getPackageID('timwolla.wcf.chat')); + I18nHandler::getInstance()->save('title', 'wcf.chat.room.title'.$roomID, 'wcf.chat.room', \wcf\util\ChatUtil::getPackageID()); // update title $chatRoomEditor->update(array( @@ -108,7 +107,7 @@ public function save() { } if (!I18nHandler::getInstance()->isPlainValue('topic')) { - I18nHandler::getInstance()->save('topic', 'wcf.chat.room.topic'.$roomID, 'wcf.chat.room', PackageDependencyHandler::getPackageID('timwolla.wcf.chat')); + I18nHandler::getInstance()->save('topic', 'wcf.chat.room.topic'.$roomID, 'wcf.chat.room', \wcf\util\ChatUtil::getPackageID()); // update topic $chatRoomEditor->update(array( diff --git a/file/lib/acp/form/ChatRoomEditForm.class.php b/file/lib/acp/form/ChatRoomEditForm.class.php index a0298be..c56f7b6 100644 --- a/file/lib/acp/form/ChatRoomEditForm.class.php +++ b/file/lib/acp/form/ChatRoomEditForm.class.php @@ -1,8 +1,7 @@ - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage acp.form */ class ChatRoomEditForm extends ChatRoomAddForm { @@ -64,20 +63,20 @@ public function save() { $this->title = 'wcf.chat.room.title'.$this->roomObj->roomID; if (I18nHandler::getInstance()->isPlainValue('title')) { - I18nHandler::getInstance()->remove($this->title, PackageDependencyHandler::getPackageID('timwolla.wcf.chat')); + I18nHandler::getInstance()->remove($this->title, \wcf\util\ChatUtil::getPackageID()); $this->title = I18nHandler::getInstance()->getValue('title'); } else { - I18nHandler::getInstance()->save('title', $this->title, 'wcf.chat.room', PackageDependencyHandler::getPackageID('timwolla.wcf.chat')); + I18nHandler::getInstance()->save('title', $this->title, 'wcf.chat.room', \wcf\util\ChatUtil::getPackageID()); } $this->topic = 'wcf.chat.room.topic'.$this->roomObj->roomID; if (I18nHandler::getInstance()->isPlainValue('topic')) { - I18nHandler::getInstance()->remove($this->topic, PackageDependencyHandler::getPackageID('timwolla.wcf.chat')); + I18nHandler::getInstance()->remove($this->topic, \wcf\util\ChatUtil::getPackageID()); $this->topic = I18nHandler::getInstance()->getValue('topic'); } else { - I18nHandler::getInstance()->save('topic', $this->topic, 'wcf.chat.room', PackageDependencyHandler::getPackageID('timwolla.wcf.chat')); + I18nHandler::getInstance()->save('topic', $this->topic, 'wcf.chat.room', \wcf\util\ChatUtil::getPackageID()); } \wcf\system\acl\ACLHandler::getInstance()->save($this->roomID, $this->objectTypeID); @@ -105,8 +104,8 @@ public function readData() { parent::readData(); if (!count($_POST)) { - I18nHandler::getInstance()->setOptions('title', PackageDependencyHandler::getPackageID('timwolla.wcf.chat'), $this->roomObj->title, 'wcf.chat.room.title\d+'); - I18nHandler::getInstance()->setOptions('topic', PackageDependencyHandler::getPackageID('timwolla.wcf.chat'), $this->roomObj->topic, 'wcf.chat.room.topic\d+'); + I18nHandler::getInstance()->setOptions('title', \wcf\util\ChatUtil::getPackageID(), $this->roomObj->title, 'wcf.chat.room.title\d+'); + I18nHandler::getInstance()->setOptions('topic', \wcf\util\ChatUtil::getPackageID(), $this->roomObj->topic, 'wcf.chat.room.topic\d+'); $this->title = $this->roomObj->title; $this->topic = $this->roomObj->topic; diff --git a/file/lib/acp/page/ChatRoomListPage.class.php b/file/lib/acp/page/ChatRoomListPage.class.php index ac1314a..665015b 100644 --- a/file/lib/acp/page/ChatRoomListPage.class.php +++ b/file/lib/acp/page/ChatRoomListPage.class.php @@ -7,7 +7,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage acp.page */ class ChatRoomListPage extends \wcf\page\MultipleLinkPage { diff --git a/file/lib/action/ChatLeaveAction.class.php b/file/lib/action/ChatLeaveAction.class.php index f2f3146..eb47bf6 100644 --- a/file/lib/action/ChatLeaveAction.class.php +++ b/file/lib/action/ChatLeaveAction.class.php @@ -9,7 +9,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage action */ class ChatLeaveAction extends AbstractAction { diff --git a/file/lib/data/chat/message/ChatMessage.class.php b/file/lib/data/chat/message/ChatMessage.class.php index f8e5db5..97b9b47 100755 --- a/file/lib/data/chat/message/ChatMessage.class.php +++ b/file/lib/data/chat/message/ChatMessage.class.php @@ -8,7 +8,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage data.chat.message */ class ChatMessage extends \wcf\data\DatabaseObject { diff --git a/file/lib/data/chat/message/ChatMessageAction.class.php b/file/lib/data/chat/message/ChatMessageAction.class.php index fef87e4..f1c4872 100644 --- a/file/lib/data/chat/message/ChatMessageAction.class.php +++ b/file/lib/data/chat/message/ChatMessageAction.class.php @@ -7,7 +7,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage data.chat.message */ class ChatMessageAction extends \wcf\data\AbstractDatabaseObjectAction { diff --git a/file/lib/data/chat/message/ChatMessageEditor.class.php b/file/lib/data/chat/message/ChatMessageEditor.class.php index ee54251..052ee34 100644 --- a/file/lib/data/chat/message/ChatMessageEditor.class.php +++ b/file/lib/data/chat/message/ChatMessageEditor.class.php @@ -7,7 +7,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage data.chat.message */ class ChatMessageEditor extends \wcf\data\DatabaseObjectEditor { @@ -23,17 +23,19 @@ class ChatMessageEditor extends \wcf\data\DatabaseObjectEditor { * @param integer $lifetime Delete messages older that this time. * @return integer Number of deleted messages. */ - public static function cleanup($lifetime = CHAT_ARCHIVETIME) { + public static function prune($lifetime = CHAT_ARCHIVETIME) { + $baseClass = self::$baseClass; $sql = "SELECT - ".static::getDatabaseIndexName()." + ".$baseClass::getDatabaseTableIndexName()." FROM - ".static::getDatabaseTableName()." + ".$baseClass::getDatabaseTableName()." WHERE - time < ?"; - $statement = \wcf\system\WCF::getDB()->prepareStatement($sql); - $statement->execute(TIME_NOW - $lifetime); + time < ?"; + $stmt = \wcf\system\WCF::getDB()->prepareStatement($sql); + $stmt->execute(array(TIME_NOW - $lifetime)); $objectIDs = array(); - while ($objectIDs[] = $statement->fetchColumn()); - return static::deleteAll($objectIDs); + while ($objectIDs[] = $stmt->fetchColumn()); + + return self::deleteAll($objectIDs); } } diff --git a/file/lib/data/chat/message/ChatMessageList.class.php b/file/lib/data/chat/message/ChatMessageList.class.php index bb3853e..94c718b 100644 --- a/file/lib/data/chat/message/ChatMessageList.class.php +++ b/file/lib/data/chat/message/ChatMessageList.class.php @@ -7,7 +7,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage data.chat.room */ class ChatMessageList extends \wcf\data\DatabaseObjectList { diff --git a/file/lib/data/chat/room/ChatRoom.class.php b/file/lib/data/chat/room/ChatRoom.class.php index bc29a31..0ad0cbb 100644 --- a/file/lib/data/chat/room/ChatRoom.class.php +++ b/file/lib/data/chat/room/ChatRoom.class.php @@ -9,7 +9,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage data.chat.room */ class ChatRoom extends \wcf\data\DatabaseObject implements \wcf\system\request\IRouteController { @@ -43,7 +43,7 @@ public function __toString() { * @return integer */ public function countUsers() { - $packageID = \wcf\system\package\PackageDependencyHandler::getPackageID('timwolla.wcf.chat'); + $packageID = \wcf\util\ChatUtil::getPackageID(); $sql = "SELECT count(*) as count @@ -100,7 +100,7 @@ public function getTitle() { * @return array<\wcf\data\user\User> */ public function getUsers() { - $packageID = \wcf\system\package\PackageDependencyHandler::getPackageID('timwolla.wcf.chat'); + $packageID = \wcf\util\ChatUtil::getPackageID(); $sql = "SELECT userID diff --git a/file/lib/data/chat/room/ChatRoomAction.class.php b/file/lib/data/chat/room/ChatRoomAction.class.php index d83f994..73b0aea 100644 --- a/file/lib/data/chat/room/ChatRoomAction.class.php +++ b/file/lib/data/chat/room/ChatRoomAction.class.php @@ -8,7 +8,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage data.chat.room */ class ChatRoomAction extends \wcf\data\AbstractDatabaseObjectAction { @@ -28,21 +28,20 @@ class ChatRoomAction extends \wcf\data\AbstractDatabaseObjectAction { protected $permissionsUpdate = array('admin.content.chat.canEditRoom'); /** - * Fixes create to append new boards. + * Fixes create to append new rooms. */ public function create() { $room = parent::create(); WCF::getDB()->beginTransaction(); - $sql = "SELECT max(position) as max - FROM wcf".WCF_N."_chat_room + $sql = "SELECT MAX(position) + FROM wcf".WCF_N."_chat_room FOR UPDATE"; $stmt = WCF::getDB()->prepareStatement($sql); $stmt->execute(); - $row = $stmt->fetchArray(); $sql = "UPDATE wcf".WCF_N."_chat_room - SET position = ".($row['max'] + 1)." + SET position = ".($stmt->fetchColumn() + 1)." WHERE roomID = ?"; $stmt = WCF::getDB()->prepareStatement($sql); $stmt->execute(array($room->roomID)); @@ -71,6 +70,8 @@ public function validateUpdatePosition() { if (!isset($this->parameters['data']['structure'])) { throw new ValidateActionException('Missing parameter structure'); } + + if (!isset($this->parameters['data']['offset'])) $this->parameters['data']['offset'] = 0; } /** @@ -82,7 +83,7 @@ public function updatePosition() { $roomList->sqlLimit = 0; $roomList->readObjects(); - $i = 0; + $i = $this->parameters['data']['offset']; WCF::getDB()->beginTransaction(); foreach ($this->parameters['data']['structure'][0] as $roomID) { $room = $roomList->search($roomID); diff --git a/file/lib/data/chat/room/ChatRoomEditor.class.php b/file/lib/data/chat/room/ChatRoomEditor.class.php index 43216c4..5cc9146 100644 --- a/file/lib/data/chat/room/ChatRoomEditor.class.php +++ b/file/lib/data/chat/room/ChatRoomEditor.class.php @@ -8,7 +8,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage data.chat.room */ class ChatRoomEditor extends \wcf\data\DatabaseObjectEditor implements \wcf\data\IEditableCachedObject { @@ -17,27 +17,57 @@ class ChatRoomEditor extends \wcf\data\DatabaseObjectEditor implements \wcf\data */ protected static $baseClass = '\wcf\data\chat\room\ChatRoom'; - /** - * Clears the room cache. - */ - public static function resetCache() { - \wcf\system\cache\CacheHandler::getInstance()->clear(WCF_DIR.'cache', 'cache.chatrooms.php'); - } - + /** * @see \wcf\data\DatabaseObjectEditor::deleteAll() */ public static function deleteAll(array $objectIDs = array()) { - parent::deleteAll($objectIDs); - $packageID = \wcf\system\package\PackageDependencyHandler::getPackageID('timwolla.wcf.chat'); + $packageID = \wcf\util\ChatUtil::getPackageID(); WCF::getDB()->beginTransaction(); foreach ($objectIDs as $objectID) { \wcf\system\language\I18nHandler::getInstance()->remove('wcf.chat.room.title'.$objectID, $packageID); \wcf\system\language\I18nHandler::getInstance()->remove('wcf.chat.room.topic'.$objectID, $packageID); } - WCF::getDB()->commitTransaction(); - return count($objectIDs); + // The transaction is being committed in parent::deleteAll() + // The beginTransaction() call in there is simply ignored. + return parent::deleteAll($objectIDs); + } + + /** + * Deletes temporary rooms that are unused. + * + * @return integer Number of deleted rooms + */ + public static function prune() { + $baseClass = self::$baseClass; + $sql = "SELECT + ".$baseClass::getDatabaseTableIndexName()." + FROM + ".$baseClass::getDatabaseTableName()." + WHERE + permanent = ? + AND roomID NOT IN( + SELECT + fieldValue AS roomID + FROM + wcf".WCF_N."_user_storage + WHERE + packageID = ? + AND field = ?)"; + $stmt = \wcf\system\WCF::getDB()->prepareStatement($sql); + $stmt->execute(array(0, \wcf\util\ChatUtil::getPackageID(), 'roomID')); + $objectIDs = array(); + + while ($objectIDs[] = $stmt->fetchColumn()); + return self::deleteAll($objectIDs); + } + + /** + * Clears the room cache. + */ + public static function resetCache() { + \wcf\system\cache\CacheHandler::getInstance()->clear(WCF_DIR.'cache', 'cache.chatrooms.php'); } } diff --git a/file/lib/data/chat/room/ChatRoomList.class.php b/file/lib/data/chat/room/ChatRoomList.class.php index 7e369be..161eed8 100644 --- a/file/lib/data/chat/room/ChatRoomList.class.php +++ b/file/lib/data/chat/room/ChatRoomList.class.php @@ -7,7 +7,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage data.chat.room */ class ChatRoomList extends \wcf\data\DatabaseObjectList { diff --git a/file/lib/form/ChatForm.class.php b/file/lib/form/ChatForm.class.php index 554f5a3..64a2db5 100644 --- a/file/lib/form/ChatForm.class.php +++ b/file/lib/form/ChatForm.class.php @@ -11,7 +11,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage form */ class ChatForm extends AbstractForm { diff --git a/file/lib/page/ChatCopyrightPage.class.php b/file/lib/page/ChatCopyrightPage.class.php index cf4deea..2f84f9c 100644 --- a/file/lib/page/ChatCopyrightPage.class.php +++ b/file/lib/page/ChatCopyrightPage.class.php @@ -8,7 +8,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage page */ class ChatCopyrightPage extends AbstractPage { diff --git a/file/lib/page/ChatMessagePage.class.php b/file/lib/page/ChatMessagePage.class.php index 4b1a5d9..062f4f3 100644 --- a/file/lib/page/ChatMessagePage.class.php +++ b/file/lib/page/ChatMessagePage.class.php @@ -9,7 +9,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage page */ class ChatMessagePage extends AbstractPage { diff --git a/file/lib/page/ChatPage.class.php b/file/lib/page/ChatPage.class.php index 0023607..ff6b1e5 100644 --- a/file/lib/page/ChatPage.class.php +++ b/file/lib/page/ChatPage.class.php @@ -10,7 +10,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage page */ class ChatPage extends AbstractPage { @@ -51,7 +51,7 @@ public function readChatVersion() { ); $packages = CacheHandler::getInstance()->get('packages'); foreach ($packages as $package) { - if ($package->package != 'timwolla.wcf.chat') continue; + if ($package->package != \wcf\util\ChatUtil::PACKAGE_IDENTIFIER) continue; $this->chatVersion = $package->packageVersion; return; } @@ -85,20 +85,17 @@ public function readData() { } $this->newestMessages = chat\message\ChatMessageList::getNewestMessages($this->room, CHAT_LASTMESSAGES); - \wcf\util\ChatUtil::writeUserData(array('lastSeen' => end($this->newestMessages)->messageID)); + try { + \wcf\util\ChatUtil::writeUserData(array('lastSeen' => end($this->newestMessages)->messageID)); + } + catch (\wcf\system\exception\SystemException $e) { + \wcf\util\ChatUtil::writeUserData(array('lastSeen' => 0)); + } - $this->readDefaultSmileys(); + $this->smilies = \wcf\data\smiley\SmileyCache::getInstance()->getCategorySmilies(); $this->readChatVersion(); } - /** - * Reads the smilies in the default category. - */ - public function readDefaultSmileys() { - $smilies = \wcf\data\smiley\SmileyCache::getInstance()->getSmilies(); - $this->smilies = $smilies[null]; - } - /** * @see \wcf\page\IPage::readParameters() */ @@ -164,12 +161,15 @@ public function show() { if (!WCF::getUser()->userID) { throw new \wcf\system\exception\PermissionDeniedException(); } + \wcf\system\menu\page\PageMenu::getInstance()->setActiveMenuItem('wcf.header.menu.chat'); // remove index breadcrumb WCF::getBreadcrumbs()->remove(0); + parent::show(); - // break if not ajax + + // break if not using ajax if ($this->useTemplate) exit; @header('Content-type: application/json'); diff --git a/file/lib/page/ChatRefreshRoomListPage.class.php b/file/lib/page/ChatRefreshRoomListPage.class.php index 36f4156..4e72c7c 100644 --- a/file/lib/page/ChatRefreshRoomListPage.class.php +++ b/file/lib/page/ChatRefreshRoomListPage.class.php @@ -10,7 +10,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage page */ class ChatRefreshRoomListPage extends AbstractPage { diff --git a/file/lib/system/cache/builder/ChatPermissionCacheBuilder.class.php b/file/lib/system/cache/builder/ChatPermissionCacheBuilder.class.php index 947b05b..8a7144d 100644 --- a/file/lib/system/cache/builder/ChatPermissionCacheBuilder.class.php +++ b/file/lib/system/cache/builder/ChatPermissionCacheBuilder.class.php @@ -8,7 +8,7 @@ * @author Tim Düsterhus, Marcel Werk * @copyright 2010-2012 WoltLab GmbH * @license GNU Lesser General Public License - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage system.cache.builder */ class ChatPermissionCacheBuilder implements ICacheBuilder { @@ -22,8 +22,8 @@ public function getData(array $cacheResource) { if (count($groupIDs)) { $conditionBuilder = new \wcf\system\database\util\PreparedStatementConditionBuilder(); - $conditionBuilder->add('acl_option.packageID IN (?)', array(\wcf\system\package\PackageDependencyHandler::getDependencies())); - $conditionBuilder->add('acl_option.objectTypeID = ?', array(\wcf\system\acl\ACLHandler::getInstance()->getObjectTypeID('timwolla.wcf.chat.room'))); + $conditionBuilder->add('acl_option.packageID IN (?)', array(\wcf\system\package\PackageDependencyHandler::getInstance()->getDependencies())); + $conditionBuilder->add('acl_option.objectTypeID = ?', array(\wcf\system\acl\ACLHandler::getInstance()->getObjectTypeID('be.bastelstu.wcf.chat.room'))); $conditionBuilder->add('option_to_group.optionID = acl_option.optionID'); $conditionBuilder->add('option_to_group.groupID IN (?)', array($groupIDs)); $sql = "SELECT option_to_group.groupID, option_to_group.objectID AS roomID, option_to_group.optionValue, @@ -31,9 +31,9 @@ public function getData(array $cacheResource) { FROM wcf".WCF_N."_acl_option acl_option, wcf".WCF_N."_acl_option_to_group option_to_group ".$conditionBuilder; - $statement = WCF::getDB()->prepareStatement($sql); - $statement->execute($conditionBuilder->getParameters()); - while ($row = $statement->fetchArray()) { + $stmt = WCF::getDB()->prepareStatement($sql); + $stmt->execute($conditionBuilder->getParameters()); + while ($row = $stmt->fetchArray()) { if (!isset($data[$row['roomID']][$row['permission']])) $data[$row['roomID']][$row['permission']] = $row['optionValue']; else $data[$row['roomID']][$row['permission']] = $row['optionValue'] || $data[$row['roomID']][$row['permission']]; } diff --git a/file/lib/system/cache/builder/ChatRoomCacheBuilder.class.php b/file/lib/system/cache/builder/ChatRoomCacheBuilder.class.php index 985d823..ceda612 100644 --- a/file/lib/system/cache/builder/ChatRoomCacheBuilder.class.php +++ b/file/lib/system/cache/builder/ChatRoomCacheBuilder.class.php @@ -7,7 +7,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage system.cache.builder */ class ChatRoomCacheBuilder implements ICacheBuilder { diff --git a/file/lib/system/chat/permission/ChatPermissionHandler.class.php b/file/lib/system/chat/permission/ChatPermissionHandler.class.php index fc3e79e..a020a0f 100644 --- a/file/lib/system/chat/permission/ChatPermissionHandler.class.php +++ b/file/lib/system/chat/permission/ChatPermissionHandler.class.php @@ -11,7 +11,7 @@ * @author Tim Düsterhus, Marcel Werk * @copyright 2010-2012 WoltLab GmbH * @license GNU Lesser General Public License - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage system.chat.permissions */ class ChatPermissionHandler extends \wcf\system\SingletonFactory { @@ -27,13 +27,13 @@ class ChatPermissionHandler extends \wcf\system\SingletonFactory { * @see \wcf\system\SingletonFactory::init() */ protected function init() { - $packageID = PackageDependencyHandler::getPackageID('timwolla.wcf.chat'); + $packageID = \wcf\util\ChatUtil::getPackageID(); $ush = \wcf\system\user\storage\UserStorageHandler::getInstance(); // get groups permissions $groups = implode(',', WCF::getUser()->getGroupIDs()); $groupsFileName = \wcf\util\StringUtil::getHash(implode('-', WCF::getUser()->getGroupIDs())); - CacheHandler::getInstance()->addResource('chatPermission-'.$groups, WCF_DIR.'cache/cache.chatPermission-'.$groupsFileName.'.php', 'wcf\system\cache\builder\ChatPermissionCacheBuilder'); + CacheHandler::getInstance()->addResource('chatPermission-'.$groups, WCF_DIR.'cache/cache.chatPermission-'.$groupsFileName.'.php', '\wcf\system\cache\builder\ChatPermissionCacheBuilder'); $this->chatPermissions = CacheHandler::getInstance()->get('chatPermission-'.$groups); // get user permissions @@ -49,8 +49,8 @@ protected function init() { $userPermissions = array(); $conditionBuilder = new \wcf\system\database\util\PreparedStatementConditionBuilder(); - $conditionBuilder->add('acl_option.packageID IN (?)', array(PackageDependencyHandler::getDependencies())); - $conditionBuilder->add('acl_option.objectTypeID = ?', array(ACLHandler::getInstance()->getObjectTypeID('timwolla.wcf.chat.room'))); + $conditionBuilder->add('acl_option.packageID IN (?)', array(PackageDependencyHandler::getInstance()->getDependencies())); + $conditionBuilder->add('acl_option.objectTypeID = ?', array(ACLHandler::getInstance()->getObjectTypeID('be.bastelstu.wcf.chat.room'))); $conditionBuilder->add('option_to_user.optionID = acl_option.optionID'); $conditionBuilder->add('option_to_user.userID = ?', array(WCF::getUser()->userID)); $sql = "SELECT option_to_user.objectID AS roomID, option_to_user.optionValue, @@ -58,9 +58,9 @@ protected function init() { FROM wcf".WCF_N."_acl_option acl_option, wcf".WCF_N."_acl_option_to_user option_to_user ".$conditionBuilder; - $statement = WCF::getDB()->prepareStatement($sql); - $statement->execute($conditionBuilder->getParameters()); - while ($row = $statement->fetchArray()) { + $stmt = WCF::getDB()->prepareStatement($sql); + $stmt->execute($conditionBuilder->getParameters()); + while ($row = $stmt->fetchArray()) { $userPermissions[$row['roomID']][$row['permission']] = $row['optionValue']; } @@ -97,7 +97,7 @@ public function getPermission(\wcf\data\chat\room\ChatRoom $room, $permission) { * Clears the cache. */ public static function clearCache() { - $packageID = PackageDependencyHandler::getPackageID('timwolla.wcf.chat'); + $packageID = \wcf\util\ChatUtil::getPackageID(); $ush = \wcf\system\user\storage\UserStorageHandler::getInstance(); $ush->resetAll('chatUserPermissions', $packageID); diff --git a/file/lib/system/cronjob/ChatCleanupCronjob.class.php b/file/lib/system/cronjob/ChatCleanupCronjob.class.php new file mode 100644 index 0000000..5acde97 --- /dev/null +++ b/file/lib/system/cronjob/ChatCleanupCronjob.class.php @@ -0,0 +1,21 @@ + + * @package be.bastelstu.wcf.chat + * @subpackage system.cronjob + */ +class ChatCleanupCronjob implements ICronjob { + /** + * @see wcf\system\ICronjob::execute() + */ + public function execute(\wcf\data\cronjob\Cronjob $cronjob) { + \wcf\data\chat\message\ChatMessageEditor::prune(); + \wcf\data\chat\room\ChatRoomEditor::prune(); + } +} diff --git a/file/lib/system/event/listener/ChatRouteListener.class.php b/file/lib/system/event/listener/ChatRouteListener.class.php index 7b6ee57..4f5f30b 100644 --- a/file/lib/system/event/listener/ChatRouteListener.class.php +++ b/file/lib/system/event/listener/ChatRouteListener.class.php @@ -7,7 +7,7 @@ * @author Maximilian Mader * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage system.event.listener */ class ChatRouteListener implements \wcf\system\event\IEventListener { diff --git a/file/lib/system/menu/page/ChatPageMenuItemProvider.class.php b/file/lib/system/menu/page/ChatPageMenuItemProvider.class.php index e38a136..692d39f 100644 --- a/file/lib/system/menu/page/ChatPageMenuItemProvider.class.php +++ b/file/lib/system/menu/page/ChatPageMenuItemProvider.class.php @@ -8,7 +8,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage system.menu.page */ class ChatPageMenuItemProvider extends DefaultPageMenuItemProvider { diff --git a/file/lib/system/option/TimeIntervalOptionType.class.php b/file/lib/system/option/TimeIntervalOptionType.class.php index 68421af..259287f 100644 --- a/file/lib/system/option/TimeIntervalOptionType.class.php +++ b/file/lib/system/option/TimeIntervalOptionType.class.php @@ -7,7 +7,7 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage system.option */ class TimeIntervalOptionType extends TextOptionType { diff --git a/file/lib/util/ChatUtil.class.php b/file/lib/util/ChatUtil.class.php index 1be6657..2e80b09 100644 --- a/file/lib/util/ChatUtil.class.php +++ b/file/lib/util/ChatUtil.class.php @@ -10,10 +10,10 @@ * @author Tim Düsterhus * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat * @subpackage util */ -class ChatUtil { +final class ChatUtil { /** * Matches a time-interval with modifiers. * Each part may be optionally separated by a comma @@ -22,8 +22,43 @@ class ChatUtil { */ const TIME_MODIFIER_REGEX = '((?:[0-9]+[s|h|d|w|m|y|S|H|D|W|M|Y]?,?)+)'; + /** + * Package identifier of Tims Chat. + * + * @var string + */ + const PACKAGE_IDENTIFIER = 'be.bastelstu.wcf.chat'; + public static $serialize = array('color' => true); + /** + * Cached packageID of Tims Chat. + * + * @var integer + */ + private static $packageID = null; + + /** + * Returns the packageID of Tims Chat. + */ + public static function getPackageID() { + if (self::$packageID === null) { + self::$packageID = PackageDependencyHandler::getInstance()->getPackageID(self::PACKAGE_IDENTIFIER); + } + + return self::$packageID; + } + + /** + * Returns a random number. + * + * @return integer + */ + public static function /* int */ getRandomNumber() { + return 4; // chosen by a fair dice roll + // guaranteed to be random + } + /** * Creates a gradient out of two colors represented by an integer. * The first byte is red, the second byte is green, the third one is blue. @@ -58,7 +93,7 @@ public static function gradient($string, $start, $end) { */ public static function readUserData($field) { $ush = UserStorageHandler::getInstance(); - $packageID = PackageDependencyHandler::getPackageID('timwolla.wcf.chat'); + $packageID = self::getPackageID(); // load storage $ush->loadStorage(array(WCF::getUser()->userID), $packageID); @@ -79,30 +114,6 @@ public static function readUserData($field) { else return $data[WCF::getUser()->userID]; } - /** - * Returns a random number. - * - * @return integer - */ - public static function /* int */ getRandomNumber() { - return 4; // chosen by a fair dice roll - // guaranteed to be random - } - - /** - * Writes user data - * - * @param array $data - */ - public static function writeUserData(array $data) { - $ush = UserStorageHandler::getInstance(); - $packageID = PackageDependencyHandler::getPackageID('timwolla.wcf.chat'); - - foreach($data as $key => $value) { - $ush->update(WCF::getUser()->userID, $key, (isset(static::$serialize[$key])) ? serialize($value) : $value, $packageID); - } - } - /** * Splits a string into smaller chunks. * UTF-8 safe version of str_split(). @@ -175,4 +186,20 @@ public static function timeModifier($time) { return (int) round($result, 0); } + + /** + * Writes user data + * + * @param array $data + */ + public static function writeUserData(array $data) { + $ush = UserStorageHandler::getInstance(); + $packageID = self::getPackageID(); + + foreach($data as $key => $value) { + $ush->update(WCF::getUser()->userID, $key, (isset(static::$serialize[$key])) ? serialize($value) : $value, $packageID); + } + } + + private function __construct() { } } diff --git a/file/style/timwolla.wcf.chat.scss b/file/style/be.bastelstu.wcf.chat.scss similarity index 98% rename from file/style/timwolla.wcf.chat.scss rename to file/style/be.bastelstu.wcf.chat.scss index 6445270..fbf8274 100644 --- a/file/style/timwolla.wcf.chat.scss +++ b/file/style/be.bastelstu.wcf.chat.scss @@ -1,10 +1,10 @@ /** - * Chat-Styles + * Styles for Tims Chat * * @author Tim Düsterhus, Maximilian Mader * @copyright 2010-2012 Tim Düsterhus * @license Creative Commons Attribution-NonCommercial-ShareAlike - * @package timwolla.wcf.chat + * @package be.bastelstu.wcf.chat */ #timsChatRoomContent { diff --git a/file/style/jCounter.scss b/file/style/jCounter.scss new file mode 100644 index 0000000..1acc5e9 --- /dev/null +++ b/file/style/jCounter.scss @@ -0,0 +1,42 @@ +.jCounterContainer { + display: table; + + > div { + display: table-row; + } +} + +.jCounterInput { + height: 16px; + width: 100%; + position: relative; + z-index: 9999; + box-sizing: content-box !important; +} + +.jCounterInput, .jCounter { + display: table-cell; +} + +.jCounter { + text-align: center; + background-color: rgba(0, 0, 0, 0.7); + padding: 0 5px 0 10px; + position: relative; + z-index: 0 !important; + border-radius: 0px 5px 5px 0px; + border: 1px solid rgba(255, 255, 255, 0.3); + width: 30px; + + &.color-1 { + color: #FFFFFF; + } + + &.color-2 { + color: rgba(255,255,255,0.5); + } + + &.color-3 { + color: #D40D12; + } +} \ No newline at end of file diff --git a/install.sql b/install.sql index 0a3219d..604efe1 100644 --- a/install.sql +++ b/install.sql @@ -1,3 +1,12 @@ +---- +-- Database Structure for Tims Chat +-- +-- @author Tim Düsterhus +-- @copyright 2010-2012 Tim Düsterhus +-- @license Creative Commons Attribution-NonCommercial-ShareAlike +-- @package be.bastelstu.wcf.chat +---- + DROP TABLE IF EXISTS wcf1_chat_message; CREATE TABLE wcf1_chat_message ( messageID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, diff --git a/language/de.xml b/language/de.xml index 768f216..aabea83 100644 --- a/language/de.xml +++ b/language/de.xml @@ -4,6 +4,8 @@ + + title|language}“ wirklich löschen?]]> @@ -42,7 +44,7 @@ - Chat: Tims Chat{if CHAT_SHOW_VERSION} {$chatVersion}{/if}, entwickelt von TimWolla]]> + Chat: Tims Chat{if CHAT_SHOW_VERSION} {$chatVersion}{/if}, entwickelt von TimWolla]]> diff --git a/objectType.xml b/objectType.xml index 7df3ce1..38677d4 100644 --- a/objectType.xml +++ b/objectType.xml @@ -2,7 +2,7 @@ - timwolla.wcf.chat.room + be.bastelstu.wcf.chat.room com.woltlab.wcf.acl diff --git a/package.xml b/package.xml index 8609d5e..b8d75f2 100644 --- a/package.xml +++ b/package.xml @@ -1,5 +1,5 @@ - + @@ -7,7 +7,7 @@ 1 3.0.0 Alpha 8 2011-11-26 - com.woltlab.wcf.bbcode + com.woltlab.wcf.message @@ -49,6 +49,6 @@ acloptions.xml acpMenu.xml userGroupOption.xml - acp/timwolla.wcf.chat.update.php + acp/be.bastelstu.wcf.chat.update.php diff --git a/pagemenu.xml b/pagemenu.xml index 6f55380..a9b0c76 100755 --- a/pagemenu.xml +++ b/pagemenu.xml @@ -4,7 +4,7 @@ index.php/Chat header - wcf\system\menu\page\ChatPageMenuItemProvider + \wcf\system\menu\page\ChatPageMenuItemProvider \ No newline at end of file diff --git a/template/chat.tpl b/template/chat.tpl index b46b0a4..df83380 100755 --- a/template/chat.tpl +++ b/template/chat.tpl @@ -5,7 +5,7 @@ {include file='headInclude' sandbox=false} @@ -95,18 +49,18 @@ {include file='header' sandbox=false sidebarOrientation='right'}
    -
    topic|language === ''} style="display: none;"{/if}>{$room->topic|language}
    -
    +
    topic|language === ''} style="display: none;"{/if}>{$room->topic|language}
    +
    - + -
    +
    {if MODULE_SMILEY}
      @@ -155,12 +109,12 @@ //jsonify()} {/implode} diff --git a/template/chatCopyright.tpl b/template/chatCopyright.tpl index 2df384a..4049e79 100644 --- a/template/chatCopyright.tpl +++ b/template/chatCopyright.tpl @@ -1,7 +1,7 @@ {if $templateName == 'chat'} {elseif $templateName == 'chatCopyright'} -
      Project-Leader
      -
      Developer
      +
      Project-Leader
      +
      Developer
      Graphics
      Translation
      • Riccardo Vianello (it)
      Thanks
      diff --git a/template/chatJavascriptInclude.tpl b/template/chatJavascriptInclude.tpl index 3f1198b..61b033b 100644 --- a/template/chatJavascriptInclude.tpl +++ b/template/chatJavascriptInclude.tpl @@ -1,2 +1,2 @@ - + \ No newline at end of file