Ich habe eben bei mir mal etwas rum gespielt und mir die Dashboard Box umgebaut auf eine für die Sidebar die man dann auch auf allen Seiten mit Sidebar anzeigen lassen kann.
Den Code dafür möchte ich euch gerne mitteilen für die wo selbiges vor haben.
Zunächst mal habe ich in der Datenbank in der Tabelle wcf1_dashboard_box nach dem Eintrag be.bastelstu.chat.onlineList gesucht und den Box typ von content auf sidebar gestellt.
Hiermit ist es uns schonmal möglich die Box in der Sidebar anzuzeigen was aber wiederum sehr unschön aussieht.
Damit das ganze nach etwas aussieht müssen nun noch 2 Template´s bearbeitet werden.
1. Anwendung Tims Chat / boxRoomList
dieses Template habe ich wie folgt geändert:
{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>
</div>
</div>
</div>
</li>
{/if}
{/foreach}
Alles anzeigen
Damit ist die Anzeige wer in welchem Raum ist und die Raum Beschreibung weg. Es bleibt also die Anzeige des Raums und die Anzahl derer die in diesem Raum sind.
2. Anwendung Tims Chat / dashboardBoxOnlineList
diesen Code habe ich in folgenden geändert:
{capture assign='roomList'}{include application='chat' file='boxRoomList' showEmptyRooms=false}{/capture}
<fieldset class="dashboardBox"{if !$roomList|trim} style="display: none;"{/if}>
<legend>{lang}chat.header.menu.chat{/lang}</legend>
<div>
<ul class="containerList">
{@$roomList}
</ul>
</div>
<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>
</fieldset>
Alles anzeigen
Das ganze erscheint wie die originale Box auch nur dann wenn wirklich jemand im jeweiligen Raum ist.
Evtl. lässt sich der Spaß auch über das Plugin Dashboard CustomBoxes von Michel regeln das habe ich aber noch nicht getestet.
Aussehen tut der Spaß dann wie im Anhang.