Difference between revisions of "Extension:SimpleForms.php"

From Organic Design wiki
(general structure started)
 
m
Line 11: Line 11:
 
$wgSimpleFormsInputMagic      = "input"; # the parser-function name for form inputs
 
$wgSimpleFormsInputMagic      = "input"; # the parser-function name for form inputs
 
$wgSimpleFormsQsMagic          = "qs";    # the parser-function name for query-string access
 
$wgSimpleFormsQsMagic          = "qs";    # the parser-function name for query-string access
 +
 
$wgExtensionFunctions[]        = 'wfSetupSimpleForms';
 
$wgExtensionFunctions[]        = 'wfSetupSimpleForms';
 
$wgHooks['LanguageGetMagic'][] = 'wfSimpleFormsLanguageGetMagic';
 
$wgHooks['LanguageGetMagic'][] = 'wfSimpleFormsLanguageGetMagic';
Line 84: Line 85:
 
function wfSimpleFormsLanguageGetMagic(&$magicWords,$langCode = 0) {
 
function wfSimpleFormsLanguageGetMagic(&$magicWords,$langCode = 0) {
 
global $wgSimpleFormsFormMagic,$wgSimpleFormsInputMagic,$wgSimpleFormsQsMagic;
 
global $wgSimpleFormsFormMagic,$wgSimpleFormsInputMagic,$wgSimpleFormsQsMagic;
$magicWords[$wgSimpleFormsFormMagic] = array(0,$wgSimpleFormsFormMagic);
+
$magicWords[$wgSimpleFormsFormMagic] = array(0,$wgSimpleFormsFormMagic);
 
$magicWords[$wgSimpleFormsInputMagic] = array(0,$wgSimpleFormsInputMagic);
 
$magicWords[$wgSimpleFormsInputMagic] = array(0,$wgSimpleFormsInputMagic);
$magicWords[$wgSimpleFormsQsMagic] = array(0,$wgSimpleFormsQsMagic);
+
$magicWords[$wgSimpleFormsQsMagic]   = array(0,$wgSimpleFormsQsMagic);
 
return true;
 
return true;
 
}
 
}
 
?>
 
?>

Revision as of 08:07, 25 April 2007

<?

  1. MediaWiki SimpleForms Extension
  2. - See http://www.mediawiki.org/wiki/Extension:Simple_Forms for installation and usage details
  3. - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html)
  4. - Author: http://www.organicdesign.co.nz/nad
  5. {{#Security:*|dev}}{{#Security:view|*}}Template:Php

$wgSimpleFormsVersion = 'Version 0.01 (2007-04-25)';

$wgSimpleFormsFormMagic = "form"; # the parser-function name for form containers $wgSimpleFormsInputMagic = "input"; # the parser-function name for form inputs $wgSimpleFormsQsMagic = "qs"; # the parser-function name for query-string access

$wgExtensionFunctions[] = 'wfSetupSimpleForms'; $wgHooks['LanguageGetMagic'][] = 'wfSimpleFormsLanguageGetMagic';

class SimpleForms {

var $id = 0; var $tagname;

# Constructor function SimpleForms() { global $wgParser,$wgHooks,$wgSimpleFormsFormMagic,$wgSimpleFormsInputMagic,$wgSimpleFormsQsMagic; $wgParser->setFunctionHook($wgSimpleFormsFormMagic, array($this,'form')); $wgParser->setFunctionHook($wgSimpleFormsInputMagic,array($this,'input')); $wgParser->setFunctionHook($wgSimpleFormsQsMagic, array($this,'qs')); $this->tagname = 'this_should_be_random'; $wgParser->setHook($this->tagname,'tagHook'); }

function form(&$parser) { global $wgJavaScriptFunctions; $id = $this->id++; $tag = $this->tagname; $args = ; foreach (func_get_args() as $arg) if (!is_object($arg)) { if (preg_match('/^(.+?)=(.+)$/',$arg,$match)) $args .= " $match[1]=\"$match[2]\""; else $form = $arg; } $wgJavaScriptFunctions['SimpleFormsFunctions'] = ' function live() { } '; return "<$tag $args>$form</$tag>"; }

function input(&$parser) { $input = "(((input"; foreach (func_get_args() as $arg) if (!is_object($arg)) { if (preg_match('/^(.+?)=(.+)$/',$arg,$match)) $input .= " $match[1]=\"$match[2]\""; } return "$input/)))"; }

function input(&$parser,$key) { return $_REQUEST[$key]; }

function tagHook(&$text) { $text = str_replace("(((","<",str_replace(")))",">",$text)); return "<form>$text</form>"; }

# Add the javascript to the output object if not added yet and there is at least one tree # - should add all items in $wgJavaScriptFunctions function onOutputPageBeforeHTML(&$out) { global $wgJavaScriptFunctions; foreach ($wgJavaScriptFunctions as $js) $out->addScript("\n<script type=\"text/javascript\">$js</script>\n"); return true; }

}

  1. Called from $wgExtensionFunctions array when initialising extensions

function wfSetupSimpleForms() { global $wgHooks,$wgSimpleForms,$wgJavaScriptFunctions; $wgSimpleForms = new TreeView($wgTreeViewMagic); if (!is_array($wgJavaScriptFunctions)) { $wgJavaScriptFunctions = array(); $wgHooks['OutputPageBeforeHTML'][] = $this; } }

  1. Needed in MediaWiki >1.8.0 for magic word hooks to work properly

function wfSimpleFormsLanguageGetMagic(&$magicWords,$langCode = 0) { global $wgSimpleFormsFormMagic,$wgSimpleFormsInputMagic,$wgSimpleFormsQsMagic; $magicWords[$wgSimpleFormsFormMagic] = array(0,$wgSimpleFormsFormMagic); $magicWords[$wgSimpleFormsInputMagic] = array(0,$wgSimpleFormsInputMagic); $magicWords[$wgSimpleFormsQsMagic] = array(0,$wgSimpleFormsQsMagic); return true; } ?>