Merge "Special:Preferences: Use OOjs UI"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 14 Nov 2017 22:52:13 +0000 (22:52 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 14 Nov 2017 22:52:14 +0000 (22:52 +0000)
1  2 
includes/specials/SpecialPreferences.php
resources/Resources.php

@@@ -50,8 -50,8 +50,8 @@@ class SpecialPreferences extends Specia
                        return;
                }
  
-               $out->addModules( 'mediawiki.special.preferences' );
-               $out->addModuleStyles( 'mediawiki.special.preferences.styles' );
+               $out->addModules( 'mediawiki.special.preferences.ooui' );
+               $out->addModuleStyles( 'mediawiki.special.preferences.styles.ooui' );
  
                $session = $this->getRequest()->getSession();
                if ( $session->get( 'specialPreferencesSaveSuccess' ) ) {
  
                $htmlForm = $this->getFormObject( $user, $this->getContext() );
                $htmlForm->setSubmitCallback( [ 'Preferences', 'tryUISubmit' ] );
-               $sectionTitles = $htmlForm->getPreferenceSections();
-               $prefTabs = '';
-               foreach ( $sectionTitles as $key ) {
-                       $prefTabs .= Html::rawElement( 'li',
-                               [
-                                       'role' => 'presentation',
-                                       'class' => ( $key === 'personal' ) ? 'selected' : null
-                               ],
-                               Html::rawElement( 'a',
-                                       [
-                                               'id' => 'preftab-' . $key,
-                                               'role' => 'tab',
-                                               'href' => '#mw-prefsection-' . $key,
-                                               'aria-controls' => 'mw-prefsection-' . $key,
-                                               'aria-selected' => ( $key === 'personal' ) ? 'true' : 'false',
-                                               'tabIndex' => ( $key === 'personal' ) ? 0 : -1,
-                                       ],
-                                       $htmlForm->getLegend( $key )
-                               )
-                       );
+               $prefTabs = [];
+               foreach ( $htmlForm->getPreferenceSections() as $key ) {
+                       $prefTabs[] = [
+                               'name' => $key,
+                               'label' => $htmlForm->getLegend( $key ),
+                       ];
                }
+               $out->addJsConfigVars( 'wgPreferencesTabs', $prefTabs );
+               // TODO: Render fake tabs here to avoid FOUC.
+               // $out->addHTML( $fakeTabs );
  
-               $out->addHTML(
-                       Html::rawElement( 'ul',
-                               [
-                                       'id' => 'preftoc',
-                                       'role' => 'tablist'
-                               ],
-                               $prefTabs )
-               );
                $htmlForm->show();
        }
  
                return Preferences::getFormObject( $user, $context );
        }
  
 -      private function showResetForm() {
 +      protected function showResetForm() {
                if ( !$this->getUser()->isAllowed( 'editmyoptions' ) ) {
                        throw new PermissionsError( 'editmyoptions' );
                }
  
                $context = new DerivativeContext( $this->getContext() );
                $context->setTitle( $this->getPageTitle( 'reset' ) ); // Reset subpage
-               $htmlForm = new HTMLForm( [], $context, 'prefs-restore' );
+               $htmlForm = HTMLForm::factory( 'ooui', [], $context, 'prefs-restore' );
  
                $htmlForm->setSubmitTextMsg( 'restoreprefs' );
                $htmlForm->setSubmitDestructive();
diff --combined resources/Resources.php
@@@ -133,7 -133,7 +133,7 @@@ return 
  
        'jquery' => [
                'scripts' => [
 -                      'resources/lib/jquery/jquery3.js',
 +                      'resources/lib/jquery/jquery.js',
                        'resources/lib/jquery/jquery.migrate.js',
                ],
                'raw' => true,
                'messages' => [ 'brackets', 'word-separator' ],
                'targets' => [ 'mobile', 'desktop' ],
        ],
 -      'jquery.appear' => [
 -              'deprecated' => 'Please use "mediawiki.viewport" instead.',
 -              'scripts' => 'resources/lib/jquery/jquery.appear.js',
 -      ],
        'jquery.async' => [
                'scripts' => 'resources/lib/jquery/jquery.async.js',
        ],
 -      'jquery.autoEllipsis' => [
 -              'deprecated' => 'Use CSS text-overflow instead.',
 -              'scripts' => 'resources/src/jquery/jquery.autoEllipsis.js',
 -              'dependencies' => 'jquery.highlightText',
 -              'targets' => [ 'desktop', 'mobile' ],
 -      ],
 -      'jquery.badge' => [
 -              'deprecated' => 'Please use Notifications instead.',
 -              'scripts' => 'resources/src/jquery/jquery.badge.js',
 -              'styles' => 'resources/src/jquery/jquery.badge.css',
 -              'dependencies' => 'mediawiki.language',
 -      ],
        'jquery.byteLength' => [
                'scripts' => 'resources/src/jquery/jquery.byteLength.js',
                'targets' => [ 'desktop', 'mobile' ],
                'scripts' => 'resources/src/jquery/jquery.mw-jump.js',
                'targets' => [ 'desktop', 'mobile' ],
        ],
 -      'jquery.placeholder' => [
 -              'deprecated' => 'Use of "jquery.placeholder" is deprecated since MediaWiki 1.29.0',
 -
 -              'scripts' => 'resources/src/jquery/jquery.placeholder.js',
 -              'targets' => [ 'desktop', 'mobile' ],
 -      ],
        'jquery.qunit' => [
                'scripts' => 'resources/lib/qunitjs/qunit.js',
                'styles' => 'resources/lib/qunitjs/qunit.css',
        /* jQuery UI */
  
        'jquery.ui.core' => [
 -              'deprecated' => 'Please use "mediawiki.ui.button" or "oojs-ui" instead.',
 +              'deprecated' => 'Please use OOUI instead.',
                'scripts' => 'resources/lib/jquery.ui/jquery.ui.core.js',
                'dependencies' => [
                        'jquery.ui.core.styles',
                'scripts' => 'resources/src/mediawiki/mediawiki.notification.js',
                'dependencies' => [
                        'mediawiki.util',
 +                      'mediawiki.visibleTimeout',
                ],
                'targets' => [ 'desktop', 'mobile' ],
        ],
                'scripts' => 'resources/src/mediawiki/mediawiki.experiments.js',
                'targets' => [ 'desktop', 'mobile' ],
        ],
 +      'mediawiki.editfont.styles' => [
 +              'styles' => 'resources/src/mediawiki/mediawiki.editfont.css',
 +              'targets' => [ 'desktop', 'mobile' ],
 +      ],
 +      'mediawiki.visibleTimeout' => [
 +              'scripts' => 'resources/src/mediawiki/mediawiki.visibleTimeout.js',
 +              'targets' => [ 'desktop', 'mobile' ],
 +      ],
  
        /* MediaWiki Action */
  
                'styles' => 'resources/src/mediawiki.action/mediawiki.action.edit.css',
                'dependencies' => [
                        'mediawiki.action.edit.styles',
 +                      'mediawiki.editfont.styles',
                        'jquery.textSelection',
                        'oojs-ui-core',
                        'mediawiki.widgets.visibleByteLimit',
                        'rcfilters-savedqueries-new-name-label',
                        'rcfilters-savedqueries-new-name-placeholder',
                        'rcfilters-savedqueries-add-new-title',
 +                      'rcfilters-savedqueries-already-saved',
                        'rcfilters-savedqueries-apply-label',
                        'rcfilters-savedqueries-apply-and-setdefault-label',
                        'rcfilters-savedqueries-cancel-label',
                        'rcfilters-tag-prefix-tags',
                        'rcfilters-exclude-button-off',
                        'rcfilters-exclude-button-on',
 -                      'rcfilters-view-advanced-filters-label',
                        'rcfilters-view-tags',
                        'rcfilters-view-namespaces-tooltip',
                        'rcfilters-view-tags-tooltip',
                        'rcfilters-other-review-tools',
                        'blanknamespace',
                        'namespaces',
 +                      'tags-title',
                        'invert',
                        'recentchanges-noresult',
 +                      'recentchanges-timeout',
 +                      'recentchanges-network',
                        'quotation-marks',
                ],
                'dependencies' => [
        'mediawiki.special.pagesWithProp' => [
                'styles' => 'resources/src/mediawiki.special/mediawiki.special.pagesWithProp.css',
        ],
-       'mediawiki.special.preferences' => [
+       'mediawiki.special.preferences.ooui' => [
                'scripts' => [
                        'resources/src/mediawiki.special/mediawiki.special.preferences.confirmClose.js',
                        'resources/src/mediawiki.special/mediawiki.special.preferences.convertmessagebox.js',
                        'mediawiki.language',
                        'mediawiki.confirmCloseWindow',
                        'mediawiki.notification.convertmessagebox',
+                       'oojs-ui-widgets',
+                       'mediawiki.widgets.SelectWithInputWidget',
                ],
        ],
-       'mediawiki.special.preferences.styles' => [
+       'mediawiki.special.preferences.styles.ooui' => [
                'styles' => 'resources/src/mediawiki.special/mediawiki.special.preferences.styles.css',
        ],
        'mediawiki.special.recentchanges' => [
        /* MediaWiki UI */
  
        'mediawiki.ui' => [
 +              'deprecated' => 'Please use OOUI instead.',
                'skinStyles' => [
                        'default' => [
                                'resources/src/mediawiki.ui/default.less',
                ],
                'targets' => [ 'desktop', 'mobile' ],
        ],
 -      'mediawiki.widgets.CategorySelector' => [
 -              'deprecated' => 'Use "mw.widgets.CategoryMultiselectWidget" instead. See T161285.',
 -              'dependencies' => [
 -                      'mediawiki.widgets.CategoryMultiselectWidget',
 -              ],
 -      ],
        'mediawiki.widgets.CategoryMultiselectWidget' => [
                'scripts' => [
                        'resources/src/mediawiki.widgets/mw.widgets.CategoryCapsuleItemWidget.js',