Extension:Livelets.php

From Organic Design wiki
Revision as of 02:24, 5 July 2007 by Nad (talk | contribs) ({{Category:Livelets}})

<?

  1. Extension:LiveletsTemplate:Php
Info.svg These are the MediaWiki extensions we're using and/or developing. Please refer to the information on the mediawiki.org wiki for installation and usage details. Extensions here which have no corresponding mediawiki article are either not ready for use or have been superseded. You can also browse our extension code in our local Subversion repository or our GitHub mirror.

Scripts and articles related to Extension:Livelets, see also Wiklets

  1. - Allows articles to be transcluded which load after the main page content and can update dynamically with Ajax
  2. - See http://www.mediawiki.org/wiki/Extension:Livelets for installation and usage details
  3. - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html)
  4. - 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 = "

<img src='$wgLiveletsPath/wait.gif'/>

";

$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>"); }

}

  1. Called from $wgExtensionFunctions array when initialising extensions

function wfSetupLivelets() { global $wgLivelets,$wgScriptPath,$wgLiveletsPath; $wgLivelets = new Livelets(); if ($wgLiveletsPath == ) $wgLiveletsPath = "$wgScriptPath/extensions/livelets"; }

  1. 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; } ?>