https://www.mediawiki.org/wiki/Special:Code/MediaWiki/112402
Revision: 112402
Author: robin
Date: 2012-02-25 17:19:55 +0000 (Sat, 25 Feb 2012)
Log Message:
-----------
(Bug 34680) Make babel extension case aware in order to avoid clashes with
existing user templates.
This gives precedence to existing templates when the code contains one or more
uppercase letters (e.g. TeX). For lowercase codes, it still gives precedence to
built-in boxes (introduced in r105540).
Modified Paths:
--------------
trunk/extensions/Babel/Babel.class.php
Modified: trunk/extensions/Babel/Babel.class.php
===================================================================
--- trunk/extensions/Babel/Babel.class.php 2012-02-25 17:18:20 UTC (rev
112401)
+++ trunk/extensions/Babel/Babel.class.php 2012-02-25 17:19:55 UTC (rev
112402)
@@ -40,17 +40,24 @@
if ( $name === '' ) {
continue;
} elseif ( $components !== false ) {
- // Non-existent page and valid parameter
syntax, babel box
+ // Valid parameter syntax (with lowercase
language code), babel box
$content .= self::mGenerateBox(
$components['code'], $components['level'] );
$content .= self::mGenerateCategories(
$components['code'], $components['level'] );
} elseif ( self::mPageExists( $template ) ) {
- // Check for a template
+ // Check for an existing template
$templateParameters[0] = $template;
$template = implode( '|', $templateParameters );
$content .= self::mGenerateNotaBox(
$parser->replaceVariables( "{{{$template}}}" ) );
} elseif ( self::mValidTitle( $template ) ) {
- // Non-existent page and invalid parameter
syntax, red link.
- $content .= self::mGenerateNotaBox( '[[' .
$template . ']]' );
+ // Non-existing page, so try again as a babel
box, with converting the code to lowercase
+ $components2 = self::mParseParameter( $name, /*
code to lowercase */ true );
+ if ( $components2 !== false ) {
+ $content .= self::mGenerateBox(
$components2['code'], $components2['level'] );
+ $content .= self::mGenerateCategories(
$components2['code'], $components2['level'] );
+ } else {
+ // Non-existent page and invalid
parameter syntax, red link.
+ $content .= self::mGenerateNotaBox(
'[[' . $template . ']]' );
+ }
} else {
// Invalid title, output raw.
$content .= self::mGenerateNotaBox( $template );
@@ -146,13 +153,14 @@
* Parse a parameter, getting a language code and level.
*
* @param $parameter String: Parameter.
+ * @param $strtolower Boolean: Whether to convert the language code to
lowercase
* @return Array: { 'code' => xx, 'level' => xx }
*/
- protected static function mParseParameter( $parameter ) {
+ protected static function mParseParameter( $parameter, $strtolower =
false ) {
global $wgBabelDefaultLevel, $wgBabelCategoryNames;
$return = array();
- $babelcode = strtolower( $parameter );
+ $babelcode = $strtolower ? strtolower( $parameter ) :
$parameter;
// Try treating the paramter as a language code (for default
level).
$code = BabelLanguageCodes::getCode( $babelcode );
if ( $code !== false ) {
@@ -168,7 +176,7 @@
$code = substr( $parameter, 0, $lastSplit );
$level = substr( $parameter, $lastSplit + 1 );
- $babelcode = strtolower( $code );
+ $babelcode = $strtolower ? strtolower( $code ) : $code;
// Validate code.
$return['code'] = BabelLanguageCodes::getCode( $babelcode );
if ( $return['code'] === false ) {
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs