HackerOne users: Testing against this community violates our program's Terms of Service and will result in your bounty being denied.

Script for correctly displaying all [Spacers]

Hey,
I really do Like this Plugin, but for me the [spacers] are shown in a really ugly way, so i wrote a kinda replacement.

So first of all upload this file: https://upload.wikimedia.org/wikipedia/commons/8/8c/Transparent.png to your images folder ( TSServer/design/images/transparent.png)

After that open TSServer/views/statusmodule.php and replace the function:
private function renderChannels($parentId, $show = false)
` private function renderChannels($parentId, $show = false)
{
$out = "";
foreach ($this->_channelDatas as $channel)
{
if($channel["pid"] == $parentId)
{
$icon = "16x16_channel_green.png";
if( $channel["channel_maxclients"] > -1 && ($channel["total_clients"] >= $channel["channel_maxclients"])) $icon = "16x16_channel_red.png";
else if( $channel["channel_maxfamilyclients"] > -1 && ($channel["total_clients_family"] >= $channel["channel_maxfamilyclients"])) $icon = "16x16_channel_red.png";
else if($channel["channel_flag_password"] == 1) $icon = "16x16_channel_yellow.png";

            $flags = array();
            if($channel["channel_flag_default"] == 1) $flags[] = '16x16_default.png';
            if($channel["channel_needed_talk_power"] > 0) $flags[] = '16x16_moderated.png';
            if($channel["channel_flag_password"] == 1) $flags[] = '16x16_register.png';

            $link = "javascript:tsstatusconnect('" . $this->_host . "','" . $this->_serverDatas["virtualserver_port"] . "','" . htmlentities($channel["channel_name"]) . "')";

            $showCurrent = $show || count($this->_limitedChannels) == 0 || in_array($channel["cid"], $this->_limitedChannels);

            if($showCurrent) $out .= '
            <div class="tsstatusItem">
                <div class="tsstatusLabel">
                    <a href="' . $link . '">
                        <img src="' . $this->imagePath . $icon . '" />' . $channel["channel_name"] . '
                    </a>
                </div>
                <div class="tsstatusFlags">
                    ' . $this->renderFlags($flags) . '
                </div>
                ' . (count($this->_userDatas) > 0 ? $this->renderUsers($channel["cid"]) : '');

            $out .= $this->renderChannels($channel["cid"], $showCurrent);

            if($showCurrent) $out .= '</div>';
        }
    }
    return $out;
}
`

With this:

`private function SpacerEscape($name, $icon){

    $suchmuster_special = '/[\[].*[\]]./';
    $suchmuster = '/[\[].*[\]]/';
    preg_match($suchmuster, $name, $treffer);
    preg_match($suchmuster_special, $name, $treffer_special);
    $rep = "";
    if(sizeof($treffer) > 0)
    {
        if(sizeof($treffer_special) > 0){
            $rep = str_replace($treffer[0], "", $treffer_special[0]);
            if(strcmp($name, $treffer_special[0]) == 0)
            {
                for ($i=0; $i < 8 ; $i++) { 
                    $rep.=$rep;
                }
            }

        }
        else{

            $rep = "          ";
        }
        $name = str_replace($treffer[0], $rep, $name);
        $icon = "transparent.png";
    }

    return '<img src="' . $this->imagePath . $icon . '" />' . $name; 
}
private function renderChannels($parentId, $show = false)
{
    $out = "";
    foreach ($this->_channelDatas as $channel)
    {
        if($channel["pid"] == $parentId)
        {
            $icon = "16x16_channel_green.png";
            if( $channel["channel_maxclients"] > -1 && ($channel["total_clients"] >= $channel["channel_maxclients"])) $icon = "16x16_channel_red.png";
            else if( $channel["channel_maxfamilyclients"] > -1 && ($channel["total_clients_family"] >= $channel["channel_maxfamilyclients"])) $icon = "16x16_channel_red.png";
            else if($channel["channel_flag_password"] == 1) $icon = "16x16_channel_yellow.png";

            $flags = array();
            if($channel["channel_flag_default"] == 1) $flags[] = '16x16_default.png';
            if($channel["channel_needed_talk_power"] > 0) $flags[] = '16x16_moderated.png';
            if($channel["channel_flag_password"] == 1) $flags[] = '16x16_register.png';

            $link = "javascript:tsstatusconnect('" . $this->_host . "','" . $this->_serverDatas["virtualserver_port"] . "','" . htmlentities($channel["channel_name"]) . "')";

            $showCurrent = $show || count($this->_limitedChannels) == 0 || in_array($channel["cid"], $this->_limitedChannels);

            if($showCurrent) $out .= '
            <div class="tsstatusItem">
                <div class="tsstatusLabel">
                    <a href="' . $link . '">
                        '. $this->SpacerEscape($channel["channel_name"], $icon) .'
                    </a>
                </div>
                <div class="tsstatusFlags">
                    ' . $this->renderFlags($flags) . '
                </div>
                ' . (count($this->_userDatas) > 0 ? $this->renderUsers($channel["cid"]) : '');

            $out .= $this->renderChannels($channel["cid"], $showCurrent);

            if($showCurrent) $out .= '</div>';
        }
    }
    return $out;
}`

Comments

  • x00x00 MVP
    edited June 2017

    I would upload the fork to the repo, instead of giving instruction on how to modify an existing plugin. Or put it on github at least.

    grep is your friend.

Sign In or Register to comment.