]> git.mxchange.org Git - friendica.git/commitdiff
oembed consumer plugin
authorFabio Comuni <fabrix.xm@gmail.com>
Wed, 26 Jan 2011 15:20:12 +0000 (16:20 +0100)
committerFabio Comuni <fabrix.xm@gmail.com>
Wed, 26 Jan 2011 15:20:12 +0000 (16:20 +0100)
addon/oembed/oembed.js [new file with mode: 0644]
addon/oembed/oembed.php [new file with mode: 0644]
addon/oembed/oembed.png [new file with mode: 0644]

diff --git a/addon/oembed/oembed.js b/addon/oembed/oembed.js
new file mode 100644 (file)
index 0000000..2654149
--- /dev/null
@@ -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();
+  });
+  
+}
diff --git a/addon/oembed/oembed.php b/addon/oembed/oembed.php
new file mode 100644 (file)
index 0000000..55654a5
--- /dev/null
@@ -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> 
+  ';
+}
+
+
+
+?>
\ No newline at end of file
diff --git a/addon/oembed/oembed.png b/addon/oembed/oembed.png
new file mode 100644 (file)
index 0000000..6fc3794
Binary files /dev/null and b/addon/oembed/oembed.png differ