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 <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits