MEDIUM: Update plugin vshare to v2017-04-27
This commit is contained in:
parent
2dc3353e32
commit
76176dc21c
|
@ -18,3 +18,7 @@ div.vshare__center {
|
|||
display: block;
|
||||
}
|
||||
|
||||
iframe.vshare__none,
|
||||
div.vshare__none {
|
||||
margin: 1px 3px 1px 3px;
|
||||
}
|
||||
|
|
|
@ -7,4 +7,4 @@
|
|||
|
||||
$lang['js']['button'] = '동영상 공유 사이트에서 동영상 넣기';
|
||||
$lang['js']['prompt'] = '여기에 동영상 페이지의 전체 URL을 붙여넣으세요:';
|
||||
$lang['js']['notfound'] = "죄송하지만 이 URL을 인식할 수 없습니다.\n수동으로 올바른 문법을 넣는 방법에 대해서는 설명서를 참고하세요.";
|
||||
$lang['js']['notfound'] = "죄송하지만 이 URL을 인식할 수 없습니다.\n수동으로 올바른 문법을 넣는 방법에 대해서는 설명문서를 참조하세요.";
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
base vshare
|
||||
author Andreas Gohr
|
||||
email andi@splitbrain.org
|
||||
date 2014-11-25
|
||||
date 2017-04-27
|
||||
name Video Sharing Site Plugin
|
||||
desc Easily embed videos from various Video Sharing sites. Example: {{youtube>XXXXXX}}
|
||||
url https://www.dokuwiki.org/plugin:vshare
|
||||
|
|
|
@ -11,6 +11,8 @@ metacafe iframe http://www.metacafe.com/embed/@VIDEO@/
|
|||
bliptv iframe //blip.tv/play/@VIDEO@.x?p=1
|
||||
break iframe //www.break.com/embed/@VIDEO@?embed=1
|
||||
msoffice iframe http://hub.video.msn.com/embed/@VIDEO@/
|
||||
archiveorg iframe //archive.org/embed/@VIDEO@
|
||||
niconico iframe http://embed.nicovideo.jp/watch/@VIDEO@
|
||||
|
||||
5min flash http://www.5min.com/Embeded/@VIDEO@/
|
||||
clipfish flash //www.clipfish.de/cfng/flash/clipfish_player_3.swf?as=0&vid=@VIDEO@&r=1&angebot=extern&
|
||||
|
@ -20,7 +22,6 @@ rcmovie flash http://www.rcmovie.de/embed/@VIDEO@
|
|||
scivee flash //www.scivee.tv/flash/embedPlayer.swf?id=@VIDEO@&type=3
|
||||
twitchtv flash http://www.twitch.tv/widgets/live_embed_player.swf?channel=@VIDEO@&auto_play=false&start_volume=25
|
||||
veoh flash //www.veoh.com/videodetails2.swf?player=videodetailsembedded&type=v&permalinkId=@VIDEO@&id=anonymous
|
||||
|
||||
|
||||
|
||||
|
||||
youku flash http://player.youku.com/player.php/sid/@VIDEO@/v.swf
|
||||
tudou flash http://www.tudou.com/v/@VIDEO@/&resourceId=0_05_05_99&bid=05/v.swf
|
||||
bilibili flash http://static.hdslb.com/miniloader.swf?aid=@VIDEO@&&page=1
|
||||
|
|
|
@ -25,7 +25,12 @@ var sites = {
|
|||
'bliptv': '(?:blip\\.tv\\/play\\/([a-zA-Z0-9]+\\.(?:html|x))\\?p=1|(http?\\:\\/\\/blip\\.tv\\/(?!play)(?:[a-zA-Z0-9_\\-]+)\\/(?:[a-zA-Z0-9_\\-]+)))',
|
||||
'break': 'break\\.com\\/video\\/(?:(?:[a-z]+)\\/)?(?:[a-z\\-]+)-([0-9]+)',
|
||||
'viddler': 'viddler\\.com\\/(?:embed|v)\\/([a-z0-9]{8})',
|
||||
'msoffice': '(?:office\\.com.*[&?]videoid=([a-z0-9\\-]+))',
|
||||
'slideshare': '(?:(?:slideshare\\.net\\/slideshow\\/embed_code\\/|id=)([0-9]+)|(https?\\:\\/\\/www\\.slideshare\\.net\\/(?:[a-zA-Z0-9_\\-]+)\\/(?:[a-zA-Z0-9_\\-]+)))'
|
||||
'msoffice': '(?:office\\.com.*[&?]videoid=([a-z0-9\\-]+))',
|
||||
'slideshare': '(?:(?:slideshare\\.net\\/slideshow\\/embed_code\\/|id=)([0-9]+)|(https?\\:\\/\\/www\\.slideshare\\.net\\/(?:[a-zA-Z0-9_\\-]+)\\/(?:[a-zA-Z0-9_\\-]+)))',
|
||||
'archiveorg': 'archive\\.org\\/embed\\/([a-zA-Z0-9_\\-]+)',
|
||||
'niconico': 'nicovideo\\.jp/watch/(sm[0-9]+)',
|
||||
'youku': 'v\\.youku\\.com/v_show/id_([[0-9A-Za-z]]+)\\.html',
|
||||
'tudou': 'tudou\\.com/programs/view/([0-9A-Za-z]+)',
|
||||
'bilibili': 'bilibili\\.com/video/av([0-9])+/'
|
||||
};
|
||||
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
vshare Plugin for DokuWiki
|
||||
|
||||
All documentation for this plugin can be found at
|
||||
http://www.dokuwiki.org/plugin:vshare
|
||||
|
||||
If you install this plugin manually, make sure it is installed in
|
||||
lib/plugins/vshare/ - if the folder is called different it
|
||||
will not work!
|
||||
|
||||
Please refer to http://www.dokuwiki.org/plugins for additional info
|
||||
on how to install plugins in DokuWiki.
|
||||
|
||||
----
|
||||
Copyright (C) Andreas Gohr <andi@splitbrain.org>
|
||||
|
||||
This program 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; version 2 of the License
|
||||
|
||||
This program 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.
|
||||
|
||||
See the COPYING file in your DokuWiki folder for details
|
|
@ -1,20 +0,0 @@
|
|||
iframe.vshare__left,
|
||||
div.vshare__left {
|
||||
float: left;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
iframe.vshare__right,
|
||||
div.vshare__right {
|
||||
float: right;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
iframe.vshare__center,
|
||||
div.vshare__center {
|
||||
text-align: center;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
display: block;
|
||||
}
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 710 B |
|
@ -1,6 +0,0 @@
|
|||
<?php
|
||||
|
||||
$lang['js']['button'] = 'Insert video from video sharing sites';
|
||||
$lang['js']['prompt'] = 'Please paste the full URL to the video page here:';
|
||||
$lang['js']['notfound'] = "Sorry, this URL wasn't recognized.\nPlease refer to the documentation on how to insert the correct syntax manually.";
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* French language file for vshare plugin
|
||||
*
|
||||
* @author Fabrice DEJAIGHER <fabrice@chtiland.com>
|
||||
*/
|
||||
|
||||
$lang['js']['button'] = 'Insère une vidéo depuis des sites de partage vidéo';
|
||||
$lang['js']['prompt'] = 'Copiez/collez le lien complet de la page contenant la vidéo ici :';
|
||||
$lang['js']['notfound'] = "Désolé, cette URL n'a pas été reconnue. Consultez la documentation sur la syntaxe pour insérer une vidéo manuellement.";
|
|
@ -1,10 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* japanese language file
|
||||
*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
*/
|
||||
|
||||
$lang['js']['button'] = '動画共有サイトの動画を挿入';
|
||||
$lang['js']['prompt'] = 'ここに動画ページへの完全な URL を貼り付けて下さい:';
|
||||
$lang['js']['notfound'] = "申し訳ないですが、この URL が認識されません。\n手動で正しい構文を挿入する方法をマニュアルで確認して下さい。";
|
|
@ -1,10 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Korean language file for vshare plugin
|
||||
*
|
||||
* @author Myeongjin <aranet100@gmail.com>
|
||||
*/
|
||||
|
||||
$lang['js']['button'] = '동영상 공유 사이트에서 동영상 넣기';
|
||||
$lang['js']['prompt'] = '여기에 동영상 페이지의 전체 URL을 붙여넣으세요:';
|
||||
$lang['js']['notfound'] = "죄송하지만 이 URL을 인식할 수 없습니다.\n수동으로 올바른 문법을 넣는 방법에 대해서는 설명서를 참고하세요.";
|
|
@ -1,10 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Dutch language file for vshare plugin.
|
||||
*
|
||||
* @author Mark C. Prins <mprins@users.sf.net>
|
||||
*/
|
||||
$lang['js']['button'] = 'Voeg een video van een video-delen website in';
|
||||
$lang['js']['prompt'] = 'Plak hier de volledige URL voor de video pagina:';
|
||||
$lang['js']['notfound'] = "Sorry, deze URL werd niet herkend.\nRaadpleeg de documentatie over de juiste syntax om een URL handmatig in te voegen.";
|
|
@ -1,16 +0,0 @@
|
|||
|
||||
div.vshare__left,
|
||||
div.vshare__right,
|
||||
div.vshare__center {
|
||||
border: 1px solid #ccc;
|
||||
text-align: center;
|
||||
padding: 2em;
|
||||
}
|
||||
|
||||
a.vshare {
|
||||
color: #aaa;
|
||||
font-size: 2em;
|
||||
font-weight: bold;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
base vshare
|
||||
author Andreas Gohr
|
||||
email andi@splitbrain.org
|
||||
date 2014-11-25
|
||||
name Video Sharing Site Plugin
|
||||
desc Easily embed videos from various Video Sharing sites. Example: {{youtube>XXXXXX}}
|
||||
url https://www.dokuwiki.org/plugin:vshare
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Andreas Gohr <gohr@cosmocode.de>
|
||||
*
|
||||
* Simple redirector script to avoid security warnings when embedding HTTP in SSL secured sites
|
||||
*
|
||||
* To avoid open redirects, a secret hash has to be provided
|
||||
*/
|
||||
if(!defined('DOKU_INC')) define('DOKU_INC', dirname(__FILE__) . '/../../../');
|
||||
define('NOSESSION', true);
|
||||
require_once(DOKU_INC . 'inc/init.php');
|
||||
global $INPUT;
|
||||
|
||||
$url = $INPUT->str('url');
|
||||
$hash = $INPUT->str('hash');
|
||||
|
||||
if(!$url) die('sorry. no url');
|
||||
if(!$hash) die('sorry. no hash');
|
||||
if($hash != md5(auth_cookiesalt() . 'vshare' . $url)) die('sorry. wrong hash');
|
||||
|
||||
send_redirect($url);
|
|
@ -1,116 +0,0 @@
|
|||
|
||||
/**
|
||||
* Append a toolbar button
|
||||
*/
|
||||
if(window.toolbar != undefined){
|
||||
toolbar[toolbar.length] = {"type": "pluginvshare",
|
||||
"title": LANG['plugins']['vshare']['button'],
|
||||
"icon": "../../plugins/vshare/button.png",
|
||||
"key": ""};
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to determine the video service, extract the ID and insert
|
||||
* the correct syntax
|
||||
*/
|
||||
function tb_pluginvshare(btn, props, edid) {
|
||||
PluginVShare.edid = edid;
|
||||
|
||||
PluginVShare.buildSyntax();
|
||||
}
|
||||
|
||||
var PluginVShare = {
|
||||
edid: null,
|
||||
|
||||
buildSyntax: function () {
|
||||
|
||||
var text = prompt(LANG['plugins']['vshare']['prompt']);
|
||||
if (!text) return;
|
||||
|
||||
// This includes the site patterns:
|
||||
/* DOKUWIKI:include sites.js */
|
||||
|
||||
for (var key in sites) {
|
||||
|
||||
if(sites.hasOwnProperty(key)) {
|
||||
var RE = new RegExp(sites[key], 'i');
|
||||
var match = text.match(RE);
|
||||
if (match) {
|
||||
var urlparam = '';
|
||||
var videoid = match[1];
|
||||
|
||||
switch (key) {
|
||||
case 'slideshare':
|
||||
//provided video url?
|
||||
if(match[2]) {
|
||||
|
||||
jQuery.ajax({
|
||||
url: '//www.slideshare.net/api/oembed/2',
|
||||
dataType: 'jsonp',
|
||||
data: {
|
||||
url: match[2],
|
||||
format: 'jsonp'
|
||||
}
|
||||
}).done(function (response, status, error) {
|
||||
var videoid = response.slideshow_id;
|
||||
PluginVShare.insert(key, videoid, urlparam);
|
||||
}).fail(function (data, status, error) {
|
||||
/* http://www.slideshare.net/developers/oembed
|
||||
* If not found, an status 200 with response {error:true} is returned,
|
||||
* but "Content-Type:application/javascript; charset=utf-8" is then
|
||||
* wrongly changed to "Content-Type:application/json; charset=utf-8"
|
||||
* so it throws a parseerror
|
||||
*/
|
||||
alert(LANG['plugins']['vshare']['notfound']);
|
||||
});
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 'bliptv':
|
||||
//provided video url?
|
||||
if(match[2]) {
|
||||
|
||||
jQuery.ajax({
|
||||
url: '//blip.tv/oembed/',
|
||||
dataType: 'jsonp',
|
||||
data: {
|
||||
url: match[2],
|
||||
format: 'json'
|
||||
},
|
||||
timeout: 2000
|
||||
}).done(function (response, status, error) {
|
||||
var videoidmatch = response.html.match(RE);
|
||||
PluginVShare.insert(key, videoidmatch[1], urlparam);
|
||||
}).fail(function (data, status, error) {
|
||||
/*
|
||||
* If url is not found(=wrong numerical number on end), blip.tv returns a 404
|
||||
* because jsonp is not a xmlhttprequest, there is no 404 catched
|
||||
* errors are detected by waiting at the timeout
|
||||
*/
|
||||
alert(LANG['plugins']['vshare']['notfound']);
|
||||
});
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 'twitchtv':
|
||||
if (match[2]) {
|
||||
urlparam = '&chapter_id=' + match[2];
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
PluginVShare.insert(key, videoid, urlparam);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
alert(LANG['plugins']['vshare']['notfound']);
|
||||
},
|
||||
|
||||
insert: function(key, videoid, urlparam, edid) {
|
||||
var code = '{{' + key + '>' + videoid + '?medium' + urlparam + '}}';
|
||||
insertAtCarret(PluginVShare.edid, code);
|
||||
}
|
||||
};
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
# configure video site flash or iframe URLs here, @VIDEO@ is the ID placeholder
|
||||
|
||||
vimeo iframe //player.vimeo.com/video/@VIDEO@
|
||||
ustream iframe http://www.ustream.tv/embed/recorded/@VIDEO@
|
||||
youtube iframe //www.youtube.com/embed/@VIDEO@
|
||||
viddler iframe //www.viddler.com/embed/@VIDEO@/?f=1&autoplay=0&player=mini&hideablecontrolbar=1&smooth=0&disablebranding=0&loop=0&nologo=0&hd=0
|
||||
slideshare iframe //www.slideshare.net/slideshow/embed_code/@VIDEO@
|
||||
dailymotion iframe //www.dailymotion.com/embed/video/@VIDEO@
|
||||
bambuser iframe http://embed.bambuser.com/broadcast/@VIDEO@
|
||||
metacafe iframe http://www.metacafe.com/embed/@VIDEO@/
|
||||
bliptv iframe //blip.tv/play/@VIDEO@.x?p=1
|
||||
break iframe //www.break.com/embed/@VIDEO@?embed=1
|
||||
msoffice iframe http://hub.video.msn.com/embed/@VIDEO@/
|
||||
|
||||
5min flash http://www.5min.com/Embeded/@VIDEO@/
|
||||
clipfish flash //www.clipfish.de/cfng/flash/clipfish_player_3.swf?as=0&vid=@VIDEO@&r=1&angebot=extern&
|
||||
gtrailers flash http://www.gametrailers.com/remote_wrap.php?mid=@VIDEO@
|
||||
myspacetv flash http://lads.myspace.com/videos/vplayer.swf?m=@VIDEO@&v=2&type=video
|
||||
rcmovie flash http://www.rcmovie.de/embed/@VIDEO@
|
||||
scivee flash //www.scivee.tv/flash/embedPlayer.swf?id=@VIDEO@&type=3
|
||||
twitchtv flash http://www.twitch.tv/widgets/live_embed_player.swf?channel=@VIDEO@&auto_play=false&start_volume=25
|
||||
veoh flash //www.veoh.com/videodetails2.swf?player=videodetailsembedded&type=v&permalinkId=@VIDEO@&id=anonymous
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
/**
|
||||
* video URL recognition patterns
|
||||
*
|
||||
* The first match group is used as video ID
|
||||
*
|
||||
* You need to touch conf/local.php to refresh the cache after changing
|
||||
* this file
|
||||
*/
|
||||
|
||||
var sites = {
|
||||
'youtube': 'youtube\\.com/.*[&?]v=([a-z0-9_\\-]+)',
|
||||
'vimeo': 'vimeo\\.com\\/(\\d+)',
|
||||
'ustream': 'ustream\\.tv\\/recorded\\/(\\d+)\\/',
|
||||
'5min': '5min\\.com\\/Video/.*-([0-9]+)([&?]|$)',
|
||||
'clipfish': 'clipfishi\\.de\\/.*\\/video\\/([0-9])+\\/',
|
||||
'dailymotion': 'dailymotion\\.com\\/video\\/([a-z0-9]+)_',
|
||||
'gtrailers': 'gametrailers\\.com\\/.*\\/(\\d+)',
|
||||
'metacafe': 'metacafe\\.com\\/watch\\/(\\d+)\\/',
|
||||
'myspacetv': 'vids\\.myspace\\.com\\/.*videoid=(\\d+)',
|
||||
'rcmovie': 'rcmovie\\.de\\/video\\/([a-f0-9]+)\\/',
|
||||
'scivee': 'scivee\\.tv\\/node\\/(\\d+)',
|
||||
'twitchtv': 'twitch\\.tv\\/([a-z0-9_\\-]+)(?:\\/c\\/(\\d+))?',
|
||||
'veoh': 'veoh\\.com\\/.*watch[^v]*(v[a-z0-9]+)',
|
||||
'bambuser': 'bambuser\\.com\\/v\\/(\\d+)',
|
||||
'bliptv': '(?:blip\\.tv\\/play\\/([a-zA-Z0-9]+\\.(?:html|x))\\?p=1|(http?\\:\\/\\/blip\\.tv\\/(?!play)(?:[a-zA-Z0-9_\\-]+)\\/(?:[a-zA-Z0-9_\\-]+)))',
|
||||
'break': 'break\\.com\\/video\\/(?:(?:[a-z]+)\\/)?(?:[a-z\\-]+)-([0-9]+)',
|
||||
'viddler': 'viddler\\.com\\/(?:embed|v)\\/([a-z0-9]{8})',
|
||||
'msoffice': '(?:office\\.com.*[&?]videoid=([a-z0-9\\-]+))',
|
||||
'slideshare': '(?:(?:slideshare\\.net\\/slideshow\\/embed_code\\/|id=)([0-9]+)|(https?\\:\\/\\/www\\.slideshare\\.net\\/(?:[a-zA-Z0-9_\\-]+)\\/(?:[a-zA-Z0-9_\\-]+)))'
|
||||
};
|
||||
|
|
@ -1,209 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* Easily embed videos from various Video Sharing sites
|
||||
*
|
||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
||||
* @author Andreas Gohr <andi@splitbrain.org>
|
||||
*/
|
||||
|
||||
if(!defined('DOKU_INC')) die();
|
||||
require_once(DOKU_PLUGIN.'syntax.php');
|
||||
|
||||
class syntax_plugin_vshare extends DokuWiki_Syntax_Plugin {
|
||||
var $sites;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
* Intitalizes the supported video sites
|
||||
*/
|
||||
function syntax_plugin_vshare(){
|
||||
$this->sites = confToHash(dirname(__FILE__).'/sites.conf');
|
||||
}
|
||||
|
||||
function getType(){
|
||||
return 'substition';
|
||||
}
|
||||
|
||||
function getPType(){
|
||||
return 'block';
|
||||
}
|
||||
|
||||
function getSort(){
|
||||
return 159;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Connect to the parser
|
||||
*/
|
||||
function connectTo($mode) {
|
||||
$pattern = join('|',array_keys($this->sites));
|
||||
$this->Lexer->addSpecialPattern('\{\{\s?(?:'.$pattern.')>[^}]*\}\}',$mode,'plugin_vshare');
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse the parameters
|
||||
*/
|
||||
function handle($match, $state, $pos, &$handler){
|
||||
$command = substr($match,2,-2);
|
||||
|
||||
// title
|
||||
list($command,$title) = explode('|',$command);
|
||||
$title = trim($title);
|
||||
|
||||
// alignment
|
||||
$align = 0;
|
||||
if(substr($command,0,1) == ' ') $align += 1;
|
||||
if(substr($command,-1) == ' ') $align += 2;
|
||||
$command = trim($command);
|
||||
|
||||
// get site and video
|
||||
list($site,$vid) = explode('>',$command);
|
||||
if(!$this->sites[$site]) return null; // unknown site
|
||||
if(!$vid) return null; // no video!?
|
||||
|
||||
// what size?
|
||||
list($vid,$param) = explode('?',$vid,2);
|
||||
if(preg_match('/(\d+)x(\d+)/i',$param,$m)){ // custom
|
||||
$width = $m[1];
|
||||
$height = $m[2];
|
||||
}elseif(strpos($param,'small') !== false){ // small
|
||||
$width = 255;
|
||||
$height = 210;
|
||||
}elseif(strpos($param,'large') !== false){ // large
|
||||
$width = 520;
|
||||
$height = 406;
|
||||
}else{ // medium
|
||||
$width = 425;
|
||||
$height = 350;
|
||||
}
|
||||
|
||||
$paramm = array();
|
||||
parse_str($param, $paramm);
|
||||
$urlparam = array();
|
||||
foreach($paramm as $key => $value) {
|
||||
switch($key) {
|
||||
case 'rel':
|
||||
case 'autoplay':
|
||||
case 'ap':
|
||||
if($paramm[$key] === '1' || $paramm[$key] === '0') {
|
||||
$urlparam[] = $key . '=' . $paramm[$key];
|
||||
}
|
||||
break;
|
||||
case 'start':
|
||||
case 'end':
|
||||
case 'chapter_id': //for twitch.tv
|
||||
case 'initial_time':
|
||||
case 'offsetTime':
|
||||
case 'startSlide':
|
||||
$number = (int) $paramm[$key];
|
||||
if($number > 0) {
|
||||
$urlparam[] = $key . '=' . $number;
|
||||
}
|
||||
break;
|
||||
case 'auto_start':
|
||||
if($paramm[$key] === 'true' || $paramm[$key] === 'false') {
|
||||
$urlparam[] = $key . '=' . $paramm[$key];
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
list($type, $url) = explode(' ', $this->sites[$site], 2);
|
||||
$url = trim($url);
|
||||
$type = trim($type);
|
||||
$url = str_replace('@VIDEO@',rawurlencode($vid),$url);
|
||||
$url = str_replace('@WIDTH@',$width,$url);
|
||||
$url = str_replace('@HEIGHT@',$height,$url);
|
||||
if(count($urlparam)) {
|
||||
if(strpos($url, '?') !== false) {
|
||||
$sepchar = '&';
|
||||
} else {
|
||||
$sepchar = '?';
|
||||
}
|
||||
$url .= $sepchar . implode('&', $urlparam);
|
||||
}
|
||||
|
||||
list(,$vars) = explode('?',$url,2);
|
||||
$varr = array();
|
||||
parse_str($vars,$varr);
|
||||
|
||||
return array(
|
||||
'site' => $site,
|
||||
'video' => $vid,
|
||||
'url' => $url,
|
||||
'vars' => $varr,
|
||||
'align' => $align,
|
||||
'width' => $width,
|
||||
'height' => $height,
|
||||
'title' => $title,
|
||||
'type' => $type
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the flash player
|
||||
*/
|
||||
function render($mode, &$R, $data){
|
||||
if($mode != 'xhtml') return false;
|
||||
if(is_null($data)) return false;
|
||||
|
||||
if($data['align'] == 0) $align = 'none';
|
||||
if($data['align'] == 1) $align = 'right';
|
||||
if($data['align'] == 2) $align = 'left';
|
||||
if($data['align'] == 3) $align = 'center';
|
||||
if($data['title']) $title = ' title="'.hsc($data['title']).'"';
|
||||
|
||||
if(is_a($R,'renderer_plugin_dw2pdf')){
|
||||
// Output for PDF renderer
|
||||
$R->doc .= '<div class="vshare__'.$align.'"
|
||||
width="'.$data['width'].'"
|
||||
height="'.$data['height'].'">';
|
||||
|
||||
$R->doc .= '<a href="'.$data['url'].'" class="vshare">';
|
||||
$R->doc .= '<img src="'.DOKU_BASE.'lib/plugins/vshare/video.png" />';
|
||||
$R->doc .= '</a>';
|
||||
|
||||
$R->doc .= '<br />';
|
||||
|
||||
$R->doc .= '<a href="'.$data['url'].'" class="vshare">';
|
||||
$R->doc .= ($data['title'] ? hsc($data['title']) : 'Video');
|
||||
$R->doc .= '</a>';
|
||||
|
||||
$R->doc .= '</div>';
|
||||
}else{
|
||||
// use redirector for HTTP embeds on SSL sites
|
||||
if(is_ssl() && substr($data['url'], 0, 7) == 'http://') {
|
||||
$data['url'] = DOKU_BASE.'lib/plugins/vshare/redir.php'.
|
||||
'?url='.rawurlencode($data['url']).
|
||||
'&hash='.md5(auth_cookiesalt().'vshare'.$data['url']);
|
||||
}
|
||||
|
||||
// Normal output
|
||||
if($data['type'] == 'flash') {
|
||||
// embed flash
|
||||
$R->doc .= '<div class="vshare__'.$align.'"'.$title.'>';
|
||||
$R->doc .= html_flashobject(
|
||||
$data['url'],
|
||||
$data['width'],
|
||||
$data['height'],
|
||||
$data['vars'],
|
||||
$data['vars']);
|
||||
$R->doc .= '</div>';
|
||||
}else{
|
||||
// embed iframe
|
||||
$R->doc .= '<iframe ';
|
||||
$R->doc .= buildAttributes(array(
|
||||
'src' => $data['url'],
|
||||
'height' => $data['height'],
|
||||
'width' => $data['width'],
|
||||
'class' => 'vshare__'.$align,
|
||||
'allowfullscreen' => '',
|
||||
'frameborder' => 0,
|
||||
'scrolling' => 'no'
|
||||
));
|
||||
$R->doc .= '>'.hsc($data['title']).'</iframe>';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
Before Width: | Height: | Size: 6.5 KiB |
|
@ -16,7 +16,7 @@ class syntax_plugin_vshare extends DokuWiki_Syntax_Plugin {
|
|||
* Constructor.
|
||||
* Intitalizes the supported video sites
|
||||
*/
|
||||
function syntax_plugin_vshare(){
|
||||
function __construct(){
|
||||
$this->sites = confToHash(dirname(__FILE__).'/sites.conf');
|
||||
}
|
||||
|
||||
|
@ -44,7 +44,7 @@ class syntax_plugin_vshare extends DokuWiki_Syntax_Plugin {
|
|||
/**
|
||||
* Parse the parameters
|
||||
*/
|
||||
function handle($match, $state, $pos, &$handler){
|
||||
function handle($match, $state, $pos, Doku_Handler $handler){
|
||||
$command = substr($match,2,-2);
|
||||
|
||||
// title
|
||||
|
@ -83,6 +83,11 @@ class syntax_plugin_vshare extends DokuWiki_Syntax_Plugin {
|
|||
$urlparam = array();
|
||||
foreach($paramm as $key => $value) {
|
||||
switch($key) {
|
||||
case 'list':
|
||||
if(preg_match('/^[-\w]+$/',$value)) {
|
||||
$urlparam[] = $key . '=' . $value;
|
||||
}
|
||||
break;
|
||||
case 'rel':
|
||||
case 'autoplay':
|
||||
case 'ap':
|
||||
|
@ -144,7 +149,7 @@ class syntax_plugin_vshare extends DokuWiki_Syntax_Plugin {
|
|||
/**
|
||||
* Render the flash player
|
||||
*/
|
||||
function render($mode, &$R, $data){
|
||||
function render($mode, Doku_Renderer $R, $data){
|
||||
if($mode != 'xhtml') return false;
|
||||
if(is_null($data)) return false;
|
||||
|
||||
|
|
Loading…
Reference in New Issue