Merge "SpecialMovepage: Convert form to use OOUI controls"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 15 Sep 2015 22:40:01 +0000 (22:40 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 15 Sep 2015 22:40:01 +0000 (22:40 +0000)
1  2 
autoload.php
resources/Resources.php
resources/src/mediawiki.widgets/mw.widgets.TitleInputWidget.js

diff --combined autoload.php
@@@ -724,6 -724,7 +724,6 @@@ $wgAutoloadLocalClasses = array
        'MWOldPassword' => __DIR__ . '/includes/password/MWOldPassword.php',
        'MWSaltedPassword' => __DIR__ . '/includes/password/MWSaltedPassword.php',
        'MWTidy' => __DIR__ . '/includes/parser/MWTidy.php',
 -      'MWTidyWrapper' => __DIR__ . '/includes/parser/MWTidy.php',
        'MWTimestamp' => __DIR__ . '/includes/MWTimestamp.php',
        'MachineReadableRCFeedFormatter' => __DIR__ . '/includes/rcfeed/MachineReadableRCFeedFormatter.php',
        'MagicWord' => __DIR__ . '/includes/MagicWord.php',
        'MediaWiki\\Logger\\Monolog\\WikiProcessor' => __DIR__ . '/includes/debug/logger/monolog/WikiProcessor.php',
        'MediaWiki\\Logger\\NullSpi' => __DIR__ . '/includes/debug/logger/NullSpi.php',
        'MediaWiki\\Logger\\Spi' => __DIR__ . '/includes/debug/logger/Spi.php',
 +      'MediaWiki\\Tidy\\Html5Depurate' => __DIR__ . '/includes/tidy/Html5Depurate.php',
 +      'MediaWiki\\Tidy\\RaggettBase' => __DIR__ . '/includes/tidy/RaggettBase.php',
 +      'MediaWiki\\Tidy\\RaggettExternal' => __DIR__ . '/includes/tidy/RaggettExternal.php',
 +      'MediaWiki\\Tidy\\RaggettInternalHHVM' => __DIR__ . '/includes/tidy/RaggettInternalHHVM.php',
 +      'MediaWiki\\Tidy\\RaggettInternalPHP' => __DIR__ . '/includes/tidy/RaggettInternalPHP.php',
 +      'MediaWiki\\Tidy\\RaggettWrapper' => __DIR__ . '/includes/tidy/RaggettWrapper.php',
 +      'MediaWiki\\Tidy\\TidyDriverBase' => __DIR__ . '/includes/tidy/TidyDriverBase.php',
        'MediaWiki\\Widget\\ComplexNamespaceInputWidget' => __DIR__ . '/includes/widget/ComplexNamespaceInputWidget.php',
+       'MediaWiki\\Widget\\ComplexTitleInputWidget' => __DIR__ . '/includes/widget/ComplexTitleInputWidget.php',
        'MediaWiki\\Widget\\NamespaceInputWidget' => __DIR__ . '/includes/widget/NamespaceInputWidget.php',
        'MediaWiki\\Widget\\TitleInputWidget' => __DIR__ . '/includes/widget/TitleInputWidget.php',
        'MediaWiki\\Widget\\UserInputWidget' => __DIR__ . '/includes/widget/UserInputWidget.php',
diff --combined resources/Resources.php
@@@ -847,12 -847,6 +847,12 @@@ return array
                        'resources/src/mediawiki/mediawiki.template.mustache.js',
                ),
                'targets' => array( 'desktop', 'mobile' ),
 +              'dependencies' => 'mediawiki.template',
 +      ),
 +      'mediawiki.template.regexp' => array(
 +              'scripts' => 'resources/src/mediawiki/mediawiki.template.regexp.js',
 +              'targets' => array( 'desktop', 'mobile' ),
 +              'dependencies' => 'mediawiki.template',
        ),
        'mediawiki.apipretty' => array(
                'styles' => 'resources/src/mediawiki/mediawiki.apipretty.css',
                        'colon-separator',
                ),
        ),
 +      'mediawiki.htmlform.styles' => array(
 +              'styles' => 'resources/src/mediawiki/mediawiki.htmlform.css',
 +              'position' => 'top',
 +      ),
        'mediawiki.htmlform.ooui.styles' => array(
                'styles' => 'resources/src/mediawiki/mediawiki.htmlform.ooui.css',
                'position' => 'top',
                        'mediawiki.api.upload',
                ),
        ),
 +      'mediawiki.ForeignUpload' => array(
 +              'scripts' => 'resources/src/mediawiki/mediawiki.ForeignUpload.js',
 +              'dependencies' => array(
 +                      'mediawiki.ForeignApi',
 +                      'mediawiki.Upload',
 +                      'oojs',
 +              ),
 +      ),
 +      'mediawiki.ForeignStructuredUpload' => array(
 +              'scripts' => 'resources/src/mediawiki/mediawiki.ForeignStructuredUpload.js',
 +              'dependencies' => array(
 +                      'mediawiki.ForeignUpload',
 +              ),
 +      ),
        'mediawiki.Upload.Dialog' => array(
                'scripts' => 'resources/src/mediawiki/mediawiki.Upload.Dialog.js',
                'dependencies' => array(
        ),
        'mediawiki.Uri' => array(
                'scripts' => 'resources/src/mediawiki/mediawiki.Uri.js',
 +              'templates' => array(
 +                      'strict.regexp' => 'resources/src/mediawiki/mediawiki.Uri.strict.regexp',
 +                      'loose.regexp' => 'resources/src/mediawiki/mediawiki.Uri.loose.regexp',
 +              ),
                'dependencies' => 'mediawiki.util',
                'targets' => array( 'desktop', 'mobile' ),
        ),
                        'prefs-editing'
                ),
        ),
 +      'mediawiki.action.view.filepage' => array(
 +              'styles' => array(
 +                      'resources/src/mediawiki.action/mediawiki.action.view.filepage.print.css' => array( 'media' => 'print' ),
 +                      'resources/src/mediawiki.action/mediawiki.action.view.filepage.css',
 +              ),
 +              'position' => 'top',
 +      ),
  
        /* MediaWiki Language */
  
        ),
        'mediawiki.special.movePage' => array(
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.movePage.js',
-               'dependencies' => 'jquery.byteLimit',
+               'dependencies' => array(
+                       'jquery.byteLimit',
+                       'mediawiki.widgets',
+               ),
+       ),
+       'mediawiki.special.movePage.styles' => array(
+               'styles' => 'resources/src/mediawiki.special/mediawiki.special.movePage.css',
+               'position' => 'top',
        ),
        'mediawiki.special.pageLanguage' => array(
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.pageLanguage.js',
                        'resources/src/mediawiki.special/mediawiki.special.userlogin.login.css',
                ),
        ),
 -      'mediawiki.special.userlogin.common.js' => array(
 -              'scripts' => array(
 -                      'resources/src/mediawiki.special/mediawiki.special.userlogin.common.js',
 -              ),
 -              'messages' => array(
 -                      'createacct-captcha',
 -                      'createacct-imgcaptcha-ph',
 -              ),
 -      ),
        'mediawiki.special.userlogin.signup.js' => array(
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.userlogin.signup.js',
                'messages' => array(
                'styles' => array(
                        // @todo: Remove mediawiki.page.gallery when cache has cleared
                        'resources/src/mediawiki.page/mediawiki.page.gallery.print.css' => array( 'media' => 'print' ),
 +                      // @todo: Remove mediawiki.action.view.filepage.print.css when cache has cleared
 +                      'resources/src/mediawiki.action/mediawiki.action.view.filepage.print.css' => array( 'media' => 'print' ),
                        'resources/src/mediawiki.legacy/commonPrint.css' => array( 'media' => 'print' )
                ),
 -              'group' => 'print',
        ),
        'mediawiki.legacy.protect' => array(
                'scripts' => 'resources/src/mediawiki.legacy/protect.js',
                'styles' => array(
                        // @todo: Remove when mediawiki.page.gallery in cached html.
                        'resources/src/mediawiki.page/mediawiki.page.gallery.css',
 +                      // @todo: Remove mediawiki.action.view.filepage.css
 +                      // and mediawiki.legacy/images/checker.png when cache has cleared
 +                      'resources/src/mediawiki.action/mediawiki.action.view.filepage.css',
                        'resources/src/mediawiki.legacy/shared.css' => array( 'media' => 'screen' )
                ),
        ),
                        'resources/src/mediawiki.widgets/mw.widgets.NamespaceInputWidget.js',
                        'resources/src/mediawiki.widgets/mw.widgets.ComplexNamespaceInputWidget.js',
                        'resources/src/mediawiki.widgets/mw.widgets.TitleInputWidget.js',
+                       'resources/src/mediawiki.widgets/mw.widgets.ComplexTitleInputWidget.js',
                        'resources/src/mediawiki.widgets/mw.widgets.TitleOptionWidget.js',
                        'resources/src/mediawiki.widgets/mw.widgets.UserInputWidget.js',
 +                      'resources/src/mediawiki.widgets/mw.widgets.CategorySelector.js',
                ),
                'skinStyles' => array(
                        'default' => array(
                'skinStyles' => array(
                        'default' => array(
                                'resources/src/mediawiki.widgets/mw.widgets.ComplexNamespaceInputWidget.base.css',
+                               'resources/src/mediawiki.widgets/mw.widgets.ComplexTitleInputWidget.base.css',
                        ),
                ),
                'position' => 'top',
                var widget = this;
  
                // Config initialization
 -              config = $.extend( { maxLength: 255 }, config );
 +              config = $.extend( {
 +                      maxLength: 255,
 +                      limit: 10
 +              }, config );
  
                // Parent constructor
                mw.widgets.TitleInputWidget.parent.call( this, $.extend( {}, config, { autocomplete: false } ) );
@@@ -41,7 -38,7 +41,7 @@@
                OO.ui.mixin.LookupElement.call( this, config );
  
                // Properties
 -              this.limit = config.limit || 10;
 +              this.limit = config.limit;
                this.maxLength = config.maxLength;
                this.namespace = config.namespace !== undefined ? config.namespace : null;
                this.relative = config.relative !== undefined ? config.relative : true;
  
        /* Methods */
  
+       /**
+        * Get the namespace to prepend to titles in suggestions, if any.
+        *
+        * @return {number|null} Namespace number
+        */
+       mw.widgets.TitleInputWidget.prototype.getNamespace = function () {
+               return this.namespace;
+       };
+       /**
+        * Set the namespace to prepend to titles in suggestions, if any.
+        *
+        * @param {number|null} namespace Namespace number
+        */
+       mw.widgets.TitleInputWidget.prototype.setNamespace = function ( namespace ) {
+               this.namespace = namespace;
+               this.lookupCache = {};
+               this.closeLookupMenu();
+       };
        /**
         * @inheritdoc
         */
                                        widget.interwikiPrefixes.indexOf( interwiki ) !== -1
                                ) {
                                        return $.Deferred().resolve( { query: {
 -                                              pages: [{
 +                                              pages: [ {
                                                        title: widget.value
 -                                              }]
 +                                              } ]
                                        } } ).promise( promiseAbortObject );
                                } else {
                                        params = {
  
                if ( data.redirects ) {
                        for ( i = 0, len = data.redirects.length; i < len; i++ ) {
 -                              redirect = data.redirects[i];
 -                              redirectsTo[redirect.to] = redirectsTo[redirect.to] || [];
 -                              redirectsTo[redirect.to].push( redirect.from );
 +                              redirect = data.redirects[ i ];
 +                              redirectsTo[ redirect.to ] = redirectsTo[ redirect.to ] || [];
 +                              redirectsTo[ redirect.to ].push( redirect.from );
                        }
                }
  
                for ( index in data.pages ) {
 -                      suggestionPage = data.pages[index];
 -                      pageData[suggestionPage.title] = {
 +                      suggestionPage = data.pages[ index ];
 +                      pageData[ suggestionPage.title ] = {
                                missing: suggestionPage.missing !== undefined,
                                redirect: suggestionPage.redirect !== undefined,
                                disambiguation: OO.getProp( suggestionPage, 'pageprops', 'disambiguation' ) !== undefined,
                                titles.push( suggestionPage.title );
                        }
  
 -                      redirects = redirectsTo[suggestionPage.title] || [];
 +                      redirects = redirectsTo[ suggestionPage.title ] || [];
                        for ( i = 0, len = redirects.length; i < len; i++ ) {
 -                              pageData[redirects[i]] = {
 +                              pageData[ redirects[ i ] ] = {
                                        missing: false,
                                        redirect: true,
                                        disambiguation: false,
                                        description: mw.msg( 'mw-widgets-titleinput-description-redirect', suggestionPage.title )
                                };
 -                              titles.push( redirects[i] );
 +                              titles.push( redirects[ i ] );
                        }
                }
  
                );
  
                if ( !pageExists ) {
 -                      pageData[this.value] = {
 +                      pageData[ this.value ] = {
                                missing: true, redirect: false, disambiguation: false,
                                description: mw.msg( 'mw-widgets-titleinput-description-new-page' )
                        };
                        titles.push( this.value );
                }
                for ( i = 0, len = titles.length; i < len; i++ ) {
 -                      page = pageData[titles[i]] || {};
 -                      items.push( new mw.widgets.TitleOptionWidget( this.getOptionWidgetData( titles[i], page ) ) );
 +                      page = pageData[ titles[ i ] ] || {};
 +                      items.push( new mw.widgets.TitleOptionWidget( this.getOptionWidgetData( titles[ i ], page ) ) );
                }
  
                return items;