Difference between revisions of "Extension:Wiklets.php"
(currently has to use iFrames not div's) |
m |
||
Line 1: | Line 1: | ||
<?php | <?php | ||
− | # Extension:Wiklets{{Category:Extensions | + | # Extension:Wiklets{{Category:Extensions|Wiklets}}{{php}} |
# - 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 User:Nad]{{Category:Extensions created with Template:Extension}}{{Category:Wiklets}} | # - Author: [http://www.organicdesign.co.nz/nad User:Nad]{{Category:Extensions created with Template:Extension}}{{Category:Wiklets}} | ||
Line 31: | Line 31: | ||
# Constructor | # Constructor | ||
function Wiklets() { | function Wiklets() { | ||
− | global $wgParser,$wgWikletsMagic,$wgWikletsLoadJS,$wgWikletsToTop,$wgWikletsOffScreen; | + | global $wgParser,$wgOut,$wgWikletsMagic,$wgWikletsLoadJS,$wgWikletsToTop,$wgWikletsOffScreen; |
$wgParser->setFunctionHook($wgWikletsMagic,array($this,'magic')); | $wgParser->setFunctionHook($wgWikletsMagic,array($this,'magic')); | ||
if ($wgWikletsLoadJS) $wgOut->addScript("<script type=\"text/javascript\" src=\"$wgWikletsLoadJS\"></script>"); | if ($wgWikletsLoadJS) $wgOut->addScript("<script type=\"text/javascript\" src=\"$wgWikletsLoadJS\"></script>"); | ||
Line 62: | Line 62: | ||
global $wgWiklets; | global $wgWiklets; | ||
$wgWiklets = new Wiklets(); | $wgWiklets = new Wiklets(); | ||
− | |||
} | } | ||
Revision as of 04:27, 28 June 2007
<?php
- Extension:Wiklets
- - 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.2, 2007-06-28');
$wgWikletsMagic = "wiklet"; # The parser-function name for making a wiklet (transcluded content in a popup) $wgWikletsLoadJS = ""; # The URL of the dragiframe.js file, leave empty if loaded from elsewhere $wgWikletsToTop = true; # Raise wiklets to top when clicked $wgWikletsOffScreen = false; # Set to true if you want wiklets to be able to be dragged outside the screen boundaries
$wgExtensionFunctions[] = 'wfSetupWiklets'; $wgHooks['LanguageGetMagic'][] = 'wfWikletsLanguageGetMagic';
$wgExtensionCredits['parserhook'][] = array( 'name' => 'Wiklets', 'author' => 'User:Nad', 'description' => 'Transclude templates into movable floating panels', 'url' => 'http://www.mediawiki.org/wiki/Extension:Wiklets', 'version' => WIKLETS_VERSION );
class Wiklets {
# Properties var $id = 0;
# Constructor function Wiklets() { global $wgParser,$wgOut,$wgWikletsMagic,$wgWikletsLoadJS,$wgWikletsToTop,$wgWikletsOffScreen; $wgParser->setFunctionHook($wgWikletsMagic,array($this,'magic')); if ($wgWikletsLoadJS) $wgOut->addScript("<script type=\"text/javascript\" src=\"$wgWikletsLoadJS\"></script>"); $script = ; if ($wgWikletsToTop) $script .= "bringSelectedIframeToTop(true);\n"; if ($wgWikletsOffScreen) $script .= "allowDragOffScreen(true);\n"; if ($script) $wgOut->addScript("<script type=\"text/javascript\">$script</script>"); }
# Expand the wiklet-magic function magic(&$parser) { $id = 'wiklet-'.$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; } $args = ; foreach ($argv as $k => $v) $args .= " $k=\"$v\""; $text = "<iframe$args id=\"$id\" name=\"$id\"></iframe>"; return array($text, 'noparse' => true, 'isHTML' => true); }
# 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(); }
- 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; } ?>