Commit 5cab6cc6 authored by lucha's avatar lucha

ai-embed: removed legacy code and fixed supported embed providers

parent caeee14c
<?php
/*
* Plugin Name: Ai - Add oembed provider and embed short
* Plugin URI:
* Description: AI -Add Embed
* Version: 1.3
* Author: lechuck, lucha
* Author URI: http://noblogs.org
**/
function wp_embed_handler_google_maps( $matches, $attr, $url, $rawattr ) {
$width = ($rawattr['width']) ? $rawattr['width'] : 425 ;
$height = ($rawattr['height']) ? $rawattr['height'] : 350 ;
$query = add_query_arg(array('output' => 'embed'), $matches[0]);
$embed = '<iframe width="'.esc_attr($width).'" height="'.esc_attr($height).'" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="'.esc_attr($query).'"></iframe>';
return apply_filters( 'embed_googlemaps', $embed, $matches, $attr, $url, $rawattr );
}
function wp_embed_handler_openstreetmap( $matches, $attr, $url, $rawattr ) {
$width = ($rawattr['width']) ? $rawattr['width'] : 425 ;
$height = ($rawattr['height']) ? $rawattr['height'] : 350 ;
$embed = '<iframe width="'.esc_attr($width).'" height="'.esc_attr($height).'" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="'.esc_attr($matches[0]).'"></iframe>';
return apply_filters( 'embed_openstreetmap', $embed, $matches, $attr, $url, $rawattr );
}
/* Returns the Archive.org iframe
Used both by the embed handler and by the special shortcode handler */
function _archive_iframe_build( $id, $height = 480, $width = 640){
return sprintf('<iframe src="https://archive.org/embed/%1$s" width="%3$d" height="%2$d" frameborder="0" webkitallowfullscreen="true" mozallowfullscreen="true" allowfullscreen></iframe>
', esc_attr($id), esc_attr($height), esc_attr($width));
}
/* This tries to support the shorcode format that is given out by Archive.org.
Don't change it if you don't check what they are using right now.
We will ignore some options.
Example:
[archiveorg peril_of_doc_ock width=640 height=480 frameborder=0
ebkitallowfullscreen=true mozallowfullscreen=true]
*/
function shortcode_archiveorg($atts){
$atts = shortcode_atts(array(
0 => '',
"height" => 480,
"width" => 640
), $atts);
return _archive_iframe_build($atts[0], $atts['height'], $atts['width']);
}
function wp_embed_handler_archive( $matches, $attr, $url, $rawattr ) {
/* while setting width and height from $attr seems a sensible thing to do,
wordpress gives completely wrong sizes. So we won't do it!
*/
$embed = _archive_iframe_build(esc_attr($matches['id']));
return apply_filters( 'embed_archive', $embed, $matches, $attr, $url, $rawattr );
}
function wp_embed_handler_dctptv( $matches, $attr, $url, $rawattr ) {
$width = ($attr['width']) ? $attr['width'] : 480 ;
$height = ($attr['height']) ? $attr['height'] : 396 ;
$embed= sprintf(
'<iframe width="%3$s" scrolling="no" height="%2$s" frameborder="0" src="%1$s" name="dctp-teaser" marginwidth="0" marginheight="0"><br>
</iframe>',esc_attr($matches[0]),esc_attr($height),esc_attr($width));
return apply_filters( 'embed_dctptv', $embed, $matches, $attr, $url, $rawattr );
}
function register_embed_handlers() {
add_shortcode('archiveorg', 'shortcode_archiveorg');
wp_embed_register_handler( 'archive', '#http[s]?://(?:www\.)?archive\.org/.*/(?<id>.*)#i', 'wp_embed_handler_archive' );
wp_embed_register_handler( 'dctptv', '#http(s)?://www.dctp.tv/embed/.*?/#i', 'wp_embed_handler_dctptv' );
wp_embed_register_handler( 'googlemaps', '#http(s)?://maps\.google\.[^\.]+/(.*)#i', 'wp_embed_handler_google_maps');
wp_embed_register_handler( 'openstreetmap', '#http(s)?://www\.openstreetmap\.org/export/embed.html\?(.*)#i', 'wp_embed_handler_openstreetmap');
}
add_action('wp', 'register_embed_handlers');
/* Noembed -- list selected from https://noembed.com/providers */
$noembed = 'https://noembed.com/embed';
$noembed_site = array(
"https?://soundcloud.com/.*/.*",
"https?://www\\.urbandictionary\\.com/define\\.php\\?term=.+",
"https?://(?:www\\.)?vimeo\\.com/.+",
"https?://(?:www\\.)?xkcd\\.com/\\d+/?",
"https?://.*\\.deviantart\\.com/art/.*",
"https?://.*\\.deviantart\\.com/.*#/d.*",
"https?://.*\\.flickr\\.com/photos/.*",
"https?://flic\\.kr/p/.*",
"https?://instagram\\.com/p/.*",
"https?://instagr\\.am/p/.*",
"https?://instagram\\.com/p/.*",
"https?://instagr\\.am/p/.*",
"https?://www\\.slideshare\\.net/.*/.*",
"https?://fr\\.slideshare\\.net/.*/.*",
"https?://de\\.slideshare\\.net/.*/.*",
"https?://es\\.slideshare\\.net/.*/.*",
"https?://pt\\.slideshare\\.net/.*/.*",
"https?://imgur\\.com/(?:[^\\/]+/)?[0-9a-zA-Z]+$",
"https?://bash\\.org/\\?(\\d+)"
);
foreach ($noembed_site as $site){
/* we need to add the php regex delimitators */
wp_oembed_add_provider('#' . $site . '#i', $noembed, true);
}
/* Ted Talks */
wp_oembed_add_provider('http://www.ted.com/talks/*', 'http://www.ted.com/talks/oembed.json', false);
/* arkiwi */
wp_oembed_add_provider('http://www.arkiwi.org/*','http://www.arkiwi.org/oembed/', false );
/* bambuser */
wp_oembed_add_provider('http://*.bambuser.com/*','http://api.bambuser.com/oembed', false);
/* mixcloud */
wp_oembed_add_provider('#https?://(www\.)?mixcloud\.com/.*#i', 'http://mixcloud.com/oembed', true);
?>
<?php
/*
* Plugin Name: Ai - Add oembed provider and embed short
* Plugin URI:
* Description: AI -Add Embed
* Version: 1.2
* Author: lechuck, lucha
* Author URI: http://noblogs.org
**/
/* Starting from wordpress 4.0, there is a function in the core called wp_embed_handler_youtube
* that takes care of forcing https. http://wpseek.com/wp_embed_handler_youtube/
*/
/*function wp_embed_handler_youtube( $matches, $attr, $url, $rawattr ) {
$width = ($rawattr['width']) ? $rawattr['width'] : 340 ;
$height = ($rawattr['height']) ? $rawattr['height'] : 560 ;
if (is_ssl()) {
$ret_url = str_replace('http://', 'https://', $matches[0]);
} else {
$ret_url = $matches[0];
}
$embed = sprintf(
'<object height="%2$s" width="%3$s"><param name="movie" value="%1$s?fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="%1$s?fs=1" type="application/x-shockwave-flash" width="%2$s" height="%3$s" allowscriptaccess="always" allowfullscreen="true"></embed></object>',esc_attr($ret_url),esc_attr($height),esc_attro($width));
return apply_filters( 'embed_youtube', $embed, $matches, $attr, $url, $rawattr );
} */
function wp_embed_handler_google_maps( $matches, $attr, $url, $rawattr ) {
$width = ($rawattr['width']) ? $rawattr['width'] : 425 ;
$height = ($rawattr['height']) ? $rawattr['height'] : 350 ;
$query = add_query_arg(array('output' => 'embed'), $matches[0]);
$embed = '<iframe width="'.esc_attr($width).'" height="'.esc_attr($height).'" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="'.esc_attr($query).'"></iframe>';
return apply_filters( 'embed_googlemaps', $embed, $matches, $attr, $url, $rawattr );
}
function wp_embed_handler_openstreetmap( $matches, $attr, $url, $rawattr ) {
$width = ($rawattr['width']) ? $rawattr['width'] : 425 ;
$height = ($rawattr['height']) ? $rawattr['height'] : 350 ;
$embed = '<iframe width="'.esc_attr($width).'" height="'.esc_attr($height).'" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="'.esc_attr($matches[0]).'"></iframe>';
return apply_filters( 'embed_openstreetmap', $embed, $matches, $attr, $url, $rawattr );
}
function wp_embed_handler_jamendo( $matches, $attr, $url, $rawattr )
{
$autoplay = '';
if( $rawattr['autoplay'] == 'true' )
{
$autoplay = '&playerautoplay=1';
}
if( $matches[1] == 'album' )
{
$embed = sprintf( '<div style="text-align:center;"><object width="200" height="300" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" align="middle"><param name="allowScriptAccess" value="always" /><param name="wmode" value="transparent" /><param name="movie" value="http://widgets.jamendo.com/it/album/?album_id=%2$s%1$s&playertype=2008" /><param name="quality" value="high" /><param name="bgcolor" value="#FFFFFF" /><embed src="http://widgets.jamendo.com/it/album/?album_id=%2$s%1$s&playertype=2008" quality="high" wmode="transparent" bgcolor="#FFFFFF" width="200" height="300" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">&nbsp;</embed>&nbsp;</object></div>', esc_attr( $autoplay ), esc_attr( $matches[2] ));
}
elseif( $matches[1] == 'track' )
{
$embed = sprintf(
'<div style="text-align:center;"><object width="200" height="300" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" align="middle"><param name="allowScriptAccess" value="always" /><param name="wmode" value="transparent" /><param name="movie" value="http://widgets.jamendo.com/it/track/?playertype=2008%1$s&track_id=%2$s" /><param name="quality" value="high" /><param name="bgcolor" value="#FFFFFF" /><embed src="http://widgets.jamendo.com/it/track/?playertype=2008%1$s&track_id=%2$s" quality="high" wmode="transparent" bgcolor="#FFFFFF" width="200" height="300" align="middle" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">&nbsp;</embed>&nbsp;</object></div>', esc_attr( $autoplay ), esc_attr( $matches[2] ) );
}
return apply_filters( 'embed_jamendo', $embed, $matches, $attr, $url, $rawattr );
}
function wp_embed_handler_archive( $matches, $attr, $url, $rawattr ) {
global $flowneed;
$width = ($rawattr['width']) ? $rawattr['width'] : 340 ;
$height = ($rawattr['height']) ? $rawattr['height'] : 288;
$embed = sprintf(
'<div id="flowplayer%5$s" class="flowplayer" style="display:block;width:%3$spx;height:%2$spx;">
<video width="%3$s" height="%2$s" src="%1$s" controls></video>
</div>
',esc_attr($matches[0]),esc_attr($height),esc_attr($width),WP_PLUGIN_URL,md5(rand()));
wp_enqueue_script("flowplayer", WP_PLUGIN_URL."/ai-embed/flowplayer/js/flowplayer.min.js", false, null );
$flowneed=true;
return apply_filters( 'embed_archive', $embed, $matches, $attr, $url, $rawattr );
}
function wp_embed_handler_stream( $matches, $attr, $url, $rawattr ) {
global $flowneed;
$urlstream=preg_replace('/stream:/','',$matches[0]);
$width = ($rawattr['width']) ? $rawattr['width'] : 425 ;
$height = ($rawattr['height']) ? $rawattr['height'] : 30;
$embed = sprintf(
'<div id="flowplayer%5$s" style="display:block;width:%3$spx;height:%2$spx;"></div>
<script>
flowplayer("flowplayer%5$s",{ src:" %4$s/ai-embed/flowplayer/flowplayer-3.2.5.swf"},{
plugins: {
audio: {
url: "%4$s/ai-embed/flowplayer/flowplayer.audio-3.2.1.swf"
},
controls: {
fullscreen: false,
height: 30,
autoHide: false
}
},
clip: { url: "%1$s",
autoPlay: false,
autoBuffering: true
}
});
</script>',esc_attr($urlstream),esc_attr($height),esc_attr($width),WP_PLUGIN_URL,md5(rand()));
wp_enqueue_script("flowplayer", WP_PLUGIN_URL."/ai-embed/flowplayer/js/flowplayer-3.2.4.min.js", false, null );
$flowneed=true;
return apply_filters( 'embed_stream', $embed, $matches, $attr, $url, $rawattr );
}
function wp_embed_handler_mp3( $matches, $attr, $url, $rawattr ) {
$width = ($rawattr['width']) ? $rawattr['width'] : 320 ;
$height = ($rawattr['height']) ? $rawattr['height'] : 20 ;
$embed= sprintf(
'<object data="http://noblogs.org/flash/mp3player/mp3player.swf" type="application/x-shockwave-flash" width="%3$s" height="%2$s">
<param name="quality" value="best" />
<param name="bgcolor" value="#FFFFFF" />
<param name="movie" value="http://noblogs.org/flash/mp3player/mp3player.swf" />
<param name="FlashVars" value="file=%1$s&amp;height=%2$s&amp;width=%3$s" />
</object>',esc_attr($matches[0]),esc_attr($height),esc_attr($width));
return apply_filters( 'embed_archive', $embed, $matches, $attr, $url, $rawattr );
}
/*function wp_embed_handler_googlevideo( $matches, $attr, $url, $rawattr ) {
$width = ($rawattr['width']) ? $rawattr['width'] : 340 ;
$height = ($rawattr['height']) ? $rawattr['height'] : 288 ;
$embed= sprintf(
'<object data="%1$s" type="application/x-shockwave-flash" width="%3$s" height="%2$s">
<param name="quality" value="best" />
<param name="bgcolor" value="#FFFFFF" />
<param name="movie" value="%1$s" />
<param name="allowFullScreen" value="true" />
<param name="FlashVars" value="playerMode=embedded" />
</object>',esc_attr($matches[0]),esc_attr($height),esc_attr($width));
return apply_filters( 'embed_googlevideo', $embed, $matches, $attr, $url, $rawattr );
}*/
function wp_embed_handler_umapper( $matches, $attr, $url, $rawattr ) {
$width = ($rawattr['width']) ? $rawattr['width'] : 900 ;
$height = ($rawattr['height']) ? $rawattr['height'] : 390 ;
/*classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0"*/
$embed= sprintf(
'<object data="http://umapper.s3.amazonaws.com/templates/swf/embed.swf" type="application/x-shockwave-flash" width="%3$s" height="%2$s" >
<param name="FlashVars" value="kmlPath=%1$s"/>
<param name="allowScriptAccess" value="always"/>
<param name="allowFullScreen" value="true"/>
<param name="movie" value="http://umapper.s3.amazonaws.com/templates/swf/embed.swf"/>
<param name="quality" value="high"/>
</object>',esc_attr($matches[0]),esc_attr($height),esc_attr($width));
/* <embed src="http://umapper.s3.amazonaws.com/templates/swf/embed.swf" FlashVars="kmlPath=%1$s" allowScriptAccess="always" allowFullScreen="true" quality="high" width="%3$s" height="%2$s" name="umapper_embed" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>*/
return apply_filters( 'embed_umapper', $embed, $matches, $attr, $url, $rawattr );
}
function wp_embed_handler_dctptv( $matches, $attr, $url, $rawattr ) {
$width = ($rawattr['width']) ? $rawattr['width'] : 480 ;
$height = ($rawattr['height']) ? $rawattr['height'] : 396 ;
$embed= sprintf(
'<iframe width="%3$s" scrolling="no" height="%2$s" frameborder="0" src="%1$s" name="dctp-teaser" marginwidth="0" marginheight="0"><br>
</iframe>',esc_attr($matches[0]),esc_attr($height),esc_attr($width));
return apply_filters( 'embed_dctptv', $embed, $matches, $attr, $url, $rawattr );
}
/*function wp_embed_handler_arav( $matches, $attr, $url, $rawattr ) {
$urlazzo=base64_decode(substr($url,34));
$type = ($rawattr['type']) ? $rawattr['type'] : audio ;
$width = ($rawattr['width']) ? $rawattr['width'] : 480 ;
$height = ($rawattr['height']) ? $rawattr['height'] : 396 ;
if ($type=="video") {
$embed= sprintf(
'<video width="%3$s" height="%2$s" controls="true"><source src="http://storage.arav.ventuordici.org/%1$s" type=\'video/ogg; codecs="vorbis, theora"\'></source>
<applet code="com.fluendo.player.Cortado.class" archive="http://theora.org/cortado.jar" width="%3$s" height="%2$s"><param name="url" value="http://storage.arav.ventuordici.org/%1$s">
<param name="duration" value="1000"></applet></video>',esc_attr($urlazzo),esc_attr($height),esc_attr($width));
}
if ($type=="audio") {
$embed= sprintf(
'<audio src="http://storage.arav.ventuordici.org/%1$s" controls="true">
<applet code="com.fluendo.player.Cortado.class" archive="http://theora.org/cortado.jar" width="580" height="40">
<param name="url" value="http://storage.arav.ventuordici.org/%1$s">
<param name="duration" value="1129"></applet></audio>',esc_attr($urlazzo),esc_attr($height),esc_attr($width));
}
return apply_filters( 'embed_arav', $embed, $matches, $attr, $url, $rawattr );
}*/
function wp_embed_handler_ogm( $matches, $attr, $url, $rawattr ) {
$width = ($rawattr['width']) ? $rawattr['width'] : 480 ;
$height = ($rawattr['height']) ? $rawattr['height'] : 396 ;
$embed= sprintf(
'<video width="%3$s" height="%2$s" controls><source src="%1$s" type="video/ogg; codecs=theora,vorbis"></source><applet code="com.fluendo.player.Cortado.class" archive="http://theora.org/cortado.jar" width="%3$s" height="%2$s"><param name="url" value="%1$s" /></applet></video>',esc_attr($url),esc_attr($height),esc_attr($width));
return apply_filters( 'embed_ogm', $embed, $matches, $attr, $url, $rawattr );
}
function register_embed_handlers() {
wp_embed_register_handler( 'stream', '#stream:.*#i', 'wp_embed_handler_stream' );
wp_embed_register_handler( 'mp3', '#http(s)?://.*?/.*?mp3#i', 'wp_embed_handler_mp3' );
wp_embed_register_handler( 'ogm', '#http(s)?://.*?/.*?ogm#i', 'wp_embed_handler_ogm' );
wp_embed_register_handler( 'archive', '#http(s)?://(.+\.)?archive.org/.*/.*\.(mp4|wmv|mov|mp3|ogv)#i', 'wp_embed_handler_archive' );
wp_embed_register_handler( 'umapper', '#http(s)?://umapper.s3.amazonaws.com/.*?\.kml#i', 'wp_embed_handler_umapper' );
// wp_embed_register_handler( 'youtube', '#http://(www\.)?youtube\.com/v/.*?#i', 'wp_embed_handler_youtube' );
wp_embed_register_handler( 'jamendo', '#http(s)?://www\.jamendo\.com/.*/(album|track)/(.*)#i', 'wp_embed_handler_jamendo' );
wp_embed_register_handler( 'dctptv', '#http(s)?://www.dctp.tv/embed/.*?/#i', 'wp_embed_handler_dctptv' );
wp_embed_register_handler( 'googlemaps', '#http(s)?://maps\.google\.[^\.]+/(.*)#i', 'wp_embed_handler_google_maps');
wp_embed_register_handler( 'openstreetmap', '#http(s)?://www\.openstreetmap\.org/export/embed.html\?(.*)#i', 'wp_embed_handler_openstreetmap');
}
add_action('wp', 'register_embed_handlers');
function enqueue_flowplayer() {
wp_enqueue_script("flowplayer", WP_PLUGIN_URL."/ai-embed/flowplayer/js/flowplayer-3.2.4.min.js", false, null );
}
add_action('wp_enqueue_scripts', 'enqueue_flowplayer');
/* embed.ly providers */
$embedly = 'http://api.embed.ly/1/oembed';
wp_oembed_add_provider('http://*.slideshare.net/*',$embedly, false );
wp_oembed_add_provider('http://*.metacafe.com/watch/*',$embedly, false );
wp_oembed_add_provider('http://*.5min.com/Video/*',$embedly, false );
wp_oembed_add_provider('#http://(.+\.)xkcd\.com/.*#i',$embedly, true );
wp_oembed_add_provider('#http://(www\.)?asofterworld\.com/.*#i',$embedly, true );
wp_oembed_add_provider('http://*.wikipedia.org/wiki/*',$embedly, false );
wp_oembed_add_provider('http://www.wikimedia.org/wiki/File*',$embedly, false );
wp_oembed_add_provider('http://storify.com/*', $embedly, false );
/* Ted Talks */
wp_oembed_add_provider('http://www.ted.com/talks/*', 'http://www.ted.com/talks/oembed.json', false);
/* arkiwi */
wp_oembed_add_provider('http://www.arkiwi.org/*','http://www.arkiwi.org/oembed/', false );
wp_oembed_add_provider('http://arav.ventuordici.org/*','http://www.arkiwi.org/oembed/', false );
wp_oembed_add_provider('http://mp38.contaminati.net/*','http://www.arkiwi.org/oembed/', false );
wp_oembed_add_provider('http://media.fest-antifa.net/*','http://www.arkiwi.org/oembed/', false );
/* bambuser */
wp_oembed_add_provider('http://*.bambuser.com/*','http://api.bambuser.com/oembed', false);
/* mixcloud */
wp_oembed_add_provider('#https?://(www\.)?mixcloud\.com/.*#i', 'http://mixcloud.com/oembed', true);
/*add_action('wp_footer', 'injectJS');
function injectJS() {
global $flowneed;
if ( ! $flowneed )
return;
wp_register_script("flowplayer", WP_PLUGIN_URL."/ai-embed/flowplayer/js/flowplayer.min.js", false, null );
wp_print_scripts('flowplayer');
}*/
?>
This diff is collapsed.
This diff is collapsed.
<!doctype html>
<head>
<!-- player skin -->
<link rel="stylesheet" type="text/css" href="skin/minimalist.css" />
<!-- site specific styling -->
<style>
body { font: 12px "Myriad Pro", "Lucida Grande", sans-serif; text-align: center; padding-top: 5%; }
.flowplayer { width: 80%; }
</style>
<!-- flowplayer depends on jQuery 1.7.1+ (for now) -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<!-- include flowplayer -->
<script src="flowplayer.min.js"></script>
</head>
<body>
<!-- the player -->
<div class="flowplayer" data-swf="flowplayer.swf" data-ratio="0.417">
<video>
<source type="video/webm" src="http://stream.flowplayer.org/bauhaus/624x260.webm"/>
<source type="video/mp4" src="http://stream.flowplayer.org/bauhaus/624x260.mp4"/>
<source type="video/ogv" src="http://stream.flowplayer.org/bauhaus/624x260.ogv"/>
</video>
</div>
</body>
/*
* flowplayer.js 3.2.4. The Flowplayer API
*
* Copyright 2009 Flowplayer Oy
*
* This file is part of Flowplayer.
*
* Flowplayer is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Flowplayer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Flowplayer. If not, see <http://www.gnu.org/licenses/>.
*
* Date: 2010-08-25 12:48:46 +0000 (Wed, 25 Aug 2010)
* Revision: 551
*/
(function(){function g(o){console.log("$f.fireEvent",[].slice.call(o))}function k(q){if(!q||typeof q!="object"){return q}var o=new q.constructor();for(var p in q){if(q.hasOwnProperty(p)){o[p]=k(q[p])}}return o}function m(t,q){if(!t){return}var o,p=0,r=t.length;if(r===undefined){for(o in t){if(q.call(t[o],o,t[o])===false){break}}}else{for(var s=t[0];p<r&&q.call(s,p,s)!==false;s=t[++p]){}}return t}function c(o){return document.getElementById(o)}function i(q,p,o){if(typeof p!="object"){return q}if(q&&p){m(p,function(r,s){if(!o||typeof s!="function"){q[r]=s}})}return q}function n(s){var q=s.indexOf(".");if(q!=-1){var p=s.slice(0,q)||"*";var o=s.slice(q+1,s.length);var r=[];m(document.getElementsByTagName(p),function(){if(this.className&&this.className.indexOf(o)!=-1){r.push(this)}});return r}}function f(o){o=o||window.event;if(o.preventDefault){o.stopPropagation();o.preventDefault()}else{o.returnValue=false;o.cancelBubble=true}return false}function j(q,o,p){q[o]=q[o]||[];q[o].push(p)}function e(){return"_"+(""+Math.random()).slice(2,10)}var h=function(t,r,s){var q=this,p={},u={};q.index=r;if(typeof t=="string"){t={url:t}}i(this,t,true);m(("Begin*,Start,Pause*,Resume*,Seek*,Stop*,Finish*,LastSecond,Update,BufferFull,BufferEmpty,BufferStop").split(","),function(){var v="on"+this;if(v.indexOf("*")!=-1){v=v.slice(0,v.length-1);var w="onBefore"+v.slice(2);q[w]=function(x){j(u,w,x);return q}}q[v]=function(x){j(u,v,x);return q};if(r==-1){if(q[w]){s[w]=q[w]}if(q[v]){s[v]=q[v]}}});i(this,{onCuepoint:function(x,w){if(arguments.length==1){p.embedded=[null,x];return q}if(typeof x=="number"){x=[x]}var v=e();p[v]=[x,w];if(s.isLoaded()){s._api().fp_addCuepoints(x,r,v)}return q},update:function(w){i(q,w);if(s.isLoaded()){s._api().fp_updateClip(w,r)}var v=s.getConfig();var x=(r==-1)?v.clip:v.playlist[r];i(x,w,true)},_fireEvent:function(v,y,w,A){if(v=="onLoad"){m(p,function(B,C){if(C[0]){s._api().fp_addCuepoints(C[0],r,B)}});return false}A=A||q;if(v=="onCuepoint"){var z=p[y];if(z){return z[1].call(s,A,w)}}if(y&&"onBeforeBegin,onMetaData,onStart,onUpdate,onResume".indexOf(v)!=-1){i(A,y);if(y.metaData){if(!A.duration){A.duration=y.metaData.duration}else{A.fullDuration=y.metaData.duration}}}var x=true;m(u[v],function(){x=this.call(s,A,y,w)});return x}});if(t.onCuepoint){var o=t.onCuepoint;q.onCuepoint.apply(q,typeof o=="function"?[o]:o);delete t.onCuepoint}m(t,function(v,w){if(typeof w=="function"){j(u,v,w);delete t[v]}});if(r==-1){s.onCuepoint=this.onCuepoint}};var l=function(p,r,q,t){var o=this,s={},u=false;if(t){i(s,t)}m(r,function(v,w){if(typeof w=="function"){s[v]=w;delete r[v]}});i(this,{animate:function(y,z,x){if(!y){return o}if(typeof z=="function"){x=z;z=500}if(typeof y=="string"){var w=y;y={};y[w]=z;z=500}if(x){var v=e();s[v]=x}if(z===undefined){z=500}r=q._api().fp_animate(p,y,z,v);return o},css:function(w,x){if(x!==undefined){var v={};v[w]=x;w=v}r=q._api().fp_css(p,w);i(o,r);return o},show:function(){this.display="block";q._api().fp_showPlugin(p);return o},hide:function(){this.display="none";q._api().fp_hidePlugin(p);return o},toggle:function(){this.display=q._api().fp_togglePlugin(p);return o},fadeTo:function(y,x,w){if(typeof x=="function"){w=x;x=500}if(w){var v=e();s[v]=w}this.display=q._api().fp_fadeTo(p,y,x,v);this.opacity=y;return o},fadeIn:function(w,v){return o.fadeTo(1,w,v)},fadeOut:function(w,v){return o.fadeTo(0,w,v)},getName:function(){return p},getPlayer:function(){return q},_fireEvent:function(w,v,x){if(w=="onUpdate"){var z=q._api().fp_getPlugin(p);if(!z){return}i(o,z);delete o.methods;if(!u){m(z.methods,function(){var B=""+this;o[B]=function(){var C=[].slice.call(arguments);var D=q._api().fp_invoke(p,B,C);return D==="undefined"||D===undefined?o:D}});u=true}}var A=s[w];if(A){var y=A.apply(o,v);if(w.slice(0,1)=="_"){delete s[w]}return y}return o}})};function b(q,G,t){var w=this,v=null,D=false,u,s,F=[],y={},x={},E,r,p,C,o,A;i(w,{id:function(){return E},isLoaded:function(){return(v!==null&&v.fp_play!==undefined&&!D)},getParent:function(){return q},hide:function(H){if(H){q.style.height="0px"}if(w.isLoaded()){v.style.height="0px"}return w},show:function(){q.style.height=A+"px";if(w.isLoaded()){v.style.height=o+"px"}return w},isHidden:function(){return w.isLoaded()&&parseInt(v.style.height,10)===0},load:function(J){if(!w.isLoaded()&&w._fireEvent("onBeforeLoad")!==false){var H=function(){u=q.innerHTML;if(u&&!flashembed.isSupported(G.version)){q.innerHTML=""}if(J){J.cached=true;j(x,"onLoad",J)}flashembed(q,G,{config:t})};var I=0;m(a,function(){this.unload(function(K){if(++I==a.length){H()}})})}return w},unload:function(J){if(this.isFullscreen()&&/WebKit/i.test(navigator.userAgent)){if(J){J(false)}return w}if(u.replace(/\s/g,"")!==""){if(w._fireEvent("onBeforeUnload")===false){if(J){J(false)}return w}D=true;try{if(v){v.fp_close();w._fireEvent("onUnload")}}catch(H){}var I=function(){v=null;q.innerHTML=u;D=false;if(J){J(true)}};setTimeout(I,50)}else{if(J){J(false)}}return w},getClip:function(H){if(H===undefined){H=C}return F[H]},getCommonClip:function(){return s},getPlaylist:function(){return F},getPlugin:function(H){var J=y[H];if(!J&&w.isLoaded()){var I=w._api().fp_getPlugin(H);if(I){J=new l(H,I,w);y[H]=J}}return J},getScreen:function(){return w.getPlugin("screen")},getControls:function(){return w.getPlugin("controls")._fireEvent("onUpdate")},getLogo:function(){try{return w.getPlugin("logo")._fireEvent("onUpdate")}catch(H){}},getPlay:function(){return w.getPlugin("play")._fireEvent("onUpdate")},getConfig:function(H){return H?k(t):t},getFlashParams:function(){return G},loadPlugin:function(K,J,M,L){if(typeof M=="function"){L=M;M={}}var I=L?e():"_";w._api().fp_loadPlugin(K,J,M,I);var H={};H[I]=L;var N=new l(K,null,w,H);y[K]=N;return N},getState:function(){return w.isLoaded()?v.fp_getState():-1},play:function(I,H){var J=function(){if(I!==undefined){w._api().fp_play(I,H)}else{w._api().fp_play()}};if(w.isLoaded()){J()}else{if(D){setTimeout(function(){w.play(I,H)},50)}else{w.load(function(){J()})}}return w},getVersion:function(){var I="flowplayer.js 3.2.4";if(w.isLoaded()){var H=v.fp_getVersion();H.push(I);return H}return I},_api:function(){if(!w.isLoaded()){throw"Flowplayer "+w.id()+" not loaded when calling an API method"}return v},setClip:function(H){w.setPlaylist([H]);return w},getIndex:function(){return p},_swfHeight:function(){return v.clientHeight}});m(("Click*,Load*,Unload*,Keypress*,Volume*,Mute*,Unmute*,PlaylistReplace,ClipAdd,Fullscreen*,FullscreenExit,Error,MouseOver,MouseOut").split(","),function(){var H="on"+this;if(H.indexOf("*")!=-1){H=H.slice(0,H.length-1);var I="onBefore"+H.slice(2);w[I]=function(J){j(x,I,J);return w}}w[H]=function(J){j(x,H,J);return w}});m(("pause,resume,mute,unmute,stop,toggle,seek,getStatus,getVolume,setVolume,getTime,isPaused,isPlaying,startBuffering,stopBuffering,isFullscreen,toggleFullscreen,reset,close,setPlaylist,addClip,playFeed,setKeyboardShortcutsEnabled,isKeyboardShortcutsEnabled").split(","),function(){var H=this;w[H]=function(J,I){if(!w.isLoaded()){return w}var K=null;if(J!==undefined&&I!==undefined){K=v["fp_"+H](J,I)}else{K=(J===undefined)?v["fp_"+H]():v["fp_"+H](J)}return K==="undefined"||K===undefined?w:K}});w._fireEvent=function(Q){if(typeof Q=="string"){Q=[Q]}var R=Q[0],O=Q[1],M=Q[2],L=Q[3],K=0;if(t.debug){g(Q)}if(!w.isLoaded()&&R=="onLoad"&&O=="player"){v=v||c(r);o=w._swfHeight();m(F,function(){this._fireEvent("onLoad")});m(y,function(S,T){T._fireEvent("onUpdate")});s._fireEvent("onLoad")}if(R=="onLoad"&&O!="player"){return}if(R=="onError"){if(typeof O=="string"||(typeof O=="number"&&typeof M=="number")){O=M;M=L}}if(R=="onContextMenu"){m(t.contextMenu[O],function(S,T){T.call(w)});return}if(R=="onPluginEvent"||R=="onBeforePluginEvent"){var H=O.name||O;var I=y[H];if(I){I._fireEvent("onUpdate",O);return I._fireEvent(M,Q.slice(3))}return}if(R=="onPlaylistReplace"){F=[];var N=0;m(O,function(){F.push(new h(this,N++,w))})}if(R=="onClipAdd"){if(O.isInStream){return}O=new h(O,M,w);F.splice(M,0,O);for(K=M+1;K<F.length;K++){F[K].index++}}var P=true;if(typeof O=="number"&&O<F.length){C=O;var J=F[O];if(J){P=J._fireEvent(R,M,L)}if(!J||P!==false){P=s._fireEvent(R,M,L,J)}}m(x[R],function(){P=this.call(w,O,M);if(this.cached){x[R].splice(K,1)}if(P===false){return false}K++});return P};function B(){if($f(q)){$f(q).getParent().innerHTML="";p=$f(q).getIndex();a[p]=w}else{a.push(w);p=a.length-1}A=parseInt(q.style.height,10)||q.clientHeight;E=q.id||"fp"+e();r=G.id||E+"_api";G.id=r;t.playerId=E;if(typeof t=="string"){t={clip:{url:t}}}if(typeof t.clip=="string"){t.clip={url:t.clip}}t.clip=t.clip||{};if(q.getAttribute("href",2)&&!t.clip.url){t.clip.url=q.getAttribute("href",2)}s=new h(t.clip,-1,w);t.playlist=t.playlist||[t.clip];var I=0;m(t.playlist,function(){var K=this;if(typeof K=="object"&&K.length){K={url:""+K}}m(t.clip,function(L,M){if(M!==undefined&&K[L]===undefined&&typeof M!="function"){K[L]=M}});t.playlist[I]=K;K=new h(K,I,w);F.push(K);I++});m(t,function(K,L){if(typeof L=="function"){if(s[K]){s[K](L)}else{j(x,K,L)}delete t[K]}});m(t.plugins,function(K,L){if(L){y[K]=new l(K,L,w)}});if(!t.plugins||t.plugins.controls===undefined){y.controls=new l("controls",null,w)}y.canvas=new l("canvas",null,w);u=q.innerHTML;function J(L){var K=w.hasiPadSupport&&w.hasiPadSupport();if(/iPad|iPhone|iPod/i.test(navigator.userAgent)&&!/.flv$/i.test(F[0].url)&&!K){return true}if(!w.isLoaded()&&w._fireEvent("onBeforeClick")!==false){w.load()}return f(L)}function H(){if(u.replace(/\s/g,"")!==""){if(q.addEventListener){q.addEventListener("click",J,false)}else{if(q.attachEvent){q.attachEvent("onclick",J)}}}else{if(q.addEventListener){q.addEventListener("click",f,false)}w.load()}}setTimeout(H,0)}if(typeof q=="string"){var z=c(q);if(!z){throw"Flowplayer cannot access element: "+q}q=z;B()}else{B()}}var a=[];function d(o){this.length=o.length;this.each=function(p){m(o,p)};this.size=function(){return o.length}}window.flowplayer=window.$f=function(){var p=null;var o=arguments[0];if(!arguments.length){m(a,function(){if(this.isLoaded()){p=this;return false}});return p||a[0]}if(arguments.length==1){if(typeof o=="number"){return a[o]}else{if(o=="*"){return new d(a)}m(a,function(){if(this.id()==o.id||this.id()==o||this.getParent()==o){p=this;return false}});return p}}if(arguments.length>1){var t=arguments[1],q=(arguments.length==3)?arguments[2]:{};if(typeof t=="string"){t={src:t}}t=i({bgcolor:"#000000",version:[9,0],expressInstall:"http://static.flowplayer.org/swf/expressinstall.swf",cachebusting:true},t);if(typeof o=="string"){if(o.indexOf(".")!=-1){var s=[];m(n(o),function(){s.push(new b(this,k(t),k(q)))});return new d(s)}else{var r=c(o);return new b(r!==null?r:o,t,q)}}else{if(o){return new b(o,t,q)}}}return null};i(window.$f,{fireEvent:function(){var o=[].slice.call(arguments);var q=$f(o[0]);return q?q._fireEvent(o.slice(1)):null},addPlugin:function(o,p){b.prototype[o]=p;return $f},each:m,extend:i});if(typeof jQuery=="function"){jQuery.fn.flowplayer=function(q,p){if(!arguments.length||typeof arguments[0]=="number"){var o=[];this.each(function(){var r=$f(this);if(r){o.push(r)}});return arguments.length?o[arguments[0]]:new d(o)}return this.each(function(){$f(this,k(q),p?k(p):{})})}}})();(function(){var h=document.all,j="http://www.adobe.com/go/getflashplayer",c=typeof jQuery=="function",e=/(\d+)[^\d]+(\d+)[^\d]*(\d*)/,b={width:"100%",height:"100%",id:"_"+(""+Math.random()).slice(9),allowfullscreen:true,allowscriptaccess:"always",quality:"high",version:[3,0],onFail:null,expressInstall:null,w3c:false,cachebusting:false};if(window.attachEvent){window.attachEvent("onbeforeunload",function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){}})}function i(m,l){if(l){for(var f in l){if(l.hasOwnProperty(f)){m[f]=l[f]}}}return m}function a(f,n){var m=[];for(var l in f){if(f.hasOwnProperty(l)){m[l]=n(f[l])}}return m}window.flashembed=function(f,m,l){if(typeof f=="string"){f=document.getElementById(f.replace("#",""))}if(!f){return}if(typeof m=="string"){m={src:m}}return new d(f,i(i({},b),m),l)};var g=i(window.flashembed,{conf:b,getVersion:function(){var m,f;try{f=navigator.plugins["Shockwave Flash"].description.slice(16)}catch(o){try{m=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");f=m&&m.GetVariable("$version")}catch(n){try{m=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");f=m&&m.GetVariable("$version")}catch(l){}}}f=e.exec(f);return f?[f[1],f[3]]:[0,0]},asString:function(l){if(l===null||l===undefined){return null}var f=typeof l;if(f=="object"&&l.push){f="array"}switch(f){case"string":l=l.replace(new RegExp('(["\\\\])',"g"),"\\$1");l=l.replace(/^\s?(\d+\.?\d+)%/,"$1pct");return'"'+l+'"';case"array":return"["+a(l,function(o){return g.asString(o)}).join(",")+"]";case"function":return'"function()"';case"object":var m=[];for(var n in l){if(l.hasOwnProperty(n)){m.push('"'+n+'":'+g.asString(l[n]))}}return"{"+m.join(",")+"}"}return String(l).replace(/\s/g," ").replace(/\'/g,'"')},getHTML:function(o,l){o=i({},o);var n='<object width="'+o.width+'" height="'+o.height+'" id="'+o.id+'" name="'+o.id+'"';if(o.cachebusting){o.src+=((o.src.indexOf("?")!=-1?"&":"?")+Math.random())}if(o.w3c||!h){n+=' data="'+o.src+'" type="application/x-shockwave-flash"'}else{n+=' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'}n+=">";if(o.w3c||h){n+='<param name="movie" value="'+o.src+'" />'}o.width=o.height=o.id=o.w3c=o.src=null;o.onFail=o.version=o.expressInstall=null;for(var m in o){if(o[m]){n+='<param name="'+m+'" value="'+o[m]+'" />'}}var p="";if(l){for(var f in l){if(l[f]){var q=l[f];p+=f+"="+(/function|object/.test(typeof q)?g.asString(q):q)+"&"}}p=p.slice(0,-1);n+='<param name="flashvars" value=\''+p+"' />"}n+="</object>";return n},isSupported:function(f){return k[0]>f[0]||k[0]==f[0]&&k[1]>=f[1]}});var k=g.getVersion();function d(f,n,m){if(g.isSupported(n.version)){f.innerHTML=g.getHTML(n,m)}else{if(n.expressInstall&&g.isSupported([6,65])){f.innerHTML=g.getHTML(i(n,{src:n.expressInstall}),{MMredirectURL:location.href,MMplayerType:"PlugIn",MMdoctitle:document.title})}else{if(!f.innerHTML.replace(/\s/g,"")){f.innerHTML="<h2>Flash version "+n.version+" or greater is required</h2><h3>"+(k[0]>0?"Your version is "+k:"You have no flash plugin installed")+"</h3>"+(f.tagName=="A"?"<p>Click here to download latest version</p>":"<p>Download latest version from <a href='"+j+"'>here</a></p>");if(f.tagName=="A"){f.onclick=function(){location.href=j}}}if(n.onFail){var l=n.onFail.call(this);if(typeof l=="string"){f.innerHTML=l}}}}if(h){window[n.id]=document.getElementById(n.id)}i(this,{getRoot:function(){return f},getOptions:function(){return n},getConf:function(){return m},getApi:function(){return f.firstChild}})}if(c){jQuery.tools=jQuery.tools||{version:"3.2.4"};jQuery.tools.flashembed={conf:b};jQuery.fn.flashembed=function(l,f){return this.each(function(){$(this).data("flashembed",flashembed(this,l,f))})}}})();
\ No newline at end of file
<html><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!-- A minimal Flowplayer setup to get you started -->
<!--
include flowplayer JavaScript file that does
Flash embedding and provides the Flowplayer API.
-->
<script type="text/javascript" src="flowplayer-3.2.4.min.js"></script>
<!-- some minimal styling, can be removed -->
<link rel="stylesheet" type="text/css" href="style.css">
<!-- page title -->
<title>Minimal Flowplayer setup</title>
</head><body>
<div id="page">
<h1>Minimal Flowplayer setup</h1>
<p>View commented source code to get familiar with Flowplayer installation.</p>
<!-- this A tag is where your Flowplayer will be placed. it can be anywhere -->
<a
href="http://e1h13.simplecdn.net/flowplayer/flowplayer.flv"
style="display:block;width:520px;height:330px"
id="player">
</a>
<!-- this will install flowplayer inside previous A- tag. -->
<script>
flowplayer("player", "../flowplayer-3.2.5.swf");
</script>
<!--
after this line is purely informational stuff.
does not affect on Flowplayer functionality
-->