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