Difference between revisions of "Extension:Livelets.php"
m |
(1.2.0 changing this over to the mooer too) |
||
Line 1: | Line 1: | ||
<? | <? | ||
− | # Extension:Livelets{{ | + | # Extension:Livelets{{php}}{{Category:Extensions|Livelets}} |
− | # - Allows | + | # - 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 | # - See http://www.mediawiki.org/wiki/Extension:Livelets for installation and usage details | ||
# - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html) | # - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html) | ||
# - Author: http://www.organicdesign.co.nz/nad | # - Author: http://www.organicdesign.co.nz/nad | ||
− | define('LIVELETS_VERSION', '0. | + | define('LIVELETS_VERSION', '0.2.0, 2007-06-19'); |
− | $wgLiveletsMagic | + | $wgLiveletsMagic = "live"; # the parser-function name for doing live-transclusions |
+ | $wgLiveletsMoo = ""; # the relative URL to mootools ajax.js script (don't set this if it's already been included by another extension) | ||
+ | |||
+ | $wgLiveletsSWF = dirname(__FILE__).'/Livelets.swf'; | ||
$wgExtensionFunctions[] = 'wfSetupLivelets'; | $wgExtensionFunctions[] = 'wfSetupLivelets'; | ||
$wgHooks['LanguageGetMagic'][] = 'wfLiveletsLanguageGetMagic'; | $wgHooks['LanguageGetMagic'][] = 'wfLiveletsLanguageGetMagic'; | ||
Line 15: | Line 18: | ||
'name' => 'Livelets', | 'name' => 'Livelets', | ||
'author' => '[http://www.organicdesign.co.nz/User:Nad User:Nad]', | 'author' => '[http://www.organicdesign.co.nz/User:Nad User:Nad]', | ||
− | 'description' => ' | + | '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', | 'url' => 'http://www.mediawiki.org/wiki/Extension:Livelets', | ||
'version' => LIVELETS_VERSION | 'version' => LIVELETS_VERSION | ||
Line 27: | Line 30: | ||
# Constructor | # Constructor | ||
function Livelets() { | function Livelets() { | ||
− | global $wgParser,$wgLiveletsMagic; | + | global $wgParser,$wgLiveletsMagic,$wgLiveletsMoo; |
$wgParser->setFunctionHook($wgLiveletsMagic,array($this,'functionHook')); | $wgParser->setFunctionHook($wgLiveletsMagic,array($this,'functionHook')); | ||
+ | if ($wgLiveletsMoo) $wgOut->addScript("<script type=\"text/javascript\" src=\"$wgLiveletsMoo\"></script>"); | ||
} | } | ||
Line 34: | Line 38: | ||
function functionHook(&$parser,$title) { | function functionHook(&$parser,$title) { | ||
global $wgScript,$wgLiveletsPath; | global $wgScript,$wgLiveletsPath; | ||
− | |||
$id = 'livelet'.$this->id++; # this should be a GUID | $id = 'livelet'.$this->id++; # this should be a GUID | ||
+ | unset($argv['type']); | ||
+ | $element = 'a'; | ||
+ | $options = "{data:'action=render',update:$('$update')}"; | ||
+ | if ($content == '') $content = $link; | ||
+ | if (preg_match('/^\\w/',$link)) { | ||
+ | $title = Title::newFromText($link); | ||
+ | $argv['class'] = $title->exists() ? 'ajax' : 'new ajax'; | ||
+ | $link = $title->getLocalURL(); | ||
+ | } | ||
+ | $argv['href'] = "javascript:var a=new Ajax('$link',$options).request()"; | ||
+ | |||
$url = Title::newFromText($title)->getFullURL('action=render'); | $url = Title::newFromText($title)->getFullURL('action=render'); | ||
$html = "<div class='livelet' id='$id' url='$url'><div style='text-align:center'><img src='$wgLiveletsPath/wait.gif'/></div></div>"; | $html = "<div class='livelet' id='$id' url='$url'><div style='text-align:center'><img src='$wgLiveletsPath/wait.gif'/></div></div>"; | ||
Line 45: | Line 59: | ||
global $wgOut,$wgLiveletsPath,$wgAddJavaScriptFunctions; | global $wgOut,$wgLiveletsPath,$wgAddJavaScriptFunctions; | ||
− | # | + | # JS SWF recv: function livelets_DoFScommand(cmd,args) { alert(args) } |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
# Embed livelets.swf into the output page | # Embed livelets.swf into the output page | ||
# NOTE: this actually needs to be served by the WikiDaemon, not the PHP | # NOTE: this actually needs to be served by the WikiDaemon, not the PHP | ||
− | $swf = "$wgLiveletsPath/livelets.swf"; | + | #$swf = "$wgLiveletsPath/livelets.swf"; |
− | $wgOut->addHTML("<object | + | #$wgOut->addHTML("<object type=\"application/x-shockwave-flash\" data=\"$swf\" width=\"width\" height=\"$height\"> |
− | + | # <param name=\"movie\" value=\"$swf\" /><param name=\"bgcolor\" value=\"#ffffff\"/></object>"); | |
− | |||
− | |||
− | |||
} | } | ||
Line 111: | Line 83: | ||
return true; | return true; | ||
} | } | ||
− | |||
− | |||
?> | ?> |
Revision as of 09:11, 19 June 2007
<?
- Extension:LiveletsTemplate:Php
- - 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.0, 2007-06-19');
$wgLiveletsMagic = "live"; # the parser-function name for doing live-transclusions $wgLiveletsMoo = ""; # the relative URL to mootools ajax.js script (don't set this if it's already been included by another extension)
$wgLiveletsSWF = dirname(__FILE__).'/Livelets.swf'; $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 $wgParser,$wgLiveletsMagic,$wgLiveletsMoo; $wgParser->setFunctionHook($wgLiveletsMagic,array($this,'functionHook')); if ($wgLiveletsMoo) $wgOut->addScript("<script type=\"text/javascript\" src=\"$wgLiveletsMoo\"></script>"); }
# Remove live container content function functionHook(&$parser,$title) { global $wgScript,$wgLiveletsPath; $id = 'livelet'.$this->id++; # this should be a GUID unset($argv['type']); $element = 'a'; $options = "{data:'action=render',update:$('$update')}"; if ($content == ) $content = $link; if (preg_match('/^\\w/',$link)) { $title = Title::newFromText($link); $argv['class'] = $title->exists() ? 'ajax' : 'new ajax'; $link = $title->getLocalURL(); } $argv['href'] = "javascript:var a=new Ajax('$link',$options).request()";
$url = Title::newFromText($title)->getFullURL('action=render');
$html = "
";
$html .= "<script type='text/javascript'>liveletRequest('$id')</script>"; return array($html,isHTML => true); }
function addJSandSWF() { global $wgOut,$wgLiveletsPath,$wgAddJavaScriptFunctions;
# JS SWF recv: function livelets_DoFScommand(cmd,args) { alert(args) }
# Embed livelets.swf into the output page # NOTE: this actually needs to be served by the WikiDaemon, not the PHP #$swf = "$wgLiveletsPath/livelets.swf"; #$wgOut->addHTML("<object type=\"application/x-shockwave-flash\" data=\"$swf\" width=\"width\" height=\"$height\"> # <param name=\"movie\" value=\"$swf\" /><param name=\"bgcolor\" value=\"#ffffff\"/></object>"); }
}
- Called from $wgExtensionFunctions array when initialising extensions
function wfSetupLivelets() { global $wgLivelets,$wgScriptPath,$wgLiveletsPath; $wgLivelets = new Livelets(); if ($wgLiveletsPath == ) $wgLiveletsPath = "$wgScriptPath/extensions/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; } ?>