Legoktm has uploaded a new change for review. https://gerrit.wikimedia.org/r/295592
Change subject: Add SpecialPage::getLinkRenderer() ...................................................................... Add SpecialPage::getLinkRenderer() And SpecialPage::setLinkRenderer(), so the Parser can pass on its LinkRenderer instance for when special pages are being included in a page. Change-Id: If9a9c648ab670b824ce534e7cf0d20d41e1bfd12 --- M includes/parser/Parser.php M includes/specialpage/SpecialPage.php M includes/specialpage/SpecialPageFactory.php 3 files changed, 41 insertions(+), 6 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/92/295592/1 diff --git a/includes/parser/Parser.php b/includes/parser/Parser.php index aca32ed..65dde21 100644 --- a/includes/parser/Parser.php +++ b/includes/parser/Parser.php @@ -3147,7 +3147,7 @@ $context->setUser( User::newFromName( '127.0.0.1', false ) ); } $context->setLanguage( $this->mOptions->getUserLangObj() ); - $ret = SpecialPageFactory::capturePath( $title, $context ); + $ret = SpecialPageFactory::capturePath( $title, $context, $this->getLinkRenderer() ); if ( $ret ) { $text = $context->getOutput()->getHTML(); $this->mOutput->addOutputPageMetadata( $context->getOutput() ); diff --git a/includes/specialpage/SpecialPage.php b/includes/specialpage/SpecialPage.php index f478203..35ecc6e 100644 --- a/includes/specialpage/SpecialPage.php +++ b/includes/specialpage/SpecialPage.php @@ -1,6 +1,4 @@ <?php -use MediaWiki\MediaWikiServices; - /** * Parent class for all special pages. * @@ -24,6 +22,8 @@ */ use MediaWiki\Auth\AuthManager; +use MediaWiki\Linker\LinkRenderer; +use MediaWiki\MediaWikiServices; /** * Parent class for all special pages. @@ -59,6 +59,11 @@ * @var IContextSource */ protected $mContext; + + /** + * @var LinkRenderer|null + */ + private $linkRenderer; /** * Get a localised Title object for a specified special page name @@ -826,4 +831,24 @@ wfTransactionalTimeLimit(); } } + + /** + * @since 1.28 + * @return LinkRenderer + */ + protected function getLinkRenderer() { + if ( $this->linkRenderer ) { + return $this->linkRenderer; + } else { + return MediaWikiServices::getInstance()->getLinkRenderer(); + } + } + + /** + * @since 1.28 + * @param LinkRenderer $linkRenderer + */ + public function setLinkRenderer( LinkRenderer $linkRenderer ) { + $this->linkRenderer = $linkRenderer; + } } diff --git a/includes/specialpage/SpecialPageFactory.php b/includes/specialpage/SpecialPageFactory.php index 73efa4e..b69b28a 100644 --- a/includes/specialpage/SpecialPageFactory.php +++ b/includes/specialpage/SpecialPageFactory.php @@ -21,6 +21,7 @@ * @ingroup SpecialPage * @defgroup SpecialPage SpecialPage */ +use MediaWiki\Linker\LinkRenderer; /** * Factory for handling the special page list and generating SpecialPage objects. @@ -523,10 +524,13 @@ * @param Title $title * @param IContextSource $context * @param bool $including Bool output is being captured for use in {{special:whatever}} + * @param LinkRenderer|null $linkRenderer (since 1.28) * * @return bool */ - public static function executePath( Title &$title, IContextSource &$context, $including = false ) { + public static function executePath( Title &$title, IContextSource &$context, $including = false, + LinkRenderer $linkRenderer = null + ) { // @todo FIXME: Redirects broken due to this call $bits = explode( '/', $title->getDBkey(), 2 ); $name = $bits[0]; @@ -586,6 +590,9 @@ } $page->including( $including ); + if ( $linkRenderer ) { + $page->setLinkRenderer( $linkRenderer ); + } // Execute special page $page->run( $par ); @@ -605,9 +612,12 @@ * * @param Title $title * @param IContextSource $context + * @param LinkRenderer|null $linkRenderer (since 1.28) * @return string HTML fragment */ - public static function capturePath( Title $title, IContextSource $context ) { + public static function capturePath( + Title $title, IContextSource $context, LinkRenderer $linkRenderer = null + ) { global $wgTitle, $wgOut, $wgRequest, $wgUser, $wgLang; $main = RequestContext::getMain(); @@ -640,7 +650,7 @@ $main->setLanguage( $context->getLanguage() ); // The useful part - $ret = self::executePath( $title, $context, true ); + $ret = self::executePath( $title, $context, true, $linkRenderer ); // Restore old globals and context $wgTitle = $glob['title']; -- To view, visit https://gerrit.wikimedia.org/r/295592 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If9a9c648ab670b824ce534e7cf0d20d41e1bfd12 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Legoktm <legoktm.wikipe...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits