New Feature: add widget API for Netvibes.
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@296 b3834d28-1941-0410-a4f8-b48e95affb8f
This commit is contained in:
parent
63dc7fee8e
commit
962902de23
1 changed files with 234 additions and 0 deletions
234
api/widgetUWA.html
Normal file
234
api/widgetUWA.html
Normal file
|
@ -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>
|
Loading…
Reference in a new issue