X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/mediawiki.git/blobdiff_plain/19e297c21b10b1b8a3acad5e73fc71dcb35db44a..6932310fd58ebef145fa01eb76edf7150284d8ea:/includes/htmlform/HTMLFormElement.php diff --git a/includes/htmlform/HTMLFormElement.php b/includes/htmlform/HTMLFormElement.php new file mode 100644 index 00000000..10db90cc --- /dev/null +++ b/includes/htmlform/HTMLFormElement.php @@ -0,0 +1,65 @@ +hideIf = isset( $config['hideIf'] ) ? $config['hideIf'] : null; + $this->modules = isset( $config['modules'] ) ? $config['modules'] : []; + + // Initialization + if ( $this->hideIf ) { + $this->addClasses( [ 'mw-htmlform-hide-if' ] ); + } + if ( $this->modules ) { + // JS code must be able to read this before infusing (before OOjs UI is even loaded), + // so we put this in a separate attribute (not with the rest of the config). + // And it's not needed anymore after infusing, so we don't put it in JS config at all. + $this->setAttributes( [ 'data-mw-modules' => implode( ',', $this->modules ) ] ); + } + $this->registerConfigCallback( function ( &$config ) { + if ( $this->hideIf !== null ) { + $config['hideIf'] = $this->hideIf; + } + } ); + } +} + +class HTMLFormFieldLayout extends OOUI\FieldLayout { + use HTMLFormElement; + + public function __construct( $fieldWidget, array $config = [] ) { + // Parent constructor + parent::__construct( $fieldWidget, $config ); + // Traits + $this->initializeHTMLFormElement( $config ); + } + + protected function getJavaScriptClassName() { + return 'mw.htmlform.FieldLayout'; + } +} + +class HTMLFormActionFieldLayout extends OOUI\ActionFieldLayout { + use HTMLFormElement; + + public function __construct( $fieldWidget, $buttonWidget = false, array $config = [] ) { + // Parent constructor + parent::__construct( $fieldWidget, $buttonWidget, $config ); + // Traits + $this->initializeHTMLFormElement( $config ); + } + + protected function getJavaScriptClassName() { + return 'mw.htmlform.ActionFieldLayout'; + } +}