diff options
Diffstat (limited to 'includes/htmlform/HTMLFormField.php')
| -rw-r--r-- | includes/htmlform/HTMLFormField.php | 50 | 
1 files changed, 44 insertions, 6 deletions
| diff --git a/includes/htmlform/HTMLFormField.php b/includes/htmlform/HTMLFormField.php index 4cf23942..9576c77c 100644 --- a/includes/htmlform/HTMLFormField.php +++ b/includes/htmlform/HTMLFormField.php @@ -13,6 +13,7 @@ abstract class HTMLFormField {  	protected $mLabel; # String label.  Set on construction  	protected $mID;  	protected $mClass = ''; +	protected $mVFormClass = '';  	protected $mHelpClass = false;  	protected $mDefault;  	protected $mOptions = false; @@ -126,6 +127,7 @@ abstract class HTMLFormField {  	 * @param array $alldata  	 * @param array $params  	 * @return bool +	 * @throws MWException  	 */  	protected function isHiddenRecurse( array $alldata, array $params ) {  		$origParams = $params; @@ -217,7 +219,7 @@ abstract class HTMLFormField {  				default:  					throw new MWException( "Unknown operation" );  			} -		} catch ( MWException $ex ) { +		} catch ( Exception $ex ) {  			throw new MWException(  				"Invalid hide-if specification for $this->mName: " .  				$ex->getMessage() . " in " . var_export( $origParams, true ), @@ -343,6 +345,10 @@ abstract class HTMLFormField {  	function __construct( $params ) {  		$this->mParams = $params; +		if ( isset( $params['parent'] ) && $params['parent'] instanceof HTMLForm ) { +			$this->mParent = $params['parent']; +		} +  		# Generate the label from a message, if possible  		if ( isset( $params['label-message'] ) ) {  			$msgInfo = $params['label-message']; @@ -354,7 +360,7 @@ abstract class HTMLFormField {  				$msgInfo = array();  			} -			$this->mLabel = wfMessage( $msg, $msgInfo )->parse(); +			$this->mLabel = $this->msg( $msg, $msgInfo )->parse();  		} elseif ( isset( $params['label'] ) ) {  			if ( $params['label'] === ' ' ) {  				// Apparently some things set   directly and in an odd format @@ -507,10 +513,7 @@ abstract class HTMLFormField {  			array( 'class' => $outerDivClass ) + $cellAttributes,  			$inputHtml . "\n$errors"  		); -		$divCssClasses = array( "mw-htmlform-field-$fieldType", $this->mClass, $errorClass ); -		if ( $this->mParent->isVForm() ) { -			$divCssClasses[] = 'mw-ui-vform-field'; -		} +		$divCssClasses = array( "mw-htmlform-field-$fieldType", $this->mClass, $this->mVFormClass, $errorClass );  		$wrapperAttributes = array(  			'class' => $divCssClasses, @@ -550,6 +553,41 @@ abstract class HTMLFormField {  	}  	/** +	 * Get the complete field for the input, including help text, +	 * labels, and whatever. Fall back from 'vform' to 'div' when not overridden. +	 * +	 * @since 1.25 +	 * @param string $value The value to set the input to. +	 * @return string Complete HTML field. +	 */ +	public function getVForm( $value ) { +		// Ewwww +		$this->mVFormClass = ' mw-ui-vform-field'; +		return $this->getDiv( $value ); +	} + +	/** +	 * Get the complete field as an inline element. +	 * @since 1.25 +	 * @param string $value The value to set the input to. +	 * @return string Complete HTML inline element +	 */ +	public function getInline( $value ) { +		list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value ); +		$inputHtml = $this->getInputHTML( $value ); +		$helptext = $this->getHelpTextHtmlDiv( $this->getHelpText() ); +		$cellAttributes = array(); +		$label = $this->getLabelHtml( $cellAttributes ); + +		$html = "\n" . $errors . +			$label . ' ' . +			$inputHtml . +			$helptext; + +		return $html; +	} + +	/**  	 * Generate help text HTML in table format  	 * @since 1.20  	 * | 
