Difference between revisions of "Extension:VideoSectionLink"
(rationalised tag, magic names) |
(tag) |
||
Line 16: | Line 16: | ||
$egVideoSectionLinkMagic = "videosectionlink"; | $egVideoSectionLinkMagic = "videosectionlink"; | ||
− | $egVideoSectionLinkTag = " | + | $egVideoSectionLinkTag = "videosection"; |
$wgExtensionFunctions[] = 'efSetupVideoSectionLink'; | $wgExtensionFunctions[] = 'efSetupVideoSectionLink'; | ||
$wgHooks['LanguageGetMagic'][] = 'efVideoSectionLinkLanguageGetMagic'; | $wgHooks['LanguageGetMagic'][] = 'efVideoSectionLinkLanguageGetMagic'; | ||
Line 46: | Line 46: | ||
# Add the tagHook | # Add the tagHook | ||
− | $wgParser->setHook($egVideoSectionLinkTag, array($this, ' | + | $wgParser->setHook($egVideoSectionLinkTag, array($this, 'tagVideosection')); |
} | } | ||
Line 80: | Line 80: | ||
/** | /** | ||
− | * Convert the < | + | * Convert the <videosection> tags to HTML |
*/ | */ | ||
− | function | + | function tagVideosection($text,$argv,&$parser) { |
global $egVideoSectionLinkTag; | global $egVideoSectionLinkTag; | ||
$args = ''; | $args = ''; |
Revision as of 08:37, 31 October 2008
<?php
Template:PhpCategory:Extensions created with Template:Extension
/**
* VideoSectionLink extension - An extension to enable users to link to defined sections of video. Made with Template:Extension * * See http://www.mediawiki.org/wiki/Extension:VideoSectionLink for installation and usage details * * @package MediaWiki * @subpackage Extensions * @author User:Jack * @copyright © 2008 User:Jack * @licence GNU General Public Licence 2.0 or later */
if (!defined('MEDIAWIKI')) die('Not an entry point.');
define('VIDEOSECTIONLINK_VERSION', '0.0.1, 2008-10-31');
$egVideoSectionLinkMagic = "videosectionlink"; $egVideoSectionLinkTag = "videosection"; $wgExtensionFunctions[] = 'efSetupVideoSectionLink'; $wgHooks['LanguageGetMagic'][] = 'efVideoSectionLinkLanguageGetMagic';
$wgExtensionCredits['parserhook'][] = array( 'name' => 'VideoSectionLink', 'author' => 'User:Jack', 'description' => 'An extension to enable users to link to defined sections of video. Made with Template:Extension', 'url' => 'http://www.organicdesign.co.nz/Extension:VideoSectionLink', 'version' => VIDEOSECTIONLINK_VERSION );
class VideoSectionLink {
/** * Properties */ var $prop1 = 'default value'; var $prop2 = 'default value';
/** * Constructor */ function __construct() { global $wgHooks, $wgParser, $egVideoSectionLinkMagic, $egVideoSectionLinkTag;
# Add the parser-function $wgParser->setFunctionHook($egVideoSectionLinkMagic, array($this, 'magicVideosectionlink'));
# Add the tagHook $wgParser->setHook($egVideoSectionLinkTag, array($this, 'tagVideosection'));
}
/** * Expand the videosectionlink-magic */ function magicVideosectionlink(&$parser) { global $egVideoSectionLinkMagic; # Populate $argv with both named and numeric parameters $argv = array(); foreach (func_get_args() as $arg) if (!is_object($arg)) { if (preg_match('/^(.+?)\\s*=\\s*(.+)$/',$arg,$match)) $argv[$match[1]] = $match[2]; else $argv[] = $arg; }
# Build text of expanded result $args = ; foreach ($argv as $k => $v) $args .= "*$k: $v\n"; $args = htmlspecialchars($args); $text = "=== Magic $egVideoSectionLinkMagic(): ===\n$args";
# Return result with available parser flags return array( $text, 'found' => true, 'nowiki' => false, 'noparse' => false, 'noargs' => false, 'isHTML' => false );
}
/** * Convert the <videosection> tags to HTML */ function tagVideosection($text,$argv,&$parser) { global $egVideoSectionLinkTag; $args = ; foreach ($argv as $k => $v) { $k = htmlspecialchars($k); $v = htmlspecialchars($v);
$args .= "
\n";
} $text = htmlspecialchars($text);
return "
Tag $egVideoSectionLinkTag():
\n
- $args
- Content:$text
\n";
}
/** * Needed in some versions to prevent Special:Version from breaking */ function __toString() { return __CLASS__; }
}
/**
* Called from $wgExtensionFunctions array when initialising extensions */
function efSetupVideoSectionLink() { global $egVideoSectionLink; $egVideoSectionLink = new VideoSectionLink(); }
/**
* Needed in MediaWiki >1.8.0 for magic word hooks to work properly */
function efVideoSectionLinkLanguageGetMagic(&$magicWords, $langCode = 0) { global $egVideoSectionLinkMagic; $magicWords[$egVideoSectionLinkMagic] = array($langCode, $egVideoSectionLinkMagic); return true; }