*
* TODO: Document 'section' / 'subsection' stuff
*/
-class HTMLForm extends ContextSource {
+class HTMLForm {
# A mapping of 'type' inputs onto standard HTMLFormField subclasses
static $typeMappings = array(
protected $mSubmitText;
protected $mSubmitTooltip;
+ protected $mContext; // <! RequestContext
protected $mTitle;
protected $mMethod = 'post';
*/
public function __construct( $descriptor, /*RequestContext*/ $context = null, $messagePrefix = '' ) {
if( $context instanceof RequestContext ){
- $this->setContext( $context );
+ $this->mContext = $context;
$this->mTitle = false; // We don't need them to set a title
$this->mMessagePrefix = $messagePrefix;
} else {
- $this->setContext( RequestContext::getMain() );
// B/C since 1.18
if( is_string( $context ) && $messagePrefix === '' ){
// it's actually $messagePrefix
* Add header text, inside the form.
* @param $msg String complete text of message to display
*/
- function addHeaderText( $msg, $section = null ) {
+ function addHeaderText( $msg, $section = null ) {
if ( is_null( $section ) ) {
- $this->mHeader .= $msg;
+ $this->mHeader .= $msg;
} else {
if ( !isset( $this->mSectionHeaders[$section] ) ) {
$this->mSectionHeaders[$section] = '';
* Add footer text, inside the form.
* @param $msg String complete text of message to display
*/
- function addFooterText( $msg, $section = null ) {
+ function addFooterText( $msg, $section = null ) {
if ( is_null( $section ) ) {
- $this->mFooter .= $msg;
+ $this->mFooter .= $msg;
} else {
if ( !isset( $this->mSectionFooters[$section] ) ) {
$this->mSectionFooters[$section] = '';
}
- $this->mSectionFooters[$section] .= $msg;
+ $this->mSectionFooters[$section] .= $msg;
}
}
/**
* Set the id for the submit button.
- * @param $t String. FIXME: Integrity is *not* validated
+ * @param $t String.
+ * @todo FIXME: Integrity of $t is *not* validated
*/
function setSubmitID( $t ) {
$this->mSubmitID = $t;
*/
function getTitle() {
return $this->mTitle === false
- ? parent::getTitle()
+ ? $this->getContext()->getTitle()
: $this->mTitle;
}
+ /**
+ * @return RequestContext
+ */
+ public function getContext(){
+ return $this->mContext instanceof RequestContext
+ ? $this->mContext
+ : RequestContext::getMain();
+ }
+
+ /**
+ * @return OutputPage
+ */
+ public function getOutput(){
+ return $this->getContext()->getOutput();
+ }
+
+ /**
+ * @return WebRequest
+ */
+ public function getRequest(){
+ return $this->getContext()->getRequest();
+ }
+
+ /**
+ * @return User
+ */
+ public function getUser(){
+ return $this->getContext()->getUser();
+ }
+
/**
* Set the method used to submit the form
* @param $method String
$legend = $this->getLegend( $key );
if ( isset( $this->mSectionHeaders[$key] ) ) {
$section = $this->mSectionHeaders[$key] . $section;
- }
+ }
if ( isset( $this->mSectionFooters[$key] ) ) {
$section .= $this->mSectionFooters[$key];
}
- $subsectionHtml .= Xml::fieldset( $legend, $section ) . "\n";
+ $subsectionHtml .= Xml::fieldset( $legend, $section ) . "\n";
}
}
/**
* Initialise the object
- * @param $params Associative Array. See HTMLForm doc for syntax.
+ * @param $params array Associative Array. See HTMLForm doc for syntax.
*/
function __construct( $params ) {
$this->mParams = $params;
$helptext = null;
if ( isset( $this->mParams['help-message'] ) ) {
- $msg = $this->mParams['help-message'];
- $helptext = wfMsgExt( $msg, 'parseinline' );
- if ( wfEmptyMsg( $msg ) ) {
- # Never mind
- $helptext = null;
+ $msg = wfMessage( $this->mParams['help-message'] );
+ if ( $msg->exists() ) {
+ $helptext = $msg->parse();
}
} elseif ( isset( $this->mParams['help-messages'] ) ) {
# help-message can be passed a message key (string) or an array containing
# a message key and additional parameters. This makes it impossible to pass
# an array of message key
- foreach( $this->mParams['help-messages'] as $msg ) {
- $candidate = wfMsgExt( $msg, 'parseinline' );
- if( wfEmptyMsg( $msg ) ) {
- $candidate = null;
+ foreach( $this->mParams['help-messages'] as $name ) {
+ $msg = wfMessage( $name );
+ if( $msg->exists() ) {
+ $helptext .= $msg->parse(); // append message
}
- $helptext .= $candidate; // append message
- }
+ }
} elseif ( isset( $this->mParams['help'] ) ) {
$helptext = $this->mParams['help'];
}
# If one of the options' 'name' is int(0), it is automatically selected.
# because PHP sucks and thinks int(0) == 'some string'.
# Working around this by forcing all of them to strings.
- foreach( $this->mParams['options'] as $key => &$opt ){
+ foreach( $this->mParams['options'] as &$opt ){
if( is_int( $opt ) ){
$opt = strval( $opt );
}
# field, is it because the user has not yet submitted the form, or that they
# have submitted it with all the options unchecked? We will have to assume the
# latter, which basically means that you can't specify 'positive' defaults
- # for GET forms. FIXME...
+ # for GET forms.
+ # @todo FIXME...
return $request->getArray( $this->mName, array() );
}
}
* Plus a text field underneath for an additional reason. The 'value' of the field is
* ""<select>: <extra reason>"", or "<extra reason>" if nothing has been selected in the
* select dropdown.
- * FIXME: If made 'required', only the text field should be compulsory.
+ * @todo FIXME: If made 'required', only the text field should be compulsory.
*/
class HTMLSelectAndOtherField extends HTMLSelectField {
}
}
$msg->inContentLanguage();
-
-
+
+
return '<tr><td></td><td class="mw-input">'
. '<div class="mw-editTools">'
. $msg->parseAsBlock()