Thiemo Mättig (WMDE) has uploaded a new change for review. https://gerrit.wikimedia.org/r/283460
Change subject: Rename and rework classes for configuring JS deserializers ...................................................................... Rename and rework classes for configuring JS deserializers This was originally meant to become Patch Set 9 in Ic058f8c, but it became to big. Bug: T132558 Change-Id: I626a6ba29f82d045d4577bba79be51c7d6129a50 --- A repo/includes/Modules/EntityTypesConfigValueProvider.php D repo/includes/Modules/EntityTypesModuleWorker.php A repo/includes/Modules/MediaWikiConfigModule.php A repo/includes/Modules/MediaWikiConfigValueProvider.php D repo/includes/Modules/MwConfigModule.php D repo/includes/Modules/MwConfigModuleWorker.php M repo/includes/WikibaseRepo.php M repo/resources/Resources.php 8 files changed, 144 insertions(+), 132 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/60/283460/1 diff --git a/repo/includes/Modules/EntityTypesConfigValueProvider.php b/repo/includes/Modules/EntityTypesConfigValueProvider.php new file mode 100644 index 0000000..2eb06dd --- /dev/null +++ b/repo/includes/Modules/EntityTypesConfigValueProvider.php @@ -0,0 +1,47 @@ +<?php + +namespace Wikibase\Repo\Modules; + +use Wikibase\Lib\EntityTypeDefinitions; + +/** + * @since 0.5 + * + * @license GPL-2.0+ + * @author Adrian Heine <[email protected]> + * @author Thiemo Mättig + * @author Jonas Kress + */ +class EntityTypesConfigValueProvider implements MediaWikiConfigValueProvider { + + /** + * @var EntityTypeDefinitions + */ + private $entityTypeDefinitions; + + public function __construct( EntityTypeDefinitions $entityTypeDefinitions ) { + $this->entityTypeDefinitions = $entityTypeDefinitions; + } + + /** + * @see MediaWikiJsConfigProvider::getKey + * + * @return string + */ + public function getKey() { + return 'wbEntityTypes'; + } + + /** + * @see MediaWikiJsConfigProvider::getValue + * + * @return array + */ + public function getValue() { + return [ + 'types' => $this->entityTypeDefinitions->getEntityTypes(), + 'deserializer-factory-functions' + => $this->entityTypeDefinitions->getJsDeserializerFactoryFunctions() + ]; + } +} diff --git a/repo/includes/Modules/EntityTypesModuleWorker.php b/repo/includes/Modules/EntityTypesModuleWorker.php deleted file mode 100644 index a8a3bf1..0000000 --- a/repo/includes/Modules/EntityTypesModuleWorker.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php - -namespace Wikibase\Repo\Modules; - -use ResourceLoaderContext; -use Wikibase\Lib\EntityTypeDefinitions; - -/** - * @since 0.5 - * - * @license GPL-2.0+ - * @author Adrian Heine <[email protected]> - */ -class EntityTypesModuleWorker implements MwConfigModuleWorker { - - /** - * @var EntityTypeDefinitions - */ - private $entityTypeDefinitions; - - public function __construct( EntityTypeDefinitions $entityTypeDefinitions ) { - $this->entityTypeDefinitions = $entityTypeDefinitions; - } - - /** - * @since 0.5 - * - * @param ResourceLoaderContext $context - * - * @return mixed - */ - public function getValue( ResourceLoaderContext $context ) { - return [ - "types" => $this->entityTypeDefinitions->getEntityTypes(), - "deserializer-factory-functions" => $this->entityTypeDefinitions->getJsDeserializerFactoryFunctions() - ]; - } - -} diff --git a/repo/includes/Modules/MediaWikiConfigModule.php b/repo/includes/Modules/MediaWikiConfigModule.php new file mode 100644 index 0000000..4cca07b --- /dev/null +++ b/repo/includes/Modules/MediaWikiConfigModule.php @@ -0,0 +1,62 @@ +<?php + +namespace Wikibase\Repo\Modules; + +use ResourceLoader; +use ResourceLoaderContext; +use ResourceLoaderModule; +use Xml; + +/** + * Generic, reusable ResourceLoader module to set a JavaScript configuration variable via + * mediaWiki.config.set. + * + * @since 0.5 + * + * @license GPL-2.0+ + * @author Adrian Heine <[email protected]> + */ +class MediaWikiConfigModule extends ResourceLoaderModule { + + /** + * @var callable + */ + private $getConfigValueProvider; + + /** + * @param array $options ResourceLoader module options. Must include a "getconfigvalueprovider" + * callable that returns a MediaWikiConfigValueProvider when called. + */ + public function __construct( array $options ) { + $this->getConfigValueProvider = $options['getconfigvalueprovider']; + } + + /** + * @see ResourceLoaderModule::getScript + * + * @param ResourceLoaderContext $context + * + * @return string JavaScript code + */ + public function getScript( ResourceLoaderContext $context ) { + /** @var MediaWikiConfigValueProvider $configValueProvider */ + $configValueProvider = call_user_func( $this->getConfigValueProvider ); + + return Xml::encodeJsCall( + 'mediaWiki.config.set', + [ + $configValueProvider->getKey(), + $configValueProvider->getValue() + ], + ResourceLoader::inDebugMode() + ); + } + + /** + * @return bool Always true. + */ + public function enableModuleContentVersion() { + return true; + } + +} diff --git a/repo/includes/Modules/MediaWikiConfigValueProvider.php b/repo/includes/Modules/MediaWikiConfigValueProvider.php new file mode 100644 index 0000000..a8e64b1 --- /dev/null +++ b/repo/includes/Modules/MediaWikiConfigValueProvider.php @@ -0,0 +1,28 @@ +<?php + +namespace Wikibase\Repo\Modules; + +/** + * Provider to pass information to mediaWiki.config. + * + * @since 0.5 + * + * @license GPL-2.0+ + * @author Adrian Heine <[email protected]> + * @author Thiemo Mättig + * @author Jonas Kress + */ +interface MediaWikiConfigValueProvider { + + /** + * @return string Key for use in mediaWiki.config. + */ + public function getKey(); + + /** + * @return mixed Non-complex value for use in mediaWiki.config.set, typically a string or + * (nested) array of strings. + */ + public function getValue(); + +} diff --git a/repo/includes/Modules/MwConfigModule.php b/repo/includes/Modules/MwConfigModule.php deleted file mode 100644 index c5a1898..0000000 --- a/repo/includes/Modules/MwConfigModule.php +++ /dev/null @@ -1,60 +0,0 @@ -<?php - -namespace Wikibase\Repo\Modules; - -use ResourceLoader; -use ResourceLoaderContext; -use ResourceLoaderModule; -use Xml; - -/** - * @since 0.5 - * - * @license GPL-2.0+ - * @author Adrian Heine <[email protected]> - */ -class MwConfigModule extends ResourceLoaderModule { - - /** - * @var string - */ - private $configName; - - /** - * @var callable - */ - private $getWorker; - - public function __construct( $info ) { - $this->getWorker = $info['getworker']; - $this->configName = $info['name']; - } - - /** - * @see ResourceLoaderModule::getScript - * - * @since 0.5 - * - * @param ResourceLoaderContext $context - * - * @return string - */ - public function getScript( ResourceLoaderContext $context ) { - return Xml::encodeJsCall( - 'mediaWiki.config.set', - [ - $this->configName, - call_user_func( $this->getWorker )->getValue( $context ) - ], - ResourceLoader::inDebugMode() - ); - } - - /** - * @return bool - */ - public function enableModuleContentVersion() { - return true; - } - -} diff --git a/repo/includes/Modules/MwConfigModuleWorker.php b/repo/includes/Modules/MwConfigModuleWorker.php deleted file mode 100644 index 0ec31f3..0000000 --- a/repo/includes/Modules/MwConfigModuleWorker.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -namespace Wikibase\Repo\Modules; - -use ResourceLoaderContext; - -/** - * @since 0.5 - * - * @license GPL-2.0+ - * @author Adrian Heine <[email protected]> - */ -interface MwConfigModuleWorker { - - /** - * @since 0.5 - * - * @param ResourceLoaderContext $context - * - * @return mixed - */ - public function getValue( ResourceLoaderContext $context ); - -} diff --git a/repo/includes/WikibaseRepo.php b/repo/includes/WikibaseRepo.php index 677ab8b..044e1fc 100644 --- a/repo/includes/WikibaseRepo.php +++ b/repo/includes/WikibaseRepo.php @@ -105,7 +105,7 @@ use Wikibase\Repo\Localizer\MessageExceptionLocalizer; use Wikibase\Repo\Localizer\MessageParameterFormatter; use Wikibase\Repo\Localizer\ParseExceptionLocalizer; -use Wikibase\Repo\Modules\EntityTypesModuleWorker; +use Wikibase\Repo\Modules\EntityTypesConfigValueProvider; use Wikibase\Repo\Notifications\ChangeNotifier; use Wikibase\Repo\Notifications\ChangeTransmitter; use Wikibase\Repo\Notifications\DatabaseChangeTransmitter; @@ -1661,8 +1661,8 @@ return new WikibaseHtmlSnakFormatterFactory( $this->getSnakFormatterFactory() ); } - public function getEntityTypesModuleWorker() { - return new EntityTypesModuleWorker( $this->entityTypeDefinitions ); + public function getEntityTypesConfigValueProvider() { + return new EntityTypesConfigValueProvider( $this->entityTypeDefinitions ); } } diff --git a/repo/resources/Resources.php b/repo/resources/Resources.php index 53c2ada..8de739c 100644 --- a/repo/resources/Resources.php +++ b/repo/resources/Resources.php @@ -1,8 +1,7 @@ <?php use DataTypes\Modules\DataTypesModule; -use Wikibase\Repo\Modules\EntityTypesModuleWorker; -use Wikibase\Repo\Modules\MwConfigModule; +use Wikibase\Repo\Modules\MediaWikiConfigModule; use Wikibase\Repo\WikibaseRepo; /** @@ -51,10 +50,9 @@ ), 'mw.config.values.wbEntityTypes' => $moduleTemplate + [ - 'class' => MwConfigModule::class, - 'name' => 'wbEntityTypes', - 'getworker' => function() { - return WikibaseRepo::getDefaultInstance()->getEntityTypesModuleWorker(); + 'class' => MediaWikiConfigModule::class, + 'getconfigvalueprovider' => function() { + return WikibaseRepo::getDefaultInstance()->getEntityTypesConfigValueProvider(); } ], -- To view, visit https://gerrit.wikimedia.org/r/283460 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I626a6ba29f82d045d4577bba79be51c7d6129a50 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Thiemo Mättig (WMDE) <[email protected]> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
