wiki.techinc.nl/includes/widget/UsersMultiselectWidget.php
Roan Kattouw ef51ede976 UsersMultiSelectWidget: Port from CapsuleMultiselectWidget to MenuTagMultiselectWidget
Bonus:
* Remove puzzling code that claimed to fix a bug that I couldn't reproduce
  but instead made single-character searches never display suggestions
* Clear the input after choosing a menu item

Change-Id: I44e72205880d152639ee823238dc5ab84d34402b
2017-06-30 02:03:40 +00:00

68 lines
1.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* MediaWiki Widgets UsersMultiselectWidget class.
*
* @copyright 2017 MediaWiki Widgets Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
namespace MediaWiki\Widget;
use \OOUI\TextInputWidget;
/**
* Widget to select multiple users.
*/
class UsersMultiselectWidget extends \OOUI\Widget {
protected $usersArray = [];
protected $inputName = null;
protected $inputPlaceholder = null;
/**
* @param array $config Configuration options
* @param array $config['users'] Array of usernames to use as preset data
* @param array $config['placeholder'] Placeholder message for input
* @param array $config['name'] Name attribute (used in forms)
*/
public function __construct( array $config = [] ) {
parent::__construct( $config );
// Properties
if ( isset( $config['default'] ) ) {
$this->usersArray = $config['default'];
}
if ( isset( $config['name'] ) ) {
$this->inputName = $config['name'];
}
if ( isset( $config['placeholder'] ) ) {
$this->inputPlaceholder = $config['placeholder'];
}
$textarea = new TextInputWidget( [
'name' => $this->inputName,
'multiline' => true,
'value' => implode( "\n", $this->usersArray ),
'rows' => 25,
] );
$this->prependContent( $textarea );
}
protected function getJavaScriptClassName() {
return 'mw.widgets.UsersMultiselectWidget';
}
public function getConfig( &$config ) {
if ( $this->usersArray !== null ) {
$config['selected'] = $this->usersArray;
}
if ( $this->inputName !== null ) {
$config['name'] = $this->inputName;
}
if ( $this->inputPlaceholder !== null ) {
$config['placeholder'] = $this->inputPlaceholder;
}
return parent::getConfig( $config );
}
}