[mw.debug] Clean up
authorKrinkle <krinkle@users.mediawiki.org>
Mon, 13 Feb 2012 15:25:08 +0000 (15:25 +0000)
committerKrinkle <krinkle@users.mediawiki.org>
Mon, 13 Feb 2012 15:25:08 +0000 (15:25 +0000)
* Instead of inline global variable and lazy-loading, using ResourceLoader (using mw.config and mw.loader)
* Can't use OutputPage::addJsConfigVars / OutputPage::addModules because debug is called after those are handled, using ResourceLoader::makeConfigSetScript instead

includes/debug/Debug.php
resources/Resources.php
resources/mediawiki/mediawiki.debug.init.js [new file with mode: 0644]
resources/mediawiki/mediawiki.debug.js

index eaf8828..e8ad526 100644 (file)
@@ -62,7 +62,7 @@ class MWDebug {
         */
        public static function addModules( OutputPage $out ) {
                if ( self::$enabled ) {
-                       $out->addModules( 'mediawiki.debug' );
+                       $out->addModules( 'mediawiki.debug.init' );
                }
        }
 
@@ -272,11 +272,14 @@ class MWDebug {
                        'memoryPeak' => $context->getLanguage()->formatSize( memory_get_peak_usage() ),
                        'includes' => self::getFilesIncluded( $context ),
                );
-               // TODO: Clean this up
-               $html = Html::openElement( 'script' );
-               $html .= 'var debugInfo = ' . Xml::encodeJsVar( $debugInfo ) . ';';
-               $html .= " $(function() { mw.loader.using( 'mediawiki.debug', function() { mw.Debug.init( debugInfo ) } ); }); ";
-               $html .= Html::closeElement( 'script' );
+
+               // Cannot use OutputPage::addJsConfigVars because those are already outputted
+               // by the time this method is called.
+               $html = Html::inlineScript(
+                       ResourceLoader::makeLoaderConditionalScript(
+                               ResourceLoader::makeConfigSetScript( array( 'debugInfo' => $debugInfo ) )
+                       )
+               );
 
                return $html;
        }
index 9e31bf4..f43553f 100644 (file)
@@ -543,6 +543,14 @@ return array(
                'scripts' => 'resources/mediawiki/mediawiki.debug.js',
                'styles' => 'resources/mediawiki/mediawiki.debug.css',
                'dependencies' => 'jquery.footHovzer',
+               'position' => 'bottom',
+       ),
+       'mediawiki.debug.init' => array(
+               'scripts' => 'resources/mediawiki/mediawiki.debug.init.js',
+               'dependencies' => 'mediawiki.debug',
+               // Uses a custom mw.config variable that is set in debughtml,
+               // must be loaded on the bottom
+               'position' => 'bottom',
        ),
        'mediawiki.feedback' => array(
                'scripts' => 'resources/mediawiki/mediawiki.feedback.js',
diff --git a/resources/mediawiki/mediawiki.debug.init.js b/resources/mediawiki/mediawiki.debug.init.js
new file mode 100644 (file)
index 0000000..0f85e80
--- /dev/null
@@ -0,0 +1,3 @@
+jQuery( function () {
+       mediaWiki.Debug.init();
+} );
index 7f74fb4..a2bfbcb 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * JavaScript for the new debug toolbar, enabled with $wgDebugToolbar
+ * JavaScript for the new debug toolbar, enabled through $wgDebugToolbar.
  *
  * @author John Du Hart
  * @since 1.19
                data: {},
 
                /**
-                * Initializes the debugging pane
+                * Initializes the debugging pane.
+                * Shouldn't be called before the document is ready
+                * (since it binds to elements on the page).
                 *
-                * @param {Object} data
+                * @param {Object} data, defaults to 'debugInfo' from mw.config
                 */
                init: function ( data ) {
 
-                       this.data = data;
+                       this.data = data || mw.config.get( 'debugInfo' );
                        this.buildHtml();
 
                        // Insert the container into the DOM