Merge "HTMLForm: Handle HTMLFormFieldWithButton subclasses in OOUI forms"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 23 Jul 2015 02:18:59 +0000 (02:18 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 23 Jul 2015 02:18:59 +0000 (02:18 +0000)
1  2 
includes/htmlform/HTMLFormField.php

@@@ -49,7 -49,7 +49,7 @@@ abstract class HTMLFormField 
         * Defaults to false, which getOOUI will interpret as "use the HTML version"
         *
         * @param string $value
 -       * @return OOUI\Widget|false
 +       * @return OOUI\\Widget|false
         */
        function getInputOOUI( $value ) {
                return false;
  
                $fieldType = get_class( $this );
                $helpText = $this->getHelpText();
-               $field = new OOUI\FieldLayout( $inputField, array(
+               $config = array(
                        'classes' => array( "mw-htmlform-field-$fieldType", $this->mClass, $errorClass ),
                        'align' => $this->getLabelAlignOOUI(),
                        'label' => $this->getLabel(),
                        'help' => $helpText !== null ? new OOUI\HtmlSnippet( $helpText ) : null,
                        'infusable' => $infusable,
-               ) );
+               );
+               $field = $this->getFieldLayoutOOUI( $inputField, $config );
  
                return $field . $errors;
        }
                return 'top';
        }
  
+       /**
+        * Get a FieldLayout (or subclass thereof) to wrap this field in when using OOUI output.
+        * @return OOUI\FieldLayout|OOUI\ActionFieldLayout
+        */
+       protected function getFieldLayoutOOUI( $inputField, $config ) {
+               if ( isset( $this->mClassWithButton ) ) {
+                       $buttonWidget = $this->mClassWithButton->getInputOOUI( '' );
+                       return new OOUI\ActionFieldLayout( $inputField, $buttonWidget, $config );
+               }
+               return new OOUI\FieldLayout( $inputField, $config );
+       }
        /**
         * Get the complete raw fields for the input, including help text,
         * labels, and whatever.