getNamespaceDropdownOptions( $config ); // Parent constructor parent::__construct( $config ); // Properties $this->includeAllValue = isset( $config['includeAllValue'] ) ? $config['includeAllValue'] : null; $this->exclude = isset( $config['exclude'] ) ? $config['exclude'] : array(); // Initialization $this->addClasses( array( 'mw-widget-namespaceInputWidget' ) ); } protected function getNamespaceDropdownOptions( array $config ) { $namespaceOptionsParams = array( 'all' => isset( $config['includeAllValue'] ) ? $config['includeAllValue'] : null, 'exclude' => isset( $config['exclude'] ) ? $config['exclude'] : null ); $namespaceOptions = \Html::namespaceSelectorOptions( $namespaceOptionsParams ); $options = array(); foreach ( $namespaceOptions as $id => $name ) { $options[] = array( '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 return \OOUI\InputWidget::getConfig( $config ); } }