Implements bug 24343 "localurl discards section id".
authorAntoine Musso <hashar@users.mediawiki.org>
Wed, 29 Sep 2010 19:51:48 +0000 (19:51 +0000)
committerAntoine Musso <hashar@users.mediawiki.org>
Wed, 29 Sep 2010 19:51:48 +0000 (19:51 +0000)
* parser hook 'linkurl' which use Title::getLinkUrl()
* very basic tests for the Title class

RELEASE-NOTES
includes/parser/CoreParserFunctions.php
languages/messages/MessagesEn.php
maintenance/tests/phpunit/includes/TitleTest.php

index f3f0848..95204d3 100644 (file)
@@ -167,6 +167,7 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN
   limit for IP addresses: [[MediaWiki:Ratelimit-excluded-ips]]
 * Special:Version now displays whether a SQLite database supports full-text
   search.
+* (bug 24343) New parser hook {{linkurl:}}, same as {{localurl:}} with fragment
 
 === Bug fixes in 1.17 ===
 * (bug 17560) Half-broken deletion moved image files to deletion archive
index f28b92d..d147a62 100644 (file)
@@ -31,6 +31,7 @@ class CoreParserFunctions {
                $parser->setFunctionHook( 'localurle',        array( __CLASS__, 'localurle'        ), SFH_NO_HASH );
                $parser->setFunctionHook( 'fullurl',          array( __CLASS__, 'fullurl'          ), SFH_NO_HASH );
                $parser->setFunctionHook( 'fullurle',         array( __CLASS__, 'fullurle'         ), SFH_NO_HASH );
+               $parser->setFunctionHook( 'linkurl',          array( __CLASS__, 'linkurl'          ), SFH_NO_HASH );
                $parser->setFunctionHook( 'formatnum',        array( __CLASS__, 'formatnum'        ), SFH_NO_HASH );
                $parser->setFunctionHook( 'grammar',          array( __CLASS__, 'grammar'          ), SFH_NO_HASH );
                $parser->setFunctionHook( 'gender',           array( __CLASS__, 'gender'           ), SFH_NO_HASH );
@@ -194,6 +195,7 @@ class CoreParserFunctions {
        static function localurle( $parser, $s = '', $arg = null ) { return self::urlFunction( 'escapeLocalURL', $s, $arg ); }
        static function fullurl( $parser, $s = '', $arg = null ) { return self::urlFunction( 'getFullURL', $s, $arg ); }
        static function fullurle( $parser, $s = '', $arg = null ) { return self::urlFunction( 'escapeFullURL', $s, $arg ); }
+       static function linkurl( $parser, $s = '', $arg = null ) { return self::urlFunction( 'getLinkUrl', $s, $arg ); }
 
        static function urlFunction( $func, $s = '', $arg = null ) {
                $title = Title::newFromText( $s );
index 7effc7d..4f165fd 100644 (file)
@@ -295,6 +295,7 @@ $magicWords = array(
        'nse'                    => array( 0,    'NSE:'                   ),
        'localurl'               => array( 0,    'LOCALURL:'              ),
        'localurle'              => array( 0,    'LOCALURLE:'             ),
+       'linkurl'                => array( 0,    'LINKURL:'               ),
        'articlepath'            => array( 0,    'ARTICLEPATH'            ),
        'server'                 => array( 0,    'SERVER'                 ),
        'servername'             => array( 0,    'SERVERNAME'             ),
index 5b42c1c..6ea1925 100644 (file)
@@ -1,6 +1,10 @@
 <?php
 
 class TitleTest extends PHPUnit_Framework_TestCase {
+       function setUp() {
+               global $wgContLang;
+               $wgContLang = Language::factory( 'en' );
+       }
 
        function testLegalChars() {
                $titlechars = Title::legalChars();
@@ -14,4 +18,24 @@ class TitleTest extends PHPUnit_Framework_TestCase {
                        }
                }
        }
+
+       /**
+        * Test originally wrote to investigate bug 24343
+        * FIXME : some tests might fail depending on local settings.
+        */
+       function testGetURLS() {
+               global $wgArticlePath, $wgScript;
+       
+               $title = Title::newFromText( 'User:Bob#section' );
+       
+               $this->assertEquals( "$wgScript/User:Bob", $title->getLocalURL(),
+                       'Title::getLocalURL() does NOT have fragment' );
+               $this->assertEquals( "$wgScript/User:Bob", $title->escapeLocalURL(),
+                       'Title::escapeLocalURL() does NOT have fragment' );
+               $this->assertEquals( "$wgScript/User:Bob#section", $title->getLinkURL(),
+                       'Title::getLinkURL() does have fragment' );
+               
+               #$this->assertEquals( 'toto', $title->getFullURL()     );
+               #$this->assertEquals( 'toto', $title->escapeFullURL()  );
+       }
 }