From ab42315aef73190b1e87c169cf2bef701a4c2fa1 Mon Sep 17 00:00:00 2001 From: Alex Winkler Date: Fri, 13 Jun 2025 13:35:59 +0200 Subject: [PATCH] Make the extension compatible with MW 1.43 --- extension.json | 8 +++++-- src/Hooks/MainHookHandler.php | 22 +++++++++++++------ .../ResourceLoaderArticlesModule.php | 16 +++++++------- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/extension.json b/extension.json index 20ea608..7f54df7 100644 --- a/extension.json +++ b/extension.json @@ -1,6 +1,6 @@ { "name": "ResourceLoaderArticles", - "version": "2.4.0", + "version": "2.5.0", "author": [ "[https://fo-nttax.de Alex Winkler]" ], @@ -27,7 +27,11 @@ }, "HookHandlers": { "Main": { - "class": "\\Liquipedia\\Extension\\ResourceLoaderArticles\\Hooks\\MainHookHandler" + "class": "\\Liquipedia\\Extension\\ResourceLoaderArticles\\Hooks\\MainHookHandler", + "services": [ + "ContentHandlerFactory", + "RevisionLookup" + ] }, "Schema": { "class": "\\Liquipedia\\Extension\\ResourceLoaderArticles\\Hooks\\SchemaHookHandler" diff --git a/src/Hooks/MainHookHandler.php b/src/Hooks/MainHookHandler.php index fadfb5a..6e4303b 100644 --- a/src/Hooks/MainHookHandler.php +++ b/src/Hooks/MainHookHandler.php @@ -2,17 +2,16 @@ namespace Liquipedia\Extension\ResourceLoaderArticles\Hooks; -use ContentHandler; use Liquipedia\Extension\ResourceLoaderArticles\ResourceLoader\ResourceLoaderArticlesModule; +use MediaWiki\Content\ContentHandlerFactory; use MediaWiki\Hook\BeforePageDisplayHook; use MediaWiki\Hook\MakeGlobalVariablesScriptHook; -use MediaWiki\MediaWikiServices; use MediaWiki\ResourceLoader\Hook\ResourceLoaderRegisterModulesHook; +use MediaWiki\ResourceLoader\ResourceLoader; use MediaWiki\Revision\Hook\ContentHandlerDefaultModelForHook; use MediaWiki\Revision\RevisionLookup; use MediaWiki\Revision\SlotRecord; use OutputPage; -use ResourceLoader; use Skin; use Title; @@ -23,6 +22,17 @@ class MainHookHandler implements ResourceLoaderRegisterModulesHook { + private ContentHandlerFactory $contentHandlerFactory; + private RevisionLookup $revisionLookup; + + public function __construct( + ContentHandlerFactory $contentHandlerFactory, + RevisionLookup $revisionLookup + ) { + $this->contentHandlerFactory = $contentHandlerFactory; + $this->revisionLookup = $revisionLookup; + } + /** * @param OutputPage $out * @param Skin $skin @@ -135,7 +145,7 @@ public function onResourceLoaderRegisterModules( ResourceLoader $rl ): void { continue; } - $handler = ContentHandler::getForTitle( $title ); + $handler = $this->contentHandlerFactory->getContentHandler( $title->getContentModel() ); if ( $handler->isSupportedFormat( CONTENT_FORMAT_CSS ) ) { $format = CONTENT_FORMAT_CSS; } elseif ( $handler->isSupportedFormat( CONTENT_FORMAT_JAVASCRIPT ) ) { @@ -143,9 +153,7 @@ public function onResourceLoaderRegisterModules( ResourceLoader $rl ): void { } else { continue; } - $revision = MediaWikiServices::getInstance() - ->getRevisionLookup() - ->getRevisionByTitle( $title, 0, RevisionLookup::READ_NORMAL ); + $revision = $this->revisionLookup->getRevisionByTitle( $title, 0, RevisionLookup::READ_NORMAL ); if ( !$revision ) { continue; diff --git a/src/ResourceLoader/ResourceLoaderArticlesModule.php b/src/ResourceLoader/ResourceLoaderArticlesModule.php index 365341b..eb13fca 100644 --- a/src/ResourceLoader/ResourceLoaderArticlesModule.php +++ b/src/ResourceLoader/ResourceLoaderArticlesModule.php @@ -10,25 +10,25 @@ use Less_Parser; use MediaWiki\MainConfigNames; use MediaWiki\MediaWikiServices; +use MediaWiki\ResourceLoader\Context; +use MediaWiki\ResourceLoader\ResourceLoader; +use MediaWiki\ResourceLoader\WikiModule; use MemoizedCallable; use Peast\Peast; use Peast\Syntax\Exception as PeastSyntaxException; -use ResourceLoader; -use ResourceLoaderContext; -use ResourceLoaderWikiModule; use ScssPhp\ScssPhp\Compiler as SCSSCompiler; -class ResourceLoaderArticlesModule extends ResourceLoaderWikiModule { +class ResourceLoaderArticlesModule extends WikiModule { private const USERJSPARSE_CACHE_VERSION = 3; /** * Get list of pages used by this module * - * @param ResourceLoaderContext $context + * @param Context $context * @return array List of pages */ - protected function getPages( ResourceLoaderContext $context ) { + protected function getPages( Context $context ) { $request = $context->getRequest(); $articles = $request->getVal( 'articles' ); $articles = explode( '|', $articles ?? '' ); @@ -100,10 +100,10 @@ static function () use ( $contents, $fileName ) { } /** - * @param ResourceLoaderContext $context + * @param Context $context * @return array */ - public function getStyles( ResourceLoaderContext $context ) { + public function getStyles( Context $context ) { $less = ''; $scss = ''; foreach ( $this->getPages( $context ) as $titleText => $options ) {