Extension:Wiklets.php
<?php
- Extension:Wiklets
{{#Security:*|dev}}{{#Security:view|*}}Template:Php
- - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html)
- - Author: User:NadCategory:Extensions created with Template:ExtensionCategory:Wiklets
if (!defined('MEDIAWIKI')) die('Not an entry point.');
define('WIKLETS_VERSION','0.0.1, 2007-05-15');
$wgWikletsMagic = "wiklet"; $wgExtensionFunctions[] = 'wfSetupWiklets'; $wgHooks['LanguageGetMagic'][] = 'wfWikletsLanguageGetMagic';
$wgExtensionCredits['parserhook'][] = array( 'name' => 'Wiklets', 'author' => 'User:Nad', 'description' => 'Transclude templates into movable floating panels', 'url' => 'http://www.organicdesign.co.nz/Extension:Wiklets', 'version' => WIKLETS_VERSION );
class Wiklets {
# Properties var $id = 0;
# Constructor function Wiklets() { global $wgParser,$wgWikletsMagic; $wgParser->setFunctionHook($wgWikletsMagic,array($this,'magicWiklet')); }
# Expand the wiklet-magic function magicWiklet(&$parser) { $this->addJS(); $id = $this->id++; $argv = array(); $content = ; foreach (func_get_args() as $arg) if (!is_object($arg)) { if (preg_match('/^(.+?)\\s*=\\s*(.+)$/',$arg,$match)) $argv[$match[1]] = $match[2]; else $content = $arg; } return array($text, 'noparse' => true, 'isHTML' => true); }
# Add the javascript to the output object if not added yet and there is at least one tree function addJS() { global $wgOut,$wgJS,$wgJsMimeType; if (isset($wgJS['DisplayFilter'])) return; $wgJS['Wiklets'] = true; $wgOut->addScript('<script type="'.$wgJsMimeType.'"> function wikletCreate(id) { } function wikletDelete(id) { } function wikletSetPosition(id) { } function wikletSetSize(id) { } function wikletToFront(id) { } function wikletToBack(id) { } function wikletSetContent(id) { } </script>'); }
# Needed in some versions to prevent Special:Version from breaking function __toString() { return 'Wiklets'; }
}
- Called from $wgExtensionFunctions array when initialising extensions
function wfSetupWiklets() { global $wgWiklets; $wgWiklets = new Wiklets(); $wgWiklets->addJS(); # addScript doesn't seem to work from within parser }
- Needed in MediaWiki >1.8.0 for magic word hooks to work properly
function wfWikletsLanguageGetMagic(&$magicWords,$langCode = 0) { global $wgWikletsMagic; $magicWords[$wgWikletsMagic] = array(0,$wgWikletsMagic); return true; } ?>