From fcf481423384adecc48fcdc70b9e7708105bc8ae Mon Sep 17 00:00:00 2001 From: Roan Kattouw Date: Thu, 16 Feb 2012 22:51:06 +0000 Subject: [PATCH] Since I'm sick of all the mw.user-induced problems, break the dependency between mw.user.{options,tokens} and mw.user . With this change, mediawiki.js defines a skeleton object for mw.user containing just the options and tokens maps, and mediawiki.user.js copies those when it sets up the full mw.user object. This way of doing extending is kind of ugly but I don't have time to work on something nicer without breaking backwards compatibility. Because mw.user.{options,tokens} are loaded very early, this also means they're now guaranteed to be available to everything everywhere. --- .../resourceloader/ResourceLoaderUserOptionsModule.php | 7 ------- .../resourceloader/ResourceLoaderUserTokensModule.php | 7 ------- resources/mediawiki/mediawiki.js | 8 +++++++- resources/mediawiki/mediawiki.user.js | 10 ++++++---- 4 files changed, 13 insertions(+), 19 deletions(-) diff --git a/includes/resourceloader/ResourceLoaderUserOptionsModule.php b/includes/resourceloader/ResourceLoaderUserOptionsModule.php index 0752fd6b98..84932adddf 100644 --- a/includes/resourceloader/ResourceLoaderUserOptionsModule.php +++ b/includes/resourceloader/ResourceLoaderUserOptionsModule.php @@ -85,11 +85,4 @@ class ResourceLoaderUserOptionsModule extends ResourceLoaderModule { public function getGroup() { return 'private'; } - - /** - * @return array - */ - public function getDependencies() { - return array( 'mediawiki.user' ); - } } diff --git a/includes/resourceloader/ResourceLoaderUserTokensModule.php b/includes/resourceloader/ResourceLoaderUserTokensModule.php index b423ecf2f4..e1a52388ba 100644 --- a/includes/resourceloader/ResourceLoaderUserTokensModule.php +++ b/includes/resourceloader/ResourceLoaderUserTokensModule.php @@ -60,11 +60,4 @@ class ResourceLoaderUserTokensModule extends ResourceLoaderModule { public function getGroup() { return 'private'; } - - /** - * @return array - */ - public function getDependencies() { - return array( 'mediawiki.user' ); - } } diff --git a/resources/mediawiki/mediawiki.js b/resources/mediawiki/mediawiki.js index 239ece1c2b..370aba9789 100644 --- a/resources/mediawiki/mediawiki.js +++ b/resources/mediawiki/mediawiki.js @@ -1419,7 +1419,13 @@ var mw = ( function ( $, undefined ) { return s; } }; - }() ) + }() ), + + // Skeleton user object. mediawiki.user.js extends this + user: { + options: new Map(), + tokens: new Map() + } }; })( jQuery ); diff --git a/resources/mediawiki/mediawiki.user.js b/resources/mediawiki/mediawiki.user.js index 707df5578a..7f881b0e62 100644 --- a/resources/mediawiki/mediawiki.user.js +++ b/resources/mediawiki/mediawiki.user.js @@ -7,7 +7,7 @@ /** * User object */ - function User() { + function User( options, tokens ) { /* Private Members */ @@ -15,9 +15,9 @@ /* Public Members */ - this.options = new mw.Map(); + this.options = options || new mw.Map(); - this.tokens = new mw.Map(); + this.tokens = tokens || new mw.Map(); /* Public Methods */ @@ -176,6 +176,8 @@ }; } - mw.user = new User(); + // Extend the skeleton mw.user from mediawiki.js + // This is kind of ugly but we're stuck with this for b/c reasons + mw.user = new User( mw.user.options, mw.user.tokens ); })(jQuery); \ No newline at end of file -- 2.20.1