www - remove youtube, add vshare plugin
yotube plugin broken - try vshare
This commit is contained in:
parent
72e8602ad6
commit
249573146b
|
@ -0,0 +1,25 @@
|
||||||
|
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
|
|
@ -0,0 +1,20 @@
|
||||||
|
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.
After Width: | Height: | Size: 710 B |
|
@ -0,0 +1,6 @@
|
||||||
|
<?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.";
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?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.";
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?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手動で正しい構文を挿入する方法をマニュアルで確認して下さい。";
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Korean language file for vshare plugin
|
||||||
|
*
|
||||||
|
* @author Myeongjin <aranet100@gmail.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
$lang['js']['button'] = '동영상 공유 사이트에서 동영상 넣기';
|
||||||
|
$lang['js']['prompt'] = '여기에 동영상 페이지의 전체 URL을 붙여넣으세요:';
|
||||||
|
$lang['js']['notfound'] = "죄송하지만 이 URL을 인식할 수 없습니다.\n수동으로 올바른 문법을 넣는 방법에 대해서는 설명서를 참고하세요.";
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?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.";
|
|
@ -0,0 +1,16 @@
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
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
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?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);
|
|
@ -0,0 +1,116 @@
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
# 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
/**
|
||||||
|
* 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_\\-]+)))'
|
||||||
|
};
|
||||||
|
|
|
@ -0,0 +1,209 @@
|
||||||
|
<?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.
After Width: | Height: | Size: 6.5 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.4 KiB |
|
@ -1,4 +0,0 @@
|
||||||
<object width="%s" height="%s" type="application/x-shockwave-flash" data="http://www.youtube.com/v/%s" align="%s" title="%s">
|
|
||||||
<param name="movie" value="http://www.youtube.com/v/%s"></param>
|
|
||||||
<param name="wmode" value="transparent"></param>
|
|
||||||
</object>
|
|
|
@ -1,7 +0,0 @@
|
||||||
div.dokuwiki div.youtube_icon
|
|
||||||
{
|
|
||||||
background-image:url('img/youtube.png');
|
|
||||||
background-repeat:no-repeat;
|
|
||||||
min-height:16px;
|
|
||||||
padding-left:45px;
|
|
||||||
}
|
|
|
@ -1,83 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Plugin YouTube: Create YouTube link and object from ID.
|
|
||||||
*
|
|
||||||
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
|
|
||||||
* @author Ikuo Obataya <I.Obataya[at]gmail.com
|
|
||||||
* @version 2008-04-05
|
|
||||||
* @update 2008-04-05
|
|
||||||
*/
|
|
||||||
|
|
||||||
if(!defined('DOKU_INC')) die();
|
|
||||||
if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
|
|
||||||
require_once(DOKU_PLUGIN.'syntax.php');
|
|
||||||
|
|
||||||
class syntax_plugin_youtube extends DokuWiki_Syntax_Plugin {
|
|
||||||
var $html;
|
|
||||||
var $pattern;
|
|
||||||
function syntax_plugin_youtube(){
|
|
||||||
$this->html = @file_get_contents(DOKU_PLUGIN.'youtube/object.htm');
|
|
||||||
$this->pattern = '/\{\{(\s?)youtube>(small|large|link):([^} |]+)\|?(.*?)(\s?)\}\}/';
|
|
||||||
}
|
|
||||||
function getInfo(){
|
|
||||||
return array(
|
|
||||||
'author' => 'Ikuo Obataya',
|
|
||||||
'email' => 'I.Obataya@gmail.com',
|
|
||||||
'date' => '2008-04-05',
|
|
||||||
'name' => 'YouTube Plugin',
|
|
||||||
'desc' => 'YouTube link and object{{youtube>[small|large|link]:ID}}',
|
|
||||||
'url' => 'http://wiki.symplus.co.jp/computer/en/youtube_plugin',
|
|
||||||
);
|
|
||||||
}
|
|
||||||
function getType(){ return 'substition'; }
|
|
||||||
function getSort(){ return 159; }
|
|
||||||
function connectTo($mode) { $this->Lexer->addSpecialPattern('\{\{\s?youtube>[^}]*\s?\}\}',$mode,'plugin_youtube'); }
|
|
||||||
|
|
||||||
function handle($match, $state, $pos, &$handler){
|
|
||||||
$pm = preg_match_all($this->pattern,$match,$result);
|
|
||||||
$left = ($result[1][0]==" ");
|
|
||||||
$right = ($result[5][0]==" ");
|
|
||||||
$cmd = $result[2][0];
|
|
||||||
$id = $result[3][0];
|
|
||||||
$title = $result[4][0];
|
|
||||||
if ($left==true && $right==true){
|
|
||||||
$align = 'center';
|
|
||||||
}else if($left==true){
|
|
||||||
$align = 'right';
|
|
||||||
}else if($right==true){
|
|
||||||
$align = 'left';
|
|
||||||
}
|
|
||||||
return array($state, array($cmd,$id,$align,$title));
|
|
||||||
}
|
|
||||||
|
|
||||||
function render($mode, &$renderer, $data){
|
|
||||||
if($mode != 'xhtml'){return false;}
|
|
||||||
list($state, $match) = $data;
|
|
||||||
list($cmd,$id,$align,$title) = $match;
|
|
||||||
$id = urlencode($id);
|
|
||||||
$title = urlencode($title);
|
|
||||||
$title = str_replace("+"," ",$title);
|
|
||||||
switch($cmd){
|
|
||||||
case 'link':
|
|
||||||
$lnkFormat='<a href="http://www.youtube.com/watch?v=%s" title="%s">';
|
|
||||||
$href_start=sprintf($lnkFormat,$id,empty($title)?$id:$title.' ('.$id.')');
|
|
||||||
$renderer->doc.=$href_start.'<div class="youtube_icon">'.$title.'</div></a>';
|
|
||||||
return true;
|
|
||||||
|
|
||||||
case 'large':
|
|
||||||
if ($align=='center'){$renderer->doc.="<center>";}
|
|
||||||
$renderer->doc.=sprintf($this->html,425,350,$id,$align,$title,$id);
|
|
||||||
if ($align=='center'){$renderer->doc.="</center>";}
|
|
||||||
$renderer->doc.=NL;
|
|
||||||
return true;
|
|
||||||
|
|
||||||
case 'small':
|
|
||||||
if ($align=='center'){$renderer->doc.="<center>";}
|
|
||||||
$renderer->doc.=sprintf($this->html,255,210,$id,$align,$title,$id);
|
|
||||||
if ($align=='center'){$renderer->doc.="</center>";}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
$renderer->doc.=NL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
Loading…
Reference in New Issue