Benutzer:Rene/PlayMP3: Unterschied zwischen den Versionen

aus Stargate Wiki, dem deutschsprachigen Stargate-Lexikon
Zur Navigation springen Zur Suche springen
Code: Kein Mediawiki Fehler mehr wenn Datei nicht gefunden
Probleme, Ideen: Variabeln machen Probleme
Zeile 15: Zeile 15:
* Aktuell kann die Erweiterung nur eine einzelne Datei verarbeiten. Die nächste Version wird auch mehrere Dateien als Playliste verarbeiten.
* Aktuell kann die Erweiterung nur eine einzelne Datei verarbeiten. Die nächste Version wird auch mehrere Dateien als Playliste verarbeiten.
* Nicht alle möglichen Fehler werden behandelt.
* Nicht alle möglichen Fehler werden behandelt.
* Variablen <nowiki>{{{1}}}</nowiki> werden nicht ersetzt. In Vorlagen sollte die Erweiterung daher so benutzt werden: <nowiki>{{#tag:playmp3|Datei|Parameter1|Parameter2...}}</nowiki>
==Copyright==
==Copyright==
Die Erweiterung unterliegt der GPL (Version 2). Das bedeutet der Einsatz in anderen MediaWikis ist erlaubt solange der Hinweis auf den Author und die GPL erhalten bleibt. Dazu genügt, in diesem Falle, bereits der von der Erweiterung selbst erzeugte Link auf der System Seite [[Spezial:Version]]. Natürlich kann die Erweiterung auch in anderen System benutzt werden, unter Beachtung der GPL.  
Die Erweiterung unterliegt der GPL (Version 2). Das bedeutet der Einsatz in anderen MediaWikis ist erlaubt solange der Hinweis auf den Author und die GPL erhalten bleibt. Dazu genügt, in diesem Falle, bereits der von der Erweiterung selbst erzeugte Link auf der System Seite [[Spezial:Version]]. Natürlich kann die Erweiterung auch in anderen System benutzt werden, unter Beachtung der GPL.  

Version vom 20. Februar 2009, 16:11 Uhr

^Beschreibung

PlayMP3 ermöglicht das Einbinden des EMFF Players. Mit diesem Flash Player ist es möglich MP3 Audiodateien so in Mediawiki Projekte einzubinden das die Dateien ohne externen Player abgespielt werden können.

^Einsatz

^Befehl

Um eine MP3 Datei abzuspielen wird das Tag <playmp3> benutzt.

<playmp3>Sga_opening_s1.mp3</playmp3>

<playmp3>Sga_opening_s1.mp3</playmp3>

^Parameter

  • autostart - Der Player startet automatisch mit der ersten Datei
  • repeat - Der Player wiederholt die Dateien
  • shuffle - Die Dateien werden in zufälliger Reihenfolge abgespielt
  • skin="name" - Auswahl des Playersskins. Mögliche Werte:
easy_glaze, easy_glaze_small,position_blue,old,old_noborder,lila,lila_info,silk_button,silk,wooden,stuttgart
<playmp3 skin="name" autostart repeat shuffle>datei1.mp3,datei2.mp3</playmp3>

Probleme, Ideen

  • Aktuell kann die Erweiterung nur eine einzelne Datei verarbeiten. Die nächste Version wird auch mehrere Dateien als Playliste verarbeiten.
  • Nicht alle möglichen Fehler werden behandelt.
  • Variablen {{{1}}} werden nicht ersetzt. In Vorlagen sollte die Erweiterung daher so benutzt werden: {{#tag:playmp3|Datei|Parameter1|Parameter2...}}

^Copyright

Die Erweiterung unterliegt der GPL (Version 2). Das bedeutet der Einsatz in anderen MediaWikis ist erlaubt solange der Hinweis auf den Author und die GPL erhalten bleibt. Dazu genügt, in diesem Falle, bereits der von der Erweiterung selbst erzeugte Link auf der System Seite Spezial:Version. Natürlich kann die Erweiterung auch in anderen System benutzt werden, unter Beachtung der GPL.

Über einen kleinen Hinweis (auf der Diskussionsseite) in welchem Wiki die Erweiterung eingesetzt wird würde ich mich freuen, ist aber keine Pflicht.

^Installation

^Erweiterung

  • Erzeuge ein neues Verzeichnis EMFF im extensions Verzeichnis.
  • In dem neuen Verzeichnis den unten angegebenen Code in die Datei player.php speichern.
  • An das Ende der Datei LocalSettings.php die folgende Zeile anfügen
require_once("$IP/extensions/EMFF/player.php");

^EMFF

  • Das aktuelle Paket des Players von der Homepage holen.
  • Das Archiv entpacken und die *.swf Dateien aus dem Verzeichnis skins in das Verzeichnis der Erweiterung (extensions/EMFF) kopieren.

^Code

<?php
if(!defined('MEDIAWIKI')) die();

/**
 * player Extension by René Raule to embed a flash player with mp3-files
 * http://www.stargate-wiki.de/index.php/Benutzer:Rene/PlayMP3
 *
 * This extension uses the Audio Player EMFF plugin from Marc Reicheltt
 *
 *   http://emff.sourceforge.net
 * 
 * Tag :
 *   <playmp3 skin="name" autostart repeat shuffle>mp3</playmp3>
 *
 * Example:
 *   <playmp3>music.mp3</playmp3>
 */

$wgExtensionFunctions[] = 'wfPlayMP3';
$wgExtensionCredits['parserhook'][] = array(
  'name' => 'PlayMP3',
  'description' => 'Plays mp3-files in an embedded Flash-player',
  'author' => 'René Raule',
  'url' => 'http://www.stargate-wiki.de/index.php/Benutzer:Rene/PlayMP3',
  'version' => 'v0.2'
);

// Parameters
define("SKIN","silk_button");
define("EXPATH","/extensions/EMFF");
define("DEFPARA","&groupname=sg");

// Init
function wfPlayMP3() {
  global $wgParser;
  $wgParser->setHook('playmp3', 'renderPlayMP3');
}

// The callback function for converting the input text to HTML output
function renderPlayMP3($input, $args) {
	global $wgScriptPath;
  
  $player= array(
    'easy_glaze'=>array('name'=>'emff_easy_glaze.swf','width'=>32,'height'=>32),
    'easy_glaze_small'=>array('name'=>'emff_easy_glaze_small.swf','width'=>22,'height'=>22),
    'position_blue'=>array('name'=>'emff_position_blue.swf','width'=>100,'height'=>50),
    'old'=>array('name'=>'emff_old.swf','width'=>120,'height'=>55),
    'old_noborder'=>array('name'=>'emff_old_noborder.swf','width'=>91,'height'=>25),
    'lila'=>array('name'=>'emff_lila.swf','width'=>200,'height'=>55),
    'lila_info'=>array('name'=>'emff_lila_info.swf','width'=>200,'height'=>55),
    'silk_button'=>array('name'=>'emff_silk_button.swf','width'=>16,'height'=>16),
    'silk'=>array('name'=>'emff_silk.swf','width'=>84,'height'=>32),
    'wooden'=>array('name'=>'emff_wooden.swf','width'=>120,'height'=>60),
    'stuttgart'=>array('name'=>'emff_stuttgart.swf','width'=>140,'height'=>30)
  );
  $parameters = array('autostart'=>'autostart=yes','repeat'=>'repeat=yes','shuffle'=>'shuffle=yes');
  $add = '&';
  $file_path = $wgScriptPath.EXPATH;
  $player_path = $wgScriptPath.EXPATH.'/';
  
  $params = explode("|", htmlspecialchars($input));
  $files = explode(",", array_shift($params));
  
  // Create playlist if more then one file
  if(count($files) > 1) {
    // TODO: create playlist
    $play_name = getMP3Title($files[0]);
  } else {
    $play_name = getMP3Title($files[0]);
  }
  // Use default skin if no skin defined
  if(!isset($args['skin'])) {
    $args['skin'] = SKIN;
  }
  // Use default skin if wrong skinname
  if(!isset($player[$args['skin']])) {
    $args['skin'] = SKIN;
  }
  // copy skin parameters
  $player_name = $player[$args['skin']]['name'];
  $player_width = $player[$args['skin']]['width'];
  $player_height = $player[$args['skin']]['height'];
  // player parameters
  $player_para = DEFPARA;
  foreach($parameters as $key => $value) {
    if(isset($args[$key])) {
      $player_para .= $add.$value;
    }
  }
  // generate code
  $output  = '<object type="application/x-shockwave-flash" data="';
  $output .= $player_path.$player_name.'" width="';
  $output .= $player_width.'" height="';
  $output .= $player_height.'">';
  $output .= '<param name="movie" value="';
  $output .= $player_path.$player_name.'" />';
  $output .= '<param name="FlashVars" value="src=';
  $output .= $play_name.$player_para.'" />';
  $output .= "</object>\n";
  
  return $output;
}

// Get Wiki URL - TODO: does not work with parametrs {{{}}}
function getMP3Title($file) {
  if(!$title = Title::makeTitleSafe("Image",$file)) {
    return '';
  }
  $img = new Image($title);
  $path = $img->getViewURL(false);
  return $path;
}