Jump to content

Extension:PathFunctions: Difference between revisions

From mediawiki.org
Content deleted Content added
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