diff options
Diffstat (limited to 'includes/Xml.php')
-rw-r--r-- | includes/Xml.php | 87 |
1 files changed, 49 insertions, 38 deletions
diff --git a/includes/Xml.php b/includes/Xml.php index 7e5b3cdb..120312dd 100644 --- a/includes/Xml.php +++ b/includes/Xml.php @@ -1,9 +1,28 @@ <?php +/** + * Methods to generate XML. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + */ /** * Module of static functions for generating XML */ - class Xml { /** * Format an XML element with given attributes and, optionally, text content. @@ -40,6 +59,7 @@ class Xml { * The values are passed to Sanitizer::encodeAttribute. * Return null if no attributes given. * @param $attribs Array of attributes for an XML element + * @return null|string */ public static function expandAttributes( $attribs ) { $out = ''; @@ -146,7 +166,7 @@ class Xml { if( is_null( $selected ) ) $selected = ''; if( !is_null( $allmonths ) ) - $options[] = self::option( wfMsg( 'monthsall' ), $allmonths, $selected === $allmonths ); + $options[] = self::option( wfMessage( 'monthsall' )->text(), $allmonths, $selected === $allmonths ); for( $i = 1; $i < 13; $i++ ) $options[] = self::option( $wgLang->getMonthName( $i ), $i, $selected === $i ); return self::openElement( 'select', array( 'id' => $id, 'name' => 'month', 'class' => 'mw-month-selector' ) ) @@ -178,9 +198,9 @@ class Xml { } else { $encYear = ''; } - return Xml::label( wfMsg( 'year' ), 'year' ) . ' '. + return Xml::label( wfMessage( 'year' )->text(), 'year' ) . ' '. Xml::input( 'year', 4, $encYear, array('id' => 'year', 'maxlength' => 4) ) . ' '. - Xml::label( wfMsg( 'month' ), 'month' ) . ' '. + Xml::label( wfMessage( 'month' )->text(), 'month' ) . ' '. Xml::monthSelector( $encMonth, -1 ); } @@ -189,41 +209,29 @@ class Xml { * * @param string $selected The language code of the selected language * @param boolean $customisedOnly If true only languages which have some content are listed - * @param string $language The ISO code of the language to display the select list in (optional) + * @param string $inLanguage The ISO code of the language to display the select list in (optional) + * @param array $overrideAttrs Override the attributes of the select tag (since 1.20) + * @param Message|null $msg Label message key (since 1.20) * @return array containing 2 items: label HTML and select list HTML */ - public static function languageSelector( $selected, $customisedOnly = true, $language = null ) { + public static function languageSelector( $selected, $customisedOnly = true, $inLanguage = null, $overrideAttrs = array(), Message $msg = null ) { global $wgLanguageCode; - // If a specific language was requested and CLDR is installed, use it - if ( $language && is_callable( array( 'LanguageNames', 'getNames' ) ) ) { - if ( $customisedOnly ) { - $listType = LanguageNames::LIST_MW_SUPPORTED; // Only pull names that have localisation in MediaWiki - } else { - $listType = LanguageNames::LIST_MW; // Pull all languages that are in Names.php - } - // Retrieve the list of languages in the requested language (via CLDR) - $languages = LanguageNames::getNames( - $language, // Code of the requested language - LanguageNames::FALLBACK_NORMAL, // Use fallback chain - $listType - ); - } else { - $languages = Language::getLanguageNames( $customisedOnly ); - } - - // Make sure the site language is in the list; a custom language code might not have a - // defined name... + $include = $customisedOnly ? 'mwfile' : 'mw'; + $languages = Language::fetchLanguageNames( $inLanguage, $include ); + + // Make sure the site language is in the list; + // a custom language code might not have a defined name... if( !array_key_exists( $wgLanguageCode, $languages ) ) { $languages[$wgLanguageCode] = $wgLanguageCode; } - + ksort( $languages ); /** * If a bogus value is set, default to the content language. * Otherwise, no default is selected and the user ends up - * with an Afrikaans interface since it's first in the list. + * with Afrikaans since it's first in the list. */ $selected = isset( $languages[$selected] ) ? $selected : $wgLanguageCode; $options = "\n"; @@ -231,12 +239,15 @@ class Xml { $options .= Xml::option( "$code - $name", $code, ($code == $selected) ) . "\n"; } + $attrs = array( 'id' => 'wpUserLanguage', 'name' => 'wpUserLanguage' ); + $attrs = array_merge( $attrs, $overrideAttrs ); + + if( $msg === null ) { + $msg = wfMessage( 'yourlanguage' ); + } return array( - Xml::label( wfMsg('yourlanguage'), 'wpUserLanguage' ), - Xml::tags( 'select', - array( 'id' => 'wpUserLanguage', 'name' => 'wpUserLanguage' ), - $options - ) + Xml::label( $msg->text(), $attrs['id'] ), + Xml::tags( 'select', $attrs, $options ) ); } @@ -254,8 +265,8 @@ class Xml { /** * Shortcut to make a specific element with a class attribute - * @param $text content of the element, will be escaped - * @param $class class name of the span element + * @param $text string content of the element, will be escaped + * @param $class string class name of the span element * @param $tag string element name * @param $attribs array other attributes * @return string @@ -529,8 +540,8 @@ class Xml { /** * Shortcut for creating fieldsets. * - * @param $legend Legend of the fieldset. If evaluates to false, legend is not added. - * @param $content Pre-escaped content for the fieldset. If false, only open fieldset is returned. + * @param $legend string|bool Legend of the fieldset. If evaluates to false, legend is not added. + * @param $content string Pre-escaped content for the fieldset. If false, only open fieldset is returned. * @param $attribs array Any attributes to fieldset-element. * * @return string @@ -761,7 +772,7 @@ class Xml { foreach( $fields as $labelmsg => $input ) { $id = "mw-$labelmsg"; $form .= Xml::openElement( 'tr', array( 'id' => $id ) ); - $form .= Xml::tags( 'td', array('class' => 'mw-label'), wfMsgExt( $labelmsg, array('parseinline') ) ); + $form .= Xml::tags( 'td', array('class' => 'mw-label'), wfMessage( $labelmsg )->parse() ); $form .= Xml::openElement( 'td', array( 'class' => 'mw-input' ) ) . $input . Xml::closeElement( 'td' ); $form .= Xml::closeElement( 'tr' ); } @@ -769,7 +780,7 @@ class Xml { if( $submitLabel ) { $form .= Xml::openElement( 'tr' ); $form .= Xml::tags( 'td', array(), '' ); - $form .= Xml::openElement( 'td', array( 'class' => 'mw-submit' ) ) . Xml::submitButton( wfMsg( $submitLabel ) ) . Xml::closeElement( 'td' ); + $form .= Xml::openElement( 'td', array( 'class' => 'mw-submit' ) ) . Xml::submitButton( wfMessage( $submitLabel )->text() ) . Xml::closeElement( 'td' ); $form .= Xml::closeElement( 'tr' ); } |