/** * build array of common navigation links * @return array */ protected function buildNavUrls() { global $wgUploadNavigationUrl; $out = $this->getOutput(); $request = $this->getRequest(); $nav_urls = array(); $nav_urls['mainpage'] = array('href' => self::makeMainPageUrl()); if ($wgUploadNavigationUrl) { $nav_urls['upload'] = array('href' => $wgUploadNavigationUrl); } elseif (UploadBase::isEnabled() && UploadBase::isAllowed($this->getUser()) === true) { $nav_urls['upload'] = array('href' => self::makeSpecialUrl('Upload')); } else { $nav_urls['upload'] = false; } $nav_urls['specialpages'] = array('href' => self::makeSpecialUrl('Specialpages')); $nav_urls['print'] = false; $nav_urls['permalink'] = false; $nav_urls['info'] = false; $nav_urls['whatlinkshere'] = false; $nav_urls['recentchangeslinked'] = false; $nav_urls['contributions'] = false; $nav_urls['log'] = false; $nav_urls['blockip'] = false; $nav_urls['emailuser'] = false; $nav_urls['userrights'] = false; // A print stylesheet is attached to all pages, but nobody ever // figures that out. :) Add a link... if (!$out->isPrintable() && ($out->isArticle() || $this->getTitle()->isSpecialPage())) { $nav_urls['print'] = array('text' => $this->msg('printableversion')->text(), 'href' => $this->getTitle()->getLocalURL($request->appendQueryValue('printable', 'yes', true))); } if ($out->isArticle()) { // Also add a "permalink" while we're at it $revid = $this->getRevisionId(); if ($revid) { $nav_urls['permalink'] = array('text' => $this->msg('permalink')->text(), 'href' => $this->getTitle()->getLocalURL("oldid={$revid}")); } // Use the copy of revision ID in case this undocumented, shady hook tries to mess with internals Hooks::run('SkinTemplateBuildNavUrlsNav_urlsAfterPermalink', array(&$this, &$nav_urls, &$revid, &$revid)); } if ($out->isArticleRelated()) { $nav_urls['whatlinkshere'] = array('href' => SpecialPage::getTitleFor('Whatlinkshere', $this->thispage)->getLocalURL()); $nav_urls['info'] = array('text' => $this->msg('pageinfo-toolboxlink')->text(), 'href' => $this->getTitle()->getLocalURL("action=info")); if ($this->getTitle()->exists()) { $nav_urls['recentchangeslinked'] = array('href' => SpecialPage::getTitleFor('Recentchangeslinked', $this->thispage)->getLocalURL()); } } $user = $this->getRelevantUser(); if ($user) { $rootUser = $user->getName(); $nav_urls['contributions'] = array('text' => $this->msg('contributions', $rootUser)->text(), 'href' => self::makeSpecialUrlSubpage('Contributions', $rootUser)); $nav_urls['log'] = array('href' => self::makeSpecialUrlSubpage('Log', $rootUser)); if ($this->getUser()->isAllowed('block')) { $nav_urls['blockip'] = array('text' => $this->msg('blockip', $rootUser)->text(), 'href' => self::makeSpecialUrlSubpage('Block', $rootUser)); } if ($this->showEmailUser($user)) { $nav_urls['emailuser'] = array('href' => self::makeSpecialUrlSubpage('Emailuser', $rootUser)); } if (!$user->isAnon()) { $sur = new UserrightsPage(); $sur->setContext($this->getContext()); if ($sur->userCanExecute($this->getUser())) { $nav_urls['userrights'] = array('href' => self::makeSpecialUrlSubpage('Userrights', $rootUser)); } } } return $nav_urls; }