From 62b4cee23fc8fc22177150f9c6f36801494f9cc9 Mon Sep 17 00:00:00 2001 From: Thalia Date: Wed, 21 Nov 2018 11:38:21 +0000 Subject: [PATCH] TitlesMultiselectWidget: display pending element 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 | 1 + includes/specials/SpecialBlock.php | 1 + includes/widget/PendingTextInputWidget.php | 26 +++++++++++++++++++ includes/widget/TitlesMultiselectWidget.php | 7 ++++- resources/Resources.php | 3 +++ ...w.widgets.TitlesMultiselectWidget.base.css | 11 ++++++++ 6 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 includes/widget/PendingTextInputWidget.php create mode 100644 resources/src/mediawiki.widgets/mw.widgets.TitlesMultiselectWidget.base.css diff --git a/autoload.php b/autoload.php index 02e35a85c3..ba5ff7af5a 100644 --- a/autoload.php +++ b/autoload.php @@ -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', diff --git a/includes/specials/SpecialBlock.php b/includes/specials/SpecialBlock.php index ea4cd2292a..e043a72a61 100644 --- a/includes/specials/SpecialBlock.php +++ b/includes/specials/SpecialBlock.php @@ -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 index 0000000000..e980741805 --- /dev/null +++ b/includes/widget/PendingTextInputWidget.php @@ -0,0 +1,26 @@ + true, + ], $config ); + + // Parent constructor + parent::__construct( $config ); + + // Initialization + $this->input->addClasses( [ 'mw-widgets-pendingTextInputWidget oo-ui-pendingElement-pending' ] ); + } +} diff --git a/includes/widget/TitlesMultiselectWidget.php b/includes/widget/TitlesMultiselectWidget.php index 0f5710fd86..0a50fcd545 100644 --- a/includes/widget/TitlesMultiselectWidget.php +++ b/includes/widget/TitlesMultiselectWidget.php @@ -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' ] ); } diff --git a/resources/Resources.php b/resources/Resources.php index 5af7783d5f..d12f89d4a2 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -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 index 0000000000..de43fb3183 --- /dev/null +++ b/resources/src/mediawiki.widgets/mw.widgets.TitlesMultiselectWidget.base.css @@ -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; +} -- 2.20.1