From f3fb4ab6f550ca6889e0796ece10c768ed56ab50 Mon Sep 17 00:00:00 2001 From: abhin4v Date: Thu, 26 Jun 2008 15:30:02 +0000 Subject: [PATCH] checked in version 0.5.1 git-svn-id: file:///tmp/snv/trunk@2 12951d8a-c33d-4b7c-b961-822215c816e1 --- chrome.manifest | 4 + chrome/content/diggsidebar.js | 446 ++++++++++++++++++++++++++++ chrome/content/diggsidebar.xul | 83 ++++++ chrome/content/firefoxOverlay.xul | 28 ++ chrome/content/image/Pause.png | Bin 0 -> 1557 bytes chrome/content/image/Play.png | Bin 0 -> 1602 bytes chrome/content/image/comments.png | Bin 0 -> 450 bytes chrome/content/image/digg.png | Bin 0 -> 4230 bytes chrome/content/image/digg_this.png | Bin 0 -> 1117 bytes chrome/content/image/down.jpg | Bin 0 -> 375 bytes chrome/content/image/external.png | Bin 0 -> 165 bytes chrome/content/image/up.jpg | Bin 0 -> 396 bytes chrome/locale/en-US/diggsidebar.dtd | 3 + chrome/skin/diggsidebar.css | 79 +++++ defaults/preferences/defaults.js | 3 + install.rdf | 19 ++ 16 files changed, 665 insertions(+) create mode 100644 chrome.manifest create mode 100644 chrome/content/diggsidebar.js create mode 100644 chrome/content/diggsidebar.xul create mode 100644 chrome/content/firefoxOverlay.xul create mode 100644 chrome/content/image/Pause.png create mode 100644 chrome/content/image/Play.png create mode 100644 chrome/content/image/comments.png create mode 100644 chrome/content/image/digg.png create mode 100644 chrome/content/image/digg_this.png create mode 100644 chrome/content/image/down.jpg create mode 100644 chrome/content/image/external.png create mode 100644 chrome/content/image/up.jpg create mode 100644 chrome/locale/en-US/diggsidebar.dtd create mode 100644 chrome/skin/diggsidebar.css create mode 100644 defaults/preferences/defaults.js create mode 100644 install.rdf diff --git a/chrome.manifest b/chrome.manifest new file mode 100644 index 0000000..f4ece24 --- /dev/null +++ b/chrome.manifest @@ -0,0 +1,4 @@ +content diggsidebar jar:chrome/diggsidebar.jar!/chrome/content/ +locale diggsidebar en-US jar:chrome/diggsidebar.jar!/chrome/locale/en-US/ +skin diggsidebar classic/1.0 jar:chrome/diggsidebar.jar!/chrome/skin/ +overlay chrome://browser/content/browser.xul chrome://diggsidebar/content/firefoxOverlay.xul diff --git a/chrome/content/diggsidebar.js b/chrome/content/diggsidebar.js new file mode 100644 index 0000000..5ae6569 --- /dev/null +++ b/chrome/content/diggsidebar.js @@ -0,0 +1,446 @@ +var gsti; +var currentStories = new Array(); +var playing = true; + +//getElementById +function $ei(id, parentNode) { + parentNode = parentNode || document; + return parentNode.getElementById(id); +} + +//getAttribute +function $a(parentNode, att) { + return parentNode.getAttribute(att); +} + +//getElementByTagName +function $et(tagName, parentNode) { + parentNode = parentNode || document; + return parentNode.getElementsByTagName(tagName)[0]; +} + +//getElementByClassName +function $ec(className, parentNode) { + parentNode = parentNode || document; + elements = parentNode.getElementsByTagName("*"); + for (i=0; i/g, ">").replace(/"/g, """); +} + +function fetchData(url, handler) { + //alert("inside fetchData"); + $ei('diggIndicator').style.display = ''; + $ei("diggIndicator").setAttribute('mode', 'undetermined'); + var request = Components. + classes["@mozilla.org/xmlextras/xmlhttprequest;1"]. + createInstance(); + + // QI the object to nsIDOMEventTarget to set event handlers on it: + + request.QueryInterface(Components.interfaces.nsIDOMEventTarget); + request.addEventListener("load", handler, false); + request.addEventListener("error", handleError, false); + + // QI it to nsIXMLHttpRequest to open and send the request: + + request.QueryInterface(Components.interfaces.nsIXMLHttpRequest); + request.open("GET", url, true); + request.send(null); + //$ei('diggIndicator').style.display = ''; + +} + +function handleError(e) { + $ei('storyList').appendItem("!! Error accessing Digg !!"); + //$ei('diggIndicator').style.display = 'none'; +} + +function populateMenu(e) { + XHR = e.target; + //myDump(XHR.responseText); + data = XHR.responseXML; + topics = $xp(data, "/topics/topic"); + while ($ei('topicPopup').firstChild) { + $ei('topicPopup').removeChild($ei('topicPopup').firstChild); + } + + for (i=0; i 0) && (min > 0)) ? + (hr + " hr " + min + " mins ago") : + ((hr == 0) && (min > 0)) ? + (min + " mins ago") : + ((hr == 0) && (min == 0)) ? + "just now" : ""; + storyStatus.innerHTML = $a(story, 'status').escapeEntities(); + //alert($a($et('container', story), 'name').escapeEntities()); + storyContainer.innerHTML = $a($et('container', story), 'name').escapeEntities(); + storyTopic.innerHTML = $a($et('topic', story), 'name').escapeEntities(); + storyUserName.href = "http://digg.com/users/" + $a($et('user', story), 'name').escapeEntities(); + storyUserName.innerHTML = $a($et('user', story), 'name').escapeEntities(); + storyDiggs.innerHTML = $a(story, 'diggs').escapeEntities(); + storyComments.innerHTML = $a(story, 'comments').escapeEntities(); + storyDesc.innerHTML = $et('description', story).textContent.escapeEntities(); + storyLink.href = $a(story, 'link'); + storyHref.href = $a(story, 'href'); + + storyCEIcon.src = "chrome://diggsidebar/content/image/down.jpg"; + storyRead.style.textDecoration = "line-through"; + storyRead.style.backgroundColor = "black"; + storyRead.style.color = "white"; + storyRead.title = "Read"; + storyNew.style.textDecoration = "line-through"; + storyNew.style.backgroundColor = "black"; + storyNew.style.color = "white"; + storyNew.title = "Old"; + + storyDetails.style.display = 'block'; + + $ei('diggIndicator').style.display = 'none'; +} + +function getStories() { + //alert("inside getStories"); + var prefs = Components.classes["@mozilla.org/preferences-service;1"]. + getService(Components.interfaces.nsIPrefBranch); + ep = prefs.getCharPref("extensions.diggsidebar.endpoint") || ''; + //alert(ep); + $ei('diggEndPoint').value = "digg" + ep; + + //ep =''; + fetchData("http://services.digg.com/stories" + ep.replace(/\/all/g, '') + "?count=30" + + "&appkey=" + encodeURIComponent("http://diggsidebar.googlepages.com"), + populateStoryList); + //gsti = window.setTimeout(getStories, prefs.getIntPref("extensions.diggsidebar.updateinterval")); +} + +function getDescription(storyId) { + myDump(storyId); + if (storyId == null) return; + fetchData("http://services.digg.com/story/" + storyId + + "?appkey=" + encodeURIComponent("http://diggsidebar.googlepages.com"), + populateDescription); +} + +function createMenu() { + fetchData("http://services.digg.com/topics" + + "?appkey=" + encodeURIComponent("http://diggsidebar.googlepages.com"), + populateMenu); +} + +function openInTab(href) { + var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) + .getInterface(Components.interfaces.nsIWebNavigation) + .QueryInterface(Components.interfaces.nsIDocShellTreeItem) + .rootTreeItem + .QueryInterface(Components.interfaces.nsIInterfaceRequestor) + .getInterface(Components.interfaces.nsIDOMWindow); + mainWindow.getBrowser().selectedTab = mainWindow.getBrowser().addTab(href); +} + +function setEndPoint(ep) { + var prefs = Components.classes["@mozilla.org/preferences-service;1"]. + getService(Components.interfaces.nsIPrefBranch); + prefs.setCharPref("extensions.diggsidebar.endpoint", ep); + window.clearTimeout(gsti); + //window.clearInterval(psi); + getStories(); +} + +function togglePlayPause() { + if (playing) { + window.clearTimeout(gsti); + //window.clearInterval(psi); + $ei('diggPlayPause').image = "chrome://diggsidebar/content/image/Play.png"; + $ei('diggPlayPause').setAttribute("tooltiptext", "Click to Start autoupdate"); + playing = false; + } else { + var prefs = Components.classes["@mozilla.org/preferences-service;1"]. + getService(Components.interfaces.nsIPrefBranch); + updateInterval = prefs.getIntPref("extensions.diggsidebar.updateinterval") + updateIntervalDecay = prefs.getIntPref("extensions.diggsidebar.updateintervaldecay"); + + timeout = Math.round(updateInterval*(Math.pow(1.5, updateIntervalDecay))); + //newTimeout = Math.round(timeout*parseInt($ei("diggIndicator").getAttribute('value'))/100); + gsti = window.setTimeout(getStories, timeout); + //psi = window.setInterval(showProgress, Math.round(timeout/100)); + //window.setTimeout("window.clearInterval(psi)", newTimeout); + $ei('diggPlayPause').image = "chrome://diggsidebar/content/image/Pause.png"; + $ei('diggPlayPause').setAttribute("tooltiptext", "Click to Pause autoupdate"); + playing = true; + } +} + + +function myDump(aMessage) { + var consoleService = Components.classes["@mozilla.org/consoleservice;1"] + .getService(Components.interfaces.nsIConsoleService); + consoleService.logStringMessage("Diggsidebar: " + aMessage); +} + + +/*TODO + preferences + toolbar button + refresh button + */ +/*DONE + v0.2 + added kdb navigation + Added progressmeter + added error notification + added accesskeys + added new story notification + + v0.2.1 + adaptive polling interval + promote_date + pause/play + + v0.5 + new ui +*/ \ No newline at end of file diff --git a/chrome/content/diggsidebar.xul b/chrome/content/diggsidebar.xul new file mode 100644 index 0000000..f5ffa4a --- /dev/null +++ b/chrome/content/diggsidebar.xul @@ -0,0 +1,83 @@ + + + + + + + +