getNamespaceDropdownOptions( $config ); parent::__construct( $config ); // Properties $this->includeAllValue = isset( $config['includeAllValue'] ) ? $config['includeAllValue'] : null; $this->exclude = isset( $config['exclude'] ) ? $config['exclude'] : []; // Initialization $this->addClasses( [ 'mw-widget-namespaceInputWidget' ] ); } protected function getNamespaceDropdownOptions( array $config ) { $namespaceOptionsParams = [ 'all' => isset( $config['includeAllValue'] ) ? $config['includeAllValue'] : null, 'exclude' => isset( $config['exclude'] ) ? $config['exclude'] : null ]; $namespaceOptions = \Html::namespaceSelectorOptions( $namespaceOptionsParams ); $options = []; foreach ( $namespaceOptions as $id => $name ) { $options[] = [ 'data' => (string)$id, 'label' => $name, ]; } return $options; } protected function getJavaScriptClassName() { return 'mw.widgets.NamespaceInputWidget'; } public function getConfig( &$config ) { $config['includeAllValue'] = $this->includeAllValue; $config['exclude'] = $this->exclude; // Skip DropdownInputWidget's getConfig(), we don't need 'options' config $config['dropdown']['$overlay'] = true; return \OOUI\InputWidget::getConfig( $config ); } }