aboutsummaryrefslogtreecommitdiff
path: root/widgetUWA.php
diff options
context:
space:
mode:
Diffstat (limited to 'widgetUWA.php')
-rw-r--r--widgetUWA.php234
1 files changed, 234 insertions, 0 deletions
diff --git a/widgetUWA.php b/widgetUWA.php
new file mode 100644
index 0000000..25ec898
--- /dev/null
+++ b/widgetUWA.php
@@ -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>