wiki.techinc.nl/includes/widget/ComplexTitleInputWidget.php
Umherirrender aed646001c htmlform: Add missing documentation to class properties
Add doc-typehints to class properties found by the PropertyDocumentation
sniff to improve the documentation.

Once the sniff is enabled it avoids that new code is missing type
declarations. This is focused on documentation and does not change code.

Change-Id: I1f306a3925d6768209a06e70082598b2f70cd319
2024-09-14 11:49:05 +00:00

70 lines
1.8 KiB
PHP

<?php
namespace MediaWiki\Widget;
use OOUI\Widget;
/**
* Complex title input widget.
*
* @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
* @license MIT
*/
class ComplexTitleInputWidget extends Widget {
/** @var array */
protected $config;
/** @var NamespaceInputWidget|null */
protected $namespace = null;
/** @var TitleInputWidget|null */
protected $title = null;
/**
* Like TitleInputWidget, but the namespace has to be input through a separate dropdown field.
*
* @param array $config Configuration options
* - array $config['namespace'] Configuration for the NamespaceInputWidget dropdown
* with list of namespaces
* - array $config['title'] Configuration for the TitleInputWidget text field
* @phan-param array{namespace?:array,title?:array} $config
*/
public function __construct( array $config = [] ) {
// Configuration initialization
$config = array_merge(
[
'namespace' => [],
'title' => [],
],
$config
);
parent::__construct( $config );
// Properties
$this->config = $config;
$this->namespace = new NamespaceInputWidget( $config['namespace'] );
$this->title = new TitleInputWidget( array_merge(
$config['title'],
[
'relative' => true,
'namespace' => $config['namespace']['value'] ?? null,
]
) );
// Initialization
$this
->addClasses( [ 'mw-widget-complexTitleInputWidget' ] )
->appendContent( $this->namespace, $this->title );
}
protected function getJavaScriptClassName() {
return 'mw.widgets.ComplexTitleInputWidget';
}
public function getConfig( &$config ) {
$config['namespace'] = $this->config['namespace'];
$config['namespace']['dropdown']['$overlay'] = true;
$config['title'] = $this->config['title'];
$config['title']['$overlay'] = true;
return parent::getConfig( $config );
}
}