Merge "Use MediaWikiServices to cache commonly used helpers"
This commit is contained in:
commit
13153394a3
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Minerva\SkinUserPageHelper;
|
||||
|
||||
return [
|
||||
'Minerva.ContentHandler' => function ( MediaWikiServices $services ) {
|
||||
return ContentHandler::getForTitle( RequestContext::getMain()->getTitle() );
|
||||
},
|
||||
'Minerva.SkinUserPageHelper' => function ( MediaWikiServices $services ) {
|
||||
return new SkinUserPageHelper( RequestContext::getMain()->getTitle() );
|
||||
}
|
||||
];
|
|
@ -20,7 +20,6 @@
|
|||
|
||||
use MediaWiki\Minerva\MenuBuilder;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Minerva\SkinUserPageHelper;
|
||||
|
||||
/**
|
||||
* Minerva: Born from the godhead of Jupiter with weapons!
|
||||
|
@ -48,12 +47,9 @@ class SkinMinerva extends SkinTemplate {
|
|||
public $skinname = 'minerva';
|
||||
/** @var string $template Name of this used template */
|
||||
public $template = 'MinervaTemplate';
|
||||
/** @var ContentHandler Content handler of page; only access through getContentHandler */
|
||||
protected $contentHandler = null;
|
||||
|
||||
/** @var bool Whether the page is also available in other languages or variants */
|
||||
protected $doesPageHaveLanguages = false;
|
||||
/** @var SkinUserPageHelper Helper class for UserPage handling */
|
||||
protected $userPageHelper;
|
||||
|
||||
/**
|
||||
* Returns the site name for the footer, either as a text or <img> tag
|
||||
|
@ -310,19 +306,6 @@ class SkinMinerva extends SkinTemplate {
|
|||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets content handler of current title
|
||||
*
|
||||
* @return ContentHandler
|
||||
*/
|
||||
protected function getContentHandler() {
|
||||
if ( $this->contentHandler === null ) {
|
||||
$this->contentHandler = ContentHandler::getForTitle( $this->getTitle() );
|
||||
}
|
||||
|
||||
return $this->contentHandler;
|
||||
}
|
||||
|
||||
/**
|
||||
* Takes a title and returns classes to apply to the body tag
|
||||
* @param Title $title
|
||||
|
@ -378,10 +361,7 @@ class SkinMinerva extends SkinTemplate {
|
|||
* @return SkinUserPageHelper
|
||||
*/
|
||||
public function getUserPageHelper() {
|
||||
if ( $this->userPageHelper === null ) {
|
||||
$this->userPageHelper = new SkinUserPageHelper( $this->getContext()->getTitle() );
|
||||
}
|
||||
return $this->userPageHelper;
|
||||
return MediaWikiServices::getInstance()->getService( 'Minerva.SkinUserPageHelper' );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1296,7 +1276,8 @@ class SkinMinerva extends SkinTemplate {
|
|||
* @return bool
|
||||
*/
|
||||
protected function isCurrentPageContentModelEditable() {
|
||||
$contentHandler = $this->getContentHandler();
|
||||
$contentHandler = MediaWikiServices::getInstance()
|
||||
->getService( 'Minerva.ContentHandler' );
|
||||
|
||||
return $contentHandler->supportsDirectEditing()
|
||||
&& $contentHandler->supportsDirectApiEditing();
|
||||
|
|
|
@ -548,5 +548,8 @@
|
|||
]
|
||||
}
|
||||
},
|
||||
"ServiceWiringFiles": [
|
||||
"includes/ServiceWiring.php"
|
||||
],
|
||||
"manifest_version": 1
|
||||
}
|
||||
|
|
|
@ -6,28 +6,21 @@ use SkinMinerva;
|
|||
use MediaWikiTestCase;
|
||||
use Title;
|
||||
use RequestContext;
|
||||
use ContentHandler;
|
||||
use MediaWiki\Minerva\SkinUserPageHelper;
|
||||
|
||||
// FIXME: That this class exists is an indicator that at least SkinMinerva#isAllowedPageAction
|
||||
// should be extracted from SkinMinerva.
|
||||
// phpcs:ignore MediaWiki.Files.ClassMatchesFilename.NotMatch
|
||||
class TestSkinMinerva extends SkinMinerva {
|
||||
|
||||
public function isAllowedPageAction( $action ) {
|
||||
return parent::isAllowedPageAction( $action );
|
||||
}
|
||||
|
||||
public function setContentHandler( ContentHandler $contentHandler ) {
|
||||
$this->contentHandler = $contentHandler;
|
||||
}
|
||||
|
||||
public function setDoesPageHaveLanguages( $doesPageHaveLanguages ) {
|
||||
$this->doesPageHaveLanguages = $doesPageHaveLanguages;
|
||||
}
|
||||
|
||||
public function overWriteUserPageHelper( $helper ) {
|
||||
$this->userPageHelper = $helper;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -51,7 +44,7 @@ class SkinMinervaPageActionsTest extends MediaWikiTestCase {
|
|||
* @return TestSkinMinerva
|
||||
*/
|
||||
private function getSkin( Title $title ) {
|
||||
$requestContext = new RequestContext();
|
||||
$requestContext = RequestContext::getMain();
|
||||
$requestContext->setTitle( $title );
|
||||
|
||||
$result = new TestSkinMinerva();
|
||||
|
@ -122,7 +115,7 @@ class SkinMinervaPageActionsTest extends MediaWikiTestCase {
|
|||
$contentHandler->method( 'supportsDirectApiEditing' )
|
||||
->will( $this->returnValue( $supportsDirectApiEditing ) );
|
||||
|
||||
$this->skin->setContentHandler( $contentHandler );
|
||||
$this->setService( 'Minerva.ContentHandler', $contentHandler );
|
||||
|
||||
$this->assertEquals( $expected, $this->skin->isAllowedPageAction( 'edit' ) );
|
||||
}
|
||||
|
@ -140,7 +133,8 @@ class SkinMinervaPageActionsTest extends MediaWikiTestCase {
|
|||
->willReturn( true );
|
||||
|
||||
$skin = $this->getSkin( Title::newFromText( 'User:Admin' ) );
|
||||
$skin->overWriteUserPageHelper( $userPageHelper );
|
||||
|
||||
$this->setService( 'Minerva.SkinUserPageHelper', $userPageHelper );
|
||||
|
||||
$this->assertFalse( $skin->isAllowedPageAction( 'talk' ) );
|
||||
}
|
||||
|
@ -158,7 +152,7 @@ class SkinMinervaPageActionsTest extends MediaWikiTestCase {
|
|||
->willReturn( false );
|
||||
|
||||
$skin = $this->getSkin( Title::newFromText( 'User:Admin' ) );
|
||||
$skin->overWriteUserPageHelper( $userPageHelper );
|
||||
$this->setService( 'Minerva.SkinUserPageHelper', $userPageHelper );
|
||||
|
||||
$this->assertTrue( $skin->isAllowedPageAction( 'talk' ) );
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue