1
0
mirror of https://github.com/wbbaddons/Tims-Chat.git synced 2024-10-31 14:10:08 +00:00

Port Chat to application (first parts)

This commit is contained in:
Tim Düsterhus 2013-01-19 20:36:40 +01:00
parent 6dae5d4ea2
commit 17bc3ba4fd
82 changed files with 609 additions and 544 deletions

View File

@ -3,42 +3,42 @@
<import> <import>
<categories> <categories>
<category name="user"> <category name="user">
<objecttype>be.bastelstu.wcf.chat.room</objecttype> <objecttype>be.bastelstu.chat.room</objecttype>
</category> </category>
<category name="mod"> <category name="mod">
<objecttype>be.bastelstu.wcf.chat.room</objecttype> <objecttype>be.bastelstu.chat.room</objecttype>
</category> </category>
</categories> </categories>
<options> <options>
<option name="user.canEnter"> <option name="user.canEnter">
<objecttype>be.bastelstu.wcf.chat.room</objecttype> <objecttype>be.bastelstu.chat.room</objecttype>
<categoryname>user</categoryname> <categoryname>user</categoryname>
</option> </option>
<option name="user.canWrite"> <option name="user.canWrite">
<objecttype>be.bastelstu.wcf.chat.room</objecttype> <objecttype>be.bastelstu.chat.room</objecttype>
<categoryname>user</categoryname> <categoryname>user</categoryname>
</option> </option>
<option name="mod.canAlwaysEnter"> <option name="mod.canAlwaysEnter">
<objecttype>be.bastelstu.wcf.chat.room</objecttype> <objecttype>be.bastelstu.chat.room</objecttype>
<categoryname>mod</categoryname> <categoryname>mod</categoryname>
</option> </option>
<option name="mod.canAlwaysWrite"> <option name="mod.canAlwaysWrite">
<objecttype>be.bastelstu.wcf.chat.room</objecttype> <objecttype>be.bastelstu.chat.room</objecttype>
<categoryname>mod</categoryname> <categoryname>mod</categoryname>
</option> </option>
<option name="mod.canMute"> <option name="mod.canMute">
<objecttype>be.bastelstu.wcf.chat.room</objecttype> <objecttype>be.bastelstu.chat.room</objecttype>
<categoryname>mod</categoryname> <categoryname>mod</categoryname>
</option> </option>
<option name="mod.canBan"> <option name="mod.canBan">
<objecttype>be.bastelstu.wcf.chat.room</objecttype> <objecttype>be.bastelstu.chat.room</objecttype>
<categoryname>mod</categoryname> <categoryname>mod</categoryname>
</option> </option>
<option name="mod.canReadLog"> <option name="mod.canReadLog">
<objecttype>be.bastelstu.wcf.chat.room</objecttype> <objecttype>be.bastelstu.chat.room</objecttype>
<categoryname>mod</categoryname> <categoryname>mod</categoryname>
</option> </option>
</options> </options>

View File

@ -1,21 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<data xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/maelstrom/acpMenu.xsd"> <data xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/maelstrom/acpMenu.xsd">
<import> <import>
<acpmenuitem name="wcf.acp.menu.link.chat"> <acpmenuitem name="chat.acp.menu.link">
<parent>wcf.acp.menu.link.community</parent> <parent>wcf.acp.menu.link.community</parent>
</acpmenuitem> </acpmenuitem>
<acpmenuitem name="wcf.acp.menu.link.chat.room.list"> <acpmenuitem name="chat.acp.menu.link.room.list">
<controller><![CDATA[wcf\acp\page\ChatRoomListPage]]></controller> <controller><![CDATA[chat\acp\page\RoomListPage]]></controller>
<parent>wcf.acp.menu.link.chat</parent> <parent>chat.acp.menu.link.chat</parent>
<permissions>admin.content.chat.canEditRoom,admin.content.chat.canDeleteRoom</permissions> <permissions>admin.chat.canEditRoom,admin.chat.canDeleteRoom</permissions>
<showorder>1</showorder> <showorder>1</showorder>
</acpmenuitem> </acpmenuitem>
<acpmenuitem name="wcf.acp.menu.link.chat.room.add"> <acpmenuitem name="chat.acp.menu.link.room.add">
<controller><![CDATA[wcf\acp\form\ChatRoomAddForm]]></controller> <controller><![CDATA[chat\acp\form\RoomAddForm]]></controller>
<parent>wcf.acp.menu.link.chat</parent> <parent>chat.acp.menu.link.chat</parent>
<permissions>admin.content.chat.canAddRoom</permissions> <permissions>admin.chat.canAddRoom</permissions>
<showorder>2</showorder> <showorder>2</showorder>
</acpmenuitem> </acpmenuitem>
</import> </import>

View File

@ -32,12 +32,12 @@
<div class="contentNavigation"> <div class="contentNavigation">
<nav> <nav>
<ul> <ul>
<li><a href="{link controller='ChatRoomList'}{/link}" title="{lang}wcf.acp.menu.link.chat.room.list{/lang}" class="button"><img src="{@$__wcf->getPath('wcf')}icon/list.svg" alt="" class="icon24" /> <span>{lang}wcf.acp.menu.link.chat.room.list{/lang}</span></a></li> <li><a href="{link application='chat' controller='ChatRoomList'}{/link}" title="{lang}wcf.acp.menu.link.chat.room.list{/lang}" class="button"><img src="{@$__wcf->getPath('wcf')}icon/list.svg" alt="" class="icon24" /> <span>{lang}wcf.acp.menu.link.chat.room.list{/lang}</span></a></li>
</ul> </ul>
</nav> </nav>
</div> </div>
<form method="post" action="{if $action == 'add'}{link controller='ChatRoomAdd'}{/link}{else}{link controller='ChatRoomEdit' id=$roomID}{/link}{/if}"> <form method="post" action="{if $action == 'add'}{link application='chat' controller='ChatRoomAdd'}{/link}{else}{link application='chat' controller='ChatRoomEdit' id=$roomID}{/link}{/if}">
<div class="container containerPadding sortableListContainer marginTop shadow"> <div class="container containerPadding sortableListContainer marginTop shadow">
<fieldset> <fieldset>
<legend>{lang}wcf.acp.chat.room.data{/lang}</legend> <legend>{lang}wcf.acp.chat.room.data{/lang}</legend>

View File

@ -1,10 +1,10 @@
{include file='header' pageTitle='wcf.acp.chat.room.list'} {include file='header' pageTitle='chat.acp.room.list'}
<script type="text/javascript"> <script type="text/javascript">
//<![CDATA[ //<![CDATA[
$(function() { $(function() {
new WCF.Action.Delete('\\wcf\\data\\chat\\room\\ChatRoomAction', $('.chatRoomRow')); new WCF.Action.Delete('\\chat\\data\\room\\RoomAction', $('.chatRoomRow'));
new WCF.Sortable.List('chatRoomList', '\\wcf\\data\\chat\\room\\ChatRoomAction', {@$startIndex-1}); new WCF.Sortable.List('chatRoomList', '\\chat\\data\\room\\RoomAction', {@$startIndex-1});
}); });
//]]> //]]>
</script> </script>
@ -16,12 +16,10 @@
</header> </header>
<div class="contentNavigation"> <div class="contentNavigation">
{pages print=true assign=pagesLinks controller="ChatRoomList" link="pageNo=%d"} {if $__wcf->session->getPermission('admin.chat.canAddRoom')}
{if $__wcf->session->getPermission('admin.content.chat.canAddRoom')}
<nav> <nav>
<ul> <ul>
<li><a href="{link controller='ChatRoomAdd'}{/link}" title="{lang}wcf.acp.chat.room.add{/lang}" class="button"><img src="{@$__wcf->getPath('wcf')}icon/add.svg" alt="" class="icon24" /> <span>{lang}wcf.acp.chat.room.add{/lang}</span></a></li> <li><a href="{link application='chat' controller='ChatRoomAdd'}{/link}" title="{lang}chat.acp.room.add{/lang}" class="button"><img src="{@$__wcf->getPath('wcf')}icon/add.svg" alt="" class="icon24" /> <span>{lang}chat.acp.room.add{/lang}</span></a></li>
</ul> </ul>
</nav> </nav>
{/if} {/if}
@ -33,18 +31,18 @@
{foreach from=$objects item=chatRoom} {foreach from=$objects item=chatRoom}
<li class="sortableNode sortableNoNesting chatRoomRow" data-object-id="{@$chatRoom->roomID}"> <li class="sortableNode sortableNoNesting chatRoomRow" data-object-id="{@$chatRoom->roomID}">
<span class="sortableNodeLabel"> <span class="sortableNodeLabel">
{if $__wcf->session->getPermission('admin.content.chat.canEditRoom')} {if $__wcf->session->getPermission('admin.chat.canEditRoom')}
<a href="{link controller='ChatRoomEdit' id=$chatRoom->roomID}{/link}">{$chatRoom->title|language}</a> <a href="{link application='chat'controller='ChatRoomEdit' id=$chatRoom->roomID}{/link}">{$chatRoom->title|language}</a>
{else} {else}
{$chatRoom->title|language} {$chatRoom->title|language}
{/if} {/if}
<span class="statusDisplay sortableButtonContainer"> <span class="statusDisplay sortableButtonContainer">
{if $__wcf->session->getPermission('admin.content.chat.canEditRoom')} {if $__wcf->session->getPermission('admin.content.chat.canEditRoom')}
<a href="{link controller='ChatRoomEdit' id=$chatRoom->roomID}{/link}"><img src="{@$__wcf->getPath('wcf')}icon/edit.svg" alt="" title="{lang}wcf.global.button.edit{/lang}" class="jsTooltip icon16" /></a> <a href="{link application='chat' controller='ChatRoomEdit' id=$chatRoom->roomID}{/link}"><img src="{@$__wcf->getPath('wcf')}icon/edit.svg" alt="" title="{lang}wcf.global.button.edit{/lang}" class="jsTooltip icon16" /></a>
{/if} {/if}
{if $__wcf->session->getPermission('admin.content.chat.canDeleteRoom')} {if $__wcf->session->getPermission('admin.content.chat.canDeleteRoom')}
<img src="{@$__wcf->getPath('wcf')}icon/delete.svg" alt="" title="{lang}wcf.global.button.delete{/lang}" class="jsDeleteButton jsTooltip icon16" data-object-id="{@$chatRoom->roomID}" data-confirm-message="{lang}wcf.acp.chat.delete.sure{/lang}" /> <img src="{@$__wcf->getPath('wcf')}icon/delete.svg" alt="" title="{lang}wcf.global.button.delete{/lang}" class="jsDeleteButton jsTooltip icon16" data-object-id="{@$chatRoom->roomID}" data-confirm-message="{lang}chat.acp.room.delete.sure{/lang}" />
{/if} {/if}
</span> </span>
</span> </span>
@ -58,8 +56,7 @@
</div> </div>
</section> </section>
{hascontentelse} {hascontentelse}
<p class="warning">{lang}wcf.acp.chat.room.noneAvailable{/lang}</p> <p class="warning">{lang}chat.acp.room.noneAvailable{/lang}</p>
{/hascontent} {/hascontent}
{include file='footer'} {include file='footer'}

View File

@ -5,9 +5,9 @@
* Builds the Chat * Builds the Chat
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
*/ */
$packageXML = file_get_contents('package.xml'); $packageXML = file_get_contents('package.xml');
preg_match('/<version>(.*?)<\/version>/', $packageXML, $matches); preg_match('/<version>(.*?)<\/version>/', $packageXML, $matches);
@ -26,10 +26,10 @@
if (file_exists('file.tar')) unlink('file.tar'); if (file_exists('file.tar')) unlink('file.tar');
if (file_exists('template.tar')) unlink('template.tar'); if (file_exists('template.tar')) unlink('template.tar');
if (file_exists('acptemplate.tar')) unlink('acptemplate.tar'); if (file_exists('acptemplate.tar')) unlink('acptemplate.tar');
foreach (glob('file/acp/be.bastelstu.wcf.chat.nodePush/lib/*.js') as $nodeFile) unlink($nodeFile); foreach (glob('file/acp/be.bastelstu.chat.nodePush/lib/*.js') as $nodeFile) unlink($nodeFile);
foreach (glob('file/js/*.js') as $jsFile) unlink($jsFile); foreach (glob('file/js/*.js') as $jsFile) unlink($jsFile);
foreach (glob('file/style/*.css') as $cssFile) unlink($cssFile); foreach (glob('file/style/*.css') as $cssFile) unlink($cssFile);
if (file_exists('be.bastelstu.wcf.chat.tar')) unlink('be.bastelstu.wcf.chat.tar'); if (file_exists('be.bastelstu.chat.tar')) unlink('be.bastelstu.chat.tar');
echo <<<EOT echo <<<EOT
Building JavaScript Building JavaScript
@ -41,7 +41,7 @@
passthru('coffee -cb '.escapeshellarg($coffeeFile), $code); passthru('coffee -cb '.escapeshellarg($coffeeFile), $code);
if ($code != 0) exit($code); if ($code != 0) exit($code);
} }
foreach (glob('file/acp/be.bastelstu.wcf.chat.nodePush/lib/*.coffee') as $coffeeFile) { foreach (glob('file/acp/be.bastelstu.chat.nodePush/lib/*.coffee') as $coffeeFile) {
echo $coffeeFile."\n"; echo $coffeeFile."\n";
passthru('coffee -cb '.escapeshellarg($coffeeFile), $code); passthru('coffee -cb '.escapeshellarg($coffeeFile), $code);
if ($code != 0) exit($code); if ($code != 0) exit($code);
@ -108,14 +108,14 @@
if ($code != 0) exit($code); if ($code != 0) exit($code);
echo <<<EOT echo <<<EOT
Building be.bastelstu.wcf.chat.tar Building be.bastelstu.chat.tar
---------------------------------- ----------------------------------
EOT; EOT;
chdir('..'); chdir('..');
file_put_contents('package.xml.old', file_get_contents('package.xml')); file_put_contents('package.xml.old', file_get_contents('package.xml'));
file_put_contents('package.xml', preg_replace('~<date>\d{4}-\d{2}-\d{2}</date>~', '<date>'.date('Y-m-d').'</date>', file_get_contents('package.xml'))); file_put_contents('package.xml', preg_replace('~<date>\d{4}-\d{2}-\d{2}</date>~', '<date>'.date('Y-m-d').'</date>', file_get_contents('package.xml')));
passthru('tar cvf be.bastelstu.wcf.chat.tar * --exclude=*.old --exclude=file --exclude=template --exclude=acptemplate --exclude=build.php', $code); passthru('tar cvf be.bastelstu.chat.tar * --exclude=*.old --exclude=file --exclude=template --exclude=acptemplate --exclude=build.php', $code);
if (file_exists('package.xml.old')) { if (file_exists('package.xml.old')) {
file_put_contents('package.xml', file_get_contents('package.xml.old')); file_put_contents('package.xml', file_get_contents('package.xml.old'));
unlink('package.xml.old'); unlink('package.xml.old');
@ -125,6 +125,6 @@
if (file_exists('file.tar')) unlink('file.tar'); if (file_exists('file.tar')) unlink('file.tar');
if (file_exists('template.tar')) unlink('template.tar'); if (file_exists('template.tar')) unlink('template.tar');
if (file_exists('acptemplate.tar')) unlink('acptemplate.tar'); if (file_exists('acptemplate.tar')) unlink('acptemplate.tar');
foreach (glob('file/acp/be.bastelstu.wcf.chat.nodePush/lib/*.js') as $nodeFile) unlink($nodeFile); foreach (glob('file/acp/be.bastelstu.chat.nodePush/lib/*.js') as $nodeFile) unlink($nodeFile);
foreach (glob('file/js/*.js') as $jsFile) unlink($jsFile); foreach (glob('file/js/*.js') as $jsFile) unlink($jsFile);
foreach (glob('file/style/*.css') as $cssFile) unlink($cssFile); foreach (glob('file/style/*.css') as $cssFile) unlink($cssFile);

View File

@ -2,7 +2,7 @@
<data xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/maelstrom/cronjob.xsd"> <data xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/maelstrom/cronjob.xsd">
<import> <import>
<cronjob> <cronjob>
<classname>wcf\system\cronjob\ChatCleanupCronjob</classname> <classname>chat\system\cronjob\CleanupCronjob</classname>
<description>Cleans up Tims Chat</description> <description>Cleans up Tims Chat</description>
<startminute>*/15</startminute> <startminute>*/15</startminute>
<starthour>*</starthour> <starthour>*</starthour>

View File

@ -6,7 +6,7 @@
<eventname>didInit</eventname> <eventname>didInit</eventname>
<environment>user</environment> <environment>user</environment>
<inherit>0</inherit> <inherit>0</inherit>
<listenerclassname>wcf\system\event\listener\ChatRouteListener</listenerclassname> <listenerclassname>chat\system\event\listener\RouteHandlerListener</listenerclassname>
</eventlistener> </eventlistener>
</import> </import>
</data> </data>

View File

@ -5,9 +5,9 @@
* Handles installation of Tims Chat. * Handles installation of Tims Chat.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
*/ */
// @codingStandardsIgnoreFile // @codingStandardsIgnoreFile
final class Install { final class Install {

View File

@ -2,9 +2,9 @@
# node.js Pushserver for Tims Chat. # node.js Pushserver for Tims Chat.
# #
# @author Tim Düsterhus # @author Tim Düsterhus
# @copyright 2010-2012 Tim Düsterhus # @copyright 2010-2013 Tim Düsterhus
# @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> # @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
# @package be.bastelstu.wcf.chat # @package be.bastelstu.chat
# @subpackage nodePush # @subpackage nodePush
### ###
process.title = 'nodePush - Tims Chat' process.title = 'nodePush - Tims Chat'
@ -16,7 +16,7 @@ fs = require 'fs'
config = require('../config.js') config = require('../config.js')
log = (message) -> log = (message) ->
console.log '[be.bastelstu.wcf.chat.nodePush] '+message console.log '[be.bastelstu.chat.nodePush] '+message
class Server class Server
constructor: () -> constructor: () ->

View File

@ -1,9 +1,9 @@
{ {
"name" : "be.bastelstu.wcf.chat.nodePush", "name" : "be.bastelstu.chat.nodePush",
"description" : "node.js-Pushing for Tims Chat", "description" : "node.js-Pushing for Tims Chat",
"homepage" : "https://github.com/wbbaddons/Tims-Chat", "homepage" : "https://github.com/wbbaddons/Tims-Chat",
"keywords" : ["chat"], "keywords" : ["chat"],
"author" : "Tim Düsterhus <timwolla@googlemail.com>", "author" : "Tim Düsterhus <timwolla@googlemail.com>",
"contributors" : [ "contributors" : [
], ],
"dependencies" : { "dependencies" : {

View File

@ -5,9 +5,9 @@
* Handles updates of Tims Chat. * Handles updates of Tims Chat.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
*/ */
// @codingStandardsIgnoreFile // @codingStandardsIgnoreFile
final class Update { final class Update {

View File

@ -1,3 +0,0 @@
module.exports = {
port: 9001
}

15
file/acp/global.php Normal file
View File

@ -0,0 +1,15 @@
<?php
/**
* @author Tim Düsterhus
* @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.chat
*/
// define paths
define('RELATIVE_CHAT_DIR', '../');
// include config
require_once(dirname(dirname(__FILE__)).'/config.inc.php');
// include WCF
require_once(RELATIVE_WCF_DIR.'acp/global.php');

9
file/acp/index.php Normal file
View File

@ -0,0 +1,9 @@
<?php
/**
* @author Tim Düsterhus
* @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.chat
*/
require_once(__DIR__.'/global.php');
wcf\system\request\RequestHandler::getInstance()->handle('chat', true);

12
file/global.php Normal file
View File

@ -0,0 +1,12 @@
<?php
/**
* @author Tim Düsterhus
* @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.chat
*/
// include config
require_once(__DIR__.'/config.inc.php');
// include wcf
require_once(RELATIVE_WCF_DIR.'global.php');

View File

@ -2,9 +2,9 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- <!--
@author Maximilian Mader @author Maximilian Mader
@copyright 2011 Tim Düsterhus @copyright 2011 - 2013 Tim Düsterhus
@license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
@package be.bastelstu.wcf.chat @package be.bastelstu.chat
--> -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" xml:space="preserve"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" xml:space="preserve">
<title>Chat</title> <title>Chat</title>

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -2,9 +2,9 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- <!--
@author Maximilian Mader @author Maximilian Mader
@copyright 2011 Tim Düsterhus @copyright 2011 - 2013 Tim Düsterhus
@license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
@package be.bastelstu.wcf.chat @package be.bastelstu.chat
--> -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" xml:space="preserve"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" xml:space="preserve">
<title>Chat</title> <title>Chat</title>

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

9
file/index.php Normal file
View File

@ -0,0 +1,9 @@
<?php
/**
* @author Tim Düsterhus
* @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.chat
*/
require_once(__DIR__.'/global.php');
wcf\system\request\RequestHandler::getInstance()->handle('chat');

View File

@ -2,13 +2,13 @@
# be.bastelstu.WCF.Chat.Log # be.bastelstu.WCF.Chat.Log
# #
# @author Tim Düsterhus # @author Tim Düsterhus
# @copyright 2010-2012 Tim Düsterhus # @copyright 2010-2013 Tim Düsterhus
# @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> # @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
# @package be.bastelstu.wcf.chat # @package be.bastelstu.chat
### ###
(($, window) -> (($, window) ->
be.bastelstu.WCF.Chat.Log = be.bastelstu.WCF.Chat.extend be.bastelstu.WCF.Chat.Log = be.bastelstu.Chat.extend
init: (@chat) -> init: (@chat) ->
handleMessages: (messages) -> handleMessages: (messages) ->
# Insert the messages # Insert the messages
@ -28,6 +28,7 @@
container = $ '<fieldset id="timsChatLogDialog"></fieldset>' container = $ '<fieldset id="timsChatLogDialog"></fieldset>'
$('#content').append container $('#content').append container
# TODO: Proper path
$('#timsChatLogDialog').load 'http://127.0.0.1/wbb/wbb4/index.php/Chat/Log/1-Hauptchat/', () -> $('#timsChatLogDialog').load 'http://127.0.0.1/wbb/wbb4/index.php/Chat/Log/1-Hauptchat/', () ->
WCF.showDialog 'timsChatLogDialog', WCF.showDialog 'timsChatLogDialog',
title: 'Log' title: 'Log'

View File

@ -2,9 +2,9 @@
# be.bastelstu.WCF.Chat # be.bastelstu.WCF.Chat
# #
# @author Tim Düsterhus # @author Tim Düsterhus
# @copyright 2010-2012 Tim Düsterhus # @copyright 2010-2013 Tim Düsterhus
# @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> # @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
# @package be.bastelstu.wcf.chat # @package be.bastelstu.chat
### ###
window.console ?= window.console ?=
@ -15,18 +15,17 @@ window.console ?=
(($, window, _console) -> (($, window, _console) ->
window.be ?= {} window.be ?= {}
be.bastelstu ?= {} be.bastelstu ?= {}
be.bastelstu.WCF ?= {}
console = console =
log: (message) -> log: (message) ->
_console.log '[be.bastelstu.WCF.Chat] '+message _console.log '[be.bastelstu.Chat] '+message
warn: (message) -> warn: (message) ->
_console.warn '[be.bastelstu.WCF.Chat] '+message _console.warn '[be.bastelstu.Chat] '+message
error: (message) -> error: (message) ->
_console.error '[be.bastelstu.WCF.Chat] '+message _console.error '[be.bastelstu.Chat] '+message
be.bastelstu.WCF.Chat = Class.extend be.bastelstu.Chat = Class.extend
# Tims Chat stops loading when this reaches zero # Tims Chat stops loading when this reaches zero
# TODO: We need an explosion animation # TODO: We need an explosion animation
shields: 3 shields: 3
@ -413,9 +412,10 @@ window.console ?=
menu = $ '<ul></ul>' menu = $ '<ul></ul>'
#menu.addClass 'timsChatUserMenu' #menu.addClass 'timsChatUserMenu'
menu.addClass 'dropdownMenu' menu.addClass 'dropdownMenu'
menu.append $ '<li><a>' + WCF.Language.get('wcf.chat.query') + '</a></li>' menu.append $ '<li><a>' + WCF.Language.get('chat.query') + '</a></li>'
menu.append $ '<li><a>' + WCF.Language.get('wcf.chat.kick') + '</a></li>' menu.append $ '<li><a>' + WCF.Language.get('chat.kick') + '</a></li>'
menu.append $ '<li><a>' + WCF.Language.get('wcf.chat.ban') + '</a></li>' menu.append $ '<li><a>' + WCF.Language.get('chat.ban') + '</a></li>'
# TODO: SID and co
menu.append $ '<li><a href="index.php/User/' + user.userID + '-' + encodeURI(user.username) + '/">' + WCF.Language.get('wcf.chat.profile') + '</a></li>' menu.append $ '<li><a href="index.php/User/' + user.userID + '-' + encodeURI(user.username) + '/">' + WCF.Language.get('wcf.chat.profile') + '</a></li>'
@events.userMenu.fire user, menu @events.userMenu.fire user, menu
li.append menu li.append menu
@ -485,8 +485,8 @@ window.console ?=
# Desktop Notifications # Desktop Notifications
if typeof window.webkitNotifications isnt 'undefined' if typeof window.webkitNotifications isnt 'undefined'
if window.webkitNotifications.checkPermission() is 0 if window.webkitNotifications.checkPermission() is 0
title = WCF.Language.get 'wcf.chat.notify.title' title = WCF.Language.get 'chat.notify.title'
icon = WCF.Icon.get 'be.bastelstu.wcf.chat.chat' icon = WCF.Icon.get 'be.bastelstu.chat.chat'
content = message.username + message.separator + (if message.separator is ' ' then '' else ' ') + message.message content = message.username + message.separator + (if message.separator is ' ' then '' else ' ') + message.message
notification = window.webkitNotifications.createNotification icon, title, content notification = window.webkitNotifications.createNotification icon, title, content
notification.show() notification.show()

View File

@ -8,21 +8,21 @@
* Shows the chatroom add form. * Shows the chatroom add form.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage acp.form * @subpackage acp.form
*/ */
class ChatRoomAddForm extends \wcf\form\AbstractForm { class RoomAddForm extends \wcf\form\AbstractForm {
/** /**
* @see \wcf\acp\page\AbstractPage::$activeMenuItem * @see \wcf\acp\page\AbstractPage::$activeMenuItem
*/ */
public $activeMenuItem = 'wcf.acp.menu.link.chat.room.add'; public $activeMenuItem = 'chat.acp.menu.link.room.add';
/** /**
* @see \wcf\page\AbstractPage::$neededPermissions * @see \wcf\page\AbstractPage::$neededPermissions
*/ */
public $neededPermissions = array('admin.content.chat.canAddRoom'); public $neededPermissions = array('admin.chat.canAddRoom');
/** /**
* Title of the room * Title of the room
@ -42,7 +42,7 @@ class ChatRoomAddForm extends \wcf\form\AbstractForm {
* @see \wcf\page\AbstractPage::__construct() * @see \wcf\page\AbstractPage::__construct()
*/ */
public function __run() { public function __run() {
$this->objectTypeID = \wcf\system\acl\ACLHandler::getInstance()->getObjectTypeID('be.bastelstu.wcf.chat.room'); $this->objectTypeID = \wcf\system\acl\ACLHandler::getInstance()->getObjectTypeID('be.bastelstu.chat.room');
parent::__run(); parent::__run();
} }
@ -98,7 +98,7 @@ public function save() {
$roomID = $returnValues['returnValues']->roomID; $roomID = $returnValues['returnValues']->roomID;
if (!I18nHandler::getInstance()->isPlainValue('title')) { if (!I18nHandler::getInstance()->isPlainValue('title')) {
I18nHandler::getInstance()->save('title', 'wcf.chat.room.title'.$roomID, 'wcf.chat.room', \wcf\util\ChatUtil::getPackageID()); I18nHandler::getInstance()->save('title', 'chat.room.title'.$roomID, 'chat.room', \chat\util\ChatUtil::getPackageID());
// update title // update title
$chatRoomEditor->update(array( $chatRoomEditor->update(array(
@ -107,11 +107,11 @@ public function save() {
} }
if (!I18nHandler::getInstance()->isPlainValue('topic')) { if (!I18nHandler::getInstance()->isPlainValue('topic')) {
I18nHandler::getInstance()->save('topic', 'wcf.chat.room.topic'.$roomID, 'wcf.chat.room', \wcf\util\ChatUtil::getPackageID()); I18nHandler::getInstance()->save('topic', 'chat.room.topic'.$roomID, 'chat.room', \chat\util\ChatUtil::getPackageID());
// update topic // update topic
$chatRoomEditor->update(array( $chatRoomEditor->update(array(
'topic' => 'wcf.chat.room.topic'.$roomID 'topic' => 'chat.room.topic'.$roomID
)); ));
} }

View File

@ -7,26 +7,26 @@
* Shows the chatroom edit form. * Shows the chatroom edit form.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage acp.form * @subpackage acp.form
*/ */
class ChatRoomEditForm extends ChatRoomAddForm { class RoomEditForm extends RoomAddForm {
/** /**
* @see \wcf\page\AbstractPage::$templateName * @see \wcf\page\AbstractPage::$templateName
*/ */
public $templateName = 'chatRoomAdd'; public $templateName = 'roomAdd';
/** /**
* @see \wcf\acp\form\ACPForm::$activeMenuItem * @see \wcf\acp\form\ACPForm::$activeMenuItem
*/ */
public $activeMenuItem = 'wcf.acp.menu.link.chat.room.list'; public $activeMenuItem = 'wcf.acp.menu.link.room.list';
/** /**
* @see \wcf\page\AbstractPage::$neededPermissions * @see \wcf\page\AbstractPage::$neededPermissions
*/ */
public $neededPermissions = array('admin.content.chat.canEditRoom'); public $neededPermissions = array('admin.chat.canEditRoom');
/** /**
* room id * room id
@ -38,7 +38,7 @@ class ChatRoomEditForm extends ChatRoomAddForm {
/** /**
* room object * room object
* *
* @var \wcf\data\chat\room\ChatRoom * @var \chat\data\room\Room
*/ */
public $roomObj = null; public $roomObj = null;
@ -49,7 +49,7 @@ public function readParameters() {
parent::readParameters(); parent::readParameters();
if (isset($_REQUEST['id'])) $this->roomID = intval($_REQUEST['id']); if (isset($_REQUEST['id'])) $this->roomID = intval($_REQUEST['id']);
$this->roomObj = new \wcf\data\chat\room\ChatRoom($this->roomID); $this->roomObj = new \chat\data\room\Room($this->roomID);
if (!$this->roomObj->roomID) { if (!$this->roomObj->roomID) {
throw new \wcf\system\exception\IllegalLinkException(); throw new \wcf\system\exception\IllegalLinkException();
} }
@ -59,31 +59,31 @@ public function readParameters() {
* @see \wcf\form\IForm::save() * @see \wcf\form\IForm::save()
*/ */
public function save() { public function save() {
ACPForm::save(); \wcf\form\AbstractForm::save();
$this->title = 'wcf.chat.room.title'.$this->roomObj->roomID; $this->title = 'chat.room.title'.$this->roomObj->roomID;
if (I18nHandler::getInstance()->isPlainValue('title')) { if (I18nHandler::getInstance()->isPlainValue('title')) {
I18nHandler::getInstance()->remove($this->title); I18nHandler::getInstance()->remove($this->title);
$this->title = I18nHandler::getInstance()->getValue('title'); $this->title = I18nHandler::getInstance()->getValue('title');
} }
else { else {
I18nHandler::getInstance()->save('title', $this->title, 'wcf.chat.room', \wcf\util\ChatUtil::getPackageID()); I18nHandler::getInstance()->save('title', $this->title, 'chat.room', \chat\util\ChatUtil::getPackageID());
} }
$this->topic = 'wcf.chat.room.topic'.$this->roomObj->roomID; $this->topic = 'chat.room.topic'.$this->roomObj->roomID;
if (I18nHandler::getInstance()->isPlainValue('topic')) { if (I18nHandler::getInstance()->isPlainValue('topic')) {
I18nHandler::getInstance()->remove($this->topic); I18nHandler::getInstance()->remove($this->topic);
$this->topic = I18nHandler::getInstance()->getValue('topic'); $this->topic = I18nHandler::getInstance()->getValue('topic');
} }
else { else {
I18nHandler::getInstance()->save('topic', $this->topic, 'wcf.chat.room', \wcf\util\ChatUtil::getPackageID()); I18nHandler::getInstance()->save('topic', $this->topic, 'chat.room', \chat\util\ChatUtil::getPackageID());
} }
\wcf\system\acl\ACLHandler::getInstance()->save($this->roomID, $this->objectTypeID); \wcf\system\acl\ACLHandler::getInstance()->save($this->roomID, $this->objectTypeID);
\wcf\system\chat\permission\ChatPermissionHandler::clearCache(); \chat\system\permission\PermissionHandler::clearCache();
// update room // update room
$this->objectAction = new \wcf\data\chat\room\ChatRoomAction(array($this->roomID), 'update', array('data' => array( $this->objectAction = new \chat\data\room\RoomAction(array($this->roomID), 'update', array('data' => array(
'title' => $this->title, 'title' => $this->title,
'topic' => $this->topic 'topic' => $this->topic
))); )));
@ -104,8 +104,8 @@ public function readData() {
parent::readData(); parent::readData();
if (!count($_POST)) { if (!count($_POST)) {
I18nHandler::getInstance()->setOptions('title', \wcf\util\ChatUtil::getPackageID(), $this->roomObj->title, 'wcf.chat.room.title\d+'); I18nHandler::getInstance()->setOptions('title', \chat\util\ChatUtil::getPackageID(), $this->roomObj->title, 'chat.room.title\d+');
I18nHandler::getInstance()->setOptions('topic', \wcf\util\ChatUtil::getPackageID(), $this->roomObj->topic, 'wcf.chat.room.topic\d+'); I18nHandler::getInstance()->setOptions('topic', \chat\util\ChatUtil::getPackageID(), $this->roomObj->topic, 'chat.room.topic\d+');
$this->title = $this->roomObj->title; $this->title = $this->roomObj->title;
$this->topic = $this->roomObj->topic; $this->topic = $this->roomObj->topic;

View File

@ -5,29 +5,29 @@
* Lists available chatrooms. * Lists available chatrooms.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage acp.page * @subpackage acp.page
*/ */
class ChatRoomListPage extends \wcf\page\MultipleLinkPage { class RoomListPage extends \wcf\page\MultipleLinkPage {
/** /**
* @see \wcf\page\AbstractPage::$activeMenuItem * @see \wcf\page\AbstractPage::$activeMenuItem
*/ */
public $activeMenuItem = 'wcf.acp.menu.link.chat.room.list'; public $activeMenuItem = 'chat.acp.menu.link.room.list';
/** /**
* @see \wcf\page\AbstractPage::$neededPermissions * @see \wcf\page\AbstractPage::$neededPermissions
*/ */
public $neededPermissions = array( public $neededPermissions = array(
'admin.content.chat.canEditRoom', 'admin.chat.canEditRoom',
'admin.content.chat.canDeleteRoom' 'admin.chat.canDeleteRoom'
); );
/** /**
* @see \wcf\page\MultipleLinkPage::$objectListClassName * @see \wcf\page\MultipleLinkPage::$objectListClassName
*/ */
public $objectListClassName = '\wcf\data\chat\room\ChatRoomList'; public $objectListClassName = '\chat\data\room\RoomList';
/** /**
* @see \wcf\page\MultipleLinkPage::$sortField * @see \wcf\page\MultipleLinkPage::$sortField

View File

@ -1,6 +1,6 @@
<?php <?php
namespace wcf\action; namespace chat\action;
use \wcf\data\chat; use \chat\data;
use \wcf\system\exception\IllegalLinkException; use \wcf\system\exception\IllegalLinkException;
use \wcf\system\WCF; use \wcf\system\WCF;
@ -8,12 +8,12 @@
* Makes the user leave Tims Chat. * Makes the user leave Tims Chat.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage action * @subpackage action
*/ */
class ChatLeaveAction extends AbstractAction { class LeaveAction extends \wcf\action\AbstractAction {
/** /**
* @see wcf\action\AbstractAction::$loginRequired * @see wcf\action\AbstractAction::$loginRequired
*/ */
@ -32,7 +32,7 @@ class ChatLeaveAction extends AbstractAction {
/** /**
* The current room. * The current room.
* *
* @var \wcf\data\chat\room\ChatRoom * @var \chat\data\room\Room
*/ */
public $room = null; public $room = null;
@ -66,24 +66,24 @@ public function __run() {
public function execute() { public function execute() {
parent::execute(); parent::execute();
$this->userData['roomID'] = \wcf\util\ChatUtil::readUserData('roomID'); $this->userData['roomID'] = \chat\util\ChatUtil::readUserData('roomID');
$cache = chat\room\ChatRoom::getCache(); $cache = data\room\Room::getCache();
if (!isset($cache[$this->userData['roomID']])) throw new IllegalLinkException(); if (!isset($cache[$this->userData['roomID']])) throw new IllegalLinkException();
$this->room = $cache[$this->userData['roomID']]; $this->room = $cache[$this->userData['roomID']];
if (!$this->room->canEnter()) throw new \wcf\system\exception\PermissionDeniedException(); if (!$this->room->canEnter()) throw new \wcf\system\exception\PermissionDeniedException();
if (CHAT_DISPLAY_JOIN_LEAVE) { if (CHAT_DISPLAY_JOIN_LEAVE) {
$this->userData['color'] = \wcf\util\ChatUtil::readUserData('color'); $this->userData['color'] = \chat\util\ChatUtil::readUserData('color');
// leave message // leave message
$messageAction = new chat\message\ChatMessageAction(array(), 'create', array( $messageAction = new data\message\MessageAction(array(), 'create', array(
'data' => array( 'data' => array(
'roomID' => $this->room->roomID, 'roomID' => $this->room->roomID,
'sender' => WCF::getUser()->userID, 'sender' => WCF::getUser()->userID,
'username' => WCF::getUser()->username, 'username' => WCF::getUser()->username,
'time' => TIME_NOW, 'time' => TIME_NOW,
'type' => chat\message\ChatMessage::TYPE_LEAVE, 'type' => data\message\Message::TYPE_LEAVE,
'message' => '', 'message' => '',
'color1' => $this->userData['color'][1], 'color1' => $this->userData['color'][1],
'color2' => $this->userData['color'][2] 'color2' => $this->userData['color'][2]
@ -93,7 +93,7 @@ public function execute() {
} }
// set current room to null // set current room to null
\wcf\util\ChatUtil::writeUserData(array('roomID' => null)); \chat\util\ChatUtil::writeUserData(array('roomID' => null));
$this->executed(); $this->executed();
header("HTTP/1.0 204 No Content"); header("HTTP/1.0 204 No Content");

View File

@ -1,5 +1,5 @@
<?php <?php
namespace wcf\data\chat\message; namespace chat\data\message;
use \wcf\system\Regex; use \wcf\system\Regex;
use \wcf\system\WCF; use \wcf\system\WCF;
use \wcf\util\ChatUtil; use \wcf\util\ChatUtil;
@ -8,16 +8,16 @@
* Represents a chat message. * Represents a chat message.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage data.chat.message * @subpackage data.message
*/ */
class ChatMessage extends \wcf\data\DatabaseObject { class Message extends \wcf\data\DatabaseObject {
/** /**
* @see \wcf\data\DatabaseObject::$databaseTableName * @see \wcf\data\DatabaseObject::$databaseTableName
*/ */
protected static $databaseTableName = 'chat_message'; protected static $databaseTableName = 'message';
/** /**
* @see \wcf\data\DatabaseObject::$databaseTableIndexName * @see \wcf\data\DatabaseObject::$databaseTableIndexName
@ -45,7 +45,7 @@ class ChatMessage extends \wcf\data\DatabaseObject {
protected static $users = array(); protected static $users = array();
/** /**
* @see \wcf\data\chat\message\ChatMessage::getFormattedMessage() * @see \chat\data\\message\Message::getFormattedMessage()
*/ */
public function __toString() { public function __toString() {
return $this->getFormattedMessage(); return $this->getFormattedMessage();
@ -65,11 +65,11 @@ public function getFormattedMessage($outputType = 'text/html') {
case self::TYPE_LEAVE: case self::TYPE_LEAVE:
case self::TYPE_BACK: case self::TYPE_BACK:
case self::TYPE_AWAY: case self::TYPE_AWAY:
$message = WCF::getLanguage()->getDynamicVariable('wcf.chat.message.'.$this->type, unserialize($message) ?: array()); $message = WCF::getLanguage()->getDynamicVariable('chat.message.'.$this->type, unserialize($message) ?: array());
break; break;
case self::TYPE_MODERATE: case self::TYPE_MODERATE:
$message = unserialize($message); $message = unserialize($message);
$message = WCF::getLanguage()->getDynamicVariable('wcf.chat.message.'.$this->type.'.'.$message['type'], $message ?: array()); $message = WCF::getLanguage()->getDynamicVariable('chat.message.'.$this->type.'.'.$message['type'], $message ?: array());
$message = self::replaceUserLink($message, $outputType); $message = self::replaceUserLink($message, $outputType);
break; break;
case self::TYPE_WHISPER: case self::TYPE_WHISPER:
@ -110,11 +110,11 @@ public function getFormattedMessage($outputType = 'text/html') {
*/ */
public function getUsername($colored = false) { public function getUsername($colored = false) {
$username = $this->username; $username = $this->username;
if ($this->type == self::TYPE_INFORMATION) return WCF::getLanguage()->get('wcf.chat.information'); if ($this->type == self::TYPE_INFORMATION) return WCF::getLanguage()->get('chat.general.information');
if ($this->type == self::TYPE_ERROR) return WCF::getLanguage()->get('wcf.chat.error'); if ($this->type == self::TYPE_ERROR) return WCF::getLanguage()->get('chat.general.error');
if ($colored) { if ($colored) {
$username = \wcf\util\ChatUtil::gradient($username, $this->color1, $this->color2); $username = \chat\util\ChatUtil::gradient($username, $this->color1, $this->color2);
} }
if ($this->type == self::TYPE_WHISPER) { if ($this->type == self::TYPE_WHISPER) {

View File

@ -1,20 +1,20 @@
<?php <?php
namespace wcf\data\chat\message; namespace chat\data\message;
/** /**
* Executes message related actions. * Executes message related actions.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage data.chat.message * @subpackage chat.message
*/ */
class ChatMessageAction extends \wcf\data\AbstractDatabaseObjectAction { class MessageAction extends \wcf\data\AbstractDatabaseObjectAction {
/** /**
* @see \wcf\data\AbstractDatabaseObjectAction::$className * @see \wcf\data\AbstractDatabaseObjectAction::$className
*/ */
protected $className = '\wcf\data\chat\message\ChatMessageEditor'; protected $className = '\chat\data\message\MessageEditor';
/** /**
* Removes old messages. * Removes old messages.

View File

@ -1,28 +1,28 @@
<?php <?php
namespace wcf\data\chat\message; namespace chat\data\message;
/** /**
* Provides functions to edit chat messages. * Provides functions to edit chat messages.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage data.chat.message * @subpackage chat.message
*/ */
class ChatMessageEditor extends \wcf\data\DatabaseObjectEditor { class MessageEditor extends \wcf\data\DatabaseObjectEditor {
/** /**
* @see \wcf\data\DatabaseObjectDecorator::$baseClass * @see \wcf\data\DatabaseObjectDecorator::$baseClass
*/ */
protected static $baseClass = '\wcf\data\chat\message\ChatMessage'; protected static $baseClass = '\chat\data\message\Message';
/** /**
* Notify the Push-Server. * Notify the Push-Server.
*/ */
public static function create(array $parameters = array()) { public static function create(array $parameters = array()) {
try { try {
if (\wcf\util\ChatUtil::nodePushRunning()) { if (\chat\util\ChatUtil::nodePushRunning()) {
$sock = stream_socket_client('unix://'.WCF_DIR.'acp/be.bastelstu.wcf.chat.nodePush/data.sock', $errno, $errstr, 1); $sock = stream_socket_client('unix://'.CHAT_DIR.'acp/be.bastelstu.chat.nodePush/data.sock', $errno, $errstr, 1);
fclose($sock); fclose($sock);
} }
} }

View File

@ -1,29 +1,29 @@
<?php <?php
namespace wcf\data\chat\message; namespace chat\data\message;
/** /**
* Represents a list of chat messages. * Represents a list of chat messages.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage data.chat.room * @subpackage chat.room
*/ */
class ChatMessageList extends \wcf\data\DatabaseObjectList { class MessageList extends \wcf\data\DatabaseObjectList {
/** /**
* @see \wcf\data\DatabaseObjectList::$className * @see \wcf\data\DatabaseObjectList::$className
*/ */
public $className = 'wcf\data\chat\message\ChatMessage'; public $className = 'chat\data\message\Message';
/** /**
* Reads the newest messages for the given room. * Reads the newest messages for the given room.
* *
* @param \wcf\data\chat\room\ChatRoom $room * @param \chat\data\room\Room $room
* @param integer $number * @param integer $number
* @return array<\wcf\data\chat\message\ChatMessage> * @return array<\chat\data\message\Message>
*/ */
public static function getNewestMessages(\wcf\data\chat\room\ChatRoom $room, $number = CHAT_LASTMESSAGES) { public static function getNewestMessages(\chat\data\room\Room $room, $number = CHAT_LASTMESSAGES) {
$messageList = new static(); $messageList = new static();
$messageList->sqlOrderBy = "chat_message.messageID DESC"; $messageList->sqlOrderBy = "chat_message.messageID DESC";
$messageList->sqlLimit = $number; $messageList->sqlLimit = $number;
@ -42,11 +42,11 @@ public static function getNewestMessages(\wcf\data\chat\room\ChatRoom $room, $nu
/** /**
* Reads the messages since the given message-id for the given room. * Reads the messages since the given message-id for the given room.
* *
* @param \wcf\data\chat\room\ChatRoom $room * @param \chat\data\room\Room $room
* @param integer $since * @param integer $since
* @return array<\wcf\data\chat\message\ChatMessage> * @return array<\chat\data\message\Message>
*/ */
public static function getMessagesSince(\wcf\data\chat\room\ChatRoom $room, $since) { public static function getMessagesSince(\chat\data\room\Room $room, $since) {
$messageList = new static(); $messageList = new static();
$messageList->sqlOrderBy = "chat_message.messageID ASC"; $messageList->sqlOrderBy = "chat_message.messageID ASC";
$messageList->getConditionBuilder()->add('chat_message.messageID > ?', array($since)); $messageList->getConditionBuilder()->add('chat_message.messageID > ?', array($since));

View File

@ -1,6 +1,6 @@
<?php <?php
namespace wcf\data\chat\room; namespace chat\data\room;
use \wcf\data\chat\suspension\ChatSuspension; use \chat\data\suspension\Suspension;
use \wcf\system\cache\CacheHandler; use \wcf\system\cache\CacheHandler;
use \wcf\system\WCF; use \wcf\system\WCF;
@ -8,16 +8,16 @@
* Represents a chat room. * Represents a chat room.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage data.chat.room * @subpackage data.room
*/ */
class ChatRoom extends \wcf\data\DatabaseObject implements \wcf\system\request\IRouteController { class Room extends \wcf\data\DatabaseObject implements \wcf\system\request\IRouteController {
/** /**
* @see \wcf\data\DatabaseObject::$databaseTableName * @see \wcf\data\DatabaseObject::$databaseTableName
*/ */
protected static $databaseTableName = 'chat_room'; protected static $databaseTableName = 'room';
/** /**
* @see \wcf\data\DatabaseObject::$databaseTableIndexName * @see \wcf\data\DatabaseObject::$databaseTableIndexName
@ -47,20 +47,20 @@ public function __toString() {
public function canEnter(\wcf\data\user\User $user = null) { public function canEnter(\wcf\data\user\User $user = null) {
if ($user === null) $user = WCF::getUser(); if ($user === null) $user = WCF::getUser();
$ph = new \wcf\system\chat\permission\ChatPermissionHandler($user); $ph = new \chat\system\permission\PermissionHandler($user);
$suspensions = ChatSuspension::getSuspensionsForUser($user); $suspensions = Suspension::getSuspensionsForUser($user);
$canEnter = $ph->getPermission($this, 'user.canEnter'); $canEnter = $ph->getPermission($this, 'user.canEnter');
// room suspension // room suspension
if ($canEnter && isset($suspensions[$this->roomID][ChatSuspension::TYPE_BAN])) { if ($canEnter && isset($suspensions[$this->roomID][Suspension::TYPE_BAN])) {
if ($suspensions[$this->roomID][ChatSuspension::TYPE_BAN]['time'] > TIME_NOW) { if ($suspensions[$this->roomID][Suspension::TYPE_BAN]['time'] > TIME_NOW) {
$canEnter = false; $canEnter = false;
} }
} }
// global suspension // global suspension
if ($canEnter && isset($suspensions[null][ChatSuspension::TYPE_BAN])) { if ($canEnter && isset($suspensions[null][Suspension::TYPE_BAN])) {
if ($suspensions[null][ChatSuspension::TYPE_BAN]['time'] > TIME_NOW) { if ($suspensions[null][Suspension::TYPE_BAN]['time'] > TIME_NOW) {
$canEnter = false; $canEnter = false;
} }
} }
@ -77,20 +77,20 @@ public function canEnter(\wcf\data\user\User $user = null) {
public function canWrite(\wcf\data\user\User $user = null) { public function canWrite(\wcf\data\user\User $user = null) {
if ($user === null) $user = WCF::getUser(); if ($user === null) $user = WCF::getUser();
$ph = new \wcf\system\chat\permission\ChatPermissionHandler($user); $ph = new \chat\system\permission\PermissionHandler($user);
$suspensions = ChatSuspension::getSuspensionsForUser($user); $suspensions = Suspension::getSuspensionsForUser($user);
$canWrite = $ph->getPermission($this, 'user.canWrite'); $canWrite = $ph->getPermission($this, 'user.canWrite');
// room suspension // room suspension
if ($canWrite && isset($suspensions[$this->roomID][ChatSuspension::TYPE_MUTE])) { if ($canWrite && isset($suspensions[$this->roomID][Suspension::TYPE_MUTE])) {
if ($suspensions[$this->roomID][ChatSuspension::TYPE_MUTE]['time'] > TIME_NOW) { if ($suspensions[$this->roomID][Suspension::TYPE_MUTE]['time'] > TIME_NOW) {
$canWrite = false; $canWrite = false;
} }
} }
// global suspension // global suspension
if ($canWrite && isset($suspensions[null][ChatSuspension::TYPE_MUTE])) { if ($canWrite && isset($suspensions[null][Suspension::TYPE_MUTE])) {
if ($suspensions[null][ChatSuspension::TYPE_MUTE]['time'] > TIME_NOW) { if ($suspensions[null][Suspension::TYPE_MUTE]['time'] > TIME_NOW) {
$canWrite = false; $canWrite = false;
} }
} }
@ -123,11 +123,11 @@ public function countUsers() {
public static function getCache() { public static function getCache() {
if (self::$cache === null) { if (self::$cache === null) {
CacheHandler::getInstance()->addResource( CacheHandler::getInstance()->addResource(
'chatrooms', 'chatRooms',
WCF_DIR.'cache/cache.chatrooms.php', CHAT_DIR.'cache/cache.rooms.php',
'\wcf\system\cache\builder\ChatRoomCacheBuilder' '\chat\system\cache\builder\RoomCacheBuilder'
); );
self::$cache = CacheHandler::getInstance()->get('chatrooms'); self::$cache = CacheHandler::getInstance()->get('chatRooms');
} }
return self::$cache; return self::$cache;

View File

@ -1,31 +1,31 @@
<?php <?php
namespace wcf\data\chat\room; namespace chat\data\room;
use \wcf\system\WCF; use \wcf\system\WCF;
/** /**
* Executes chatroom-related actions. * Executes chatroom-related actions.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage data.chat.room * @subpackage data.room
*/ */
class ChatRoomAction extends \wcf\data\AbstractDatabaseObjectAction implements \wcf\data\ISortableAction { class RoomAction extends \wcf\data\AbstractDatabaseObjectAction implements \wcf\data\ISortableAction {
/** /**
* @see \wcf\data\AbstractDatabaseObjectAction::$className * @see \wcf\data\AbstractDatabaseObjectAction::$className
*/ */
protected $className = '\wcf\data\chat\room\ChatRoomEditor'; protected $className = '\chat\data\room\RoomEditor';
/** /**
* @see \wcf\data\AbstractDatabaseObjectAction::$permissionsDelete * @see \wcf\data\AbstractDatabaseObjectAction::$permissionsDelete
*/ */
protected $permissionsDelete = array('admin.content.chat.canDeleteRoom'); protected $permissionsDelete = array('admin.chat.canDeleteRoom');
/** /**
* @see \wcf\data\AbstractDatabaseObjectAction::$permissionsUpdate * @see \wcf\data\AbstractDatabaseObjectAction::$permissionsUpdate
*/ */
protected $permissionsUpdate = array('admin.content.chat.canEditRoom'); protected $permissionsUpdate = array('admin.chat.canEditRoom');
/** /**
* Fixes create to append new rooms. * Fixes create to append new rooms.
@ -40,7 +40,7 @@ public function create() {
$stmt = WCF::getDB()->prepareStatement($sql); $stmt = WCF::getDB()->prepareStatement($sql);
$stmt->execute(); $stmt->execute();
$editor = new ChatRoomEditor($room); $editor = new RoomEditor($room);
$editor->update(array('position' => ($stmt->fetchColumn() + 1))); $editor->update(array('position' => ($stmt->fetchColumn() + 1)));
WCF::getDB()->commitTransaction(); WCF::getDB()->commitTransaction();
@ -100,7 +100,7 @@ public function validateUpdatePosition() {
* @see wcf\data\ISortableAction * @see wcf\data\ISortableAction
*/ */
public function updatePosition() { public function updatePosition() {
$roomList = new \wcf\data\chat\room\ChatRoomList(); $roomList = new RoomList();
$roomList->sqlOrderBy = "chat_room.position"; $roomList->sqlOrderBy = "chat_room.position";
$roomList->readObjects(); $roomList->readObjects();
@ -109,7 +109,7 @@ public function updatePosition() {
foreach ($this->parameters['data']['structure'][0] as $roomID) { foreach ($this->parameters['data']['structure'][0] as $roomID) {
$room = $roomList->search($roomID); $room = $roomList->search($roomID);
if ($room === null) continue; if ($room === null) continue;
$editor = new ChatRoomEditor($room); $editor = new RoomEditor($room);
$editor->update(array('position' => $i++)); $editor->update(array('position' => $i++));
} }
WCF::getDB()->commitTransaction(); WCF::getDB()->commitTransaction();

View File

@ -1,21 +1,21 @@
<?php <?php
namespace wcf\data\chat\room; namespace chat\data\room;
use \wcf\system\WCF; use \wcf\system\WCF;
/** /**
* Provides functions to edit chat rooms. * Provides functions to edit chat rooms.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage data.chat.room * @subpackage data.room
*/ */
class ChatRoomEditor extends \wcf\data\DatabaseObjectEditor implements \wcf\data\IEditableCachedObject { class RoomEditor extends \wcf\data\DatabaseObjectEditor implements \wcf\data\IEditableCachedObject {
/** /**
* @see \wcf\data\DatabaseObjectDecorator::$baseClass * @see \wcf\data\DatabaseObjectDecorator::$baseClass
*/ */
protected static $baseClass = '\wcf\data\chat\room\ChatRoom'; protected static $baseClass = '\chat\data\room\Room';
/** /**
@ -24,21 +24,21 @@ class ChatRoomEditor extends \wcf\data\DatabaseObjectEditor implements \wcf\data
public static function deleteAll(array $objectIDs = array()) { public static function deleteAll(array $objectIDs = array()) {
WCF::getDB()->beginTransaction(); WCF::getDB()->beginTransaction();
foreach ($objectIDs as $objectID) { foreach ($objectIDs as $objectID) {
\wcf\system\language\I18nHandler::getInstance()->remove('wcf.chat.room.title'.$objectID); \wcf\system\language\I18nHandler::getInstance()->remove('chat.room.title'.$objectID);
\wcf\system\language\I18nHandler::getInstance()->remove('wcf.chat.room.topic'.$objectID); \wcf\system\language\I18nHandler::getInstance()->remove('chat.room.topic'.$objectID);
} }
$sql = "SELECT $sql = "SELECT
position position
FROM FROM
wcf".WCF_N."_chat_room chat".WCF_N."_room
WHERE WHERE
roomID = ? roomID = ?
FOR UPDATE"; FOR UPDATE";
$select = WCF::getDB()->prepareStatement($sql); $select = WCF::getDB()->prepareStatement($sql);
$sql = "UPDATE $sql = "UPDATE
wcf".WCF_N."_chat_room chat".WCF_N."_room
SET SET
position = position - 1 position = position - 1
WHERE WHERE
@ -59,6 +59,6 @@ public static function deleteAll(array $objectIDs = array()) {
* Clears the room cache. * Clears the room cache.
*/ */
public static function resetCache() { public static function resetCache() {
\wcf\system\cache\CacheHandler::getInstance()->clear(WCF_DIR.'cache', 'cache.chatrooms.php'); \wcf\system\cache\CacheHandler::getInstance()->clear(CHAT_DIR.'cache', 'cache.rooms.php');
} }
} }

View File

@ -5,14 +5,14 @@
* Represents a list of chat rooms. * Represents a list of chat rooms.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage data.chat.room * @subpackage data.room
*/ */
class ChatRoomList extends \wcf\data\DatabaseObjectList { class RoomList extends \wcf\data\DatabaseObjectList {
/** /**
* @see \wcf\data\DatabaseObjectList::$className * @see \wcf\data\DatabaseObjectList::$className
*/ */
public $className = 'wcf\data\chat\room\ChatRoom'; public $className = 'chat\data\room\Room';
} }

View File

@ -1,21 +1,21 @@
<?php <?php
namespace wcf\data\chat\suspension; namespace chat\data\suspension;
use \wcf\system\WCF; use \wcf\system\WCF;
/** /**
* Represents a chat suspension. * Represents a chat suspension.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage data.chat.suspension * @subpackage data.suspension
*/ */
class ChatSuspension extends \wcf\data\DatabaseObject { class Suspension extends \wcf\data\DatabaseObject {
/** /**
* @see \wcf\data\DatabaseObject::$databaseTableName * @see \wcf\data\DatabaseObject::$databaseTableName
*/ */
protected static $databaseTableName = 'chat_suspension'; protected static $databaseTableName = 'suspension';
/** /**
* @see \wcf\data\DatabaseObject::$databaseTableIndexName * @see \wcf\data\DatabaseObject::$databaseTableIndexName
@ -27,12 +27,12 @@ class ChatSuspension extends \wcf\data\DatabaseObject {
public static function getSuspensionsForUser(\wcf\data\user\User $user = null) { public static function getSuspensionsForUser(\wcf\data\user\User $user = null) {
if ($user === null) $user = WCF::getUser(); if ($user === null) $user = WCF::getUser();
$suspensions = \wcf\util\ChatUtil::readUserData('suspensions', $user); $suspensions = \chat\util\ChatUtil::readUserData('suspensions', $user);
if ($suspensions === null) { if ($suspensions === null) {
$sql = "SELECT $sql = "SELECT
* *
FROM FROM
wcf".WCF_N."_chat_suspension chat".WCF_N."_suspension
WHERE WHERE
userID = ? userID = ?
AND time > ?"; AND time > ?";
@ -44,7 +44,7 @@ public static function getSuspensionsForUser(\wcf\data\user\User $user = null) {
$suspensions[$row['roomID']][$row['type']] = $row; $suspensions[$row['roomID']][$row['type']] = $row;
} }
\wcf\util\ChatUtil::writeUserData(array('suspensions' => $suspensions), $user); \chat\util\ChatUtil::writeUserData(array('suspensions' => $suspensions), $user);
} }
return $suspensions; return $suspensions;
@ -54,15 +54,15 @@ public static function getSuspensionsForUser(\wcf\data\user\User $user = null) {
* Returns the appropriate suspension for user, room and type. * Returns the appropriate suspension for user, room and type.
* *
* @param \wcf\data\user\User $user * @param \wcf\data\user\User $user
* @param \wcf\data\chat\room\ChatRoom $room * @param \chat\data\room\Room $room
* @param integer $type * @param integer $type
* @return \wcf\data\chat\suspension\ChatSuspension * @return \chat\data\suspension\Suspension
*/ */
public static function getSuspensionByUserRoomAndType(\wcf\data\user\User $user, \wcf\data\chat\room\ChatRoom $room, $type) { public static function getSuspensionByUserRoomAndType(\wcf\data\user\User $user, \chat\data\room\Room $room, $type) {
$sql = "SELECT $sql = "SELECT
* *
FROM FROM
wcf".WCF_N."_chat_suspension chat".WCF_N."_suspension
WHERE WHERE
userID = ? userID = ?
AND roomID = ? AND roomID = ?

View File

@ -1,20 +1,20 @@
<?php <?php
namespace wcf\data\chat\suspension; namespace chat\data\suspension;
/** /**
* Executes chat-suspension-related actions. * Executes chat-suspension-related actions.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage data.chat.suspension * @subpackage data.suspension
*/ */
class ChatSuspensionAction extends \wcf\data\AbstractDatabaseObjectAction { class SuspensionAction extends \wcf\data\AbstractDatabaseObjectAction {
/** /**
* @see \wcf\data\AbstractDatabaseObjectAction::$className * @see \wcf\data\AbstractDatabaseObjectAction::$className
*/ */
protected $className = '\wcf\data\chat\suspension\ChatSuspensionEditor'; protected $className = '\chat\data\suspension\SuspensionEditor';
/** /**
* Deletes expired suspensions. * Deletes expired suspensions.

View File

@ -1,21 +1,21 @@
<?php <?php
namespace wcf\data\chat\suspension; namespace chat\data\suspension;
use \wcf\system\WCF; use \wcf\system\WCF;
/** /**
* Provides functions to edit chat suspensions. * Provides functions to edit chat suspensions.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage data.chat.suspension * @subpackage data.chat.suspension
*/ */
class ChatSuspensionEditor extends \wcf\data\DatabaseObjectEditor implements \wcf\data\IEditableCachedObject { class SuspensionEditor extends \wcf\data\DatabaseObjectEditor implements \wcf\data\IEditableCachedObject {
/** /**
* @see \wcf\data\DatabaseObjectDecorator::$baseClass * @see \wcf\data\DatabaseObjectDecorator::$baseClass
*/ */
protected static $baseClass = '\wcf\data\chat\suspension\ChatSuspension'; protected static $baseClass = '\chat\data\suspension\Suspension';
/** /**
* Clears the suspension cache. * Clears the suspension cache.

View File

@ -1,6 +1,6 @@
<?php <?php
namespace wcf\form; namespace chat\form;
use \wcf\data\chat; use \chat\data;
use \wcf\system\exception\UserInputException; use \wcf\system\exception\UserInputException;
use \wcf\system\WCF; use \wcf\system\WCF;
use \wcf\util\StringUtil; use \wcf\util\StringUtil;
@ -9,9 +9,9 @@
* Inserts a message * Inserts a message
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage form * @subpackage form
*/ */
class ChatForm extends AbstractForm { class ChatForm extends AbstractForm {
@ -98,11 +98,11 @@ public function __run() {
* @see \wcf\page\IPage::readData() * @see \wcf\page\IPage::readData()
*/ */
public function readData() { public function readData() {
$this->userData['color'] = \wcf\util\ChatUtil::readUserData('color'); $this->userData['color'] = \chat\util\ChatUtil::readUserData('color');
$this->userData['roomID'] = \wcf\util\ChatUtil::readUserData('roomID'); $this->userData['roomID'] = \chat\util\ChatUtil::readUserData('roomID');
$this->userData['away'] = \wcf\util\ChatUtil::readUserData('away'); $this->userData['away'] = \chat\util\ChatUtil::readUserData('away');
$cache = chat\room\ChatRoom::getCache(); $cache = data\room\Room::getCache();
if (!isset($cache[$this->userData['roomID']])) throw new \wcf\system\exception\IllegalLinkException(); if (!isset($cache[$this->userData['roomID']])) throw new \wcf\system\exception\IllegalLinkException();
$this->room = $cache[$this->userData['roomID']]; $this->room = $cache[$this->userData['roomID']];
@ -142,15 +142,15 @@ public function validate() {
public function save() { public function save() {
parent::save(); parent::save();
\wcf\util\ChatUtil::writeUserData(array('away' => null)); \chat\util\ChatUtil::writeUserData(array('away' => null));
$commandHandler = new \wcf\system\chat\command\CommandHandler($this->message); $commandHandler = new \wcf\system\chat\command\CommandHandler($this->message);
if ($commandHandler->isCommand()) { if ($commandHandler->isCommand()) {
try { try {
$command = $commandHandler->loadCommand(); $command = $commandHandler->loadCommand();
if ($command->enableSmilies != \wcf\system\chat\command\ICommand::SETTING_USER) $this->enableSmilies = $command->enableSmilies; if ($command->enableSmilies != \chat\system\command\ICommand::SETTING_USER) $this->enableSmilies = $command->enableSmilies;
$this->enableHTML = $command->enableHTML; $this->enableHTML = $command->enableHTML;
if ($command->enableBBCodes != \wcf\system\chat\command\ICommand::SETTING_USER) $this->enableBBCodes = $command->enableBBCodes; if ($command->enableBBCodes != \chat\system\command\ICommand::SETTING_USER) $this->enableBBCodes = $command->enableBBCodes;
$type = $command->getType(); $type = $command->getType();
$this->message = $command->getMessage(); $this->message = $command->getMessage();
@ -158,40 +158,40 @@ public function save() {
} }
catch (\wcf\system\chat\command\NotFoundException $e) { catch (\wcf\system\chat\command\NotFoundException $e) {
$this->message = WCF::getLanguage()->get('wcf.chat.error.notFound'); $this->message = WCF::getLanguage()->get('wcf.chat.error.notFound');
$type = chat\message\ChatMessage::TYPE_ERROR; $type = data\message\Message::TYPE_ERROR;
$receiver = WCF::getUser()->userID; $receiver = WCF::getUser()->userID;
} }
catch (\wcf\system\chat\command\UserNotFoundException $e) { catch (\wcf\system\chat\command\UserNotFoundException $e) {
$this->message = WCF::getLanguage()->getDynamicVariable('wcf.chat.error.userNotFound', array('username' => $e->getUsername())); $this->message = WCF::getLanguage()->getDynamicVariable('wcf.chat.error.userNotFound', array('username' => $e->getUsername()));
$type = chat\message\ChatMessage::TYPE_ERROR; $type = data\message\Message::TYPE_ERROR;
$receiver = WCF::getUser()->userID; $receiver = WCF::getUser()->userID;
$this->enableHTML = 1; $this->enableHTML = 1;
} }
catch (\wcf\system\exception\PermissionDeniedException $e) { catch (\wcf\system\exception\PermissionDeniedException $e) {
$this->message = WCF::getLanguage()->get('wcf.chat.error.permissionDenied'); $this->message = WCF::getLanguage()->get('wcf.chat.error.permissionDenied');
$type = chat\message\ChatMessage::TYPE_ERROR; $type = data\message\Message::TYPE_ERROR;
$receiver = WCF::getUser()->userID; $receiver = WCF::getUser()->userID;
} }
catch (\Exception $e) { catch (\Exception $e) {
$this->message = WCF::getLanguage()->get('wcf.chat.error.exception'); $this->message = WCF::getLanguage()->get('wcf.chat.error.exception');
$type = chat\message\ChatMessage::TYPE_ERROR; $type = data\message\Message::TYPE_ERROR;
$receiver = WCF::getUser()->userID; $receiver = WCF::getUser()->userID;
} }
} }
else { else {
$type = chat\message\ChatMessage::TYPE_NORMAL; $type = data\message\Message::TYPE_NORMAL;
$receiver = null; $receiver = null;
} }
// mark user as back // mark user as back
if ($this->userData['away'] !== null) { if ($this->userData['away'] !== null) {
$messageAction = new chat\message\ChatMessageAction(array(), 'create', array( $messageAction = new data\message\MessageAction(array(), 'create', array(
'data' => array( 'data' => array(
'roomID' => $this->room->roomID, 'roomID' => $this->room->roomID,
'sender' => WCF::getUser()->userID, 'sender' => WCF::getUser()->userID,
'username' => WCF::getUser()->username, 'username' => WCF::getUser()->username,
'time' => TIME_NOW, 'time' => TIME_NOW,
'type' => chat\message\ChatMessage::TYPE_BACK, 'type' => data\message\Message::TYPE_BACK,
'message' => '', 'message' => '',
'color1' => $this->userData['color'][1], 'color1' => $this->userData['color'][1],
'color2' => $this->userData['color'][2] 'color2' => $this->userData['color'][2]
@ -200,7 +200,7 @@ public function save() {
$messageAction->executeAction(); $messageAction->executeAction();
} }
$this->objectAction = new chat\message\ChatMessageAction(array(), 'create', array( $this->objectAction = new data\message\MessageAction(array(), 'create', array(
'data' => array( 'data' => array(
'roomID' => $this->room->roomID, 'roomID' => $this->room->roomID,
'sender' => WCF::getUser()->userID, 'sender' => WCF::getUser()->userID,
@ -219,7 +219,7 @@ public function save() {
$this->objectAction->executeAction(); $this->objectAction->executeAction();
// add activity points // add activity points
\wcf\system\user\activity\point\UserActivityPointHandler::getInstance()->fireEvent('be.bastelstu.wcf.chat.activityPointEvent.message', TIME_NOW, WCF::getUser()->userID); \wcf\system\user\activity\point\UserActivityPointHandler::getInstance()->fireEvent('be.bastelstu.chat.activityPointEvent.message', TIME_NOW, WCF::getUser()->userID);
$this->saved(); $this->saved();
} }

View File

@ -1,6 +1,6 @@
<?php <?php
namespace wcf\page; namespace chat\page;
use \wcf\data\chat; use \chat\data;
use \wcf\system\exception\IllegalLinkException; use \wcf\system\exception\IllegalLinkException;
use \wcf\system\WCF; use \wcf\system\WCF;
@ -8,12 +8,12 @@
* Loads new messages. * Loads new messages.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage page * @subpackage page
*/ */
class ChatMessagePage extends AbstractPage { class ChatMessagePage extends \wcf\page\AbstractPage {
/** /**
* @see wcf\page\AbstractPage::$loginRequired * @see wcf\page\AbstractPage::$loginRequired
*/ */
@ -39,7 +39,7 @@ class ChatMessagePage extends AbstractPage {
/** /**
* The room the user joined. * The room the user joined.
* *
* @var \wcf\data\chat\room\ChatRoom * @var \chat\data\room\Room
*/ */
public $room = null; public $room = null;
@ -82,15 +82,15 @@ public function readData() {
$this->readMessages(); $this->readMessages();
$this->users = $this->room->getUsers(); $this->users = $this->room->getUsers();
$deadUsers = \wcf\util\ChatUtil::getDiedUsers(); $deadUsers = \chat\util\ChatUtil::getDiedUsers();
foreach ($deadUsers as $deadUser) { foreach ($deadUsers as $deadUser) {
if (!$deadUser) continue; if (!$deadUser) continue;
$user = new \wcf\data\user\User($deadUser['userID']); $user = new \wcf\data\user\User($deadUser['userID']);
if (CHAT_DISPLAY_JOIN_LEAVE) { if (CHAT_DISPLAY_JOIN_LEAVE) {
$userData['color'] = \wcf\util\ChatUtil::readUserData('color', $user); $userData['color'] = \chat\util\ChatUtil::readUserData('color', $user);
$messageAction = new chat\message\ChatMessageAction(array(), 'create', array( $messageAction = new data\message\MessageAction(array(), 'create', array(
'data' => array( 'data' => array(
'roomID' => $deadUser['roomID'], 'roomID' => $deadUser['roomID'],
'sender' => $user->userID, 'sender' => $user->userID,
@ -104,7 +104,7 @@ public function readData() {
)); ));
$messageAction->executeAction(); $messageAction->executeAction();
} }
\wcf\util\ChatUtil::writeUserData(array('roomID' => null), $user); \chat\util\ChatUtil::writeUserData(array('roomID' => null), $user);
} }
} }
@ -112,7 +112,7 @@ public function readData() {
* Fetches the new messages * Fetches the new messages
*/ */
public function readMessages() { public function readMessages() {
$this->messages = chat\message\ChatMessageList::getMessagesSince($this->room, \wcf\util\ChatUtil::readUserData('lastSeen')); $this->messages = data\message\MessageList::getMessagesSince($this->room, \chat\util\ChatUtil::readUserData('lastSeen'));
// update last seen message // update last seen message
$sql = "SELECT $sql = "SELECT
@ -122,7 +122,7 @@ public function readMessages() {
$stmt = WCF::getDB()->prepareStatement($sql); $stmt = WCF::getDB()->prepareStatement($sql);
$stmt->execute(); $stmt->execute();
\wcf\util\ChatUtil::writeUserData(array( \chat\util\ChatUtil::writeUserData(array(
'lastSeen' => $stmt->fetchColumn(), 'lastSeen' => $stmt->fetchColumn(),
'lastActivity' => TIME_NOW 'lastActivity' => TIME_NOW
)); ));
@ -132,8 +132,8 @@ public function readMessages() {
* Initializes the room databaseobject. * Initializes the room databaseobject.
*/ */
public function readRoom() { public function readRoom() {
$roomID = \wcf\util\ChatUtil::readUserData('roomID'); $roomID = \chat\util\ChatUtil::readUserData('roomID');
$cache = chat\room\ChatRoom::getCache(); $cache = data\room\Room::getCache();
if (!isset($cache[$roomID])) throw new IllegalLinkException(); if (!isset($cache[$roomID])) throw new IllegalLinkException();
$this->room = $cache[$roomID]; $this->room = $cache[$roomID];

View File

@ -1,6 +1,6 @@
<?php <?php
namespace wcf\page; namespace chat\page;
use \wcf\data\chat; use \chat\data;
use \wcf\system\cache\CacheHandler; use \wcf\system\cache\CacheHandler;
use \wcf\system\WCF; use \wcf\system\WCF;
@ -8,12 +8,12 @@
* Shows the chat-interface * Shows the chat-interface
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage page * @subpackage page
*/ */
class ChatPage extends AbstractPage { class ChatPage extends \wcf\page\AbstractPage {
/** /**
* The version of this installation of Tims Chat 3. * The version of this installation of Tims Chat 3.
* *
@ -39,14 +39,14 @@ class ChatPage extends AbstractPage {
/** /**
* The last X messages for the current room. * The last X messages for the current room.
* *
* @var array<\wcf\data\chat\message\ChatMessage> * @var array<\chat\data\message\Message>
*/ */
public $newestMessages = array(); public $newestMessages = array();
/** /**
* The current room. * The current room.
* *
* @var \wcf\data\chat\room\ChatRoom * @var \chat\data\room\Room
*/ */
public $room = null; public $room = null;
@ -60,7 +60,7 @@ class ChatPage extends AbstractPage {
/** /**
* List of accessible rooms. * List of accessible rooms.
* *
* @var \wcf\data\chat\room\ChatRoomList * @var \chat\data\room\RoomList
*/ */
public $rooms = array(); public $rooms = array();
@ -108,8 +108,8 @@ public function assignVariables() {
'rooms' => $this->rooms, 'rooms' => $this->rooms,
'defaultSmilies' => $this->defaultSmilies, 'defaultSmilies' => $this->defaultSmilies,
'smileyCategories' => $this->smileyCategories, 'smileyCategories' => $this->smileyCategories,
'sidebarCollapsed' => \wcf\system\user\collapsible\content\UserCollapsibleContentHandler::getInstance()->isCollapsed('com.woltlab.wcf.collapsibleSidebar', 'be.bastelstu.wcf.chat.ChatPage'), 'sidebarCollapsed' => \wcf\system\user\collapsible\content\UserCollapsibleContentHandler::getInstance()->isCollapsed('com.woltlab.wcf.collapsibleSidebar', 'be.bastelstu.chat.ChatPage'),
'sidebarName' => 'be.bastelstu.wcf.chat.ChatPage' 'sidebarName' => 'be.bastelstu.chat.ChatPage'
)); ));
} }
@ -117,7 +117,7 @@ public function assignVariables() {
* Reads chat-version. Used to avoid caching of JS-File when Tims Chat is updated. * Reads chat-version. Used to avoid caching of JS-File when Tims Chat is updated.
*/ */
public function readChatVersion() { public function readChatVersion() {
return $this->chatVersion = \wcf\data\package\PackageCache::getInstance()->getPackage(\wcf\util\ChatUtil::getPackageID())->packageVersion; return $this->chatVersion = \wcf\data\package\PackageCache::getInstance()->getPackage(\chat\util\ChatUtil::getPackageID())->packageVersion;
} }
/** /**
@ -127,15 +127,15 @@ public function readData() {
parent::readData(); parent::readData();
$this->readRoom(); $this->readRoom();
$this->userData['color'] = \wcf\util\ChatUtil::readUserData('color'); $this->userData['color'] = \chat\util\ChatUtil::readUserData('color');
\wcf\util\ChatUtil::writeUserData(array( \chat\util\ChatUtil::writeUserData(array(
'roomID' => $this->room->roomID, 'roomID' => $this->room->roomID,
'away' => null, 'away' => null,
'lastActivity' => TIME_NOW 'lastActivity' => TIME_NOW
)); ));
if (CHAT_DISPLAY_JOIN_LEAVE) { if (CHAT_DISPLAY_JOIN_LEAVE) {
$messageAction = new chat\message\ChatMessageAction(array(), 'create', array( $messageAction = new data\message\MessageAction(array(), 'create', array(
'data' => array( 'data' => array(
'roomID' => $this->room->roomID, 'roomID' => $this->room->roomID,
'sender' => WCF::getUser()->userID, 'sender' => WCF::getUser()->userID,
@ -151,12 +151,12 @@ public function readData() {
$messageAction->getReturnValues(); $messageAction->getReturnValues();
} }
$this->newestMessages = chat\message\ChatMessageList::getNewestMessages($this->room, CHAT_LASTMESSAGES); $this->newestMessages = data\message\MessageList::getNewestMessages($this->room, CHAT_LASTMESSAGES);
try { try {
\wcf\util\ChatUtil::writeUserData(array('lastSeen' => end($this->newestMessages)->messageID)); \chat\util\ChatUtil::writeUserData(array('lastSeen' => end($this->newestMessages)->messageID));
} }
catch (\wcf\system\exception\SystemException $e) { catch (\wcf\system\exception\SystemException $e) {
\wcf\util\ChatUtil::writeUserData(array('lastSeen' => 0)); \chat\util\ChatUtil::writeUserData(array('lastSeen' => 0));
} }
$smileyCategories = \wcf\data\smiley\SmileyCache::getInstance()->getCategories(); $smileyCategories = \wcf\data\smiley\SmileyCache::getInstance()->getCategories();
@ -182,23 +182,23 @@ public function readParameters() {
$this->request->__run(); $this->request->__run();
exit; exit;
case 'Log': case 'Log':
$this->request = new ChatLogPage(); $this->request = new LogPage();
$this->request->__run(); $this->request->__run();
exit; exit;
case 'RefreshRoomList': case 'RefreshRoomList':
$this->request = new ChatRefreshRoomListPage(); $this->request = new RoomListPage();
$this->request->__run(); $this->request->__run();
exit; exit;
case 'Send': case 'Send':
$this->request = new \wcf\form\ChatForm(); $this->request = new \chat\form\ChatForm();
$this->request->__run(); $this->request->__run();
exit; exit;
case 'Leave': case 'Leave':
$this->request = new \wcf\action\ChatLeaveAction(); $this->request = new \chat\action\LeaveAction();
$this->request->__run(); $this->request->__run();
exit; exit;
case 'Copyright': case 'Copyright':
$this->request = new ChatCopyrightPage(); $this->request = new CopyrightPage();
$this->request->__run(); $this->request->__run();
exit; exit;
} }
@ -211,7 +211,7 @@ public function readParameters() {
* Reads room data. * Reads room data.
*/ */
public function readRoom() { public function readRoom() {
$this->rooms = chat\room\ChatRoom::getCache(); $this->rooms = data\room\Room::getCache();
if ($this->roomID === 0) { if ($this->roomID === 0) {
// no room given // no room given
@ -236,7 +236,7 @@ public function readRoom() {
* @see \wcf\page\IPage::show() * @see \wcf\page\IPage::show()
*/ */
public function show() { public function show() {
\wcf\system\menu\page\PageMenu::getInstance()->setActiveMenuItem('wcf.header.menu.chat'); \wcf\system\menu\page\PageMenu::getInstance()->setActiveMenuItem('chat.header.menu.chat');
// remove index breadcrumb // remove index breadcrumb
WCF::getBreadcrumbs()->remove(0); WCF::getBreadcrumbs()->remove(0);
@ -244,7 +244,7 @@ public function show() {
parent::show(); parent::show();
// add activity points // add activity points
\wcf\system\user\activity\point\UserActivityPointHandler::getInstance()->fireEvent('be.bastelstu.wcf.chat.activityPointEvent.join', TIME_NOW, WCF::getUser()->userID); \wcf\system\user\activity\point\UserActivityPointHandler::getInstance()->fireEvent('be.bastelstu.chat.activityPointEvent.join', TIME_NOW, WCF::getUser()->userID);
// break if not using ajax // break if not using ajax
if ($this->useTemplate) exit; if ($this->useTemplate) exit;

View File

@ -1,5 +1,5 @@
<?php <?php
namespace wcf\page; namespace chat\page;
use \wcf\system\exception\IllegalLinkException; use \wcf\system\exception\IllegalLinkException;
use \wcf\system\WCF; use \wcf\system\WCF;
@ -7,12 +7,12 @@
* Shows information about Tims chat. * Shows information about Tims chat.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage page * @subpackage page
*/ */
class ChatCopyrightPage extends AbstractPage { class CopyrightPage extends \wcf\page\AbstractPage {
/** /**
* @see \wcf\page\AbstractPage::$neededModules * @see \wcf\page\AbstractPage::$neededModules
*/ */

View File

@ -1,6 +1,6 @@
<?php <?php
namespace wcf\page; namespace chat\page;
use \wcf\data\chat; use \chat\data;
use \wcf\system\exception\IllegalLinkException; use \wcf\system\exception\IllegalLinkException;
use \wcf\system\exception\PermissionDeniedException; use \wcf\system\exception\PermissionDeniedException;
use \wcf\system\WCF; use \wcf\system\WCF;
@ -9,12 +9,12 @@
* Shows the chat-log. * Shows the chat-log.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage page * @subpackage page
*/ */
class ChatLogPage extends AbstractPage { class LogPage extends \wcf\page\AbstractPage {
/** /**
* @see wcf\page\AbstractPage::$loginRequired * @see wcf\page\AbstractPage::$loginRequired
*/ */
@ -45,13 +45,13 @@ class ChatLogPage extends AbstractPage {
/** /**
* given room * given room
* @var \wcf\data\chat\room\ChatRoom * @var \chat\data\room\Chat
*/ */
public $room = null; public $room = null;
/** /**
* all rooms in the current installation * all rooms in the current installation
* @var array<\wcf\data\chat\room\ChatRoom> * @var array<\chat\data\room\Room>
*/ */
public $rooms = array(); public $rooms = array();
@ -82,9 +82,7 @@ public function assignVariables() {
'messages' => $this->messages, 'messages' => $this->messages,
'room' => $this->room, 'room' => $this->room,
'roomID' => $this->roomID, 'roomID' => $this->roomID,
'rooms' => $this->rooms, 'rooms' => $this->rooms
'sidebarCollapsed' => \wcf\system\user\collapsible\content\UserCollapsibleContentHandler::getInstance()->isCollapsed('com.woltlab.wcf.collapsibleSidebar', 'be.bastelstu.wcf.chat.ChatLogPage'),
'sidebarName' => 'be.bastelstu.wcf.chat.ChatLogPage'
)); ));
} }
@ -103,7 +101,7 @@ public function readParameters() {
public function readData() { public function readData() {
parent::readData(); parent::readData();
$cache = chat\room\ChatRoom::getCache(); $cache = data\room\Room::getCache();
if (!isset($cache[$this->roomID])) throw new IllegalLinkException(); if (!isset($cache[$this->roomID])) throw new IllegalLinkException();
$this->room = $cache[$this->roomID]; $this->room = $cache[$this->roomID];
@ -112,6 +110,6 @@ public function readData() {
if (!$ph->getPermission($this->room, 'mod.canReadLog')) throw new \wcf\system\exception\PermissionDeniedException(); if (!$ph->getPermission($this->room, 'mod.canReadLog')) throw new \wcf\system\exception\PermissionDeniedException();
// TODO: actually read the correct messages // TODO: actually read the correct messages
$this->messages = chat\message\ChatMessageList::getNewestMessages($this->room, 150); $this->messages = data\message\MessageList::getNewestMessages($this->room, 150);
} }
} }

View File

@ -1,20 +1,20 @@
<?php <?php
namespace wcf\page; namespace chat\page;
use \wcf\data\chat; use \chat\data;
use \wcf\system\cache\CacheHandler; use \wcf\system\cache\CacheHandler;
use \wcf\ystem\exception\IllegalLinkException; use \wcf\system\exception\IllegalLinkException;
use \wcf\system\WCF; use \wcf\system\WCF;
/** /**
* Shows the chat-interface * Outputs roomlist
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage page * @subpackage page
*/ */
class ChatRefreshRoomListPage extends AbstractPage { class RoomListPage extends \wcf\page\AbstractPage {
/** /**
* @see wcf\page\AbstractPage::$loginRequired * @see wcf\page\AbstractPage::$loginRequired
*/ */
@ -32,13 +32,13 @@ class ChatRefreshRoomListPage extends AbstractPage {
/** /**
* the room the user current is in * the room the user current is in
* @var \wcf\data\chat\room\ChatRoom * @var \chat\data\room\Room
*/ */
public $room = null; public $room = null;
/** /**
* all rooms in the current installation * all rooms in the current installation
* @var array<\wcf\data\chat\room\ChatRoom> * @var array<\chat\data\room\Room>
*/ */
public $rooms = array(); public $rooms = array();
@ -70,9 +70,9 @@ public function __run() {
public function readData() { public function readData() {
parent::readData(); parent::readData();
$this->rooms = chat\room\ChatRoom::getCache(); $this->rooms = data\room\Room::getCache();
$roomID = \wcf\util\ChatUtil::readUserData('roomID'); $roomID = \chat\util\ChatUtil::readUserData('roomID');
if (!isset($this->rooms[$roomID])) throw new IllegalLinkException(); if (!isset($this->rooms[$roomID])) throw new IllegalLinkException();
$this->room = $this->rooms[$roomID]; $this->room = $this->rooms[$roomID];
} }
@ -91,6 +91,7 @@ public function show() {
$json[] = array( $json[] = array(
'title' => WCF::getLanguage()->get($room->title), 'title' => WCF::getLanguage()->get($room->title),
'link' => \wcf\system\request\LinkHandler::getInstance()->getLink('Chat', array( 'link' => \wcf\system\request\LinkHandler::getInstance()->getLink('Chat', array(
'application' => 'chat',
'object' => $room 'object' => $room
)), )),
'active' => $room->roomID == $this->room->roomID 'active' => $room->roomID == $this->room->roomID

View File

@ -0,0 +1,23 @@
<?php
namespace wbb\system;
/**
* Chat core
*
* @author Tim Düsterhus
* @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.chat
* @subpackage system
*/
class ChatCore extends \wcf\system\application\AbstractApplication {
/**
* @see wcf\system\application\AbstractApplication::$abbreviation
*/
protected $abbreviation = 'chat';
/**
* @see wcf\system\application\IApplication::__run()
*/
public function __run() {}
}

View File

@ -1,17 +1,17 @@
<?php <?php
namespace wcf\system\cache\builder; namespace chat\system\cache\builder;
use wcf\system\WCF; use wcf\system\WCF;
/** /**
* Caches the chat permissions for a combination of user groups. * Caches the chat permissions for a combination of user groups.
* *
* @author Tim Düsterhus, Marcel Werk * @author Tim Düsterhus, Marcel Werk
* @copyright 2010-2012 WoltLab GmbH * @copyright 2010-2013 WoltLab GmbH
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php> * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.cache.builder * @subpackage system.cache.builder
*/ */
class ChatPermissionCacheBuilder implements ICacheBuilder { class PermissionCacheBuilder implements \wcf\system\cache\builder\ICacheBuilder {
/** /**
* @see wcf\system\cache\ICacheBuilder::getData() * @see wcf\system\cache\ICacheBuilder::getData()
*/ */
@ -22,7 +22,7 @@ public function getData(array $cacheResource) {
if (count($groupIDs)) { if (count($groupIDs)) {
$conditionBuilder = new \wcf\system\database\util\PreparedStatementConditionBuilder(); $conditionBuilder = new \wcf\system\database\util\PreparedStatementConditionBuilder();
$conditionBuilder->add('acl_option.objectTypeID = ?', array(\wcf\system\acl\ACLHandler::getInstance()->getObjectTypeID('be.bastelstu.wcf.chat.room'))); $conditionBuilder->add('acl_option.objectTypeID = ?', array(\wcf\system\acl\ACLHandler::getInstance()->getObjectTypeID('be.bastelstu.chat.room')));
$conditionBuilder->add('option_to_group.optionID = acl_option.optionID'); $conditionBuilder->add('option_to_group.optionID = acl_option.optionID');
$conditionBuilder->add('option_to_group.groupID IN (?)', array($groupIDs)); $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, $sql = "SELECT option_to_group.groupID, option_to_group.objectID AS roomID, option_to_group.optionValue,

View File

@ -1,22 +1,22 @@
<?php <?php
namespace wcf\system\cache\builder; namespace chat\system\cache\builder;
/** /**
* Caches all chat rooms. * Caches all chat rooms.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.cache.builder * @subpackage system.cache.builder
*/ */
class ChatRoomCacheBuilder implements ICacheBuilder { class RoomCacheBuilder implements \wcf\system\cache\builder\ICacheBuilder {
/** /**
* @see \wcf\system\cache\ICacheBuilder::getData() * @see \wcf\system\cache\ICacheBuilder::getData()
*/ */
public function getData(array $cacheResource) { public function getData(array $cacheResource) {
// get all chat rooms // get all chat rooms
$roomList = new \wcf\data\chat\room\ChatRoomList(); $roomList = new \chat\data\room\RoomList();
$roomList->sqlOrderBy = "chat_room.position"; $roomList->sqlOrderBy = "chat_room.position";
$roomList->readObjects(); $roomList->readObjects();

View File

@ -6,9 +6,9 @@
* Default implementation for commands. * Default implementation for commands.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.command * @subpackage system.chat.command
*/ */
abstract class AbstractCommand implements ICommand { abstract class AbstractCommand implements ICommand {

View File

@ -6,9 +6,9 @@
* Default implementation for restricted commands * Default implementation for restricted commands
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.command * @subpackage system.chat.command
*/ */
abstract class AbstractRestrictedCommand extends AbstractCommand implements IRestrictedCommand { abstract class AbstractRestrictedCommand extends AbstractCommand implements IRestrictedCommand {

View File

@ -6,9 +6,9 @@
* Handles commands * Handles commands
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.command * @subpackage system.chat.command
*/ */
final class CommandHandler { final class CommandHandler {

View File

@ -5,9 +5,9 @@
* Interface for chat-commands. * Interface for chat-commands.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.command * @subpackage system.chat.command
*/ */
interface ICommand { interface ICommand {

View File

@ -5,9 +5,9 @@
* Interface for Restricted commands. * Interface for Restricted commands.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.command * @subpackage system.chat.command
*/ */
interface IRestrictedCommand { interface IRestrictedCommand {

View File

@ -5,9 +5,9 @@
* Thrown when a command is not found. * Thrown when a command is not found.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.command * @subpackage system.chat.command
*/ */
class NotFoundException extends \Exception { } class NotFoundException extends \Exception { }

View File

@ -5,9 +5,9 @@
* Thrown when a user is not found. * Thrown when a user is not found.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.command * @subpackage system.chat.command
*/ */
class UserNotFoundException extends \Exception { class UserNotFoundException extends \Exception {

View File

@ -6,16 +6,16 @@
* Marks the user as away. * Marks the user as away.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.command.commands * @subpackage system.chat.command.commands
*/ */
class AwayCommand extends \wcf\system\chat\command\AbstractCommand { class AwayCommand extends \wcf\system\chat\command\AbstractCommand {
public function __construct(\wcf\system\chat\command\CommandHandler $commandHandler) { public function __construct(\wcf\system\chat\command\CommandHandler $commandHandler) {
parent::__construct($commandHandler); parent::__construct($commandHandler);
\wcf\util\ChatUtil::writeUserData(array('away' => $commandHandler->getParameters())); \chat\util\ChatUtil::writeUserData(array('away' => $commandHandler->getParameters()));
$this->didInit(); $this->didInit();
} }

View File

@ -9,9 +9,9 @@
* Bans a user. * Bans a user.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.command.commands * @subpackage system.chat.command.commands
*/ */
class BanCommand extends MuteCommand { class BanCommand extends MuteCommand {

View File

@ -6,9 +6,9 @@
* Changes the color of the username * Changes the color of the username
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.command.commands * @subpackage system.chat.command.commands
*/ */
class ColorCommand extends \wcf\system\chat\command\AbstractCommand { class ColorCommand extends \wcf\system\chat\command\AbstractCommand {
@ -56,7 +56,7 @@ public function __construct(\wcf\system\chat\command\CommandHandler $commandHand
$color[$key] = hexdec($val); $color[$key] = hexdec($val);
} }
} }
\wcf\util\ChatUtil::writeUserData(array('color' => $color)); \chat\util\ChatUtil::writeUserData(array('color' => $color));
$this->didInit(); $this->didInit();
} }

View File

@ -5,9 +5,9 @@
* Informs everyone that the fish was freed. OH A NOEZ. * Informs everyone that the fish was freed. OH A NOEZ.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.command.commands * @subpackage system.chat.command.commands
*/ */
class FreeCommand extends MeCommand { class FreeCommand extends MeCommand {

View File

@ -9,9 +9,9 @@
* Shows information about the specified user. * Shows information about the specified user.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.command.commands * @subpackage system.chat.command.commands
*/ */
class InfoCommand extends \wcf\system\chat\command\AbstractCommand { class InfoCommand extends \wcf\system\chat\command\AbstractCommand {

View File

@ -6,9 +6,9 @@
* Indicates an action. The message is shown without the colon. * Indicates an action. The message is shown without the colon.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.command.commands * @subpackage system.chat.command.commands
*/ */
class MeCommand extends \wcf\system\chat\command\AbstractCommand { class MeCommand extends \wcf\system\chat\command\AbstractCommand {

View File

@ -9,9 +9,9 @@
* Mutes a user. * Mutes a user.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.command.commands * @subpackage system.chat.command.commands
*/ */
class MuteCommand extends \wcf\system\chat\command\AbstractRestrictedCommand { class MuteCommand extends \wcf\system\chat\command\AbstractRestrictedCommand {

View File

@ -5,9 +5,9 @@
* Sends a message that starts with a slash. * Sends a message that starts with a slash.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.command.commands * @subpackage system.chat.command.commands
*/ */
class PlainCommand extends \wcf\system\chat\command\AbstractCommand { class PlainCommand extends \wcf\system\chat\command\AbstractCommand {

View File

@ -8,9 +8,9 @@
* Resets the color of a user * Resets the color of a user
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.command.commands * @subpackage system.chat.command.commands
*/ */
class RestoreCommand extends \wcf\system\chat\command\AbstractRestrictedCommand { class RestoreCommand extends \wcf\system\chat\command\AbstractRestrictedCommand {

View File

@ -7,9 +7,9 @@
* Creates a temporary room * Creates a temporary room
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.command.commands * @subpackage system.chat.command.commands
*/ */
class TemproomCommand extends \wcf\system\chat\command\AbstractRestrictedCommand { class TemproomCommand extends \wcf\system\chat\command\AbstractRestrictedCommand {
@ -37,7 +37,7 @@ public function __construct(\wcf\system\chat\command\CommandHandler $commandHand
)); ));
// set permissions // set permissions
$options = \wcf\data\acl\option\ACLOption::getOptions(\wcf\system\acl\ACLHandler::getInstance()->getObjectTypeID('be.bastelstu.wcf.chat.room'))->getObjects(); $options = \wcf\data\acl\option\ACLOption::getOptions(\wcf\system\acl\ACLHandler::getInstance()->getObjectTypeID('be.bastelstu.chat.room'))->getObjects();
$_POST['aclValues'] = array( $_POST['aclValues'] = array(
'user' => array( 'user' => array(
// creators may do everything // creators may do everything
@ -49,7 +49,7 @@ public function __construct(\wcf\system\chat\command\CommandHandler $commandHand
) )
); );
\wcf\system\acl\ACLHandler::getInstance()->save($roomID, \wcf\system\acl\ACLHandler::getInstance()->getObjectTypeID('be.bastelstu.wcf.chat.room')); \wcf\system\acl\ACLHandler::getInstance()->save($roomID, \wcf\system\acl\ACLHandler::getInstance()->getObjectTypeID('be.bastelstu.chat.room'));
\wcf\system\chat\permission\ChatPermissionHandler::clearCache(); \wcf\system\chat\permission\ChatPermissionHandler::clearCache();
$this->didInit(); $this->didInit();
} }

View File

@ -5,9 +5,9 @@
* Shows the users that are online * Shows the users that are online
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.command.commands * @subpackage system.chat.command.commands
*/ */
class WhereCommand extends \wcf\system\chat\command\AbstractCommand { class WhereCommand extends \wcf\system\chat\command\AbstractCommand {

View File

@ -6,9 +6,9 @@
* Whispers a message. * Whispers a message.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.command.commands * @subpackage system.chat.command.commands
*/ */
class WhisperCommand extends \wcf\system\chat\command\AbstractCommand { class WhisperCommand extends \wcf\system\chat\command\AbstractCommand {

View File

@ -1,44 +1,44 @@
<?php <?php
namespace wcf\system\cronjob; namespace chat\system\cronjob;
use \wcf\data\chat; use \chat\data;
/** /**
* Vaporizes unneeded data. * Vaporizes unneeded data.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.cronjob * @subpackage system.cronjob
*/ */
class ChatCleanupCronjob implements ICronjob { class ChatCleanupCronjob implements \wcf\system\cronjob\ICronjob {
/** /**
* @see wcf\system\ICronjob::execute() * @see wcf\system\ICronjob::execute()
*/ */
public function execute(\wcf\data\cronjob\Cronjob $cronjob) { public function execute(\wcf\data\cronjob\Cronjob $cronjob) {
$messageAction = new chat\message\ChatMessageAction(array(), 'prune'); $messageAction = new data\message\MessageAction(array(), 'prune');
$messageAction->executeAction(); $messageAction->executeAction();
$roomAction = new chat\room\ChatRoomAction(array(), 'prune'); $roomAction = new data\room\RoomAction(array(), 'prune');
$roomAction->executeAction(); $roomAction->executeAction();
$suspensionAction = new chat\suspension\ChatSuspensionAction(array(), 'prune'); $suspensionAction = new data\suspension\SuspensionAction(array(), 'prune');
$suspensionAction->executeAction(); $suspensionAction->executeAction();
// kill dead users // kill dead users
$deadUsers = \wcf\util\ChatUtil::getDiedUsers(); $deadUsers = \chat\util\ChatUtil::getDiedUsers();
foreach ($deadUsers as $deadUser) { foreach ($deadUsers as $deadUser) {
if (!$deadUser) continue; if (!$deadUser) continue;
$user = new \wcf\data\user\User($deadUser['userID']); $user = new \wcf\data\user\User($deadUser['userID']);
if (CHAT_DISPLAY_JOIN_LEAVE) { if (CHAT_DISPLAY_JOIN_LEAVE) {
$userData['color'] = \wcf\util\ChatUtil::readUserData('color', $user); $userData['color'] = \chat\util\ChatUtil::readUserData('color', $user);
$messageAction = new chat\message\ChatMessageAction(array(), 'create', array( $messageAction = new data\message\MessageAction(array(), 'create', array(
'data' => array( 'data' => array(
'roomID' => $deadUser['roomID'], 'roomID' => $deadUser['roomID'],
'sender' => $user->userID, 'sender' => $user->userID,
'username' => $user->username, 'username' => $user->username,
'time' => TIME_NOW, 'time' => TIME_NOW,
'type' => chat\message\ChatMessage::TYPE_LEAVE, 'type' => data\message\Message::TYPE_LEAVE,
'message' => '', 'message' => '',
'color1' => $userData['color'][1], 'color1' => $userData['color'][1],
'color2' => $userData['color'][2] 'color2' => $userData['color'][2]
@ -46,7 +46,7 @@ public function execute(\wcf\data\cronjob\Cronjob $cronjob) {
)); ));
$messageAction->executeAction(); $messageAction->executeAction();
} }
\wcf\util\ChatUtil::writeUserData(array('roomID' => null), $user); \chat\util\ChatUtil::writeUserData(array('roomID' => null), $user);
} }
} }
} }

View File

@ -1,16 +1,16 @@
<?php <?php
namespace wcf\system\event\listener; namespace chat\system\event\listener;
/** /**
* Adds a new route to RouteHandler * Adds a new route to RouteHandler
* *
* @author Maximilian Mader * @author Maximilian Mader
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.event.listener * @subpackage system.event.listener
*/ */
class ChatRouteListener implements \wcf\system\event\IEventListener { class RouteHandlerListener implements \wcf\system\event\IEventListener {
/** /**
* @see \wcf\system\event\IEventListener::execute() * @see \wcf\system\event\IEventListener::execute()
*/ */

View File

@ -1,17 +1,16 @@
<?php <?php
namespace wcf\system\menu\page; namespace chat\system\menu\page;
use \wcf\data\chat\room\ChatRoom;
/** /**
* PageMenuItemProvider for chat. * PageMenuItemProvider for chat.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.menu.page * @subpackage system.menu.page
*/ */
class ChatPageMenuItemProvider extends DefaultPageMenuItemProvider { class ChatPageMenuItemProvider extends \wcf\system\menu\page\DefaultPageMenuItemProvider {
protected $room = null; protected $room = null;
/** /**
@ -23,7 +22,7 @@ public function isVisible() {
// guests are not supported // guests are not supported
if (!\wcf\system\WCF::getUser()->userID) return false; if (!\wcf\system\WCF::getUser()->userID) return false;
$cache = ChatRoom::getCache(); $cache = \chat\data\room\Room::getCache();
foreach ($cache as $this->room) { foreach ($cache as $this->room) {
if ($this->room->canEnter()) { if ($this->room->canEnter()) {
@ -41,6 +40,7 @@ public function isVisible() {
*/ */
public function getLink() { public function getLink() {
return \wcf\system\request\LinkHandler::getInstance()->getLink('Chat', array( return \wcf\system\request\LinkHandler::getInstance()->getLink('Chat', array(
'application' => 'chat',
'object' => $this->room 'object' => $this->room
)); ));
} }

View File

@ -1,21 +1,21 @@
<?php <?php
namespace wcf\system\option; namespace chat\system\option;
/** /**
* TimeIntervalOptionType is an implementation of IOptionType for time intervals. * TimeIntervalOptionType is an implementation of IOptionType for time intervals.
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.option * @subpackage system.option
*/ */
class TimeIntervalOptionType extends TextOptionType { class TimeIntervalOptionType extends \wcf\system\option\TextOptionType {
/** /**
* @see \wcf\system\option\IOptionType::getData() * @see \wcf\system\option\IOptionType::getData()
*/ */
public function getData(\wcf\data\option\Option $option, $newValue) { public function getData(\wcf\data\option\Option $option, $newValue) {
return \wcf\util\ChatUtil::timeModifier($newValue); return \chat\util\ChatUtil::timeModifier($newValue);
} }
/** /**

View File

@ -1,5 +1,5 @@
<?php <?php
namespace wcf\system\chat\permission; namespace chat\system\permission;
use \wcf\system\acl\ACLHandler; use \wcf\system\acl\ACLHandler;
use \wcf\system\cache\CacheHandler; use \wcf\system\cache\CacheHandler;
use \wcf\system\package\PackageDependencyHandler; use \wcf\system\package\PackageDependencyHandler;
@ -9,12 +9,12 @@
* Handles chat-permissions. * Handles chat-permissions.
* *
* @author Tim Düsterhus, Marcel Werk * @author Tim Düsterhus, Marcel Werk
* @copyright 2010-2012 WoltLab GmbH * @copyright 2010-2013 WoltLab GmbH
* @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php> * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage system.chat.permissions * @subpackage system.permission
*/ */
class ChatPermissionHandler { class PermissionHandler {
/** /**
* permissions set for the active user * permissions set for the active user
* @var array<boolean> * @var array<boolean>
@ -31,14 +31,14 @@ public function __construct(\wcf\data\user\User $user = null) {
if ($user === null) $user = WCF::getUser(); if ($user === null) $user = WCF::getUser();
$this->user = new \wcf\data\user\UserProfile($user); $this->user = new \wcf\data\user\UserProfile($user);
$packageID = \wcf\util\ChatUtil::getPackageID(); $packageID = \chat\util\ChatUtil::getPackageID();
$ush = \wcf\system\user\storage\UserStorageHandler::getInstance(); $ush = \wcf\system\user\storage\UserStorageHandler::getInstance();
// get groups permissions // get groups permissions
$groups = implode(',', $user->getGroupIDs()); $groups = implode(',', $user->getGroupIDs());
$groupsFileName = \wcf\util\StringUtil::getHash(implode('-', $user->getGroupIDs())); $groupsFileName = \wcf\util\StringUtil::getHash(implode('-', $user->getGroupIDs()));
CacheHandler::getInstance()->addResource('chatPermission-'.$groups, WCF_DIR.'cache/cache.chatPermission-'.$groupsFileName.'.php', '\wcf\system\cache\builder\ChatPermissionCacheBuilder'); CacheHandler::getInstance()->addResource('permission-'.$groups, WCF_DIR.'cache/cache.permission-'.$groupsFileName.'.php', '\chat\system\cache\builder\PermissionCacheBuilder');
$this->chatPermissions = CacheHandler::getInstance()->get('chatPermission-'.$groups); $this->chatPermissions = CacheHandler::getInstance()->get('permission-'.$groups);
// get user permissions // get user permissions
if ($user->userID) { if ($user->userID) {
@ -53,7 +53,7 @@ public function __construct(\wcf\data\user\User $user = null) {
$userPermissions = array(); $userPermissions = array();
$conditionBuilder = new \wcf\system\database\util\PreparedStatementConditionBuilder(); $conditionBuilder = new \wcf\system\database\util\PreparedStatementConditionBuilder();
$conditionBuilder->add('acl_option.objectTypeID = ?', array(ACLHandler::getInstance()->getObjectTypeID('be.bastelstu.wcf.chat.room'))); $conditionBuilder->add('acl_option.objectTypeID = ?', array(ACLHandler::getInstance()->getObjectTypeID('be.bastelstu.chat.room')));
$conditionBuilder->add('option_to_user.optionID = acl_option.optionID'); $conditionBuilder->add('option_to_user.optionID = acl_option.optionID');
$conditionBuilder->add('option_to_user.userID = ?', array($user->userID)); $conditionBuilder->add('option_to_user.userID = ?', array($user->userID));
$sql = "SELECT option_to_user.objectID AS roomID, option_to_user.optionValue, $sql = "SELECT option_to_user.objectID AS roomID, option_to_user.optionValue,
@ -85,11 +85,11 @@ public function __construct(\wcf\data\user\User $user = null) {
/** /**
* Fetches the given permission for the given room * Fetches the given permission for the given room
* *
* @param \wcf\data\chat\room\ChatRoom $room * @param \chat\data\room\Room $room
* @param string $permission * @param string $permission
* @return boolean * @return boolean
*/ */
public function getPermission(\wcf\data\chat\room\ChatRoom $room, $permission) { public function getPermission(\chat\data\room\Room $room, $permission) {
if (!isset($this->chatPermissions[$room->roomID][$permission])) { if (!isset($this->chatPermissions[$room->roomID][$permission])) {
$permission = str_replace(array('user.', 'mod.'), array('user.chat.', 'mod.chat.'), $permission); $permission = str_replace(array('user.', 'mod.'), array('user.chat.', 'mod.chat.'), $permission);
@ -102,10 +102,10 @@ public function getPermission(\wcf\data\chat\room\ChatRoom $room, $permission) {
* Clears the cache. * Clears the cache.
*/ */
public static function clearCache() { public static function clearCache() {
$packageID = \wcf\util\ChatUtil::getPackageID(); $packageID = \chat\util\ChatUtil::getPackageID();
$ush = \wcf\system\user\storage\UserStorageHandler::getInstance(); $ush = \wcf\system\user\storage\UserStorageHandler::getInstance();
$ush->resetAll('chatUserPermissions', $packageID); $ush->resetAll('chatUserPermissions', $packageID);
\wcf\system\cache\CacheHandler::getInstance()->clear(WCF_DIR.'cache', 'cache.chatPermission-[a-f0-9]{40}.php'); \wcf\system\cache\CacheHandler::getInstance()->clear(WCF_DIR.'cache', 'cache.permission-[a-f0-9]{40}.php');
} }
} }

View File

@ -1,5 +1,5 @@
<?php <?php
namespace wcf\util; namespace chat\util;
use \wcf\data\package\PackageCache; use \wcf\data\package\PackageCache;
use \wcf\system\user\storage\UserStorageHandler; use \wcf\system\user\storage\UserStorageHandler;
use \wcf\system\WCF; use \wcf\system\WCF;
@ -8,9 +8,9 @@
* Chat utilities * Chat utilities
* *
* @author Tim Düsterhus * @author Tim Düsterhus
* @copyright 2010-2012 Tim Düsterhus * @copyright 2010-2013 Tim Düsterhus
* @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> * @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
* @package be.bastelstu.wcf.chat * @package be.bastelstu.chat
* @subpackage util * @subpackage util
*/ */
final class ChatUtil { final class ChatUtil {
@ -18,7 +18,7 @@ final class ChatUtil {
* Matches a time-interval with modifiers. * Matches a time-interval with modifiers.
* Each part may be optionally separated by a comma * Each part may be optionally separated by a comma
* *
* @see \wcf\util\ChatUtil::timeModifier() * @see \chat\util\ChatUtil::timeModifier()
*/ */
const TIME_MODIFIER_REGEX = '((?:[0-9]+[s|h|d|w|m|y|S|H|D|W|M|Y]?,?)+)'; const TIME_MODIFIER_REGEX = '((?:[0-9]+[s|h|d|w|m|y|S|H|D|W|M|Y]?,?)+)';
@ -27,7 +27,7 @@ final class ChatUtil {
* *
* @var string * @var string
*/ */
const PACKAGE_IDENTIFIER = 'be.bastelstu.wcf.chat'; const PACKAGE_IDENTIFIER = 'be.bastelstu.chat';
/** /**
* Which user-storage-keys need serialization. * Which user-storage-keys need serialization.
@ -120,7 +120,7 @@ public static function gradient($string, $start, $end) {
$result = ''; $result = '';
for ($i = 0, $max = count($string); $i < $max; $i++) { for ($i = 0, $max = count($string); $i < $max; $i++) {
$result .= '<span style="color:rgb('.(($start >> 16 & 255) - $i * $r).','.(($start >> 8 & 255) - $i * $g).','.(($start & 255) - $i * $b).')">'.StringUtil::encodeHTML($string[$i]).'</span>'; $result .= '<span style="color:rgb('.(($start >> 16 & 255) - $i * $r).','.(($start >> 8 & 255) - $i * $g).','.(($start & 255) - $i * $b).')">'.\wcf\util\StringUtil::encodeHTML($string[$i]).'</span>';
} }
return $result; return $result;
@ -133,8 +133,8 @@ public static function gradient($string, $start, $end) {
*/ */
public static function nodePushRunning() { public static function nodePushRunning() {
if (!CHAT_SOCKET_IO_PATH) return false; if (!CHAT_SOCKET_IO_PATH) return false;
if (!file_exists(WCF_DIR.'acp/be.bastelstu.wcf.chat.nodePush/data.sock')) return false; if (!file_exists(CHAT_DIR.'acp/be.bastelstu.chat.nodePush/data.sock')) return false;
if (!is_writable(WCF_DIR.'acp/be.bastelstu.wcf.chat.nodePush/data.sock')) return false; if (!is_writable(CHAT_DIR.'acp/be.bastelstu.chat.nodePush/data.sock')) return false;
return true; return true;
} }
@ -179,8 +179,8 @@ public static function readUserData($field, \wcf\data\user\User $user = null) {
*/ */
public static function str_split($string, $length = 1) { public static function str_split($string, $length = 1) {
$result = array(); $result = array();
for ($i = 0, $max = StringUtil::length($string); $i < $max; $i += $length) { for ($i = 0, $max = \wcf\util\StringUtil::length($string); $i < $max; $i += $length) {
$result[] = StringUtil::substring($string, $i, $length); $result[] = \wcf\util\StringUtil::substring($string, $i, $length);
} }
return $result; return $result;
} }

View File

@ -2,13 +2,13 @@
-- Database Structure for Tims Chat -- Database Structure for Tims Chat
-- --
-- @author Tim Düsterhus -- @author Tim Düsterhus
-- @copyright 2010-2012 Tim Düsterhus -- @copyright 2010-2013 Tim Düsterhus
-- @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode> -- @license Creative Commons Attribution-NonCommercial-ShareAlike <http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode>
-- @package be.bastelstu.wcf.chat -- @package be.bastelstu.chat
-- -- -- --
DROP TABLE IF EXISTS wcf1_chat_message; DROP TABLE IF EXISTS chat1_message;
CREATE TABLE wcf1_chat_message ( CREATE TABLE chat1_message (
messageID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, messageID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
roomID INT(10) NOT NULL, roomID INT(10) NOT NULL,
sender INT(10) DEFAULT NULL, sender INT(10) DEFAULT NULL,
@ -28,8 +28,8 @@ CREATE TABLE wcf1_chat_message (
KEY receiver (receiver) KEY receiver (receiver)
); );
DROP TABLE IF EXISTS wcf1_chat_room; DROP TABLE IF EXISTS chat1_room;
CREATE TABLE wcf1_chat_room ( CREATE TABLE chat1_room (
roomID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, roomID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL, title VARCHAR(255) NOT NULL,
topic VARCHAR(255) NOT NULL, topic VARCHAR(255) NOT NULL,
@ -41,8 +41,8 @@ CREATE TABLE wcf1_chat_room (
KEY owner (owner) KEY owner (owner)
); );
DROP TABLE IF EXISTS wcf1_chat_suspension; DROP TABLE IF EXISTS chat1_suspension;
CREATE TABLE wcf1_chat_suspension ( CREATE TABLE chat1_suspension (
suspensionID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, suspensionID INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
userID INT(10) NOT NULL, userID INT(10) NOT NULL,
roomID INT(10) DEFAULT NULL, roomID INT(10) DEFAULT NULL,
@ -55,16 +55,16 @@ CREATE TABLE wcf1_chat_suspension (
KEY time (time) KEY time (time)
); );
ALTER TABLE wcf1_chat_message ADD FOREIGN KEY (receiver) REFERENCES wcf1_user (userID) ON DELETE CASCADE; ALTER TABLE chat1_message ADD FOREIGN KEY (receiver) REFERENCES wcf1_user (userID) ON DELETE CASCADE;
ALTER TABLE wcf1_chat_message ADD FOREIGN KEY (roomID) REFERENCES wcf1_chat_room (roomID) ON DELETE CASCADE; ALTER TABLE chat1_message ADD FOREIGN KEY (roomID) REFERENCES chat1_room (roomID) ON DELETE CASCADE;
ALTER TABLE wcf1_chat_message ADD FOREIGN KEY (sender) REFERENCES wcf1_user (userID) ON DELETE SET NULL; ALTER TABLE chat1_message ADD FOREIGN KEY (sender) REFERENCES wcf1_user (userID) ON DELETE SET NULL;
ALTER TABLE wcf1_chat_room ADD FOREIGN KEY (owner) REFERENCES wcf1_user (userID) ON DELETE SET NULL; ALTER TABLE chat1_room ADD FOREIGN KEY (owner) REFERENCES wcf1_user (userID) ON DELETE SET NULL;
ALTER TABLE wcf1_chat_suspension ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE; ALTER TABLE chat1_suspension ADD FOREIGN KEY (userID) REFERENCES wcf1_user (userID) ON DELETE CASCADE;
ALTER TABLE wcf1_chat_suspension ADD FOREIGN KEY (roomID) REFERENCES wcf1_chat_room (roomID) ON DELETE CASCADE; ALTER TABLE chat1_suspension ADD FOREIGN KEY (roomID) REFERENCES chat1_room (roomID) ON DELETE CASCADE;
INSERT INTO wcf1_chat_room (title, topic, position) VALUES ('wcf.chat.room.title1', 'wcf.chat.room.topic1', 1); INSERT INTO chat1_room (title, topic, position) VALUES ('wcf.chat.room.title1', 'wcf.chat.room.topic1', 1);
INSERT INTO wcf1_chat_room (title, topic, position) VALUES ('Testroom 2', 'Topic of Testroom 2', 2); INSERT INTO chat1_room (title, topic, position) VALUES ('Testroom 2', 'Topic of Testroom 2', 2);
INSERT INTO wcf1_chat_room (title, topic, position) VALUES ('Testroom with a very long', 'The topic of this room is rather loing as well!', 3); INSERT INTO chat1_room (title, topic, position) VALUES ('Testroom with a very long', 'The topic of this room is rather loing as well!', 3);
INSERT INTO wcf1_chat_room (title, topic, position) VALUES ('Room w/o topic', '', 4); INSERT INTO chat1_room (title, topic, position) VALUES ('Room w/o topic', '', 4);

View File

@ -1,20 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<language xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/maelstrom/language.xsd" languagecode="de"> <language xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/maelstrom/language.xsd" languagecode="de">
<category name="wcf.acp.chat"> <category name="chat.acp.room">
<item name="wcf.acp.chat.room.list"><![CDATA[Chaträume]]></item> <item name="chat.acp.room.list"><![CDATA[Chaträume]]></item>
<item name="wcf.acp.chat.room.add"><![CDATA[Chatraum hinzufügen]]></item> <item name="chat.acp.room.add"><![CDATA[Chatraum hinzufügen]]></item>
<item name="wcf.acp.chat.room.edit"><![CDATA[Chatraum bearbeiten]]></item> <item name="chat.acp.room.edit"><![CDATA[Chatraum bearbeiten]]></item>
<item name="wcf.acp.chat.room.data"><![CDATA[Daten des Raumes]]></item> <item name="chat.acp.room.data"><![CDATA[Daten des Raumes]]></item>
<item name="wcf.acp.chat.room.title"><![CDATA[Titel]]></item> <item name="chat.acp.room.title"><![CDATA[Titel]]></item>
<item name="wcf.acp.chat.room.topic"><![CDATA[Thema]]></item> <item name="chat.acp.room.topic"><![CDATA[Thema]]></item>
<item name="wcf.acp.chat.delete.sure"><![CDATA[Möchten Sie den Raum &bdquo;{$chatRoom->title|language}&ldquo; wirklich löschen?]]></item> <item name="chat.acp.room.noneAvailable"><![CDATA[Es wurden noch keine Chaträume angelegt.]]></item>
<item name="chat.acp.room.delete.sure"><![CDATA[Möchten Sie den Raum &bdquo;{$chatRoom->title|language}&ldquo; wirklich löschen?]]></item>
</category> </category>
<category name="wcf.acp.menu"> <category name="chat.acp.menu">
<item name="wcf.acp.menu.link.chat"><![CDATA[Chat]]></item> <item name="chat.acp.menu.link"><![CDATA[Chat]]></item>
<item name="wcf.acp.menu.link.chat.room.list"><![CDATA[Chaträume auflisten]]></item> <item name="chat.acp.menu.link.room.list"><![CDATA[Chaträume auflisten]]></item>
<item name="wcf.acp.menu.link.chat.room.add"><![CDATA[Chatraum hinzufügen]]></item> <item name="chat.acp.menu.link.room.add"><![CDATA[Chatraum hinzufügen]]></item>
</category> </category>
<category name="wcf.acp.group"> <category name="wcf.acp.group">
@ -57,71 +58,73 @@ Hinweis: Setzen Sie diese Einstellung nur, wenn Sie wissen, was sie bewirkt. Die
<item name="wcf.acp.option.chat_log_archivetime.description"><![CDATA[Gibt die Zeit in Minuten an, die eine Nachricht im Protokoll gespeichert bleibt.]]></item> <item name="wcf.acp.option.chat_log_archivetime.description"><![CDATA[Gibt die Zeit in Minuten an, die eine Nachricht im Protokoll gespeichert bleibt.]]></item>
</category> </category>
<category name="wcf.chat"> <category name="chat.general">
<item name="wcf.chat.title"><![CDATA[Chat]]></item> <item name="chat.general.title"><![CDATA[Chat]]></item>
<item name="wcf.chat.protocol"><![CDATA[Protokoll]]></item> <item name="chat.general.protocol"><![CDATA[Protokoll]]></item>
<item name="wcf.chat.room"><![CDATA[Raum]]></item> <item name="chat.general.room"><![CDATA[Raum]]></item>
<item name="wcf.chat.rooms"><![CDATA[Räume]]></item> <item name="chat.general.rooms"><![CDATA[Räume]]></item>
<item name="wcf.chat.users"><![CDATA[Nutzer]]></item> <item name="chat.general.users"><![CDATA[Nutzer]]></item>
<item name="wcf.chat.copyright"><![CDATA[<a href="http://tims.bastelstu.be">Chat: <strong>Tims Chat</strong>{if CHAT_SHOW_VERSION && $chatVersion|isset} {$chatVersion}{/if}, entwickelt von <strong>TimWolla</strong></a>]]></item> <item name="chat.general.copyright"><![CDATA[<a href="http://tims.bastelstu.be">Chat: <strong>Tims Chat</strong>{if CHAT_SHOW_VERSION && $chatVersion|isset} {$chatVersion}{/if}, entwickelt von <strong>TimWolla</strong></a>]]></item>
<item name="wcf.chat.copyright.leader"><![CDATA[Projektleiter]]></item> <item name="chat.general.copyright.leader"><![CDATA[Projektleiter]]></item>
<item name="wcf.chat.copyright.developer"><![CDATA[Entwickler]]></item> <item name="chat.general.copyright.developer"><![CDATA[Entwickler]]></item>
<item name="wcf.chat.copyright.graphics"><![CDATA[Grafisches]]></item> <item name="chat.general.copyright.graphics"><![CDATA[Grafisches]]></item>
<item name="wcf.chat.copyright.translation"><![CDATA[Übersetzung]]></item> <item name="chat.general.copyright.translation"><![CDATA[Übersetzung]]></item>
<item name="wcf.chat.copyright.thanks"><![CDATA[Weiteren Dank an]]></item> <item name="chat.general.copyright.thanks"><![CDATA[Weiteren Dank an]]></item>
<item name="wcf.chat.submit.default"><![CDATA[Zum Senden Enter drücken]]></item> <item name="chat.general.submit.default"><![CDATA[Zum Senden Enter drücken]]></item>
<item name="wcf.chat.scroll"><![CDATA[Scrollen]]></item> <item name="chat.general.scroll"><![CDATA[Scrollen]]></item>
<item name="wcf.chat.notify"><![CDATA[Benachrichtigen]]></item> <item name="chat.general.notify"><![CDATA[Benachrichtigen]]></item>
<item name="wcf.chat.notify.title"><![CDATA[Neue Nachrichten]]></item> <item name="chat.general.notify.title"><![CDATA[Neue Nachrichten]]></item>
<item name="wcf.chat.smilies"><![CDATA[Smilies]]></item> <item name="chat.general.smilies"><![CDATA[Smilies]]></item>
<item name="wcf.chat.clear"><![CDATA[Chat leeren]]></item> <item name="chat.general.clear"><![CDATA[Chat leeren]]></item>
<item name="wcf.chat.mark"><![CDATA[Markieren]]></item> <item name="chat.general.mark"><![CDATA[Markieren]]></item>
<item name="wcf.chat.forceRefresh"><![CDATA[Räume neu laden]]></item> <item name="chat.general.forceRefresh"><![CDATA[Räume neu laden]]></item>
<item name="wcf.chat.query"><![CDATA[Privates Gespräch]]></item> <item name="chat.general.query"><![CDATA[Privates Gespräch]]></item>
<item name="wcf.chat.kick"><![CDATA[Kicken]]></item> <item name="chat.general.kick"><![CDATA[Kicken]]></item>
<item name="wcf.chat.ban"><![CDATA[Bannen]]></item> <item name="chat.general.ban"><![CDATA[Bannen]]></item>
<item name="wcf.chat.profile"><![CDATA[Profil]]></item> <item name="chat.general.profile"><![CDATA[Profil]]></item>
<item name="wcf.chat.information"><![CDATA[Information]]></item> <item name="chat.general.information"><![CDATA[Information]]></item>
<item name="wcf.chat.information.chatUpdate"><![CDATA[Der Chat wurde aktualisiert. Bitte lade die Seite neu, da es sonst zu Fehlern kommen kann.]]></item> <item name="chat.general.information.chatUpdate"><![CDATA[Der Chat wurde aktualisiert. Bitte lade die Seite neu, da es sonst zu Fehlern kommen kann.]]></item>
<item name="wcf.chat.error"><![CDATA[Fehler]]></item>
<item name="wcf.chat.error.notFound"><![CDATA[Der Befehl wurde nicht gefunden.]]></item>
<item name="wcf.chat.error.userNotFound"><![CDATA[Der Benutzer &bdquo;{$username}&ldquo; wurde nicht gefunden.]]></item>
<item name="wcf.chat.error.permissionDenied"><![CDATA[Sie dürfen diesen Befehl nicht verwenden.]]></item>
<item name="wcf.chat.error.exception"><![CDATA[Es gab ein Problem bei der Ausführung dieses Befehls. Bitte wenden Sie sich an einen Administrator.]]></item>
</category> </category>
<category name="wcf.chat.message"> <category name="chat.error">
<item name="chat.error"><![CDATA[Fehler]]></item>
<item name="chat.error.notFound"><![CDATA[Der Befehl wurde nicht gefunden.]]></item>
<item name="chat.error.userNotFound"><![CDATA[Der Benutzer &bdquo;{$username}&ldquo; wurde nicht gefunden.]]></item>
<item name="chat.error.permissionDenied"><![CDATA[Sie dürfen diesen Befehl nicht verwenden.]]></item>
<item name="chat.error.exception"><![CDATA[Es gab ein Problem bei der Ausführung dieses Befehls. Bitte wenden Sie sich an einen Administrator.]]></item>
</category>
<category name="chat.message">
<!-- 1 = TYPE_JOIN --> <!-- 1 = TYPE_JOIN -->
<item name="wcf.chat.message.1"><![CDATA[hat den Chat betreten.{if true} ({$ipAddress}){/if}]]></item><!-- todo: check rights --> <item name="chat.message.1"><![CDATA[hat den Chat betreten.{if true} ({$ipAddress}){/if}]]></item><!-- todo: check rights -->
<!-- 2 = TYPE_LEAVE --> <!-- 2 = TYPE_LEAVE -->
<item name="wcf.chat.message.2"><![CDATA[hat den Chat verlassen.]]></item> <item name="chat.message.2"><![CDATA[hat den Chat verlassen.]]></item>
<!-- 3 = TYPE_AWAY --> <!-- 3 = TYPE_AWAY -->
<item name="wcf.chat.message.3"><![CDATA[ist jetzt abwesend{if $message}: {$message}{else}.{/if}]]></item> <item name="chat.message.3"><![CDATA[ist jetzt abwesend{if $message}: {$message}{else}.{/if}]]></item>
<!-- 4 = TYPE_BACK --> <!-- 4 = TYPE_BACK -->
<item name="wcf.chat.message.4"><![CDATA[ist jetzt wieder da.]]></item> <item name="chat.message.4"><![CDATA[ist jetzt wieder da.]]></item>
<!-- 5 = TYPE_MODERATE --> <!-- 5 = TYPE_MODERATE -->
<item name="wcf.chat.message.5.restore"><![CDATA[hat {@$link} zurückgesetzt.]]></item> <item name="chat.message.5.restore"><![CDATA[hat {@$link} zurückgesetzt.]]></item>
<item name="wcf.chat.message.5.mute"><![CDATA[hat {@$link} bis {@$until|plainTime} geknebelt.]]></item> <item name="chat.message.5.mute"><![CDATA[hat {@$link} bis {@$until|plainTime} geknebelt.]]></item>
<item name="wcf.chat.message.5.ban"><![CDATA[hat {@$link} bis {@$until|plainTime} gebannt.]]></item> <item name="chat.message.5.ban"><![CDATA[hat {@$link} bis {@$until|plainTime} gebannt.]]></item>
<!-- 7 = TYPE_WHISPER --> <!-- 7 = TYPE_WHISPER -->
<item name="wcf.chat.message.7"><![CDATA[flüstert{if $showReceiver} an {$username}{/if}:]]></item> <item name="chat.message.7"><![CDATA[flüstert{if $showReceiver} an {$username}{/if}:]]></item>
</category> </category>
<!-- I18N Values --> <!-- I18N Values -->
<category name="wcf.chat.room"> <category name="chat.room">
<item name="wcf.chat.room.title1"><![CDATA[Hauptchat]]></item> <item name="chat.room.title1"><![CDATA[Hauptchat]]></item>
<item name="wcf.chat.room.topic1"><![CDATA[Vielen Dank, dass Sie sich für Tims Chat entschieden haben. Bitte besuchen Sie das ACP um diesen Text anzupassen.]]></item> <item name="chat.room.topic1"><![CDATA[Vielen Dank, dass Sie sich für Tims Chat entschieden haben. Bitte besuchen Sie das ACP um diesen Text anzupassen.]]></item>
<item name="wcf.chat.room.titleTemp"><![CDATA[Raum_{$roomID}]]></item> <item name="chat.room.titleTemp"><![CDATA[Raum_{$roomID}]]></item>
</category> </category>
<category name="wcf.header"> <category name="chat.header">
<item name="wcf.header.menu.chat"><![CDATA[Chat]]></item> <item name="chat.header.menu.chat"><![CDATA[Chat]]></item>
</category> </category>
</language> </language>

View File

@ -2,17 +2,17 @@
<data xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/maelstrom/object-type.xsd"> <data xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/maelstrom/object-type.xsd">
<import> <import>
<type> <type>
<name>be.bastelstu.wcf.chat.room</name> <name>be.bastelstu.chat.room</name>
<definitionname>com.woltlab.wcf.acl</definitionname> <definitionname>com.woltlab.wcf.acl</definitionname>
</type> </type>
<type> <type>
<name>be.bastelstu.wcf.chat.activityPointEvent.join</name> <name>be.bastelstu.chat.activityPointEvent.join</name>
<definitionname>com.woltlab.wcf.user.activityPointEvent</definitionname> <definitionname>com.woltlab.wcf.user.activityPointEvent</definitionname>
<points>0</points> <points>0</points>
<classname>wcf\system\user\activity\point\DefaultUserActivityPointObjectProcessor</classname><!-- We are unable to recalc those points --> <classname>wcf\system\user\activity\point\DefaultUserActivityPointObjectProcessor</classname><!-- We are unable to recalc those points -->
</type> </type>
<type> <type>
<name>be.bastelstu.wcf.chat.activityPointEvent.message</name> <name>be.bastelstu.chat.activityPointEvent.message</name>
<definitionname>com.woltlab.wcf.user.activityPointEvent</definitionname> <definitionname>com.woltlab.wcf.user.activityPointEvent</definitionname>
<points>0</point> <points>0</point>
<classname>wcf\system\user\activity\point\DefaultUserActivityPointObjectProcessor</classname><!-- We are unable to recalc those points --> <classname>wcf\system\user\activity\point\DefaultUserActivityPointObjectProcessor</classname><!-- We are unable to recalc those points -->

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<package name="be.bastelstu.wcf.chat" xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/maelstrom/package.xsd"> <package name="be.bastelstu.chat" xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/maelstrom/package.xsd">
<packageinformation> <packageinformation>
<packagename><![CDATA[Tims Chat]]></packagename> <packagename><![CDATA[Tims Chat]]></packagename>
<packagedescription><![CDATA[Chat for WoltLab Community Framework™.]]></packagedescription> <packagedescription><![CDATA[Chat for WoltLab Community Framework™.]]></packagedescription>
<packagedescription language="de"><![CDATA[Chat für WoltLab Community Framework™.]]></packagedescription> <packagedescription language="de"><![CDATA[Chat für WoltLab Community Framework™.]]></packagedescription>
<standalone>0</standalone> <standalone>1</standalone>
<version>3.0.0 Alpha 19</version> <version>3.0.0 Alpha 19</version>
<date>2011-11-26</date> <date>2011-11-26</date>
</packageinformation> </packageinformation>
@ -35,7 +35,7 @@
<instruction type="acpMenu">acpMenu.xml</instruction> <instruction type="acpMenu">acpMenu.xml</instruction>
<instruction type="userGroupOption">userGroupOption.xml</instruction> <instruction type="userGroupOption">userGroupOption.xml</instruction>
<instruction type="cronjob">cronjob.xml</instruction> <instruction type="cronjob">cronjob.xml</instruction>
<instruction type="script">acp/be.bastelstu.wcf.chat.install.php</instruction> <instruction type="script">acp/be.bastelstu.chat.install.php</instruction>
</instructions> </instructions>
<instructions type="update" fromversion="3.0.0 Alpha *"> <instructions type="update" fromversion="3.0.0 Alpha *">
@ -51,6 +51,6 @@
<instruction type="acpMenu">acpMenu.xml</instruction> <instruction type="acpMenu">acpMenu.xml</instruction>
<instruction type="userGroupOption">userGroupOption.xml</instruction> <instruction type="userGroupOption">userGroupOption.xml</instruction>
<instruction type="cronjob">cronjob.xml</instruction> <instruction type="cronjob">cronjob.xml</instruction>
<instruction type="script">acp/be.bastelstu.wcf.chat.update.php</instruction> <instruction type="script">acp/be.bastelstu.chat.update.php</instruction>
</instructions> </instructions>
</package> </package>

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<data xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/pagemenu.xsd"> <data xmlns="http://www.woltlab.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.woltlab.com http://www.woltlab.com/XSD/pagemenu.xsd">
<import> <import>
<pagemenuitem name="wcf.header.menu.chat"> <pagemenuitem name="chat.header.menu.chat">
<link>index.php/Chat</link> <controller><![CDATA[chat\page\ChatPage]]></controller>
<position>header</position> <position>header</position>
<classname>\wcf\system\menu\page\ChatPageMenuItemProvider</classname> <classname>\chat\system\menu\page\ChatPageMenuItemProvider</classname>
</pagemenuitem> </pagemenuitem>
</import> </import>
</data> </data>

View File

@ -6,10 +6,10 @@
{include file='headInclude' sandbox=false} {include file='headInclude' sandbox=false}
<style type="text/css"> <style type="text/css">
#timsChatCopyrightDialog { #timsChatCopyrightDialog {
background-image: url("{link controller='Chat' action='Copyright' sheep=1}{/link}"); background-image: url("{link application='chat' controller='Chat' action='Copyright' sheep=1}{/link}");
} }
{assign var='type' value='\wcf\data\chat\message\ChatMessage::TYPE_'} {assign var='type' value='\chat\data\message\Message::TYPE_'}
.timsChatMessage{$type|concat:'JOIN'|constant}, .timsChatMessage{$type|concat:'LEAVE'|constant}, .timsChatMessage{$type|concat:'JOIN'|constant}, .timsChatMessage{$type|concat:'LEAVE'|constant},
.timsChatMessage{$type|concat:'INFORMATION'|constant}, .timsChatMessage{$type|concat:'ERROR'|constant} { .timsChatMessage{$type|concat:'INFORMATION'|constant}, .timsChatMessage{$type|concat:'ERROR'|constant} {
background-position: left top; background-position: left top;
@ -18,26 +18,26 @@
} }
.timsChatMessage{$type|concat:'JOIN'|constant} { .timsChatMessage{$type|concat:'JOIN'|constant} {
background-image: url({icon size='S'}circleArrowRight{/icon}); background-image: url({icon}circleArrowRight{/icon});
} }
.timsChatMessage{$type|concat:'LEAVE'|constant} { .timsChatMessage{$type|concat:'LEAVE'|constant} {
background-image: url({icon size='S'}circleArrowLeft{/icon}); background-image: url({icon}circleArrowLeft{/icon});
} }
.timsChatMessage{$type|concat:'INFORMATION'|constant} { .timsChatMessage{$type|concat:'INFORMATION'|constant} {
background-image: url({icon size='S'}systemInfo{/icon}); background-image: url({icon}systemInfo{/icon});
} }
.timsChatMessage{$type|concat:'ERROR'|constant} { .timsChatMessage{$type|concat:'ERROR'|constant} {
background-image: url({icon size='S'}systemError{/icon}); background-image: url({icon}systemError{/icon});
} }
</style> </style>
</head> </head>
<body id="tpl{$templateName|ucfirst}"> <body id="tpl{$templateName|ucfirst}">
{capture assign='sidebar'}{include file='chatSidebar'}{/capture} {capture assign='sidebar'}{include application='chat' file='chatSidebar'}{/capture}
{capture assign='headerNavigation'}{include file='chatNavigationInclude'}{/capture} {capture assign='headerNavigation'}{include application='chat' file='chatNavigationInclude'}{/capture}
{include file='header' sandbox=false sidebarOrientation='right'} {include file='header' sandbox=false sidebarOrientation='right'}
<div id="timsChatRoomContent"> <div id="timsChatRoomContent">
@ -50,7 +50,7 @@
</div> </div>
</fieldset> </fieldset>
<form id="timsChatForm" action="{link controller='Chat' action='Send'}{/link}" method="post"> <form id="timsChatForm" action="{link application='chat' controller='Chat' action='Send'}{/link}" method="post">
<input id="timsChatInput" accesskey="w" type="text" class="inputText long" name="text" autocomplete="off" maxlength="{@CHAT_MAX_LENGTH}" disabled="disabled" required="required" placeholder="{lang}wcf.chat.submit.default{/lang}" /> <input id="timsChatInput" accesskey="w" type="text" class="inputText long" name="text" autocomplete="off" maxlength="{@CHAT_MAX_LENGTH}" disabled="disabled" required="required" placeholder="{lang}wcf.chat.submit.default{/lang}" />
</form> </form>
@ -87,32 +87,32 @@
<ul class="smallButtons"> <ul class="smallButtons">
<li> <li>
<a id="timsChatAutoscroll" accesskey="d" class="timsChatToggle jsTooltip button" title="{lang}wcf.global.button.disable{/lang}" data-disable-message="{lang}wcf.global.button.disable{/lang}" data-enable-message="{lang}wcf.global.button.enable{/lang}" data-status="1"> <a id="timsChatAutoscroll" accesskey="d" class="timsChatToggle jsTooltip button" title="{lang}wcf.global.button.disable{/lang}" data-disable-message="{lang}wcf.global.button.disable{/lang}" data-enable-message="{lang}wcf.global.button.enable{/lang}" data-status="1">
<img alt="" src="{icon size='S'}enabled{/icon}" /> <span>{lang}wcf.chat.scroll{/lang}</span> <img alt="" src="{icon}enabled{/icon}" /> <span>{lang}wcf.chat.scroll{/lang}</span>
</a> </a>
</li> </li>
<li> <li>
<a id="timsChatFullscreen" accesskey="f" class="timsChatToggle jsTooltip button" title="{lang}wcf.global.button.disable{/lang}" data-disable-message="{lang}wcf.global.button.disable{/lang}" data-enable-message="{lang}wcf.global.button.enable{/lang}" data-status="0"> <a id="timsChatFullscreen" accesskey="f" class="timsChatToggle jsTooltip button" title="{lang}wcf.global.button.disable{/lang}" data-disable-message="{lang}wcf.global.button.disable{/lang}" data-enable-message="{lang}wcf.global.button.enable{/lang}" data-status="0">
<img alt="" src="{icon size='S'}disabled{/icon}" /> <span>{lang}wcf.chat.fullscreen{/lang}</span> <img alt="" src="{icon}disabled{/icon}" /> <span>{lang}wcf.chat.fullscreen{/lang}</span>
</a> </a>
</li> </li>
<li> <li>
<a id="timsChatNotify" accesskey="n" class="timsChatToggle jsTooltip button" title="{lang}wcf.global.button.enable{/lang}" data-disable-message="{lang}wcf.global.button.disable{/lang}" data-enable-message="{lang}wcf.global.button.enable{/lang}" data-status="0"> <a id="timsChatNotify" accesskey="n" class="timsChatToggle jsTooltip button" title="{lang}wcf.global.button.enable{/lang}" data-disable-message="{lang}wcf.global.button.disable{/lang}" data-enable-message="{lang}wcf.global.button.enable{/lang}" data-status="0">
<img alt="" src="{icon size='S'}disabled{/icon}" /> <span>{lang}wcf.chat.notify{/lang}</span> <img alt="" src="{icon}disabled{/icon}" /> <span>{lang}wcf.chat.notify{/lang}</span>
</a> </a>
</li> </li>
<li{if !MODULE_SMILEY} style="display: none;"{/if}> <li{if !MODULE_SMILEY} style="display: none;"{/if}>
<a id="timsChatSmilies" accesskey="e" class="timsChatToggle jsTooltip button" title="{lang}wcf.global.button.{if ENABLE_SMILIES_DEFAULT_VALUE}dis{else}en{/if}able{/lang}" data-disable-message="{lang}wcf.global.button.disable{/lang}" data-enable-message="{lang}wcf.global.button.enable{/lang}" data-status="{@ENABLE_SMILIES_DEFAULT_VALUE}"> <a id="timsChatSmilies" accesskey="e" class="timsChatToggle jsTooltip button" title="{lang}wcf.global.button.{if ENABLE_SMILIES_DEFAULT_VALUE}dis{else}en{/if}able{/lang}" data-disable-message="{lang}wcf.global.button.disable{/lang}" data-enable-message="{lang}wcf.global.button.enable{/lang}" data-status="{@ENABLE_SMILIES_DEFAULT_VALUE}">
<img alt="" src="{icon size='S'}{if ENABLE_SMILIES_DEFAULT_VALUE}en{else}dis{/if}abled{/icon}" /> <span>{lang}wcf.chat.smilies{/lang}</span> <img alt="" src="{icon}{if ENABLE_SMILIES_DEFAULT_VALUE}en{else}dis{/if}abled{/icon}" /> <span>{lang}wcf.chat.smilies{/lang}</span>
</a> </a>
</li> </li>
<li> <li>
<a id="timsChatClear" class="jsTooltip button" title="{lang}wcf.chat.clear.description{/lang}"> <a id="timsChatClear" class="jsTooltip button" title="{lang}wcf.chat.clear.description{/lang}">
<img alt="" src="{icon size='S'}delete{/icon}" /> <span>{lang}wcf.chat.clear{/lang}</span> <img alt="" src="{icon}delete{/icon}" /> <span>{lang}wcf.chat.clear{/lang}</span>
</a> </a>
</li> </li>
<li> <li>
<a id="timsChatMark" class="jsTooltip button" title="{lang}wcf.chat.mark.description{/lang}"> <a id="timsChatMark" class="jsTooltip button" title="{lang}wcf.chat.mark.description{/lang}">
<img alt="" src="{icon size='S'}check{/icon}" /> <span>{lang}wcf.chat.mark{/lang}</span> <img alt="" src="{icon}check{/icon}" /> <span>{lang}wcf.chat.mark{/lang}</span>
</a> </a>
</li> </li>
</ul> </ul>
@ -142,7 +142,7 @@
// Boot the chat // Boot the chat
WCF.TabMenu.init(); WCF.TabMenu.init();
new WCF.Message.Smilies();{* new WCF.Message.Smilies();{*
*}{capture assign='chatMessageTemplate'}{include file='chatMessage'}{/capture} *}{capture assign='chatMessageTemplate'}{include application='chat' file='chatMessage'}{/capture}
chat = new be.bastelstu.WCF.Chat({ chat = new be.bastelstu.WCF.Chat({
@ -165,7 +165,7 @@
event.preventDefault(); event.preventDefault();
if ($.wcfIsset('timsChatCopyrightDialog')) return WCF.showDialog('timsChatCopyrightDialog', { title: 'Tims Chat{if CHAT_SHOW_VERSION && $chatVersion|isset} {$chatVersion}{/if}' }); if ($.wcfIsset('timsChatCopyrightDialog')) return WCF.showDialog('timsChatCopyrightDialog', { title: 'Tims Chat{if CHAT_SHOW_VERSION && $chatVersion|isset} {$chatVersion}{/if}' });
var container = $('<fieldset id="timsChatCopyrightDialog"></fieldset>'); var container = $('<fieldset id="timsChatCopyrightDialog"></fieldset>');
container.load('{link controller='Chat' action='Copyright'}{/link}', function() { container.load('{link application='chat' controller='Chat' action='Copyright'}{/link}', function() {
$('body').append(container); $('body').append(container);
WCF.showDialog('timsChatCopyrightDialog', { title: 'Tims Chat{if CHAT_SHOW_VERSION && $chatVersion|isset} {$chatVersion}{/if}' }); WCF.showDialog('timsChatCopyrightDialog', { title: 'Tims Chat{if CHAT_SHOW_VERSION && $chatVersion|isset} {$chatVersion}{/if}' });
}); });

View File

@ -1,5 +1,5 @@
<script type="text/javascript" src="{@$__wcf->getPath('wcf')}js/be.bastelstu.WCF.Chat.js{if $chatVersion|isset}?version={$chatVersion|urlencode}{/if}"></script> <script type="text/javascript" src="{@$__wcf->getPath('chat')}js/be.bastelstu.WCF.Chat.js{if $chatVersion|isset}?version={$chatVersion|urlencode}{/if}"></script>
<script type="text/javascript" src="{@$__wcf->getPath('wcf')}js/jCounter.jQuery.js"></script> <script type="text/javascript" src="{@$__wcf->getPath('chat')}js/jCounter.jQuery.js"></script>
{if CHAT_SOCKET_IO_PATH}<script type="text/javascript" src="{CHAT_SOCKET_IO_PATH}/socket.io/socket.io.js"></script>{/if} {if CHAT_SOCKET_IO_PATH}<script type="text/javascript" src="{CHAT_SOCKET_IO_PATH}/socket.io/socket.io.js"></script>{/if}
<script type="text/javascript" src="{@$__wcf->getPath('wcf')}js/be.bastelstu.WCF.Chat.Log.js"></script> <script type="text/javascript" src="{@$__wcf->getPath('chat')}js/be.bastelstu.WCF.Chat.Log.js{if $chatVersion|isset}?version={$chatVersion|urlencode}{/if}"></script>
{event name='javascript'} {event name='javascript'}

View File

@ -1,5 +1,5 @@
<li> <li>
<a id="chatLogLink" title="{lang}wcf.chat.protocol{/lang}" class="jsTooltip"> <a id="chatLogLink" title="{lang}wcf.chat.protocol{/lang}" class="jsTooltip">
<img src="{icon size='S'}eye{/icon}" alt="" /> <span>{lang}wcf.chat.protocol{/lang}</span> <img src="{icon}eye{/icon}" alt="" /> <span>{lang}wcf.chat.protocol{/lang}</span>
</a> </a>
</li> </li>

View File

@ -2,7 +2,7 @@
<nav class="timsChatSidebarTabs"> <nav class="timsChatSidebarTabs">
<ul> <ul>
<li id="toggleUsers" class="active"><a title="{lang}wcf.chat.users{/lang}">{lang}wcf.chat.users{/lang} <span class="badge">0</span></a></li> <li id="toggleUsers" class="active"><a title="{lang}wcf.chat.users{/lang}">{lang}wcf.chat.users{/lang} <span class="badge">0</span></a></li>
<li id="toggleRooms"><a title="{lang}wcf.chat.rooms{/lang}" data-refresh-url="{link controller="Chat" action="RefreshRoomList"}{/link}">{lang}wcf.chat.rooms{/lang} <span class="badge">{#$rooms|count}</span></a></li> <li id="toggleRooms"><a title="{lang}wcf.chat.rooms{/lang}" data-refresh-url="{link application='chat' controller="Chat" action="RefreshRoomList"}{/link}">{lang}wcf.chat.rooms{/lang} <span class="badge">{#$rooms|count}</span></a></li>
</ul> </ul>
</nav> </nav>
@ -15,7 +15,7 @@
{foreach from=$rooms item='roomListRoom'} {foreach from=$rooms item='roomListRoom'}
{if $roomListRoom->canEnter()} {if $roomListRoom->canEnter()}
<li{if $roomListRoom->roomID == $room->roomID} class="activeMenuItem"{/if}> <li{if $roomListRoom->roomID == $room->roomID} class="activeMenuItem"{/if}>
<a href="{link controller='Chat' object=$roomListRoom}{/link}" class="timsChatRoom">{$roomListRoom}</a> <a href="{link application='chat' controller='Chat' object=$roomListRoom}{/link}" class="timsChatRoom">{$roomListRoom}</a>
</li> </li>
{/if} {/if}
{/foreach} {/foreach}

View File

@ -8,8 +8,8 @@
<category name="mod.chat"> <category name="mod.chat">
<parent>mod</parent> <parent>mod</parent>
</category> </category>
<category name="admin.content.chat"> <category name="admin.chat">
<parent>admin.content</parent> <parent>admin</parent>
</category> </category>
</categories> </categories>
@ -80,20 +80,20 @@
<defaultvalue>0</defaultvalue> <defaultvalue>0</defaultvalue>
<admindefaultvalue>1</admindefaultvalue> <admindefaultvalue>1</admindefaultvalue>
</option> </option>
<option name="admin.content.chat.canAddRoom"> <option name="admin.chat.canAddRoom">
<categoryname>admin.content.chat</categoryname> <categoryname>admin.chat</categoryname>
<optiontype>boolean</optiontype> <optiontype>boolean</optiontype>
<defaultvalue>0</defaultvalue> <defaultvalue>0</defaultvalue>
<admindefaultvalue>1</admindefaultvalue> <admindefaultvalue>1</admindefaultvalue>
</option> </option>
<option name="admin.content.chat.canEditRoom"> <option name="admin.chat.canEditRoom">
<categoryname>admin.content.chat</categoryname> <categoryname>admin.chat</categoryname>
<optiontype>boolean</optiontype> <optiontype>boolean</optiontype>
<defaultvalue>0</defaultvalue> <defaultvalue>0</defaultvalue>
<admindefaultvalue>1</admindefaultvalue> <admindefaultvalue>1</admindefaultvalue>
</option> </option>
<option name="admin.content.chat.canDeleteRoom"> <option name="admin.chat.canDeleteRoom">
<categoryname>admin.content.chat</categoryname> <categoryname>admin.chat</categoryname>
<optiontype>boolean</optiontype> <optiontype>boolean</optiontype>
<defaultvalue>0</defaultvalue> <defaultvalue>0</defaultvalue>
<admindefaultvalue>1</admindefaultvalue> <admindefaultvalue>1</admindefaultvalue>