コード例 #1
0
 /**
  * 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;
 }