Move `$.extend( OO.ui, mw.widgets )` hack to 'mediawiki.widgets' module
authorBartosz Dziewoński <matma.rex@gmail.com>
Tue, 7 Jul 2015 13:23:25 +0000 (15:23 +0200)
committerBartosz Dziewoński <matma.rex@gmail.com>
Tue, 7 Jul 2015 13:25:18 +0000 (15:25 +0200)
OO.ui.infuse assumes all widgets are in the OO.ui. namespace.
We previously made that happen on document-ready in
'mediawiki.page.ready' module, but that's too late: document-ready
handlers defined by other modules' can run earlier.
Let's just do it in 'mediawiki.widgets' after all widgets are defined.

Change-Id: Ib2184bf87d72db64d1565d742ef9f1be37f24b6f

resources/Resources.php
resources/src/mediawiki.page/mediawiki.page.ready.js
resources/src/mediawiki.widgets/mw.widgets.infuse.js [new file with mode: 0644]

index 25c8de1..182f090 100644 (file)
@@ -1735,6 +1735,7 @@ return array(
                        'resources/src/mediawiki.widgets/mw.widgets.js',
                        'resources/src/mediawiki.widgets/mw.widgets.TitleInputWidget.js',
                        'resources/src/mediawiki.widgets/mw.widgets.TitleOptionWidget.js',
+                       'resources/src/mediawiki.widgets/mw.widgets.infuse.js',
                ),
                'skinStyles' => array(
                        'default' => 'resources/src/mediawiki.widgets/mw.widgets.TitleInputWidget.css',
index 3a8e0e7..8ec4cf0 100644 (file)
@@ -63,8 +63,6 @@
                $nodes = $( '[data-ooui]' );
                if ( $nodes.length ) {
                        mw.loader.using( 'mediawiki.widgets' ).done( function () {
-                               // HACK: OO.ui.infuse assumes all widgets are in the OO.ui. namespace
-                               $.extend( OO.ui, mw.widgets );
                                $nodes.each( function () {
                                        OO.ui.infuse( this );
                                } );
diff --git a/resources/src/mediawiki.widgets/mw.widgets.infuse.js b/resources/src/mediawiki.widgets/mw.widgets.infuse.js
new file mode 100644 (file)
index 0000000..98480bb
--- /dev/null
@@ -0,0 +1,3 @@
+// HACK: OO.ui.infuse assumes all widgets are in the OO.ui. namespace.
+// Make it so until this is fixed. (T104989)
+jQuery.extend( OO.ui, mediaWiki.widgets );