User talk:Gatoatigrado/sidebarhack

From Wikipedia, the free encyclopedia

Contents

[edit] Addition for the toolbox

[edit] Monobook.php

        <div class="portlet" id="p-tb">
                <h5><?php $this->msg('toolbox') ?></h5>
                <div class="pBody">
                        <ul>
<?php
        $toolbox = array();
        if(!empty($this->data['nav_urls']['permalink']['href'])) {
            $toolbox['t-permalink'] = array(
                'href' => htmlspecialchars($this->data['nav_urls']['permalink']['href']),
                'text' => $this->getMsg('permalink')
            );
        } elseif ($this->data['nav_urls']['permalink']['href'] === '') {
            $toolbox['t-ispermalink'] = array(
                'text' => $this->getMsg('permalink')
            );
        }

        if(!empty($this->data['nav_urls']['print']['href'])) {
            $toolbox['t-print'] = array(
                'href' => htmlspecialchars($this->data['nav_urls']['print']['href']),
                'text' => $this->getMsg('printableversion')
            );
        }

        if($this->data['notspecialpage']) {
            if( $this->data['nav_urls']['recentchangeslinked'] ) {
                $toolbox['t-recentchangeslinked'] = array(
                    'href' => htmlspecialchars($this->data['nav_urls']['recentchangeslinked']['href']),
                    'text' => $this->getMsg('recentchangeslinked')
                );
            }
            $toolbox['t-whatlinkshere'] = array(
                'href' => htmlspecialchars($this->data['nav_urls']['whatlinkshere']['href']),
                'text' => $this->getMsg('whatlinkshere')
            );
        }
        if(isset($this->data['nav_urls']['trackbacklink'])) {
            $toolbox['t-trackbacklink'] = array(
                'href' => htmlspecialchars($this->data['nav_urls']['trackbacklink']['href']),
                'text' => $this->getMsg('trackbacklink')
            );
        }
        if($this->data['feeds']) {
            $feedtext = '';
            foreach($this->data['feeds'] as $key => $feed) {
                $feedtext .= '<span id="feed-' . htmlspecialchars($key) . '"><a href="' . htmlspecialchars($feed['href'])
                    . '">' . htmlspecialchars($feed['text']) . '</a> </span>';
            }
            $toolbox['feedlinks'] = array(
                'text' => $feedtext
            );
        }

        foreach( array('contributions', 'blockip', 'emailuser', 'ruler', 'specialpages', 'upload') as $special ) {
            if($this->data['nav_urls'][$special]) {
                $toolbox['t-' . $special] = array(
                    'href' => htmlspecialchars($this->data['nav_urls'][$special]['href']),
                    'text' => $this->getMsg($special)
                );
            } elseif($special == 'ruler') {
                if(!empty($toolbox)) { // sanity check
                    $toolbox['ruler'] = array('html' => '</ul><hr/><ul>');
                }
                $toolbox['t-recentchanges'] = array(
                    'href' => $this->data['wgScript'] . '/Special:Recentchanges',
                    'text' => $this->getMsg('recentchanges')
                );
            }
        }

        foreach($toolbox as $id => $item) {
            if($item['html']) {
                echo $item['html'];
            } else { ?>
            <li id="<?php echo $id ?>"><?php
                if($item['href']) { // link present
                    ?><a href="<?php echo $item['href'] ?>"><?php echo $item['text'] ?></a><?php
                } else {
                    echo $item['text'];
                }
            ?></li><?php
            }
        }

[edit] Addition to SkinTemplate.php

/**
 * Generic wrapper for template functions, with interface
 * compatible with what we use of PHPTAL 0.7.
 * @package MediaWiki
 * @subpackage Skins
 */
class QuickTemplate {

<!-- ... --->

        /**
         * @private
         */
        function getMsg( $str ) {
                return htmlspecialchars( $this->translator->translate( $str ) );
        }
}

[edit] Comments

Implementing Cite this page (not done yet) means linking to $this->data['wgScript'] . '/Special:Cite/' . $this->text('title') (I think). Also, I may have the order of the toolbox links wrong since I was offline when I wrote this.

Can you give this code a quick once over and add it to the hack with the pretty printing please? Thanks. --DavidHOzAu 10:30, 1 October 2006 (UTC)