From c9ed45c9488381c76c85943f7274b2466d8a3b9d Mon Sep 17 00:00:00 2001 From: Antoine Musso Date: Wed, 29 Sep 2010 19:51:48 +0000 Subject: [PATCH] Implements bug 24343 "localurl discards section id". * parser hook 'linkurl' which use Title::getLinkUrl() * very basic tests for the Title class --- RELEASE-NOTES | 1 + includes/parser/CoreParserFunctions.php | 2 ++ languages/messages/MessagesEn.php | 1 + .../tests/phpunit/includes/TitleTest.php | 24 +++++++++++++++++++ 4 files changed, 28 insertions(+) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index f3f0848022..95204d3c95 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -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 diff --git a/includes/parser/CoreParserFunctions.php b/includes/parser/CoreParserFunctions.php index f28b92d614..d147a62b4a 100644 --- a/includes/parser/CoreParserFunctions.php +++ b/includes/parser/CoreParserFunctions.php @@ -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 ); diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index 7effc7d937..4f165fd5cc 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -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' ), diff --git a/maintenance/tests/phpunit/includes/TitleTest.php b/maintenance/tests/phpunit/includes/TitleTest.php index 5b42c1c575..6ea1925a3b 100644 --- a/maintenance/tests/phpunit/includes/TitleTest.php +++ b/maintenance/tests/phpunit/includes/TitleTest.php @@ -1,6 +1,10 @@ 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() ); + } } -- 2.20.1