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

Reply via email to