ResourceLoader: Inject HookContainer & UserOptionsLookup to getUserDefaults
Change-Id: I328ee0f959f0898a7e2632dfcfa3e3bbb579106e
This commit is contained in:
parent
65dee01426
commit
ae22031299
3 changed files with 30 additions and 6 deletions
|
|
@ -38,6 +38,7 @@ use MediaWiki\HeaderCallback;
|
|||
use MediaWiki\HookContainer\HookContainer;
|
||||
use MediaWiki\MainConfigNames;
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\User\UserOptionsLookup;
|
||||
use MWException;
|
||||
use MWExceptionHandler;
|
||||
use MWExceptionRenderer;
|
||||
|
|
@ -1982,14 +1983,21 @@ MESSAGE;
|
|||
* Get user default options to expose to JavaScript on all pages via `mw.user.options`.
|
||||
*
|
||||
* @internal Exposed for use from Resources.php
|
||||
*
|
||||
* @param Context $context
|
||||
* @param HookContainer $hookContainer
|
||||
* @param UserOptionsLookup $userOptionsLookup
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public static function getUserDefaults( Context $context ): array {
|
||||
// TODO inject
|
||||
$defaultOptions = MediaWikiServices::getInstance()->getUserOptionsLookup()->getDefaultOptions();
|
||||
public static function getUserDefaults(
|
||||
Context $context,
|
||||
HookContainer $hookContainer,
|
||||
UserOptionsLookup $userOptionsLookup
|
||||
): array {
|
||||
$defaultOptions = $userOptionsLookup->getDefaultOptions();
|
||||
$keysToExclude = [];
|
||||
$hookRunner = new HookRunner( MediaWikiServices::getInstance()->getHookContainer() );
|
||||
$hookRunner = new HookRunner( $hookContainer );
|
||||
$hookRunner->onResourceLoaderExcludeUserOptions( $keysToExclude, $context );
|
||||
foreach ( $keysToExclude as $excludedKey ) {
|
||||
unset( $defaultOptions[ $excludedKey ] );
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ use MediaWiki\ResourceLoader\MwUrlModule;
|
|||
use MediaWiki\ResourceLoader\OOUIFileModule;
|
||||
use MediaWiki\ResourceLoader\OOUIIconPackModule;
|
||||
use MediaWiki\ResourceLoader\OOUIImageModule;
|
||||
use MediaWiki\ResourceLoader\ResourceLoader;
|
||||
use MediaWiki\ResourceLoader\SiteModule;
|
||||
use MediaWiki\ResourceLoader\SiteStylesModule;
|
||||
use MediaWiki\ResourceLoader\SkinModule;
|
||||
|
|
@ -157,7 +158,18 @@ return [
|
|||
|
||||
// (not this though)
|
||||
[ 'name' => 'config.json', 'callback' => 'ResourceLoader::getSiteConfigSettings' ],
|
||||
[ 'name' => 'user.json', 'callback' => 'ResourceLoader::getUserDefaults' ],
|
||||
[
|
||||
'name' => 'user.json',
|
||||
'callback' => static function ( Context $context ) {
|
||||
$services = MediaWikiServices::getInstance();
|
||||
|
||||
return ResourceLoader::getUserDefaults(
|
||||
$context,
|
||||
$services->getHookContainer(),
|
||||
$services->getUserOptionsLookup()
|
||||
);
|
||||
}
|
||||
],
|
||||
[
|
||||
'name' => 'legacy.wikibits.js',
|
||||
'callback' => static function ( Context $context, Config $config ) {
|
||||
|
|
|
|||
|
|
@ -1150,7 +1150,11 @@ END
|
|||
$keysToExclude[] = 'exclude';
|
||||
}, true );
|
||||
|
||||
$defaults = ResourceLoader::getUserDefaults( $ctx );
|
||||
$defaults = ResourceLoader::getUserDefaults(
|
||||
$ctx,
|
||||
$this->getServiceContainer()->getHookContainer(),
|
||||
$this->getServiceContainer()->getUserOptionsLookup()
|
||||
);
|
||||
$this->assertSame( [ 'include' => 1 ], $defaults );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue