Merge "Converted FileBackendStore to using the WAN cache"
[lhc/web/wiklou.git] / includes / htmlform / HTMLCheckMatrix.php
index 323d2d9..83f1266 100644 (file)
@@ -75,21 +75,17 @@ class HTMLCheckMatrix extends HTMLFormField implements HTMLNestedFilterable {
         * mParams['rows'] is an array with row labels as keys and row tags as values.
         * mParams['columns'] is an array with column labels as keys and column tags as values.
         *
-        * @param array $value of the options that should be checked
+        * @param array $value Array of the options that should be checked
         *
-        * @return String
+        * @return string
         */
        function getInputHTML( $value ) {
                $html = '';
                $tableContents = '';
-               $attribs = array();
                $rows = $this->mParams['rows'];
                $columns = $this->mParams['columns'];
 
-               // If the disabled param is set, disable all the options
-               if ( !empty( $this->mParams['disabled'] ) ) {
-                       $attribs['disabled'] = 'disabled';
-               }
+               $attribs = $this->getAttributes( array( 'disabled', 'tabindex' ) );
 
                // Build the column headers
                $headerContents = Html::rawElement( 'td', array(), ' ' );
@@ -117,8 +113,9 @@ class HTMLCheckMatrix extends HTMLFormField implements HTMLNestedFilterable {
                        foreach ( $columns as $columnTag ) {
                                $thisTag = "$columnTag-$rowTag";
                                // Construct the checkbox
+                               $thisId = "{$this->mID}-$thisTag";
                                $thisAttribs = array(
-                                       'id' => "{$this->mID}-$thisTag",
+                                       'id' => $thisId,
                                        'value' => $thisTag,
                                );
                                $checked = in_array( $thisTag, (array)$value, true );
@@ -129,10 +126,17 @@ class HTMLCheckMatrix extends HTMLFormField implements HTMLNestedFilterable {
                                        $checked = true;
                                        $thisAttribs['disabled'] = 1;
                                }
+                               $chkBox = Xml::check( "{$this->mName}[]", $checked, $attribs + $thisAttribs );
+                               if ( $this->mParent->getConfig()->get( 'UseMediaWikiUIEverywhere' ) ) {
+                                       $chkBox = Html::openElement( 'div', array( 'class' => 'mw-ui-checkbox' ) ) .
+                                               $chkBox .
+                                               Html::element( 'label', array( 'for' => $thisId ) ) .
+                                               Html::closeElement( 'div' );
+                               }
                                $rowContents .= Html::rawElement(
                                        'td',
                                        array(),
-                                       Xml::check( "{$this->mName}[]", $checked, $attribs + $thisAttribs )
+                                       $chkBox
                                );
                        }
                        $tableContents .= Html::rawElement( 'tr', array(), "\n$rowContents\n" );
@@ -163,9 +167,9 @@ class HTMLCheckMatrix extends HTMLFormField implements HTMLNestedFilterable {
         * line above the options in the case of a checkbox matrix, i.e. it's always
         * a "vertical-label".
         *
-        * @param string $value the value to set the input to
+        * @param string $value The value to set the input to
         *
-        * @return String complete HTML table row
+        * @return string Complete HTML table row
         */
        function getTableRow( $value ) {
                list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value );
@@ -174,6 +178,13 @@ class HTMLCheckMatrix extends HTMLFormField implements HTMLNestedFilterable {
                $helptext = $this->getHelpTextHtmlTable( $this->getHelpText() );
                $cellAttributes = array( 'colspan' => 2 );
 
+               $hideClass = '';
+               $hideAttributes = array();
+               if ( $this->mHideIf ) {
+                       $hideAttributes['data-hide-if'] = FormatJson::encode( $this->mHideIf );
+                       $hideClass = 'mw-htmlform-hide-if';
+               }
+
                $label = $this->getLabelHtml( $cellAttributes );
 
                $field = Html::rawElement(
@@ -182,18 +193,21 @@ class HTMLCheckMatrix extends HTMLFormField implements HTMLNestedFilterable {
                        $inputHtml . "\n$errors"
                );
 
-               $html = Html::rawElement( 'tr', array( 'class' => 'mw-htmlform-vertical-label' ), $label );
+               $html = Html::rawElement( 'tr',
+                       array( 'class' => "mw-htmlform-vertical-label $hideClass" ) + $hideAttributes,
+                       $label );
                $html .= Html::rawElement( 'tr',
-                       array( 'class' => "mw-htmlform-field-$fieldType {$this->mClass} $errorClass" ),
+                       array( 'class' => "mw-htmlform-field-$fieldType {$this->mClass} $errorClass $hideClass" ) +
+                               $hideAttributes,
                        $field );
 
                return $html . $helptext;
        }
 
        /**
-        * @param $request WebRequest
+        * @param WebRequest $request
         *
-        * @return Array
+        * @return array
         */
        function loadDataFromRequest( $request ) {
                if ( $this->mParent->getMethod() == 'post' ) {