* 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
*/
public static function addModules( OutputPage $out ) {
if ( self::$enabled ) {
- $out->addModules( 'mediawiki.debug' );
+ $out->addModules( 'mediawiki.debug.init' );
}
}
'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;
}
'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',
--- /dev/null
+jQuery( function () {
+ mediaWiki.Debug.init();
+} );
/**
- * 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