TitlesMultiselectWidget: display pending element
authorThalia <thalia.e.chan@googlemail.com>
Wed, 21 Nov 2018 11:38:21 +0000 (11:38 +0000)
committerThalia <thalia.e.chan@googlemail.com>
Wed, 5 Dec 2018 21:08:38 +0000 (21:08 +0000)
Create a PendingTextInputWidget and use it in
TitlesMultiSelectWidget instead of the multiline
text area for users who have JavaScript.

Bug: T210080
Change-Id: I824fea6a3df580d342e6087ab901fec025f0e70b

autoload.php
includes/specials/SpecialBlock.php
includes/widget/PendingTextInputWidget.php [new file with mode: 0644]
includes/widget/TitlesMultiselectWidget.php
resources/Resources.php
resources/src/mediawiki.widgets/mw.widgets.TitlesMultiselectWidget.base.css [new file with mode: 0644]

index 02e35a8..ba5ff7a 100644 (file)
@@ -924,6 +924,7 @@ $wgAutoloadLocalClasses = [
        'MediaWiki\\Widget\\DateTimeInputWidget' => __DIR__ . '/includes/widget/DateTimeInputWidget.php',
        'MediaWiki\\Widget\\ExpiryInputWidget' => __DIR__ . '/includes/widget/ExpiryInputWidget.php',
        'MediaWiki\\Widget\\NamespaceInputWidget' => __DIR__ . '/includes/widget/NamespaceInputWidget.php',
+       'MediaWiki\\Widget\\PendingTextInputWidget' => __DIR__ . '/includes/widget/PendingTextInputWidget.php',
        'MediaWiki\\Widget\\SearchInputWidget' => __DIR__ . '/includes/widget/SearchInputWidget.php',
        'MediaWiki\\Widget\\Search\\BasicSearchResultSetWidget' => __DIR__ . '/includes/widget/search/BasicSearchResultSetWidget.php',
        'MediaWiki\\Widget\\Search\\DidYouMeanWidget' => __DIR__ . '/includes/widget/search/DidYouMeanWidget.php',
index ea4cd22..e043a72 100644 (file)
@@ -386,6 +386,7 @@ class SpecialBlock extends FormSpecialPage {
         * @return string
         */
        protected function preText() {
+               $this->getOutput()->addModuleStyles( 'mediawiki.widgets.TitlesMultiselectWidget.styles' );
                $this->getOutput()->addModules( [ 'mediawiki.special.block' ] );
 
                $blockCIDRLimit = $this->getConfig()->get( 'BlockCIDRLimit' );
diff --git a/includes/widget/PendingTextInputWidget.php b/includes/widget/PendingTextInputWidget.php
new file mode 100644 (file)
index 0000000..e980741
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+
+namespace MediaWiki\Widget;
+
+use OOUI\TextInputWidget;
+
+/**
+ * Text input widget that displays pending animation.
+ */
+class PendingTextInputWidget extends TextInputWidget {
+
+       /**
+        * @param array $config Configuration options
+        */
+       public function __construct( array $config = [] ) {
+               $config = array_merge( [
+                       'disabled' => true,
+               ], $config );
+
+               // Parent constructor
+               parent::__construct( $config );
+
+               // Initialization
+               $this->input->addClasses( [ 'mw-widgets-pendingTextInputWidget oo-ui-pendingElement-pending' ] );
+       }
+}
index 0f5710f..0a50fcd 100644 (file)
@@ -54,9 +54,14 @@ class TitlesMultiselectWidget extends \OOUI\Widget {
                        'name' => $this->inputName,
                        'value' => implode( "\n", $this->titlesArray ),
                        'rows' => 10,
+                       'classes' => [
+                               'mw-widgets-titlesMultiselectWidget-multilineTextInputWidget'
+                       ],
                ], $this->input ) );
 
-               $this->appendContent( $textarea );
+               $pending = new PendingTextInputWidget();
+
+               $this->appendContent( $textarea, $pending );
                $this->addClasses( [ 'mw-widgets-titlesMultiselectWidget' ] );
        }
 
index 5af7783..d12f89d 100644 (file)
@@ -2733,6 +2733,9 @@ return [
                ],
                'targets' => [ 'desktop', 'mobile' ],
        ],
+       'mediawiki.widgets.TitlesMultiselectWidget.styles' => [
+               'styles' => 'resources/src/mediawiki.widgets/mw.widgets.TitlesMultiselectWidget.base.css',
+       ],
        'mediawiki.widgets.SearchInputWidget' => [
                'scripts' => [
                        'resources/src/mediawiki.widgets/mw.widgets.SearchInputWidget.js',
diff --git a/resources/src/mediawiki.widgets/mw.widgets.TitlesMultiselectWidget.base.css b/resources/src/mediawiki.widgets/mw.widgets.TitlesMultiselectWidget.base.css
new file mode 100644 (file)
index 0000000..de43fb3
--- /dev/null
@@ -0,0 +1,11 @@
+/*!
+ * MediaWiki Widgets - base TitlesMultiselectWidget styles.
+ *
+ * @copyright 2011-2018 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+.client-nojs .mw-widgets-titlesMultiselectWidget .mw-widgets-pendingTextInputWidget,
+.client-js .mw-widgets-titlesMultiselectWidget .mw-widgets-titlesMultiselectWidget-multilineTextInputWidget {
+       display: none;
+}