mirror of
https://github.com/wbbaddons/Tims-Chat.git
synced 2024-12-22 21:40:08 +00:00
Automatically refresh room list in room selector
This commit is contained in:
parent
1f533e255f
commit
2e0651ddd8
@ -323,27 +323,28 @@ public function removeDeadUsers() {
|
|||||||
/**
|
/**
|
||||||
* Validates permissions.
|
* Validates permissions.
|
||||||
*/
|
*/
|
||||||
public function validateGetDashboardRoomList() {
|
public function validateGetBoxRoomList() {
|
||||||
if (!MODULE_CHAT) throw new \wcf\system\exception\IllegalLinkException();
|
if (!MODULE_CHAT) throw new \wcf\system\exception\IllegalLinkException();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns dashboard roomlist.
|
* Returns dashboard roomlist.
|
||||||
*/
|
*/
|
||||||
public function getDashboardRoomList() {
|
public function getBoxRoomList() {
|
||||||
$rooms = RoomCache::getInstance()->getRooms();
|
$rooms = RoomCache::getInstance()->getRooms();
|
||||||
|
|
||||||
foreach ($rooms as $key => $room) {
|
foreach ($rooms as $key => $room) {
|
||||||
if (!$room->canEnter()) unset($rooms[$key]);
|
if (!$room->canEnter()) unset($rooms[$key]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->readBoolean('showEmptyRooms', true);
|
||||||
\wcf\system\WCF::getTPL()->assign(array(
|
\wcf\system\WCF::getTPL()->assign(array(
|
||||||
'rooms' => $rooms,
|
'rooms' => $rooms,
|
||||||
'onlyList' => true
|
'showEmptyRooms' => $this->parameters['showEmptyRooms']
|
||||||
));
|
));
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
'template' => \wcf\system\WCF::getTPL()->fetch('dashboardBoxOnlineList', 'chat')
|
'template' => \wcf\system\WCF::getTPL()->fetch('boxRoomList', 'chat')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
22
template/boxRoomList.tpl
Normal file
22
template/boxRoomList.tpl
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{foreach from=$rooms item='room'}
|
||||||
|
{assign var='users' value=$room->getUsers()}
|
||||||
|
|
||||||
|
{if $showEmptyRooms || $users|count > 0}
|
||||||
|
<li>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<div class="containerHeadline">
|
||||||
|
<h3><a href="{link application='chat' controller='Chat' object=$room}{/link}">{$room}</a> <span class="badge">{#$users|count}</span></h3>
|
||||||
|
<p>{$room->topic|language}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<ul class="dataList">
|
||||||
|
{foreach from=$users item='user'}
|
||||||
|
<li><a href="{link controller='User' object=$user}{/link}" class="userLink" data-user-id="{$user->userID}">{$user}</a></li>
|
||||||
|
{/foreach}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{/if}
|
||||||
|
{/foreach}
|
@ -161,29 +161,33 @@
|
|||||||
<h1>{lang}chat.general.title{/lang}</h1>
|
<h1>{lang}chat.general.title{/lang}</h1>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<div class="container marginTop">
|
<div id="chatRoomListContainer" class="container marginTop">
|
||||||
<ul class="containerList">
|
<ul class="containerList">
|
||||||
{foreach from=$rooms item='room'}
|
{include application='chat' file='boxRoomList' showEmptyRooms=true}
|
||||||
{assign var='users' value=$room->getUsers()}
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<div>
|
|
||||||
<div>
|
|
||||||
<div class="containerHeadline">
|
|
||||||
<h3><a href="{link application='chat' controller='Chat' object=$room}{/link}">{$room}</a> <span class="badge">{#$users|count}</span></h3>
|
|
||||||
<p>{$room->topic|language}</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<ul class="dataList">
|
|
||||||
{foreach from=$users item='user'}
|
|
||||||
<li><a href="{link controller='User' object=$user}{/link}" class="userLink" data-user-id="{$user->userID}">{$user}</a></li>
|
|
||||||
{/foreach}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
{/foreach}
|
|
||||||
</ul>
|
</ul>
|
||||||
|
<script data-relocate="true">
|
||||||
|
//<![CDATA[
|
||||||
|
(function($, window, undefined) {
|
||||||
|
proxy = new WCF.Action.Proxy({
|
||||||
|
data: {
|
||||||
|
actionName: 'getBoxRoomList',
|
||||||
|
className: 'chat\\data\\room\\RoomAction',
|
||||||
|
parameters: {
|
||||||
|
showEmptyRooms: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
showLoadingOverlay: false,
|
||||||
|
suppressErrors: true,
|
||||||
|
success: function(data) {
|
||||||
|
$('#chatRoomListContainer ul').html(data.returnValues.template);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
be.bastelstu.wcf.nodePush.onMessage('be.bastelstu.chat.join', $.proxy(proxy.sendRequest, proxy));
|
||||||
|
be.bastelstu.wcf.nodePush.onMessage('be.bastelstu.chat.leave', $.proxy(proxy.sendRequest, proxy));
|
||||||
|
})(jQuery, this);
|
||||||
|
//]]>
|
||||||
|
</script>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
@ -1,62 +1,39 @@
|
|||||||
{capture assign='roomList'}
|
{capture assign='roomList'}{include application='chat' file='boxRoomList' showEmptyRooms=false}{/capture}
|
||||||
{foreach from=$rooms item='room'}
|
|
||||||
{assign var='users' value=$room->getUsers()}
|
|
||||||
|
|
||||||
{if $users|count > 0}
|
<div id="chatDashboardBoxOnlineListContainer"{if !$roomList|trim} style="display: none;"{/if}>
|
||||||
<li>
|
<header class="boxHeadline boxSubHeadline">
|
||||||
<div>
|
<h2>{lang}chat.header.menu.chat{/lang}</h2>
|
||||||
<div>
|
</header>
|
||||||
<div class="containerHeadline">
|
|
||||||
<h3><a href="{link application='chat' controller='Chat' object=$room}{/link}">{$room}</a> <span class="badge">{#$users|count}</span></h3>
|
|
||||||
<p>{$room->topic|language}</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<ul class="dataList">
|
<div class="container marginTop">
|
||||||
{foreach from=$users item='user'}
|
<ul class="containerList">
|
||||||
<li><a href="{link controller='User' object=$user}{/link}" class="userLink" data-user-id="{$user->userID}">{$user}</a></li>
|
{@$roomList}
|
||||||
{/foreach}
|
</ul>
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
{/if}
|
|
||||||
{/foreach}
|
|
||||||
{/capture}
|
|
||||||
{if $onlyList|isset}
|
|
||||||
{@$roomList}
|
|
||||||
{else}
|
|
||||||
<div id="chatDashboardBoxOnlineListContainer" {if !$roomList|trim} style="display: none;"{/if}>
|
|
||||||
<header class="boxHeadline boxSubHeadline">
|
|
||||||
<h2>{lang}chat.header.menu.chat{/lang}</h2>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<div class="container marginTop">
|
|
||||||
<ul class="containerList">
|
|
||||||
{@$roomList}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<script data-relocate="true">
|
|
||||||
//<![CDATA[
|
|
||||||
(function($, window, undefined) {
|
|
||||||
proxy = new WCF.Action.Proxy({
|
|
||||||
data: {
|
|
||||||
actionName: 'getDashboardRoomList',
|
|
||||||
className: 'chat\\data\\room\\RoomAction'
|
|
||||||
},
|
|
||||||
showLoadingOverlay: false,
|
|
||||||
suppressErrors: true,
|
|
||||||
success: function(data) {
|
|
||||||
if (data.returnValues.template) $('#chatDashboardBoxOnlineListContainer').show();
|
|
||||||
else $('#chatDashboardBoxOnlineListContainer').hide();
|
|
||||||
|
|
||||||
$('#chatDashboardBoxOnlineListContainer ul').html(data.returnValues.template);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
be.bastelstu.wcf.nodePush.onMessage('be.bastelstu.chat.join', $.proxy(proxy.sendRequest, proxy));
|
|
||||||
be.bastelstu.wcf.nodePush.onMessage('be.bastelstu.chat.leave', $.proxy(proxy.sendRequest, proxy));
|
|
||||||
})(jQuery, this);
|
|
||||||
//]]>
|
|
||||||
</script>
|
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
<script data-relocate="true">
|
||||||
|
//<![CDATA[
|
||||||
|
(function($, window, undefined) {
|
||||||
|
proxy = new WCF.Action.Proxy({
|
||||||
|
data: {
|
||||||
|
actionName: 'getBoxRoomList',
|
||||||
|
className: 'chat\\data\\room\\RoomAction',
|
||||||
|
parameters: {
|
||||||
|
showEmptyRooms: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
showLoadingOverlay: false,
|
||||||
|
suppressErrors: true,
|
||||||
|
success: function(data) {
|
||||||
|
if (data.returnValues.template) $('#chatDashboardBoxOnlineListContainer').show();
|
||||||
|
else $('#chatDashboardBoxOnlineListContainer').hide();
|
||||||
|
|
||||||
|
$('#chatDashboardBoxOnlineListContainer ul').html(data.returnValues.template);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
be.bastelstu.wcf.nodePush.onMessage('be.bastelstu.chat.join', $.proxy(proxy.sendRequest, proxy));
|
||||||
|
be.bastelstu.wcf.nodePush.onMessage('be.bastelstu.chat.leave', $.proxy(proxy.sendRequest, proxy));
|
||||||
|
})(jQuery, this);
|
||||||
|
//]]>
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user