From b002ea6e2ca7830b75a37efc5e67a1a237221c07 Mon Sep 17 00:00:00 2001 From: Misza13 Date: Sat, 2 Feb 2008 00:56:41 +0000 Subject: [PATCH] Adding {{ROOTPAGENAME}} (and {{ROOTPAGENAMEE}}) variables for accessing the page's root name (i.e. everything up to the first "/"). Also adding {{PARENTPAGENAME}} as an alias for {{BASEPAGENAME}}. --- includes/MagicWord.php | 4 ++++ includes/Parser.php | 8 ++++++++ includes/Parser_OldPP.php | 8 ++++++++ includes/Title.php | 16 +++++++++++++++- languages/messages/MessagesEn.php | 4 ++++ 5 files changed, 39 insertions(+), 1 deletion(-) diff --git a/includes/MagicWord.php b/includes/MagicWord.php index 18c931c590..3f208ea53d 100644 --- a/includes/MagicWord.php +++ b/includes/MagicWord.php @@ -91,6 +91,10 @@ class MagicWord { 'currentversion', 'basepagename', 'basepagenamee', + 'parentpagename', + 'parentpagenamee', + 'rootpagename', + 'rootpagenamee', 'urlencode', 'currenttimestamp', 'localtimestamp', diff --git a/includes/Parser.php b/includes/Parser.php index 418792a8e4..75050c9838 100644 --- a/includes/Parser.php +++ b/includes/Parser.php @@ -2454,6 +2454,14 @@ class Parser return wfEscapeWikiText( $this->mTitle->getBaseText() ); case 'basepagenamee': return wfUrlEncode( str_replace( ' ', '_', $this->mTitle->getBaseText() ) ); + case 'parentpagename': + return wfEscapeWikiText( $this->mTitle->getBaseText() ); + case 'parentpagenamee': + return wfUrlEncode( str_replace( ' ', '_', $this->mTitle->getBaseText() ) ); + case 'rootpagename': + return wfEscapeWikiText( $this->mTitle->getRootText() ); + case 'rootpagenamee': + return wfUrlEncode( str_replace( ' ', '_', $this->mTitle->getRootText() ) ); case 'talkpagename': if( $this->mTitle->canTalk() ) { $talkPage = $this->mTitle->getTalkPage(); diff --git a/includes/Parser_OldPP.php b/includes/Parser_OldPP.php index c10de25755..685336cd85 100644 --- a/includes/Parser_OldPP.php +++ b/includes/Parser_OldPP.php @@ -2453,7 +2453,15 @@ class Parser_OldPP case 'basepagename': return wfEscapeWikiText( $this->mTitle->getBaseText() ); case 'basepagenamee': + return wfUrlEncode( str_replace( ' ', '_', $this->mTitle->getBaseText() ) ); + case 'parentpagename': + return wfEscapeWikiText( $this->mTitle->getBaseText() ); + case 'parentpagenamee': return wfUrlEncode( str_replace( ' ', '_', $this->mTitle->getBaseText() ) ); + case 'rootpagename': + return wfEscapeWikiText( $this->mTitle->getRootText() ); + case 'rootpagenamee': + return wfUrlEncode( str_replace( ' ', '_', $this->mTitle->getRootText() ) ); case 'talkpagename': if( $this->mTitle->canTalk() ) { $talkPage = $this->mTitle->getTalkPage(); diff --git a/includes/Title.php b/includes/Title.php index b858b2664a..9cf3bb085c 100644 --- a/includes/Title.php +++ b/includes/Title.php @@ -682,7 +682,21 @@ class Title { } else { return $this->getText(); } - } + } + + /** + * Get the root name, i.e. the leftmost part before the first / + * @return string Root name + */ + public function getRootText() { + global $wgNamespacesWithSubpages; + if( !empty( $wgNamespacesWithSubpages[$this->mNamespace] ) ) { + $parts = explode( '/', $this->getText() ); + return $parts[0]; + } else { + return $this->getText(); + } + } /** * Get the lowest-level subpage name, i.e. the rightmost part after / diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index c4ad9b7387..92e8fbf387 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -261,6 +261,10 @@ $magicWords = array( 'subpagenamee' => array( 1, 'SUBPAGENAMEE' ), 'basepagename' => array( 1, 'BASEPAGENAME' ), 'basepagenamee' => array( 1, 'BASEPAGENAMEE' ), + 'parentpagename' => array( 1, 'PARENTPAGENAME' ), + 'parentpagenamee' => array( 1, 'PARENTPAGENAMEE' ), + 'rootpagename' => array( 1, 'ROOTPAGENAME' ), + 'rootpagenamee' => array( 1, 'ROOTPAGENAMEE' ), 'talkpagename' => array( 1, 'TALKPAGENAME' ), 'talkpagenamee' => array( 1, 'TALKPAGENAMEE' ), 'subjectpagename' => array( 1, 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ), -- 2.20.1