PlugIn für Sevenload Videos

Nun habe auch ich mein erstes eigenes PlugIn für das DokuWiki geschrieben. Es bindet Sevenload-Videos in die Wiki-Seiten ein und bedient sich großzügig des Codes des YouTube-Video-PlugIns von Ikuo Obataya, den ich für meine Zwecke angepaßt habe. Es ist mein erstes DokuWiki-PlugIn und ich bin auch nicht gerade der begeisterte PHP-Programmier. Also, obwohl ich glaube, alles verstanden zu haben, was ich da gemacht habe, nutzt ihr das PlugIn natürlich auf Euer eigenes Risiko. :!:

Beispiel

Betty Rowland: Burlesque's Ball of Fire

Syntax

{{sevenload>link:VIDEO_ID}}

{{sevenload>small:VIDEO_ID}}

{{sevenload>medium:VIDEO_ID}}

{{sevenload>large:VIDEO_ID}}

Die VIDEO_ID findet Ihr im Informations-Block ca. in der Mitte der rechten Spalte der Video-Seite, außerdem ist sie die Zeichenkette, die in der URL direkt nach http://de.sevenload.com/videos/ steht.

Wie schon bei dem Das YouTube-PlugIn gibt es zusätzlich noch den Parameter link, der einen direkten Link zum Film auf Sevenload bereithält. Der sieht ausgeführt so aus:

movie-2sBfs8Z

Wenn Ihr den Code so nutzt, wie ich ihn hier bereitgestellt habe, ladet Ihr das Sevenload-Icon von meinem Server (ich werde es überleben ;-)), wenn Ihr es aber korrekt machen wollt, ändert Ihr den Code in Zeile 54 auf

$LOGO_URL = '/_media/icon/sevenload.gif';

und kopiert das Icon mit dem Namen sevenload.gif In den icon-Namespace Eures Wikis.

Quellcode

<?php
/**
* Plugin Sevenload: Create Sevenload video link and object from ID.
*
* @license    GPL 2 (http://www.gnu.org/licenses/gpl.html)
* @author     Joerg Kantel <joerg@kantel.de>
*			  Based on the YouTube PlugIn written by Ikuo Obataya
*			  <http://wiki.symplus.co.jp/computer/en/youtube_plugin>
*/
 
// must be run within Dokuwiki
if(!defined('DOKU_INC')) die();
 
if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
require_once(DOKU_INC.'lib/plugins/syntax.php');
 
/**
* All DokuWiki plugins to extend the parser/rendering mechanism
* need to inherit from this class
*/
class syntax_plugin_sevenload extends DokuWiki_Syntax_Plugin {
	/**
	* return some info
	*/
	function getInfo(){
		return array(
		'author' => 'J. Kantel',
		'email'  => 'joerg@kantel.de',
		'date'   => '2007-10-03',
		'name'   => 'Sevenlaod Plugin',
		'desc'   => 'Sevenload video link and object',
		'url'    => 'http://www.cognitiones.de/',
		);
	}
	function getType(){ return 'substition'; }
	function getSort(){ return 159; }
	function connectTo($mode) { $this->Lexer->addSpecialPattern('\{\{sevenload>[^}]*\}\}',$mode,'plugin_sevenload'); }
 
	/**
	* Handle the match
	*/
	function handle($match, $state, $pos, &$handler){
		$match = substr($match,12,-2); // Strip markup
		return array($state,explode(':',$match));
	}	
	/**
	* Create output
	*/
	function render($mode, &$renderer, $data) {
		if($mode == 'xhtml'){
			list($state, $match) = $data;
			list($disptype,$id) = $match;
			$href_start = '<a href="http://de.sevenload.com/videos/'.$id.'">';
			$LOGO_URL = 'http://www.cognitiones.de/lib/plugins/sevenload/images/sevenload.gif';
			if ($disptype=='link'){
				$renderer->doc .= $href_start;
				$renderer->doc .= '<img src="'.$LOGO_URL.'" alt="movie-'.$id.'"/></a>';
			}elseif($disptype=='large'){
				$obj='<object width="425" height="350">';
				$obj.='<param name="FlashVars" value="apiHost=api.sevenload.com"/>';
				$obj.='<param name="movie" value="http://de.sevenload.com/pl/'.$id.'/swf" />';
				$obj.='<embed src="http://de.sevenload.com/pl/'.$id.'/425x350/swf" type="application/x-shockwave-flash" width="425" height="350" allowfullscreen="true" FlashVars="apiHost=api.sevenload.com"></embed>';
				$obj.='</object>';
				$renderer->doc .= $obj;
				}elseif($disptype=='medium'){
				$obj='<object width="320" height="263">';
				$obj.='<param name="FlashVars" value="apiHost=api.sevenload.com"/>';
				$obj.='<param name="movie" value="http://de.sevenload.com/pl/'.$id.'/swf" />';
				$obj.='<embed src="http://de.sevenload.com/pl/'.$id.'/380x313/swf" type="application/x-shockwave-flash" width="320" height="263" allowfullscreen="true" FlashVars="apiHost=api.sevenload.com"></embed>';
				$obj.='</object>';
				$renderer->doc .= $obj;
				}elseif($disptype=='small'){
				$obj='<object width="200" height="178">';
				$obj.='<param name="FlashVars" value="apiHost=api.sevenload.com"/>';
				$obj.='<param name="movie" value="http://de.sevenload.com/pl/'.$id.'/swf" />';
				$obj.='<embed src="http://de.sevenload.com/pl/'.$id.'/200x178/swf" type="application/x-shockwave-flash" width="200" height="178" allowfullscreen="true" FlashVars="apiHost=api.sevenload.com"></embed>';
				$obj.='</object>';
				$renderer->doc .= $obj;
			}else{
				$renderer->doc .="??";
			}
			return true;
		}
		return false;
	}
}
?>

Installation

Den Quellcode in eine Datei kopieren, die Ihr syntax.php nennt. Dann legt bitte einen Ordner sevenload im Verzeichnis lib/plugins Eurer Doku-Wiki-Installation an und kopiert die syntax.php dort hinein. Und schon steht Euch die bunte Welt von Sevenload zur Verfügung.

Verwandte Seiten

sevenload_videos.txt · Last modified: 2008/08/14 12:29 (external edit)
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0