From 05e1140cf70e071fcc61bba27254c9b6581783ca Mon Sep 17 00:00:00 2001 From: Krinkle Date: Mon, 13 Feb 2012 15:25:08 +0000 Subject: [PATCH] [mw.debug] Clean up * 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 | 15 +++++++++------ resources/Resources.php | 8 ++++++++ resources/mediawiki/mediawiki.debug.init.js | 3 +++ resources/mediawiki/mediawiki.debug.js | 10 ++++++---- 4 files changed, 26 insertions(+), 10 deletions(-) create mode 100644 resources/mediawiki/mediawiki.debug.init.js diff --git a/includes/debug/Debug.php b/includes/debug/Debug.php index eaf8828861..e8ad5261e2 100644 --- a/includes/debug/Debug.php +++ b/includes/debug/Debug.php @@ -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; } diff --git a/resources/Resources.php b/resources/Resources.php index 9e31bf45e8..f43553f6e2 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -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 index 0000000000..0f85e80d6a --- /dev/null +++ b/resources/mediawiki/mediawiki.debug.init.js @@ -0,0 +1,3 @@ +jQuery( function () { + mediaWiki.Debug.init(); +} ); diff --git a/resources/mediawiki/mediawiki.debug.js b/resources/mediawiki/mediawiki.debug.js index 7f74fb493f..a2bfbcbe30 100644 --- a/resources/mediawiki/mediawiki.debug.js +++ b/resources/mediawiki/mediawiki.debug.js @@ -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 @@ -26,13 +26,15 @@ 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 -- 2.20.1