wiki.techinc.nl/includes/widget/UsersMultiselectWidget.php
Phantom42 c70f464c07 UsersMultiselect widget and form field.
New widget and html form field, which allows selecting multiple
users using convenient single-line input (CapsuleMultiselectWidget)

Bug: T131492
Change-Id: I7b6ffe7fb47e0a7083e2a956156ab0f142444398
2017-02-01 00:35:33 +02: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['data'] = $this->usersArray;
}
if ( $this->inputName !== null ) {
$config['name'] = $this->inputName;
}
if ( $this->inputPlaceholder !== null ) {
$config['placeholder'] = $this->inputPlaceholder;
}
return parent::getConfig( $config );
}
}