Jdlrobson has uploaded a new change for review.
https://gerrit.wikimedia.org/r/169926
Change subject: Split out ResourceLoaderTemplateParserModule from
ResourceLoaderTemplateModule
......................................................................
Split out ResourceLoaderTemplateParserModule from ResourceLoaderTemplateModule
Deprecate ResourceLoaderTemplateModule
Change-Id: If8921332ba3176e3dc2f739c709587701480518e
---
M Mantle.php
M includes/ResourceLoaderTemplateModule.php
A includes/ResourceLoaderTemplateParserModule.php
3 files changed, 117 insertions(+), 99 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Mantle
refs/changes/26/169926/1
diff --git a/Mantle.php b/Mantle.php
index 5f6f2d4..8bbfaa7 100644
--- a/Mantle.php
+++ b/Mantle.php
@@ -21,6 +21,7 @@
// autoload extension classes
$autoloadClasses = array (
'MantleHooks' => 'Hooks',
+ 'ResourceLoaderTemplateParserModule' =>
'ResourceLoaderTemplateParserModule',
'ResourceLoaderTemplateModule' => 'ResourceLoaderTemplateModule',
);
diff --git a/includes/ResourceLoaderTemplateModule.php
b/includes/ResourceLoaderTemplateModule.php
index 84df31f..5c4ccfe 100644
--- a/includes/ResourceLoaderTemplateModule.php
+++ b/includes/ResourceLoaderTemplateModule.php
@@ -6,26 +6,13 @@
/**
* ResourceLoaderModule subclass for mobile
* Allows basic parsing of messages without arguments
+ * @deprecated
*/
-class ResourceLoaderTemplateModule extends ResourceLoaderFileModule {
- /** @var array Saves a list of names of modules this module depends on.
*/
- protected $dependencies = array();
- /** @var array Saves a list of messages which have been marked as
needing parsing. */
- protected $parsedMessages = array();
- /** @var array Saves a list of message keys used by this module. */
- protected $messages = array();
+class ResourceLoaderTemplateModule extends ResourceLoaderTemplateParserModule {
/** @var array Saves a list of the templates named by the modules. */
protected $legacyTemplates = array();
- /** @var string Base path to prepend to all local paths in $options.
Defaults to $IP. */
- protected $localBasePath;
- /** @var array Saves the target for the module (e.g. desktop and
mobile). */
- protected $targets = array( 'mobile', 'desktop' );
/** @var string The local path to where templates are located, see
__construct() */
protected $localTemplateBasePath = '';
- /** @var boolean Whether the module has parsed messages or not. */
- private $hasParsedMessages = false;
- /** @var boolean Whether the module has templates or not. */
- private $hasTemplates = false;
/**
* @var array Cache for mtime of templates
@@ -44,28 +31,13 @@
$this->{$member} = (string) $option;
break;
case 'templates':
- $this->hasTemplates = true;
+ $this->hasHackedScriptMode = true;
$this->legacyTemplates = (array)$option;
- break;
- case 'messages':
- $this->processMessages( $option );
- $this->hasParsedMessages = true;
- // Prevent them being reinitialised
when parent construct is called.
- unset( $options[$member] );
break;
}
}
parent::__construct( $options );
- }
-
- /**
- * Gets list of names of modules this module depends on.
- *
- * @return Array List of module names
- */
- public function getDependencies() {
- return $this->dependencies;
}
/**
@@ -118,47 +90,6 @@
}
/**
- * Processes messages which have been marked as needing parsing
- *
- * @return string JavaScript code
- */
- public function addParsedMessages() {
- $js = "\n";
- foreach( $this->parsedMessages as $key ) {
- $value = wfMessage( $key )->parse();
- $js .= Xml::encodeJsCall( 'mw.messages.set', array(
$key, $value ) );
- }
- return $js;
- }
-
- /**
- * Separates messages which have been marked as needing parsing from
standard messages
- * @param array $messages Array of messages to process
- */
- public function processMessages( $messages ) {
- foreach( $messages as $key => $value ) {
- if ( is_array( $value ) ) {
- foreach( $value as $directive ) {
- if ( $directive == 'parse' ) {
- $this->parsedMessages[] = $key;
- }
- }
- } else {
- $this->messages[] = $value;
- }
- }
- }
-
- /**
- * Gets list of message keys used by this module.
- *
- * @return array List of message keys
- */
- public function getMessages() {
- return $this->messages;
- }
-
- /**
* Gets all scripts for a given context concatenated together including
processed messages
*
* @param ResourceLoaderContext $context Context in which to generate
script
@@ -166,33 +97,7 @@
*/
public function getScript( ResourceLoaderContext $context ) {
$script = parent::getScript( $context );
- return $this->addParsedMessages() . $this->getTemplateScript()
. $script;
- }
-
- /**
- * Get the URL or URLs to load for this module's JS in debug mode.
- * @param ResourceLoaderContext $context
- * @return array list of urls
- * @see ResourceLoaderModule::getScriptURLsForDebug
- */
- public function getScriptURLsForDebug( ResourceLoaderContext $context )
{
- if ( $this->hasParsedMessages || $this->hasTemplates ) {
- $derivative = new DerivativeResourceLoaderContext(
$context );
- $derivative->setDebug( true );
- $derivative->setModules( array( $this->getName() ) );
- // @todo FIXME: Make this templates and update
- // makeModuleResponse so that it only outputs template
code.
- // When this is done you can merge with parent array and
- // retain file names.
- $derivative->setOnly( 'scripts' );
- $rl = $derivative->getResourceLoader();
- $urls = array(
- $rl->createLoaderURL( $this->getSource(),
$derivative ),
- );
- } else {
- $urls = parent::getScriptURLsForDebug( $context );
- }
- return $urls;
+ return $this->getTemplateScript() . $script;
}
/**
diff --git a/includes/ResourceLoaderTemplateParserModule.php
b/includes/ResourceLoaderTemplateParserModule.php
new file mode 100644
index 0000000..3383526
--- /dev/null
+++ b/includes/ResourceLoaderTemplateParserModule.php
@@ -0,0 +1,112 @@
+<?php
+/** 2
+ * ResourceLoaderModule subclass for mobile
+ * Allows basic parsing of messages without arguments
+ */
+class ResourceLoaderParsedMessageModule extends ResourceLoaderFile {
+ /** @var array Saves a list of messages which have been marked as
needing parsing. */
+ protected $parsedMessages = array();
+ /** @var array Saves a list of message keys used by this module. */
+ protected $messages = array();
+ /** @var array Saves the target for the module (e.g. desktop and
mobile). */
+ protected $targets = array( 'mobile', 'desktop' );
+ /** @var boolean Whether the module abuses getScripts. */
+ private $hasHackedScriptMode = false;
+
+ /**
+ * Registers core modules and runs registration hooks.
+ * @param $options List of options; if not given or empty, an empty
module will be constructed
+ */
+ public function __construct( $options ) {
+ foreach ( $options as $member => $option ) {
+ switch ( $member ) {
+ case 'messages':
+ $this->processMessages( $option );
+ $this->hasHackedScriptMode = true;
+ // Prevent them being reinitialised
when parent construct is called.
+ unset( $options[$member] );
+ break;
+ }
+ }
+
+ parent::__construct( $options );
+ }
+
+ /**
+ * Processes messages which have been marked as needing parsing
+ *
+ * @return string JavaScript code
+ */
+ public function addParsedMessages() {
+ $js = "\n";
+ foreach( $this->parsedMessages as $key ) {
+ $value = wfMessage( $key )->parse();
+ $js .= Xml::encodeJsCall( 'mw.messages.set', array(
$key, $value ) );
+ }
+ return $js;
+ }
+
+ /**
+ * Separates messages which have been marked as needing parsing from
standard messages
+ * @param array $messages Array of messages to process
+ */
+ public function processMessages( $messages ) {
+ foreach( $messages as $key => $value ) {
+ if ( is_array( $value ) ) {
+ foreach( $value as $directive ) {
+ if ( $directive == 'parse' ) {
+ $this->parsedMessages[] = $key;
+ }
+ }
+ } else {
+ $this->messages[] = $value;
+ }
+ }
+ }
+
+ /**
+ * Gets list of message keys used by this module.
+ *
+ * @return array List of message keys
+ */
+ public function getMessages() {
+ return $this->messages;
+ }
+
+ /**
+ * Gets all scripts for a given context concatenated together including
processed messages
+ *
+ * @param ResourceLoaderContext $context Context in which to generate
script
+ * @return string JavaScript code for $context
+ */
+ public function getScript( ResourceLoaderContext $context ) {
+ $script = parent::getScript( $context );
+ return $this->addParsedMessages() . $script;
+ }
+
+ /**
+ * Get the URL or URLs to load for this module's JS in debug mode.
+ * @param ResourceLoaderContext $context
+ * @return array list of urls
+ * @see ResourceLoaderModule::getScriptURLsForDebug
+ */
+ public function getScriptURLsForDebug( ResourceLoaderContext $context )
{
+ if ( $this->hasHackedScriptMode ) {
+ $derivative = new DerivativeResourceLoaderContext(
$context );
+ $derivative->setDebug( true );
+ $derivative->setModules( array( $this->getName() ) );
+ // @todo FIXME: Make this templates and update
+ // makeModuleResponse so that it only outputs template
code.
+ // When this is done you can merge with parent array and
+ // retain file names.
+ $derivative->setOnly( 'scripts' );
+ $rl = $derivative->getResourceLoader();
+ $urls = array(
+ $rl->createLoaderURL( $this->getSource(),
$derivative ),
+ );
+ } else {
+ $urls = parent::getScriptURLsForDebug( $context );
+ }
+ return $urls;
+ }
+}
--
To view, visit https://gerrit.wikimedia.org/r/169926
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: If8921332ba3176e3dc2f739c709587701480518e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Mantle
Gerrit-Branch: master
Gerrit-Owner: Jdlrobson <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits