oembed consumer plugin

This commit is contained in:
Fabio Comuni 2011-01-26 16:20:12 +01:00
parent af8ab8cb53
commit 62fda0a120
3 changed files with 107 additions and 0 deletions

51
addon/oembed/oembed.js Normal file
View file

@ -0,0 +1,51 @@
function oembed(){
$("#oembed").toggleClass('hide');
}
function oembed_do(){
embedurl = $('#oembed_url').attr('value');
var url = 'http://oohembed.com/oohembed/?url='+escape( embedurl )+"&callback=?";
$.getJSON(url, function(data) {
var ret="";
switch(data.type){
case "video": {
if (data.thumbnail_url){
tw = 200; if (data.thumbnail_width) tw=data.thumbnail_width;
th = 180; if (data.thumbnail_height) tw=data.thumbnail_height;
ret = "<a href='"+embedurl+"'>";
// tiny mce bbcode plugin not support image size......
ret += "<img width='"+tw+"' height='"+th+"' src='"+data.thumbnail_url+"'></a>";
} else {
ret = data.html;
}
}; break;
case "photo": {
// tiny mce bbcode plugin not support image size......
ret = "<img width='"+data.width+"' height='"+data.height+"' src='"+data.url+"'>";
}; break;
case "link": {
ret = "<a href='"+embedurl+"'>"+data.title+"</a>";
}; break;
case "rich": {
ret = data.html; // not so safe... http://www.oembed.com/ : "Consumers may wish to load the HTML in an off-domain iframe to avoid XSS"
}; break;
default: {
alert("Error retriving data!");
return;
}
}
var embedlink = embedurl;
if (data.title) embedlink = data.title
ret+="<br><a href='"+embedurl+"'>"+embedlink+"</a>";
if (data.author_name) {
ret+=" by "+data.author_name;
}
if (data.provider_name) {
ret+=" on "+data.provider_name;
}
tinyMCE.execCommand('mceInsertRawHTML',false,ret);
oembed();
});
}

56
addon/oembed/oembed.php Normal file
View file

@ -0,0 +1,56 @@
<?php
/**
* oembed plugin
*
* oEmbed is a format for allowing an embedded representation of a URL on third party sites
* http://www.oembed.com/
*
*/
function oembed_install() {
register_hook('jot_tool', 'addon/oembed/oembed.php', 'oembed_hook_jot_tool');
register_hook('page_header', 'addon/oembed/oembed.php', 'oembed_hook_page_header');
}
function oembed_uninstall() {
unregister_hook('jot_tool', 'addon/oembed/oembed.php', 'oembed_hook_jot_tool');
unregister_hook('page_header', 'addon/oembed/oembed.php', 'oembed_hook_page_header');
}
function oembed_hook_page_header($a, &$b){
$b .= '<script src="addon/oembed/oembed.js"></script>
<style>#oembed.hide { display: none }
#oembed {
display:block; position: absolute; width: 300px; height:200px;
background-color:#fff; color: #000;
border:2px solid #8888FF; padding: 1em;
top: 200px; left: 400px; z-index:2000;
}
#oembed_url { width: 100%; margin-bottom:3px;}
</style>';
$b .= '
<div id="oembed" class="hide"><input id="oembed_url">&nbsp;
<input type="button" value="Embed" onclick="oembed_do()" style="float:left;">
<a onclick="oembed(); return false;" style="float:right;"><img onmouseout="imgdull(this);" onmouseover="imgbright(this);" class="wall-item-delete-icon" src="images/b_drophide.gif" style="width: 16px; height: 16px;"></a>
<p style="clear:both">Paste a link from 5min.com, Amazon Product Image, blip.tv, Clikthrough, CollegeHumor Video,
Daily Show with Jon Stewart, Dailymotion, dotSUB.com, Flickr Photos, Funny or Die Video,
Google Video, Hulu, Kinomap, LiveJournal UserPic, Metacafe, National Film Board of Canada,
Phodroid Photos, Photobucket, Qik Video, Revision3, Scribd, SlideShare, TwitPic, Twitter Status,
Viddler Video, Vimeo, Wikipedia, Wordpress.com, XKCD Comic, YFrog, YouTube</p>
</div>
';
}
function oembed_hook_jot_tool($a, &$b) {
$b .= '
<div class="tool-wrapper" style="display: $visitor;" >
<img class="tool-link" src="addon/oembed/oembed.png" alt="Embed" title="Embed" onclick="oembed();" />
</div>
';
}
?>

BIN
addon/oembed/oembed.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 B