Extension:Wikiskin.php

From Organic Design wiki
Revision as of 00:09, 5 April 2007 by Nad (talk | contribs) (go away hiddeous ugly url!)

<?

  1. Extension:Livelets
  2. - Uses a wikitext article for the skin instead of a PHP file. Special items like search box and login link use magic words
  3. - Version 0.1 (2007-04-05)
  4. - See http://www.mediawiki.org/wiki/Extension:WikiSkin for installation and usage details
  5. - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html)
  6. - Author: http://www.organicdesign.co.nz/nad

$wgWikiSkinMagic = array('CURRENTUSER','LOGO','SEARCH','ACTIONS','SITENOTICE','SUBTITLE','UNDELETE','NEWTALK','CATLINKS','FOOTER');

$wgExtensionFunctions[] = 'wfSetupWikiSkin'; $wgHooks['MagicWordMagicWords'][] = 'wfWikiSkinMagicWord'; $wgHooks['MagicWordwgVariableIDs'][] = 'wfWikiSkinMagicWordID'; $wgHooks['LanguageGetMagic'][] = 'wfWikiSkinWordLang'; $wgHooks['ParserGetVariableValueSwitch'][] = 'wfGetWikiSkinMagicWord';


function wfWikiSkinMagicWord(&$magicWords) { global $wgWikiSkinMagic; foreach($wgWikiSkinMagic as $magic) $magicWords[] = "MAG_$magic"; return true; }

function wfWikiSkinMagicWordID(&$magicWords) { global $wgWikiSkinMagic; foreach($wgWikiSkinMagic as $magic) $magicWords[] = constant("MAG_$magic"); return true; }

function wfWikiSkinWordLang(&$magicWords, $langCode = 0) { global $wgWikiSkinMagic; foreach($wgWikiSkinMagic as $magic) $magicWords[constant("MAG_$magic")] = array(0,$magic); return true; }

function wfGetWikiSkinMagicWord(&$this,&$cache,&$index,&$ret) { switch ($index) {

case MAG_CURRENTUSER: $ret = $GLOBALS['wgUser']->mName; break;

case MAG_LOGO: $ret = $GLOBALS['wgLogo']; break;

case MAG_SEARCH: break;

case MAG_ACTIONS: break;

case MAG_SITENOTICE: break;

case MAG_SUBTITLE: break;

case MAG_UNDELETE: break;

case MAG_NEWTALK: break;

case MAG_CATLINKS: break;

case MAG_FOOTER: break; } return true; }

  1. Create skin class based on monobook which parses the skin article and embeds the content

class SkinWikiSkin extends SkinTemplate {

function initPage(&$out) { SkinTemplate::initPage($out); $this->skinname = 'wikiskin'; $this->stylename = 'wikiskin'; $this->template = 'WikiSkinTemplate'; }

}

class WikiSkinTemplate extends QuickTemplate { function execute() {

}

}

  1. Make the new skin current

function wfSetupWikiSkin() { global $wgUser; $wgUser->setOption('skin','WikiSkin'); $wgUser->mSkin =& new SkinWikiSkin; }

?>