Hidden elements doesn't need an extra element in the DOM, but OOUIHTMLForm would render one, wrapped into a fieldLayout div. Fix this by adding the possibility to bypass the output, and only construct a HTMLFormField element and run the output method. Bug: T117768 Change-Id: I8c9d2ff862f1b14d72a9bb9e1a51e8745af6d1f4
66 lines
1.3 KiB
PHP
66 lines
1.3 KiB
PHP
<?php
|
|
|
|
class HTMLHiddenField extends HTMLFormField {
|
|
protected $outputAsDefault = true;
|
|
|
|
public function __construct( $params ) {
|
|
parent::__construct( $params );
|
|
|
|
if ( isset( $this->mParams['output-as-default'] ) ) {
|
|
$this->outputAsDefault = (bool)$this->mParams['output-as-default'];
|
|
}
|
|
|
|
# Per HTML5 spec, hidden fields cannot be 'required'
|
|
# http://www.w3.org/TR/html5/forms.html#hidden-state-%28type=hidden%29
|
|
unset( $this->mParams['required'] );
|
|
}
|
|
|
|
public function getHiddenFieldData( $value ) {
|
|
$params = array();
|
|
if ( $this->mID ) {
|
|
$params['id'] = $this->mID;
|
|
}
|
|
|
|
if ( $this->outputAsDefault ) {
|
|
$value = $this->mDefault;
|
|
}
|
|
|
|
return array( $this->mName, $value, $params );
|
|
}
|
|
|
|
public function getTableRow( $value ) {
|
|
list( $name, $value, $params ) = $this->getHiddenFieldData( $value );
|
|
$this->mParent->addHiddenField( $name, $value, $params );
|
|
return '';
|
|
}
|
|
|
|
/**
|
|
* @param string $value
|
|
* @return string
|
|
* @since 1.20
|
|
*/
|
|
public function getDiv( $value ) {
|
|
return $this->getTableRow( $value );
|
|
}
|
|
|
|
/**
|
|
* @param string $value
|
|
* @return string
|
|
* @since 1.20
|
|
*/
|
|
public function getRaw( $value ) {
|
|
return $this->getTableRow( $value );
|
|
}
|
|
|
|
public function getInputHTML( $value ) {
|
|
return '';
|
|
}
|
|
|
|
public function canDisplayErrors() {
|
|
return false;
|
|
}
|
|
|
|
public function hasVisibleOutput() {
|
|
return false;
|
|
}
|
|
}
|