addStyle('Codex/main.css', 'screen');
$out->addStyle('Codex/wp4.css', 'screen');
$out->addStyle('Codex/iphone.css', 'only screen and (max-device-width: 480px)');
}
}
/**
* Codex Template Class
*
* This class assembles the components of the Codex template and renders the output.
* It is written in PHP5 OO Standards, therefore it's not compatible with PHP4.
*
* @ingroup Skins
*/
class CodexTemplate extends QuickTemplate
{
/**
* Sidebox Group printf Format
*
* @var string
* @access private
*/
private $_sideboxf = '
%s
';
/**
* Sidebox List Item printf Format
*
* @var string
* @access private
*/
private $_lif = '%s';
/**
* Sidebox AnchorLink printf Format
*
* @var string
* @access private
*/
private $_af = '%s';
/**
* The Skin Object
*
* @var object
* @access public
*/
public $skin;
/**
* Template Filter Callback
*
* Takes an associative array of data set from a SkinTemplate-based class, and a
* wrapper for MediaWiki's localization database, and outputs a formatted page.
*
* The page's HTML layout is included by calling the file {@link body.php}, which
* is the primary theme file.
*
* @param void
* return string Outputs the pages generated content
* @access public
*/
public function execute()
{
global $wgRequest;
$this->skin = $skin = $this->data['skin'];
$action = $wgRequest->getText('action');
// Suppress warnings to prevent notices about missing indexes in $this->data
wfSuppressWarnings();
// Load the head element for the page
$this->html('headelement');
// Include the main content syntax
require 'body.php';
// Restore warnings
wfRestoreWarnings();
}
/**
* Generate Search Box
*
* Creates the search form for the Codex theme.
*
* @param void
* @return string Prints the search form.
* @access public
*/
public function searchBox()
{
$format = '\n";
printf($format,
htmlspecialchars('./Special:Search'),
Html::input('search',
isset($this->data['search']) && strlen($this->data['search']) > 0 ? $this->data['search'] : 'Search the Docs',
'text',
array(
'maxlength' => 150,
'class' => 'text',
'title' => Linker::titleAttrib('search'),
'accesskey' => Linker::accesskey('search'),
'onfocus' => "this.value=(this.value=='Search the Docs') ? '' : this.value;",
'onblur' => "this.value=(this.value=='') ? 'Search the Docs' : this.value;",
)
),
Linker::tooltipAndAccesskeyAttribs('search-go')
);
}
/**
* ToolBox Sidebox
*
* Formats and prints the HTML syntax for the ToolBox links.
*
* @param void
* @return string Prints the HTML syntax that makes up the ToolBox links and section.
* @access public
*/
public function toolBox()
{
$title = $this->translator->translate('Toolbox');
$li = '';
if ($this->data['notspecialpage']) {
$li .= sprintf($this->_lif,
't-whatlinkshere',
'',
sprintf($this->_af, htmlspecialchars($this->data['nav_urls']['whatlinkshere']['href']),
Linker::tooltipAndAccesskeyAttribs('t-whatlinkshere'),
htmlspecialchars($this->translator->translate('whatlinkshere')))
);
}
if ($this->data['feeds']) {
$alinks .= '';
foreach ($this->data['feeds'] as $key => $feed) {
$alinks .= sprintf($this->_af,
htmlspecialchars($feed['href']),
'id="' . Sanitizer::escapeId("feed-$key") . '" rel="alternate" type="application/' . $key . '+xml" class="feedlink" ' .
Linker::tooltipAndAccesskeyAttribs('feed-' . $key),
htmlspecialchars($feed['text']) . ' ');
}
$li .= sprintf($this->_li_lif, $this->msg('feedlinks', true), '', $alinks);
}
foreach (array('recentchangeslinked', 'trackbacklink', 'contributions', 'log', 'blockip', 'emailuser', 'upload', 'specialpages') as $special) {
if (is_array($this->data['nav_urls'][$special])) {
$li .= sprintf($this->_lif,
't-' . $special,
'',
sprintf($this->_af,
htmlspecialchars($this->data['nav_urls'][$special]['href']),
Linker::tooltipAndAccesskeyAttribs('t-' . $special),
htmlspecialchars($this->translator->translate($special)))
);
}
}
if (strlen($this->data['nav_urls']['print']['href']) > 0) {
$li .= sprintf($this->_lif,
't-print',
'',
sprintf($this->_af,
htmlspecialchars($this->data['nav_urls']['print']['href']),
'rel="alternate" ' . Linker::tooltipAndAccesskeyAttribs('t-print'),
htmlspecialchars($this->translator->translate('printableversion')))
);
}
if (strlen($this->data['nav_urls']['permalink']['href']) > 0) {
$li .= sprintf($this->_lif,
't-permalink',
'',
sprintf($this->_af,
htmlspecialchars($this->data['nav_urls']['permalink']['href']),
Linker::tooltipAndAccesskeyAttribs('t-permalink'),
htmlspecialchars($this->translator->translate('permalink')))
);
} else {
$li .= sprintf($this->_lif,
't-ispermalink',
Linker::tooltip('t-ispermalink'),
htmlspecialchars($this->translator->translate('permalink'))
);
}
printf($this->_sideboxf, $title, $li);
wfRunHooks('CodexTemplateToolboxEnd', array(&$this));
wfRunHooks('SkinTemplateToolboxEnd', array(&$this));
}
/**
* Views Sidebox
*
* This method formats and prints the Views Sidebox menu items.
*
* @param void
* @return string Prints the formatted HTML syntax for the Views sidebox section.
* @access public
*/
public function viewsBox()
{
$title = $this->translator->translate('Views');
$li = '';
foreach ($this->data['content_actions'] as $key => $tab) {
$id = Sanitizer::escapeId("ca-{$key}");
$class = $tab['class'] ? ' class="' . htmlspecialchars($tab['class']) . '"' : '';
$href = htmlspecialchars($tab['href']);
$tool = in_array($action, array('edit', 'submit')) &&
in_array($key, array('edit', 'watch', 'unwatch')) ?
Linker::tooltip("ca-$key") : Linker::tooltipAndAccesskeyAttribs("ca-$key");
$text = htmlspecialchars($tab['text']);
$alink = sprintf($this->_af, $href, $tool, $text);
$li .= sprintf($this->_lif, $id, $class, $alink);
}
printf($this->_sideboxf, $title, $li);
}
/*************************************************************************************************/
public function languageBox()
{
if (!$this->data['language_urls']) {
return;
}
$links = '';
foreach ($this->data['language_urls'] as $langlink) {
$links .= sprintf($this->_lif,
'lang-' . htmlspecialchars($langlink['text']),
' class="' . htmlspecialchars($langlink['class']) . '"',
sprintf($this->_af,
htmlspecialchars($langlink['href']),
'',
htmlspecialchars($this->translator->translate($langlink['text']))
)
);
}
printf($this->_sideboxf, $this->html('userlangattributes'), htmlspecialchars($this->translator->translate('otherlanguages')), $links);
}
/**
* Create Custom Sidebox
*
* This is used to add a custom sidebox section.
*
* @param string $bar Unsure
* @param array|string $cont The content to add to the Sidebox. It can be
* an array of items to itterate over or an already
* processed string of data to add directly.
* @return string Prints out the formatted Sidebox syntax.
* @access public
* @todo Try making this method serve the other Sidebox methods in this class
* by processing the data for them and minimizing the code in them if possible.
*/
public function customBox($bar, $cont)
{
$links = '';
$out = wfMsg($bar);
$title = wfEmptyMsg($bar, $out) ? htmlspecialchars($this->translator->translate($bar)) :
htmlspecialchars($this->translator->translate($out));
if (!is_array($cont)) {
printf($this->_sideboxf, $title, $cont);
return;
}
foreach ($cont as $key => $val) {
$links .= sprintf($this->_lif,
Sanitizer::escapeId($val['id']),
($val['active'] ? ' class="active"' : ''),
sprintf($this->_af,
htmlspecialchars($val['href']),
Linker::tooltipAndAccesskeyAttribs($val['id']),
htmlspecialchars($this->translator->translate($val['text']))
)
);
}
printf($this->_sideboxf, $title, $links);
}
} // end of class