Here’s how I referenced the extension as a template:



title=My test YouTube dealee movie_url=http://www.youtube.com/v/yWQhBnpFEpg embed_source_url=http://www.youtube.com/v/yWQhBnpFEpg wrap = yes width=500 height=400


Here’s the css:


  1. youtube {

margin: 0px 0px 40px 0px; float:left; width:300px; height:200px; position:relative; border:0px solid #333333; }

Here’s the php script called youtub_extension.php:


* title=My test YouTube dealee
* movie_url=http://www.youtube.com/v/yWQhBnpFEpg
* embed_source_url=http://www.youtube.com/v/yWQhBnpFEpg
* wrap = yes
* width=500
* height=400
* 
  • /

$wgExtensionFunctions[] = ‘registerYouTubeExtension’; $wgExtensionCredits[’parserhook’][] = array( ‘name’ => ‘YouTube’, ‘author’ => ‘Patrick Ragsdale’, ‘url’ => ‘http://www.scriptalias.com’, );

function registerYouTubeExtension() {

global $wgParser; $wgParser->setHook(’YouTube’, ‘renderYouTube’);

}

/**

  • We can provide values based on parameters listed between the
  • and tags
    • /

function renderYouTube($YouTube) {

global $wgTitle;

$YouTubearea = new YouTubearea(); getYouTubeOptions($YouTubearea->title,$YouTube,’title’); getYouTubeOptions($YouTubearea->movie_url,$YouTube,’movie_url’); getYouTubeOptions($YouTubearea->embed_source_url,$YouTube,’embed_source_url’); getYouTubeOptions($YouTubearea->wrap,$YouTube,’wrap’); getYouTubeOptions($YouTubearea->width,$YouTube,’width’); getYouTubeOptions($YouTubearea->height,$YouTube,’height’); $YouTubehtml = $YouTubearea->render();

$YouTubehtml=str_replace(”內海”,$wgTitle->getText(),$YouTubehtml); if($YouTubehtml) { return $YouTubehtml; } else { return “ Input box ‘{$YouTube->type}’ not defined.“; } }

/**

  • This function will collect the values and define them in the
  • function renderTest
    • /

function getYouTubeOptions(&$value,&$YouTube,$name,$isNumber=false) {

     if(preg_match(”/^\s*$name\s*=\s*(.*)/mi”,$YouTube,$matches)) {

if($isNumber) { $value=intval($matches[1]); } else { $value=htmlspecialchars($matches[1]); } } }

/**

  • The class is define here. We set it above on line 42
  • and requested an instance of it on line 46
    • /

class YouTubearea {

function render() { if ($this->wrap == “yes”) { $csstop =” “; $cssbottom = “

“; $width = “300″; $height = “200″; } else { $csstop =”"; $cssbottom = “”; $width = $this->width; $height = $this->height; }

$YouTube=<<title