(bug 5845) Introduce BASEPAGENAME and BASEPAGENAMEE magic words
authorRob Church <robchurch@users.mediawiki.org>
Sun, 14 May 2006 03:51:36 +0000 (03:51 +0000)
committerRob Church <robchurch@users.mediawiki.org>
Sun, 14 May 2006 03:51:36 +0000 (03:51 +0000)
RELEASE-NOTES
includes/MagicWord.php
includes/Parser.php
includes/Title.php
languages/Language.php

index ffef105..f3dcc55 100644 (file)
@@ -261,6 +261,7 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN
 * (bug 5935) Improvement to German localisation (de)
 * (bug 5937) Register links from gallery captions with the parent parser output
   object so that link tables receive those updates too
+* (bug 5845) Introduce BASEPAGENAME and BASEPAGENAMEE magic words
 
 == Compatibility ==
 
index 2c8b8bd..79e04a2 100644 (file)
@@ -86,6 +86,8 @@ $magicWords = array(
        'MAG_NEWSECTIONLINK',
        'MAG_NUMBEROFPAGES',
        'MAG_CURRENTVERSION',
+       'MAG_BASEPAGENAME',
+       'MAG_BASEPAGENAMEE',
 );
 if ( ! defined( 'MEDIAWIKI_INSTALL' ) )
        wfRunHooks( 'MagicWordMagicWords', array( &$magicWords ) );
@@ -134,6 +136,8 @@ $wgVariableIDs = array(
        MAG_NEWSECTIONLINK,
        MAG_NUMBEROFPAGES,
        MAG_CURRENTVERSION,
+       MAG_BASEPAGENAME,
+       MAG_BASEPAGENAMEE,
 );
 if ( ! defined( 'MEDIAWIKI_INSTALL' ) )
        wfRunHooks( 'MagicWordwgVariableIDs', array( &$wgVariableIDs ) );
index 5d27234..d2700c9 100644 (file)
@@ -2098,6 +2098,10 @@ class Parser
                                return $this->mTitle->getSubpageText();
                        case MAG_SUBPAGENAMEE:
                                return $this->mTitle->getSubpageUrlForm();
+                       case MAG_BASEPAGENAME:
+                               return $this->mTitle->getBaseText();
+                       case MAG_BASEPAGENAMEE:
+                               return wfUrlEncode( str_replace( ' ', '_', $this->mTitle->getBaseText() ) );
                        case MAG_TALKPAGENAME:
                                if( $this->mTitle->canTalk() ) {
                                        $talkPage = $this->mTitle->getTalkPage();
index 3197b46..9b5b242 100644 (file)
@@ -691,6 +691,21 @@ class Title {
                return $text;
        }
 
+       /**
+        * Get the base name, i.e. the leftmost parts before the /
+        * @return string Base name
+        */
+       function getBaseText() {
+               global $wgNamespacesWithSubpages;
+               if( isset( $wgNamespacesWithSubpages[ $this->mNamespace] ) && $wgNamespacesWithSubpages[ $this->mNamespace ] ) {
+                       $parts = explode( '/', $this->getText() );
+                       unset( $parts[ count( $parts ) - 1 ] );
+                       return implode( '/', $parts );
+               } else {
+                       return $this->getText();
+               }
+       }
+
        /**
         * Get the lowest-level subpage name, i.e. the rightmost part after /
         * @return string Subpage name
index 0bf85b9..7e0fd78 100644 (file)
@@ -242,6 +242,8 @@ $wgLanguageNamesEn =& $wgLanguageNames;
        MAG_FULLPAGENAMEE        => array( 1,    'FULLPAGENAMEE'          ),
        MAG_SUBPAGENAME          => array( 1,    'SUBPAGENAME'                    ),
        MAG_SUBPAGENAMEE                 => array( 1,    'SUBPAGENAMEE'                   ),
+       MAG_BASEPAGENAME                 => array( 1,    'BASEPAGENAME'                   ),
+       MAG_BASEPAGENAMEE                => array( 1,    'BASEPAGENAMEE'                  ),
        MAG_TALKPAGENAME                 => array( 1,    'TALKPAGENAME'                   ),
        MAG_TALKPAGENAMEE                => array( 1,    'TALKPAGENAMEE'                  ),
        MAG_SUBJECTPAGENAME              => array( 1,    'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),