From d197fbd34940e3c5812049deeee0d95f346518bb Mon Sep 17 00:00:00 2001 From: blotmandroid Date: Sun, 21 Apr 2013 19:39:49 +0530 Subject: [PATCH] Introducing a new variable {{ROOTPAGENAME}} Introduced a new variable ROOTPAGENAME which has similar content like BASEPAGENAME. ROOTPAGENAME only contains the name of the topmost page without namespace, e.g. for "User:Name/Article/Subarticle" it should be "Name". BASEPAGENAME would be "Name/Article" here. Update : fixed indentation in maintenance/fuzz-tester.php Added to RELEASE-NOTES-1.2.2 Bug: 6747 Change-Id: I71ef0a15c95c9145462f3aa7fdb3ed11dac79265 --- RELEASE-NOTES-1.22 | 2 ++ includes/MagicWord.php | 2 ++ includes/parser/CoreParserFunctions.php | 16 ++++++++++++++++ includes/parser/Parser.php | 6 ++++++ languages/messages/MessagesEn.php | 2 ++ maintenance/fuzz-tester.php | 1 + tests/parser/parserTests.txt | 4 ++++ 7 files changed, 33 insertions(+) diff --git a/RELEASE-NOTES-1.22 b/RELEASE-NOTES-1.22 index d3ea77e56f..138b20e728 100644 --- a/RELEASE-NOTES-1.22 +++ b/RELEASE-NOTES-1.22 @@ -39,6 +39,8 @@ production. an accesskey in it already). As such it now rountrips. Creating a link with a message as tooltip, grabbing the title attribute and using it to create another portlet will work as expected. +* (bug 6747) {{ROOTPAGENAME}} introduced, contains the name of the topmost + page without namespace. === Bug fixes in 1.22 === * Disable Special:PasswordReset when $wgEnableEmail. Previously one could still diff --git a/includes/MagicWord.php b/includes/MagicWord.php index 18b79c4f5a..f9457c3bdc 100644 --- a/includes/MagicWord.php +++ b/includes/MagicWord.php @@ -138,6 +138,8 @@ class MagicWord { 'numberofactiveusers', 'numberofpages', 'currentversion', + 'rootpagename', + 'rootpagenamee', 'basepagename', 'basepagenamee', 'currenttimestamp', diff --git a/includes/parser/CoreParserFunctions.php b/includes/parser/CoreParserFunctions.php index 5b02e1947d..7db6fab1b9 100644 --- a/includes/parser/CoreParserFunctions.php +++ b/includes/parser/CoreParserFunctions.php @@ -88,6 +88,8 @@ class CoreParserFunctions { $parser->setFunctionHook( 'pagenamee', array( __CLASS__, 'pagenamee' ), SFH_NO_HASH ); $parser->setFunctionHook( 'fullpagename', array( __CLASS__, 'fullpagename' ), SFH_NO_HASH ); $parser->setFunctionHook( 'fullpagenamee', array( __CLASS__, 'fullpagenamee' ), SFH_NO_HASH ); + $parser->setFunctionHook( 'rootpagename', array( __CLASS__, 'rootpagename' ), SFH_NO_HASH ); + $parser->setFunctionHook( 'rootpagenamee', array( __CLASS__, 'rootpagenamee' ), SFH_NO_HASH ); $parser->setFunctionHook( 'basepagename', array( __CLASS__, 'basepagename' ), SFH_NO_HASH ); $parser->setFunctionHook( 'basepagenamee', array( __CLASS__, 'basepagenamee' ), SFH_NO_HASH ); $parser->setFunctionHook( 'subpagename', array( __CLASS__, 'subpagename' ), SFH_NO_HASH ); @@ -546,6 +548,20 @@ class CoreParserFunctions { } return wfEscapeWikiText( $t->getSubpageUrlForm() ); } + static function rootpagename( $parser, $title = null ) { + $t = Title::newFromText( $title ); + if ( is_null( $t ) ) { + return ''; + } + return wfEscapeWikiText( $t->getRootText() ); + } + static function rootpagenamee( $parser, $title = null ) { + $t = Title::newFromText( $title ); + if ( is_null( $t ) ) { + return ''; + } + return wfEscapeWikiText( wfUrlEncode( str_replace( ' ', '_', $t->getRootText() ) ) ); + } static function basepagename( $parser, $title = null ) { $t = Title::newFromText( $title ); if ( is_null( $t ) ) { diff --git a/includes/parser/Parser.php b/includes/parser/Parser.php index b51ef38a72..ab692561b4 100644 --- a/includes/parser/Parser.php +++ b/includes/parser/Parser.php @@ -2762,6 +2762,12 @@ class Parser { case 'subpagenamee': $value = wfEscapeWikiText( $this->mTitle->getSubpageUrlForm() ); break; + case 'rootpagename': + $value = wfEscapeWikiText( $this->mTitle->getRootText() ); + break; + case 'rootpagenamee': + $value = wfEscapeWikiText( wfUrlEncode( str_replace( ' ', '_', $this->mTitle->getRootText() ) ) ); + break; case 'basepagename': $value = wfEscapeWikiText( $this->mTitle->getBaseText() ); break; diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index 80dd417c83..9d09fe8bdb 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -253,6 +253,8 @@ $magicWords = array( 'fullpagenamee' => array( 1, 'FULLPAGENAMEE' ), 'subpagename' => array( 1, 'SUBPAGENAME' ), 'subpagenamee' => array( 1, 'SUBPAGENAMEE' ), + 'rootpagename' => array( 1, 'ROOTPAGENAME' ), + 'rootpagenamee' => array( 1, 'ROOTPAGENAMEE' ), 'basepagename' => array( 1, 'BASEPAGENAME' ), 'basepagenamee' => array( 1, 'BASEPAGENAMEE' ), 'talkpagename' => array( 1, 'TALKPAGENAME' ), diff --git a/maintenance/fuzz-tester.php b/maintenance/fuzz-tester.php index 4c0398079e..b3d817491b 100644 --- a/maintenance/fuzz-tester.php +++ b/maintenance/fuzz-tester.php @@ -657,6 +657,7 @@ class wikiFuzz { "}}", "{{INT:googlesearch|", "}}", + "{{ROOTPAGENAME}}", "{{BASEPAGENAME}}", "{{CONTENTLANGUAGE}}", "{{PAGESINNAMESPACE:}}", diff --git a/tests/parser/parserTests.txt b/tests/parser/parserTests.txt index 540b6f44b9..b34c9571c6 100644 --- a/tests/parser/parserTests.txt +++ b/tests/parser/parserTests.txt @@ -10955,6 +10955,8 @@ Say the magic word * {{BASEPAGENAME}} * {{SUBPAGENAME}} * {{SUBPAGENAMEE}} +* {{ROOTPAGENAME}} +* {{ROOTPAGENAMEE}} * {{BASEPAGENAME}} * {{BASEPAGENAMEE}} * {{TALKPAGENAME}} @@ -10975,6 +10977,8 @@ Say the magic word
  • Parser_test
  • Parser test
  • Parser_test +
  • Parser test +
  • Parser_test
  • Talk:Parser test
  • Talk:Parser_test
  • Parser test -- 2.20.1