From 570a22de7425e2a486b02e3b43a4b4b1ece552af Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Sun, 22 May 2011 21:56:47 +0200 Subject: [PATCH] update oembed plugin. embed preview in editor --- addon/oembed/oembed.js | 12 ++-- addon/oembed/oembed.php | 55 ++++++++++--------- include/oembed.php | 13 +++-- .../plugins/bbcode/editor_plugin_src.js | 44 ++++++++++++++- 4 files changed, 81 insertions(+), 43 deletions(-) diff --git a/addon/oembed/oembed.js b/addon/oembed/oembed.js index 54547a86ec..f8e957413c 100644 --- a/addon/oembed/oembed.js +++ b/addon/oembed/oembed.js @@ -1,10 +1,6 @@ function oembed(){ - $("#oembed").toggleClass('hide'); -} - -function oembed_do(){ - embed = "[embed]"+$('#oembed_url').attr('value')+"[/embed]"; - - tinyMCE.execCommand('mceInsertRawHTML',false,embed); - oembed(); + var reply = prompt("$oembed_message:"); + if(reply && reply.length) { + tinyMCE.execCommand('mceInsertRawHTML',false, "[embed]"+reply+"[/embed]" ); + } } diff --git a/addon/oembed/oembed.php b/addon/oembed/oembed.php index d9b205a3a5..45f533cc5b 100644 --- a/addon/oembed/oembed.php +++ b/addon/oembed/oembed.php @@ -6,7 +6,9 @@ * http://www.oembed.com/ * */ - + +require_once('include/oembed.php'); + 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'); @@ -18,32 +20,7 @@ function oembed_uninstall() { } function oembed_hook_page_header($a, &$b){ - - if(($a->module !== 'network') && ($a->module !== 'profile')) - return; - - $b .= ' - '; - - $b .= ' -
  - - -
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
-
- '; + $a->page['htmlhead'] .= sprintf('', $a->get_baseurl()); } @@ -56,6 +33,30 @@ function oembed_hook_jot_tool($a, &$b) { } +function oembed_module() { + return; +} +function oembed_init(&$a) { + if ($a->argv[1]=='oembed.js'){ + $tpl = file_get_contents('addon/oembed/oembed.js'); + echo replace_macros($tpl, array( + '$oembed_message' => t('URL to embed:'), + )); + } + + if ($a->argv[1]=='b2h'){ + $url = array( "", trim(hex2bin($_GET['url']))); + echo "".oembed_replacecb($url).""; + } + + if ($a->argv[1]=='h2b'){ + $text = trim(hex2bin($_GET['text'])); + echo oembed_html2bbcode($text); + } + + killme(); + +} ?> \ No newline at end of file diff --git a/include/oembed.php b/include/oembed.php index 4d2b7185e9..10d458ff38 100644 --- a/include/oembed.php +++ b/include/oembed.php @@ -16,13 +16,14 @@ function oembed_replacecb($matches){ dbesc(datetime_convert())); } $j = json_decode($txt); - $ret=""; + $ret=""; switch ($j->type) { case "video": { if (isset($j->thumbnail_url)) { - $tw = (isset($j->thumbnail_width)) ? $j->thumbnail_width:200; - $th = (isset($j->thumbnail_height)) ? $j->thumbnail_height:180; - $ret = ""; + /*$tw = (isset($j->thumbnail_width)) ? $j->thumbnail_width:200; + $th = (isset($j->thumbnail_height)) ? $j->thumbnail_height:180;*/ + $tw=150; $th=120; + $ret = ""; $ret.= ""; $ret.= ""; } else { @@ -47,7 +48,7 @@ function oembed_replacecb($matches){ $ret .= "$embedlink"; if (isset($j->author_name)) $ret.=" by ".$j->author_name; if (isset($j->provider_name)) $ret.=" on ".$j->provider_name; - $ret.=""; + $ret.="
"; return $ret; } @@ -98,7 +99,7 @@ function oembed_html2bbcode($text) { $xattr = oe_build_xpath("rel","oembed"); foreach($entries as $e) { $href = $xpath->evaluate("a[$xattr]/@href", $e)->item(0)->nodeValue; - if(!is_null($href)) $e->parentNode->replaceChild(new DOMText("[embed]".$href."[embed]"), $e); + if(!is_null($href)) $e->parentNode->replaceChild(new DOMText("[embed]".$href."[/embed]"), $e); } return oe_get_inner_html( $dom->getElementsByTagName("body")->item(0) ); } else { diff --git a/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js b/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js index aad83280d4..997bc54fa0 100644 --- a/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js +++ b/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js @@ -47,6 +47,27 @@ function rep(re, str) { s = s.replace(re, str); }; + + + + + /* oembed */ + function _h2b_cb(match) { + text = bin2hex(match); + function s_h2b(data) { + match = data; + } + $.ajax({ + url: 'oembed/h2b?text=' + text, + async: false, + success: s_h2b, + dataType: 'html' + }); + return match; + } + s = s.replace(/(.*?)<\/span>/gi, _h2b_cb); + /* /oembed */ + // example: to [b] rep(/(.*?)<\/a>/gi,"[url=$1]$2[/url]"); @@ -55,8 +76,8 @@ rep(/(.*?)<\/font>/gi,"$1"); rep(//gi,"[img=$1x$2]$3[/img]"); rep(//gi,"[img=$2x$1]$3[/img]"); - rep(//gi,"[img=$3x$2]$1[/img]"); - rep(//gi,"[img=$2x$3]$1[/img]"); + rep(//gi,"[img=$3x$2]$1[/img]"); + rep(//gi,"[img=$2x$3]$1[/img]"); rep(//gi,"[img]$1[/img]"); rep(/(.*?)<\/code>/gi,"[code]$1[/code]"); rep(/<\/(strong|b)>/gi,"[/b]"); @@ -106,6 +127,25 @@ rep(/\[size=(.*?)\](.*?)\[\/size\]/gi,"$2"); rep(/\[code\](.*?)\[\/code\]/gi,"$1"); rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"
$1
"); + + /* oembed */ + function _b2h_cb(match) { + url = match.replace(/\[\/*embed\]/gi, "") + url = bin2hex(url); + function s_b2h(data) { + match = data; + } + $.ajax({ + url: 'oembed/b2h?url=' + url, + async: false, + success: s_b2h, + dataType: 'html' + }); + return match; + } + s = s.replace(/\[embed\](.*?)\[\/embed\]/gi, _b2h_cb); + + /* /oembed */ return s; }