Extension:PathFunctions: Difference between revisions
Content deleted Content added
Emufarmers (talk | contribs) These functions were not parameterized until 1.15 |
+ archive |
||
Line 1: | Line 1: | ||
{{Archived extension|252515|reason=It has been replaced by core functionality in the MediaWiki software (which was added in version [[rev:46662|1.15.0]]).}} |
|||
{{obsoleteExtension|mw|[[rev:46662|1.15]]}} |
|||
{{Extension |
|||
|status=beta |
|||
|name=PathFunctions |
|||
|author=Carl Fürstenberg |
|||
|type=parser function |
|||
|image= |
|||
|version=0.99.0 |
|||
|update=2007-01-04 |
|||
|mediawiki=1.7+ |
|||
|download=N/A |
|||
|readme= |
|||
|description=A reimplementation of the builtin variables PAGENAME etc. with the ability to specify what page to evaluate on. |
|||
|parameters= |
|||
|rights=GPL 2.0 |
|||
}} |
|||
This extension enables a reimplementation of builtin functions like PAGENAME, but with the possibillity to define the base path. |
|||
==Example== |
|||
{{ft|#PAGENAME|Help:Foo}} gives Foo |
|||
==Configuration== |
|||
If setting the variable $wgPathFunctionsUseNoPrefixHash to true, then the functions are without the preceeding hash symbol, and more like the built in variables. That is for example {{ft|PAGENAME|Help:Foo}}. |
|||
==Installation== |
|||
Add this line to [[LocalSettings.php]]: |
|||
require_once( "$IP/extensions/PathFunctions/PathFunctions.php" ); |
|||
And copy the following to ''extensions/PathFunctions/PathFunctions.php'' and [[#PathFunctions.i18n.php|''extensions/PathFunctions/PathFunctions.i18n.php'']]: |
|||
===PathFunctions.php=== |
|||
<source lang=php> |
|||
<?php |
|||
if ( !defined( 'MEDIAWIKI' ) ) { |
|||
die( 'This file is a MediaWiki extension, it is not a valid entry point' ); |
|||
} |
|||
/** |
|||
* A reimplementation of the builtin variables PAGENAME etc. with the ability to specify what page to evaluate on. |
|||
* If set $wgPathFunctionsUseNoPrefixHash to true, then the functions are without the preceeding hash symbol, and more like the built in variables. |
|||
* |
|||
* @package MediaWiki |
|||
* @subpackage Extensions |
|||
* |
|||
* @link http://www.mediawiki.org/wiki/Extension:PathFunctions Documentation |
|||
* |
|||
* @author Carl Fürstenberg (AzaToth) <azatoth@gmail.com> |
|||
* @copyright Copyright © 2006 Carl Fürstenberg |
|||
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later |
|||
*/ |
|||
require_once('PathFunctions.i18n.php'); |
|||
$wgExtensionFunctions[] = 'wfSetupPathFunctions'; |
|||
$wgExtensionCredits['parserhook'][] = array( |
|||
'version' => '0.99.0', |
|||
'description' => 'A reimplementation of the builtin variables PAGENAME etc. with the ability to specify what page to evaluate on.', |
|||
'name' => 'PathFunctions', |
|||
'url' => 'http://www.mediawiki.org/wiki/Extension:PathFunctions', |
|||
'author' => 'Carl Fürstenberg (AzaToth)' |
|||
); |
|||
$wgHooks['LanguageGetMagic'][] = 'wfPathFunctionsLanguageGetMagic'; |
|||
class ExtPathFunctions { |
|||
public function pagename( &$parser , $path = false ) { |
|||
$path = trim($path); |
|||
$title = $path ? Title::newFromText( $path ) : $parser->mTitle; |
|||
return $title->getText(); |
|||
} |
|||
public function pagenamee( &$parser , $path = false ) { |
|||
$path = trim($path); |
|||
$title = $path ? Title::newFromText( $path ) : $parser->mTitle; |
|||
return $title->getPartialUrl(); |
|||
} |
|||
public function fullpagename( &$parser , $path = false ) { |
|||
$path = trim($path); |
|||
$title = $path ? Title::newFromText( $path ) : $parser->mTitle; |
|||
return $title->getPrefixedText(); |
|||
} |
|||
public function fullpagenamee( &$parser , $path = false ) { |
|||
$path = trim($path); |
|||
$title = $path ? Title::newFromText( $path ) : $parser->mTitle; |
|||
return $title->getPrefixedURL(); |
|||
} |
|||
public function subpagename( &$parser , $path = false ) { |
|||
$path = trim($path); |
|||
$title = $path ? Title::newFromText( $path ) : $parser->mTitle; |
|||
return $title->getSubpageText(); |
|||
} |
|||
public function subpagenamee( &$parser , $path = false ) { |
|||
$path = trim($path); |
|||
$title = $path ? Title::newFromText( $path ) : $parser->mTitle; |
|||
return $title->getSubpageUrlForm(); |
|||
} |
|||
public function basepagename( &$parser , $path = false ) { |
|||
$path = trim($path); |
|||
$title = $path ? Title::newFromText( $path ) : $parser->mTitle; |
|||
return $title->getBaseText(); |
|||
} |
|||
public function basepagenamee( &$parser , $path = false ) { |
|||
$path = trim($path); |
|||
$title = $path ? Title::newFromText( $path ) : $parser->mTitle; |
|||
return $title->getBaseText(); |
|||
} |
|||
public function talkpagename( &$parser , $path = false ) { |
|||
$path = trim($path); |
|||
$title = $path ? Title::newFromText( $path ) : $parser->mTitle; |
|||
if( !$title->canTalk() ) { |
|||
return wfMsg( 'pathfunc_no_talk' , $title->getNsText() ); |
|||
} else { |
|||
return $title->getTalkPage()->getPrefixedText(); |
|||
} |
|||
} |
|||
public function talkpagenamee( &$parser , $path = false ) { |
|||
$path = trim($path); |
|||
$title = $path ? Title::newFromText( $path ) : $parser->mTitle; |
|||
if( !$title->canTalk() ) { |
|||
return wfMsg( 'pathfunc_no_talk' , $title->getNsText() ); |
|||
} else { |
|||
return $title->getTalkPage()->getPrefixedUrl(); |
|||
} |
|||
} |
|||
public function subjectpagename( &$parser , $path = false ) { |
|||
$path = trim($path); |
|||
$title = $path ? Title::newFromText( $path ) : $parser->mTitle; |
|||
return $title->getSubjectPage()->getPrefixedText(); |
|||
} |
|||
public function subjectpagenamee( &$parser , $path = false ) { |
|||
$path = trim($path); |
|||
$title = $path ? Title::newFromText( $path ) : $parser->mTitle; |
|||
return $title->getSubjectPage()->getPrefixedUrl(); |
|||
} |
|||
public function namespace( &$parser , $path = false ) { |
|||
$path = trim($path); |
|||
$title = $path ? Title::newFromText( $path ) : $parser->mTitle; |
|||
return strtr( $title->getNsText() , '_' , ' ' ); |
|||
} |
|||
public function namespacee( &$parser , $path = false ) { |
|||
$path = trim($path); |
|||
$title = $path ? Title::newFromText( $path ) : $parser->mTitle; |
|||
return wfUrlencode( $title->getNsText() ); |
|||
} |
|||
public function talkspace( &$parser , $path = false ) { |
|||
$path = trim($path); |
|||
$title = $path ? Title::newFromText( $path ) : $parser->mTitle; |
|||
if( !$title->canTalk() ) { |
|||
return wfMsg( 'pathfunc_no_talk' , $title->getNsText() ); |
|||
} else { |
|||
return strtr( $title->getTalkNsText() , '_' , ' ' ); |
|||
} |
|||
} |
|||
public function talkspacee( &$parser , $path = false ) { |
|||
$path = trim($path); |
|||
$title = $path ? Title::newFromText( $path ) : $parser->mTitle; |
|||
if( !$title->canTalk() ) { |
|||
return wfMsg( 'pathfunc_no_talk' , $title->getNsText() ); |
|||
} else { |
|||
return wfUrlencode( $title->getTalkNsText() ); |
|||
} |
|||
} |
|||
public function subjectspace( &$parser , $path = false ) { |
|||
$path = trim($path); |
|||
$title = $path ? Title::newFromText( $path ) : $parser->mTitle; |
|||
return strtr( $title->getSubjectNsText() , '_' , ' ' ); |
|||
} |
|||
public function subjectspacee( &$parser , $path = false ) { |
|||
$path = trim($path); |
|||
$title = $path ? Title::newFromText( $path ) : $parser->mTitle; |
|||
return wfUrlencode( $title->getSubjectNsText() ); |
|||
} |
|||
} |
|||
function wfSetupPathFunctions() { |
|||
global $wgParser, $wgExtPathFunctions, $wgMessageCache, $wgPathFunctionsMessages, $wgPathFunctionsUseNoPrefixHash; |
|||
$wgExtPathFunctions = new ExtPathFunctions(); |
|||
$flags = $wgPathFunctionsUseNoPrefixHash ? SFH_NO_HASH : 0; |
|||
$wgParser->setFunctionHook( 'pagename' , array( &$wgExtPathFunctions, 'pagename' ) , $flags ); |
|||
$wgParser->setFunctionHook( 'pagenamee' , array( &$wgExtPathFunctions, 'pagenamee' ) , $flags ); |
|||
$wgParser->setFunctionHook( 'fullpagename' , array( &$wgExtPathFunctions, 'fullpagename' ) , $flags ); |
|||
$wgParser->setFunctionHook( 'fullpagenamee' , array( &$wgExtPathFunctions, 'fullpagenamee' ) , $flags ); |
|||
$wgParser->setFunctionHook( 'subpagename' , array( &$wgExtPathFunctions, 'subpagename' ) , $flags ); |
|||
$wgParser->setFunctionHook( 'subpagenamee' , array( &$wgExtPathFunctions, 'subpagenamee' ) , $flags ); |
|||
$wgParser->setFunctionHook( 'basepagename' , array( &$wgExtPathFunctions, 'basepagename' ) , $flags ); |
|||
$wgParser->setFunctionHook( 'basepagenamee' , array( &$wgExtPathFunctions, 'basepagenamee' ) , $flags ); |
|||
$wgParser->setFunctionHook( 'talkpagename' , array( &$wgExtPathFunctions, 'talkpagename' ) , $flags ); |
|||
$wgParser->setFunctionHook( 'talkpagenamee' , array( &$wgExtPathFunctions, 'talkpagenamee' ) , $flags ); |
|||
$wgParser->setFunctionHook( 'subjectpagename' , array( &$wgExtPathFunctions, 'subjectpagename' ) , $flags ); |
|||
$wgParser->setFunctionHook( 'subjectpagenamee' , array( &$wgExtPathFunctions, 'subjectpagenamee' ) , $flags ); |
|||
$wgParser->setFunctionHook( 'namespace' , array( &$wgExtPathFunctions, 'namespace' ) , $flags ); |
|||
$wgParser->setFunctionHook( 'namespacee' , array( &$wgExtPathFunctions, 'namespacee' ) , $flags ); |
|||
$wgParser->setFunctionHook( 'talkspace' , array( &$wgExtPathFunctions, 'talkspace' ) , $flags ); |
|||
$wgParser->setFunctionHook( 'talkspacee' , array( &$wgExtPathFunctions, 'talkspacee' ) , $flags ); |
|||
$wgParser->setFunctionHook( 'subjectspace' , array( &$wgExtPathFunctions, 'subjectspace' ) , $flags ); |
|||
$wgParser->setFunctionHook( 'subjectspacee' , array( &$wgExtPathFunctions, 'subjectspacee' ) , $flags ); |
|||
foreach( $wgPathFunctionsMessages as $key => $value ) { |
|||
$wgMessageCache->addMessages( $value, $key ); |
|||
} |
|||
} |
|||
function wfPathFunctionsLanguageGetMagic( &$magicWords, $langCode ) { |
|||
global $wgPathFunctionsMagic; |
|||
if( !in_array( $langCode , $wgPathFunctionsMagic ) ) { |
|||
$langCode = 'en'; |
|||
} |
|||
$magicWords = array_merge( $magicWords , $wgPathFunctionsMagic[$langCode] ); |
|||
return true; |
|||
} |
|||
?> |
|||
</source> |
|||
===PathFunctions.i18n.php=== |
|||
<source lang=php> |
|||
<?php |
|||
if ( !defined( 'MEDIAWIKI' ) ) { |
|||
die( 'This file is a MediaWiki extension, it is not a valid entry point' ); |
|||
} |
|||
$wgPathFunctionsMessages = array(); |
|||
$wgPathFunctionsMagic = array(); |
|||
$wgPathFunctionsMessages['en'] = array( |
|||
'pathfunc_no_talk' => "No talk pages in namespace $1", |
|||
); |
|||
$wgPathFunctionsMagic['en'] = array( |
|||
'pagename' => array( 0, 'pagename' ), |
|||
'pagenamee' => array( 0, 'pagenamee' ), |
|||
'fullpagename' => array( 0, 'fullpagename' ), |
|||
'fullpagenamee' => array( 0, 'fullpagenamee' ), |
|||
'subpagename' => array( 0, 'subpagename' ), |
|||
'subpagenamee' => array( 0, 'subpagenamee' ), |
|||
'basepagename' => array( 0, 'basepagename' ), |
|||
'basepagenamee' => array( 0, 'basepagenamee' ), |
|||
'talkpagename' => array( 0, 'talkpagename' ), |
|||
'talkpagenamee' => array( 0, 'talkpagenamee' ), |
|||
'subjectpagename' => array( 0, 'subjectpagename' ), |
|||
'subjectpagenamee' => array( 0, 'subjectpagenamee' ), |
|||
'namespace' => array( 0, 'namespace' ), |
|||
'namespacee' => array( 0, 'namespacee' ), |
|||
'talkspace' => array( 0, 'talkspace' ), |
|||
'talkspacee' => array( 0, 'talkspacee' ), |
|||
'subjectspace' => array( 0, 'subjectspace' ), |
|||
'subjectspacee' => array( 0, 'subjectspacee' ), |
|||
); |
|||
?> |
|||
</source> |
|||
==See also== |
|||
*[[User:Brion.finlay/PathFunctions]] |
|||
[[Category:Path extensions]] |
|||
[[Category:Variable extensions]] |
Latest revision as of 14:11, 13 January 2013
![]() | This extension has been archived.
It has been replaced by core functionality in the MediaWiki software (which was added in version 1.15.0). To see the page before archival, click here. |