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)

