http://www.mediawiki.org/wiki/Special:Code/MediaWiki/100512

Revision: 100512
Author:   johnduhart
Date:     2011-10-22 20:03:40 +0000 (Sat, 22 Oct 2011)
Log Message:
-----------
Adding functions to HTMLForm for setting the submitText and WrapperLegend to 
messages instead of having to use wfMsg every single time

Modified Paths:
--------------
    trunk/phase3/includes/HTMLForm.php

Modified: trunk/phase3/includes/HTMLForm.php
===================================================================
--- trunk/phase3/includes/HTMLForm.php  2011-10-22 19:56:25 UTC (rev 100511)
+++ trunk/phase3/includes/HTMLForm.php  2011-10-22 20:03:40 UTC (rev 100512)
@@ -581,6 +581,14 @@
        }
 
        /**
+        * Set the text for the submit button to a message
+        * @param $msg String message key
+        */
+       public function setSubmitTextMsg( $msg ) {
+               return $this->setSubmitText( wfMsg( $msg ) );
+       }
+
+       /**
         * Get the text for the submit button, either customised or a default.
         * @return unknown_type
         */
@@ -619,6 +627,15 @@
        public function setWrapperLegend( $legend ) { $this->mWrapperLegend = 
$legend; }
 
        /**
+        * Prompt the whole form to be wrapped in a <fieldset>, with
+        * this message as its <legend> element.
+        * @param $msg String message key
+        */
+       public function setWrapperLegendMsg( $msg ) {
+               return $this->setWrapperLegend( wfMsg( $msg ) );
+       }
+
+       /**
         * Set the prefix for various default messages
         * TODO: currently only used for the <fieldset> legend on forms
         * with multiple sections; should be used elsewhre?
@@ -1357,6 +1374,8 @@
                        return $p;
                }
 
+               print_r( $value );
+
                $validOptions = HTMLFormField::flattenOptions( 
$this->mParams['options'] );
 
                if ( in_array( $value, $validOptions ) )
@@ -1382,10 +1401,54 @@
                        $select->setAttribute( 'disabled', 'disabled' );
                }
 
+               if ( !empty( $this->mParams['multiple'] ) ) {
+                       $select->setAttribute( 'name', $this->mName . '[]' );
+                       $select->setAttribute( 'multiple', 'multiple' );
+
+                       if ( !empty( $this->mParams['size'] ) ) {
+                               $select->setAttribute( 'size', 
$this->mParams['size'] );
+                       }
+               }
+
                $select->addOptions( $this->mParams['options'] );
 
                return $select->getHTML();
        }
+
+       /**
+        * @param  $request WebRequest
+        * @return String
+        */
+       function loadDataFromRequest( $request ) {
+               if ( $this->mParent->getMethod() == 'post' ) {
+                       if( $request->wasPosted() ){
+                               # Checkboxes are just not added to the request 
arrays if they're not checked,
+                               # so it's perfectly possible for there not to 
be an entry at all
+                               return $request->getArray( $this->mName, 
array() );
+                       } else {
+                               # That's ok, the user has not yet submitted the 
form, so show the defaults
+                               return $this->getDefault();
+                       }
+               } else {
+                       # This is the impossible case: if we look at $_GET and 
see no data for our
+                       # 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.
+                       # @todo FIXME...
+                       return $request->getArray( $this->mName, array() );
+               }
+       }
+
+       public static function keysAreValues( $array ) {
+               $resultArray = array();
+               
+               foreach ( $array as $name => $value ) {
+                       $resultArray[$value] = $value;
+               }
+
+               return $resultArray;
+       }
 }
 
 /**
@@ -1861,7 +1924,7 @@
 
                $this->mParent->addHiddenField(
                        $this->mName,
-                       $this->mDefault,
+                       $value,
                        $params
                );
 


_______________________________________________
MediaWiki-CVS mailing list
MediaWiki-CVS@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to