]> gitweb.fluxo.info Git - semanticscuttle.git/commitdiff
New Feature: add widget API for Netvibes.
authormensonge <mensonge@b3834d28-1941-0410-a4f8-b48e95affb8f>
Mon, 23 Feb 2009 17:18:48 +0000 (17:18 +0000)
committermensonge <mensonge@b3834d28-1941-0410-a4f8-b48e95affb8f>
Mon, 23 Feb 2009 17:18:48 +0000 (17:18 +0000)
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@296 b3834d28-1941-0410-a4f8-b48e95affb8f

api/widgetUWA.html [new file with mode: 0644]

diff --git a/api/widgetUWA.html b/api/widgetUWA.html
new file mode 100644 (file)
index 0000000..25ec898
--- /dev/null
@@ -0,0 +1,234 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:widget="http://www.netvibes.com/ns/">
+<head>
+
+<title>SemanticScuttle</title>
+
+<meta name="author" content="Benjamin HKB (inspired by Florent Solt)" />
+<meta name="description" content="" />
+<meta name="keywords" content="semanticscuttle delicious del.icio.us" />
+
+<meta name="apiVersion" content="1.0" />
+<meta name="inline" content="true" />
+<meta name="autoRefresh" content="20" />
+<meta name="debugMode" content="false" />
+
+<link rel="icon" href="http://semanticscuttle.sourceforge.net/icon.png"/>
+
+<link rel="stylesheet" type="text/css" href="http://www.netvibes.com/themes/uwa/style.css" />
+<script type="text/javascript" src="http://www.netvibes.com/js/UWA/load.js.php?env=Standalone"></script>
+
+<widget:preferences>
+    <preference name="website" label="URL of the SemanticScuttle website" type="text" defaultValue="http://example.com" />
+    <preference name="websiteTitle" label="Website's title" type="text" defaultValue="Website Name" />
+    <preference name="account" label="User" type="text" defaultValue="" />
+    <preference name="tags" label="Tags (optionally separated by +)" type="text" defaultValue="tag1+tag2" />
+    <preference name="thumb" label="Show thumbnails" type="boolean" defaultValue="true" />
+    <preference name="limit" type="range" label="Number of items to display" defaultValue="20" step="1" min="1" max="50" />
+    <preference name="offset" type="hidden" defaultValue="0" />
+</widget:preferences>
+
+<style type="text/css">
+.container ul {
+    padding: 0px;
+}
+.container .clear {
+    clear: both;
+    height: 1px;
+    font-size: 1px;
+    line-height: 1px;
+}
+.container li {
+    background-image: none;
+    padding: 2px;
+    clear: both;
+    margin: 0px;
+}
+.container li a {
+    font-weight: bold;
+}
+.container li em {
+    display: block;
+}
+.container li img {
+    display: block;
+    float: left;
+    margin-right: 4px;
+    margin-bottom: 4px;
+}
+.container li img.thumb {
+    width: 60px;
+    height: 45px;
+    border: 1px solid #ccc;
+}
+.container li.cal {
+    padding-left: 20px;
+    background-image: url(http://www.netvibes.com/img/icons/time.png);
+    background-repeat: no-repeat;
+    background-position: left 1em;
+    line-height: 16px;
+    margin-bottom: 0.5em;
+    padding-top: 1em;
+    font-size: 1.3em;
+    border-bottom: 1px dotted #aaa;
+}
+
+</style>
+
+<script type="text/javascript">
+if (document.location && document.location.hostname == 'mymodules.local') {
+  UWA.proxies.ajax = 'ajaxProxy.php';
+}
+
+widget.months = {
+    1:_('January'), '2':_('February'), 3:_('March'), 4:_('April'), 5:_('May'), 6:_('June'),
+    7:_('July'), 8:_('August'), 9:_('September'), 10:_('October'), 11:_('November'), 12:_('December')
+}
+
+widget.onLoad =  function() {
+    widget.onRefresh();
+}
+
+widget.onRefresh = function() {
+  widget.setBody( _("Loading ... (if loading is too long, check preferences: URL must be exact, user and tags must exist.)") );
+  var website = widget.getValue('website');
+  if(website.charAt(website.length-1) != '/') {
+      website = website +'/';
+  }
+  
+  var websiteTitle = widget.getValue('websiteTitle');
+  
+  var account = widget.getValue('account');
+  if(account == undefined || account == '') {
+      account = 'all';
+  }
+  var tags = widget.getValue('tags');
+  if(tags != undefined && tags != '') {
+      tags = '/' + tags;
+      var reg=new RegExp(" ", "g");
+      tags = tags.replace(reg, "%20");
+  }
+  if (website == undefined || website == 'http://example.com/') {
+      widget.setBody(_("Edit the widget please."));
+  } else {
+      //widget.setBody(website + 'rss/' + account + tags);
+      var title = '<a href="' + website + '">' + websiteTitle +'</a>';
+      title+= ' / <a href="http://sourceforge.net/projects/semanticscuttle/">'+ 'SemanticScuttle</a>';
+      widget.setTitle(title);
+      UWA.Data.getFeed(website + 'rss/' + account + tags, widget.onData);
+  }
+}
+
+widget.onData = function(data) {
+    widget.items = data.items;
+    //widget.log(data.items);
+    widget.display();
+}    
+
+widget.display = function() {
+    // Main container
+    var container = widget.createElement('div');
+    container.className = 'container';
+    
+    // Prev date
+    var prev_date = null;
+    
+    // Items
+    var ul = widget.createElement('ul');
+    var limit = parseInt(widget.getValue('limit'));
+    var offset = parseInt(widget.getValue('offset'));
+    for (var i=offset; i<widget.items.length && i<limit+offset; i++) {
+        
+        var date = new Date(widget.items[i].date)
+
+        // Cal
+        if (prev_date == null ||
+            date.getMonth() != prev_date.getMonth() ||
+            date.getDate() != prev_date.getDate() ||
+            date.getYear() != prev_date.getYear()) {
+            prev_date = date;
+            var cal = widget.createElement('li');
+            cal.className = 'cal';
+
+            var relative_to = new Date();
+            var delta = parseInt((relative_to.getTime() - date.getTime()) / 1000);
+            if (delta < 24*60*60) {
+                cal.appendText(_('Today'));
+            } else if (delta < 48*60*60) {
+                cal.appendText(_('Yesterday'));
+            } else {
+                cal.appendText(date.getDate() + ' ' + widget.months[date.getMonth() + 1])
+            }
+            ul.appendChild(cal);
+        }
+        
+        // Li
+        var li = widget.createElement('li');
+        if (i%2 == 1) li.className = 'even';
+        
+        if (widget.getValue('thumb') == 'true') {
+            // Img
+            var img = widget.createElement('img');
+            img.src = "http://open.thumbshots.org/image.pxf?url=" + widget.items[i].link.replace(/^(http:\/\/[^\/]+).*$/, '$1');
+            img.className = 'thumb';
+            li.appendChild(img);
+        } else {
+            var img = widget.createElement('img');
+            img.src = 'http://semanticscuttle.sourceforge.net/bookmark.gif'
+            li.appendChild(img);
+        }
+        
+        // Title
+        var title = widget.createElement('a');
+        title.setContent(widget.items[i].title);
+        title.href = widget.items[i].link;
+        if(widget.items[i].content == '') {
+            widget.items[i].content = _("No description");
+        }
+        title.title= widget.items[i].content;
+        li.appendChild(title);
+
+        // // Tags
+        // console.log(widget.items[i]);
+        // var tagsText = widget.items[i].subject;
+        // if (tagsText != null) {
+        //     tags = widget.createElement('em');
+        //     tags.appendText(tagsText.nodeValue);
+        //     li.appendChild(tags);            
+        // }
+        
+        // Clear
+        var clear = widget.createElement('div');
+        clear.className = 'clear';
+        li.appendChild(clear);
+        
+        ul.appendChild(li);
+    }
+    container.appendChild(ul);
+
+    // Pager
+    var pager = widget.createElement('div');
+    
+    var pager_ctrl = new UWA.Controls.Pager( {
+      module: this,
+      limit: widget.getValue('limit'),
+      offset: widget.getValue('offset'),
+      dataArray: widget.items
+    } );
+    
+    pager_ctrl.onChange = function(newOffset) {
+      widget.setValue('offset', newOffset);
+      widget.display();
+    }
+    pager.setContent(pager_ctrl.getContent());
+    container.appendChild(pager);
+    
+    widget.setBody(container);
+}
+
+</script>
+
+</head>
+<body>
+</body>
+</html>