Difference between revisions of "Extension:Livelets.php"
m (Livelets.php moved to Foo:Livelets.php) |
(0.2.5 - use MW ajax here too) |
||
Line 6: | Line 6: | ||
# - Author: http://www.organicdesign.co.nz/nad | # - Author: http://www.organicdesign.co.nz/nad | ||
− | define('LIVELETS_VERSION', '0.2. | + | define('LIVELETS_VERSION', '0.2.5, 2007-10-05'); |
$wgLiveletsMagic = 'live'; # the parser-function name for doing live-transclusions | $wgLiveletsMagic = 'live'; # the parser-function name for doing live-transclusions | ||
− | |||
$wgLiveletsUseSWF = false; # Set this to true to use SWF to make livelets fully event-driven (no polling for change) | $wgLiveletsUseSWF = false; # Set this to true to use SWF to make livelets fully event-driven (no polling for change) | ||
Line 36: | Line 35: | ||
# Constructor | # Constructor | ||
function Livelets() { | function Livelets() { | ||
− | global $IP,$wgOut,$wgParser,$wgServer | + | global $IP,$wgOut,$wgParser,$wgServer,$wgLiveletsMagic,$wgLiveletsUseSwf,$wgLiveletsSwfBg,$wgLiveletsPort; |
− | |||
# Activate the #live parser-function | # Activate the #live parser-function | ||
$wgParser->setFunctionHook($wgLiveletsMagic,array($this,'functionHook')); | $wgParser->setFunctionHook($wgLiveletsMagic,array($this,'functionHook')); | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
# Embed the SWF if enabled (SWF must be requested from Livelets.pl) | # Embed the SWF if enabled (SWF must be requested from Livelets.pl) | ||
Line 58: | Line 50: | ||
# Render livelet container | # Render livelet container | ||
function functionHook(&$parser) { | function functionHook(&$parser) { | ||
− | global $wgScript,$wgLiveletsPath,$wgLiveletsDefaultContent; | + | global $wgScript,$wgTitle,$wgLiveletsPath,$wgLiveletsDefaultContent; |
# Process parameters | # Process parameters | ||
− | |||
$argv = array(); | $argv = array(); | ||
foreach (func_get_args() as $arg) if (!is_object($arg)) { | foreach (func_get_args() as $arg) if (!is_object($arg)) { | ||
Line 67: | Line 58: | ||
else $argv['title'] = trim($arg); | else $argv['title'] = trim($arg); | ||
} | } | ||
− | + | $title = $argv['title']; | |
− | + | $update = isset($argv['update']) ? $argv['update'] : 0; | |
− | + | unset($argv['update']); | |
− | + | if (isset($argv['type'])) $type = $argv['type']; | |
− | + | unset($argv['type']); | |
− | if (isset($argv[' | ||
− | |||
− | |||
− | |||
# Render container | # Render container | ||
+ | $args = ''; | ||
+ | foreach ($argv as $k => $v) $args .= " $k=\"$v\""; | ||
$id = 'livelet'.$this->id++; | $id = 'livelet'.$this->id++; | ||
− | + | $html = "<div$args id='$id'>$wgLiveletsDefaultContent</div>"; | |
− | $html = "<div$args id='$id'>$ | + | if ($update >= 0) $html .= "<script type='text/javascript'>x = sajax_do_call('wfSimpleFormsAjax',['title=$title'],document.getElementById('$id'))</script>"; |
− | if | ||
return array($html,'isHTML' => true,'noparse' => true); | return array($html,'isHTML' => true,'noparse' => true); | ||
Line 90: | Line 78: | ||
# Called from $wgExtensionFunctions array when initialising extensions | # Called from $wgExtensionFunctions array when initialising extensions | ||
function wfSetupLivelets() { | function wfSetupLivelets() { | ||
− | global $wgLivelets | + | global $wgLivelets; |
$wgLivelets = new Livelets(); | $wgLivelets = new Livelets(); | ||
− | |||
} | } | ||
Revision as of 09:59, 5 October 2007
<?
- Extension:LiveletsTemplate:Php
Scripts and articles related to Extension:Livelets, see also Wiklets
- - Allows articles to be transcluded which load after the main page content and can update dynamically with Ajax
- - See http://www.mediawiki.org/wiki/Extension:Livelets for installation and usage details
- - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html)
- - Author: http://www.organicdesign.co.nz/nad
define('LIVELETS_VERSION', '0.2.5, 2007-10-05');
$wgLiveletsMagic = 'live'; # the parser-function name for doing live-transclusions
$wgLiveletsUseSWF = false; # Set this to true to use SWF to make livelets fully event-driven (no polling for change) $wgLiveletsSwfBg = '#ffffff'; # The background colour of the embedded SWF $wgLiveletsPort = '1729'; # The port that Livelets.pl can be reached on (using $wgServer:$wgLiveletsPort)
$wgLiveletsPath = dirname(__FILE__); $wgLiveletsBaseUrl = preg_replace('|^.+(?=/extensions)|',$wgScriptPath,$wgLiveletsPath);
$wgLiveletsDefaultContent = "
";
$wgExtensionFunctions[] = 'wfSetupLivelets'; $wgHooks['LanguageGetMagic'][] = 'wfLiveletsLanguageGetMagic';
$wgExtensionCredits['parserhook'][] = array( 'name' => 'Livelets', 'author' => 'User:Nad', 'description' => 'Allows articles to be transcluded which load after the main page content and can update dynamically with Ajax', 'url' => 'http://www.mediawiki.org/wiki/Extension:Livelets', 'version' => LIVELETS_VERSION );
class Livelets {
var $version = LIVELETS_VERSION; var $id = 0;
# Constructor function Livelets() { global $IP,$wgOut,$wgParser,$wgServer,$wgLiveletsMagic,$wgLiveletsUseSwf,$wgLiveletsSwfBg,$wgLiveletsPort;
# Activate the #live parser-function $wgParser->setFunctionHook($wgLiveletsMagic,array($this,'functionHook'));
# Embed the SWF if enabled (SWF must be requested from Livelets.pl) if ($wgLiveletsUseSwf) { $swf = "$wgServer:$wgLiveletsPort/Livelets.swf"; $wgOut->addHTML("<object type=\"application/x-shockwave-flash\" data=\"$swf\" width=\"1\" height=\"1\"> <param name=\"movie\" value=\"$swf\" /><param name=\"bgcolor\" value=\"$wgLiveletsSwfBg\"/></object>"); } }
# Render livelet container function functionHook(&$parser) { global $wgScript,$wgTitle,$wgLiveletsPath,$wgLiveletsDefaultContent;
# Process parameters $argv = array(); foreach (func_get_args() as $arg) if (!is_object($arg)) { if (preg_match('/^([a-z0-9_]+?)\\s*=(.+)$/is',$arg,$match)) $argv[trim($match[1])] = trim($match[2]); else $argv['title'] = trim($arg); } $title = $argv['title']; $update = isset($argv['update']) ? $argv['update'] : 0; unset($argv['update']); if (isset($argv['type'])) $type = $argv['type']; unset($argv['type']);
# Render container $args = ; foreach ($argv as $k => $v) $args .= " $k=\"$v\""; $id = 'livelet'.$this->id++;
$html = "<div$args id='$id'>$wgLiveletsDefaultContent";
if ($update >= 0) $html .= "<script type='text/javascript'>x = sajax_do_call('wfSimpleFormsAjax',['title=$title'],document.getElementById('$id'))</script>";
return array($html,'isHTML' => true,'noparse' => true); }
}
- Called from $wgExtensionFunctions array when initialising extensions
function wfSetupLivelets() { global $wgLivelets; $wgLivelets = new Livelets(); }
- Needed in MediaWiki >1.8.0 for magic word hooks to work properly
function wfLiveletsLanguageGetMagic(&$magicWords,$langCode = 0) { global $wgLiveletsMagic; $magicWords[$wgLiveletsMagic] = array(0,$wgLiveletsMagic); return true; } ?>