Users running a non-download version of Vanilla (pulled from github), on branch release/2019.016 or master from the last 2 weeks should upgrade to release/2019.017 or latest master for security reasons. Downloaded official open sources releases are not affected.

Script for correctly displaying all [Spacers]

This discussion is related to the TSServer addon.

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;
}`
R_J

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.