Add TALKSPACE, SUBJECTSPACE, TALKPAGENAME, SUBJECTPAGENAME (and encoded forms for...
authorRob Church <robchurch@users.mediawiki.org>
Wed, 12 Apr 2006 15:38:17 +0000 (15:38 +0000)
committerRob Church <robchurch@users.mediawiki.org>
Wed, 12 Apr 2006 15:38:17 +0000 (15:38 +0000)
RELEASE-NOTES
includes/MagicWord.php
includes/Namespace.php
includes/Parser.php
includes/Title.php
languages/Language.php

index b778098..ba6827c 100644 (file)
@@ -57,6 +57,8 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN
   All extensions using it have been corrected.
 * Propagate ISBN number for Booksources in LanguageNo.php
 * (bug 5548) Improvements to Indonesian localisation [patch: Ivan Lanin]
+* Add TALKSPACE, SUBJECTSPACE, TALKPAGENAME, SUBJECTPAGENAME (and encoded forms for all)
+  magic words
 
 == Compatibility ==
 
index 7233af7..8351b2a 100644 (file)
@@ -73,6 +73,14 @@ $magicWords = array(
        'MAG_SUBPAGENAME',
        'MAG_SUBPAGENAMEE',
        'MAG_DISPLAYTITLE',
+       'MAG_TALKSPACE',
+       'MAG_TALKSPACEE',
+       'MAG_SUBJECTSPACE',
+       'MAG_SUBJECTSPACEE',
+       'MAG_TALKPAGENAME',
+       'MAG_TALKPAGENAMEE',
+       'MAG_SUBJECTPAGENAME',
+       'MAG_SUBJECTPAGENAMEE', 
 );
 if ( ! defined( 'MEDIAWIKI_INSTALL' ) )
        wfRunHooks( 'MagicWordMagicWords', array( &$magicWords ) );
@@ -108,6 +116,14 @@ $wgVariableIDs = array(
        MAG_SUBPAGENAME,
        MAG_SUBPAGENAMEE,
        MAG_DISPLAYTITLE,
+       MAG_TALKSPACE,
+       MAG_TALKSPACEE,
+       MAG_SUBJECTSPACE,
+       MAG_SUBJECTSPACEE,
+       MAG_TALKPAGENAME,
+       MAG_TALKPAGENAMEE,
+       MAG_SUBJECTPAGENAME,
+       MAG_SUBJECTPAGENAMEE,
 );
 if ( ! defined( 'MEDIAWIKI_INSTALL' ) )
        wfRunHooks( 'MagicWordwgVariableIDs', array( &$wgVariableIDs ) );
index 02f44ca..54dba25 100644 (file)
@@ -117,5 +117,13 @@ class Namespace {
                        return NULL;
                }
        }
+       
+       /**
+        * Can this namespace ever have a talk namespace?
+        * @param $index Namespace index
+        */
+        function canTalk( $index ) {
+               return( $index >= NS_MAIN );
+        }
 }
 ?>
index 1cdab61..a5e5978 100644 (file)
@@ -2097,12 +2097,40 @@ class Parser
                                return $this->mTitle->getSubpageText();
                        case MAG_SUBPAGENAMEE:
                                return $this->mTitle->getSubpageUrlForm();
+                       case MAG_TALKPAGENAME:
+                               if( $this->mTitle->canTalk() ) {
+                                       $talkPage = $this->mTitle->getTalkPage();
+                                       return $talkPage->getPrefixedText();
+                               } else {
+                                       return '';
+                               }
+                       case MAG_TALKPAGENAMEE:
+                               if( $this->mTitle->canTalk() ) {
+                                       $talkPage = $this->mTitle->getTalkPage();
+                                       return $talkPage->getPrefixedUrl();
+                               } else {
+                                       return '';
+                               }
+                       case MAG_SUBJECTPAGENAME:
+                               $subjPage = $this->mTitle->getSubjectPage();
+                               return $subjPage->getPrefixedText();
+                       case MAG_SUBJECTPAGENAMEE:
+                               $subjPage = $this->mTitle->getSubjectPage();
+                               return $subjPage->getPrefixedUrl();
                        case MAG_REVISIONID:
                                return $this->mRevisionId;
                        case MAG_NAMESPACE:
                                return $wgContLang->getNsText( $this->mTitle->getNamespace() );
                        case MAG_NAMESPACEE:
                                return wfUrlencode( $wgContLang->getNsText( $this->mTitle->getNamespace() ) );
+                       case MAG_TALKSPACE:
+                               return $this->mTitle->canTalk() ? $this->mTitle->getTalkNsText() : '';
+                       case MAG_TALKSPACEE:
+                               return $this->mTitle->canTalk() ? wfUrlencode( $this->mTitle->getTalkNsText() ) : '';
+                       case MAG_SUBJECTSPACE:
+                               return $this->mTitle->getSubjectNsText();
+                       case MAG_SUBJECTSPACEE:
+                               return( wfUrlencode( $this->mTitle->getSubjectNsText() ) );
                        case MAG_CURRENTDAYNAME:
                                return $varCache[$index] = $wgContLang->getWeekdayName( date( 'w', $ts ) + 1 );
                        case MAG_CURRENTYEAR:
index c0561ac..0398727 100644 (file)
@@ -604,6 +604,23 @@ class Title {
                return $wgContLang->getNsText( Namespace::getSubject( $this->mNamespace ) );
        }
 
+       /**
+        * Get the namespace text of the talk page
+        * @return string
+        */
+       function getTalkNsText() {
+               global $wgContLang;
+               return( $wgContLang->getNsText( Namespace::getTalk( $this->mNamespace ) ) );
+       }
+       
+       /**
+        * Could this title have a corresponding talk page?
+        * @return bool
+        */
+       function canTalk() {
+               return( Namespace::canTalk( $this->mNamespace ) );
+       }
+       
        /**
         * Get the interwiki prefix (or null string)
         * @return string
index 5256503..a6ba219 100644 (file)
@@ -227,10 +227,18 @@ $wgLanguageNamesEn =& $wgLanguageNames;
        MAG_PAGENAMEE            => array( 1,    'PAGENAMEE'              ),
        MAG_NAMESPACE            => array( 1,    'NAMESPACE'              ),
        MAG_NAMESPACEE           => array( 1,    'NAMESPACEE'             ),
+       MAG_TALKSPACE                    => array( 1,    'TALKSPACE'                      ),
+       MAG_TALKSPACEE                   => array( 1,    'TALKSPACEE'                     ),
+       MAG_SUBJECTSPACE                 => array( 1,    'SUBJECTSPACE', 'ARTICLESPACE' ),
+       MAG_SUBJECTSPACEE                => array( 1,    'SUBJECTSPACEE', 'ARTICLESPACEE' ),
        MAG_FULLPAGENAME         => array( 1,    'FULLPAGENAME'           ),
        MAG_FULLPAGENAMEE        => array( 1,    'FULLPAGENAMEE'          ),
-       MAG_SUBPAGENAME          => array( 0,    'SUBPAGENAME'                    ),
-       MAG_SUBPAGENAMEE                 => array( 0,    'SUBPAGENAMEE'                   ),
+       MAG_SUBPAGENAME          => array( 1,    'SUBPAGENAME'                    ),
+       MAG_SUBPAGENAMEE                 => array( 1,    'SUBPAGENAMEE'                   ),
+       MAG_TALKPAGENAME                 => array( 1,    'TALKPAGENAME'                   ),
+       MAG_TALKPAGENAMEE                => array( 1,    'TALKPAGENAMEE'                  ),
+       MAG_SUBJECTPAGENAME              => array( 1,    'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+       MAG_SUBJECTPAGENAMEE     => array( 1,    'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
        MAG_MSG                  => array( 0,    'MSG:'                   ),
        MAG_SUBST                => array( 0,    'SUBST:'                 ),
        MAG_MSGNW                => array( 0,    'MSGNW:'                 ),