From 3e64af3615c2ec2667deac7bbc8e71cdcd2cd883 Mon Sep 17 00:00:00 2001 From: Rob Church Date: Wed, 12 Apr 2006 15:38:17 +0000 Subject: [PATCH] Add TALKSPACE, SUBJECTSPACE, TALKPAGENAME, SUBJECTPAGENAME (and encoded forms for all) magic words --- RELEASE-NOTES | 2 ++ includes/MagicWord.php | 16 ++++++++++++++++ includes/Namespace.php | 8 ++++++++ includes/Parser.php | 28 ++++++++++++++++++++++++++++ includes/Title.php | 17 +++++++++++++++++ languages/Language.php | 12 ++++++++++-- 6 files changed, 81 insertions(+), 2 deletions(-) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index b778098ed4..ba6827c078 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -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 == diff --git a/includes/MagicWord.php b/includes/MagicWord.php index 7233af751b..8351b2a141 100644 --- a/includes/MagicWord.php +++ b/includes/MagicWord.php @@ -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 ) ); diff --git a/includes/Namespace.php b/includes/Namespace.php index 02f44ca684..54dba25c25 100644 --- a/includes/Namespace.php +++ b/includes/Namespace.php @@ -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 ); + } } ?> diff --git a/includes/Parser.php b/includes/Parser.php index 1cdab61fc4..a5e5978b42 100644 --- a/includes/Parser.php +++ b/includes/Parser.php @@ -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: diff --git a/includes/Title.php b/includes/Title.php index c0561ac7aa..039872793f 100644 --- a/includes/Title.php +++ b/includes/Title.php @@ -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 diff --git a/languages/Language.php b/languages/Language.php index 5256503c46..a6ba21973b 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -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:' ), -- 2.20.1