annotate ambnews/content/ambnews.js @ 10:f07bf657f483

Display of Vanilla forum threads is better now; fixed some display bugs; updated TODOs; documented more code.
author Atul Varma <varmaa@toolness.com>
date Fri, 22 Aug 2008 10:02:50 -0700
parents 8cafc4c42c29
children f259d52d361e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
1 var AmbNews = {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
2 url: function url(spec) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
3 if (typeof(spec) != "string")
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
4 // Assume that a URI object was passed in, so just return it back.
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
5 return spec;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
6 var classObj = Components.classes["@mozilla.org/network/io-service;1"];
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
7 var ios = classObj.getService(Components.interfaces.nsIIOService);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
8 return ios.newURI(spec, null, null);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
9 },
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
10 getFeed: function AmbNews_getFeed(url, callback) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
11 function onXml(text) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
12 var feed = null;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
13 if (text) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
14 var resultListener = {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
15 handleResult: function resultListener_handleResult(aResult) {
10
f07bf657f483 Display of Vanilla forum threads is better now; fixed some display bugs; updated TODOs; documented more code.
Atul Varma <varmaa@toolness.com>
parents: 5
diff changeset
16 var nsIFeed = aResult.doc;
f07bf657f483 Display of Vanilla forum threads is better now; fixed some display bugs; updated TODOs; documented more code.
Atul Varma <varmaa@toolness.com>
parents: 5
diff changeset
17 if (!nsIFeed)
f07bf657f483 Display of Vanilla forum threads is better now; fixed some display bugs; updated TODOs; documented more code.
Atul Varma <varmaa@toolness.com>
parents: 5
diff changeset
18 return;
1
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
19 feed = {};
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
20 var Ci = Components.interfaces;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
21 nsIFeed.QueryInterface(Ci.nsIFeed);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
22 feed.link = nsIFeed.link;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
23 feed.title = nsIFeed.title;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
24 feed.entries = [];
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
25 for (var i = 0; i < nsIFeed.items.length; i++) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
26 var item = nsIFeed.items.queryElementAt(i, Ci.nsIFeedEntry);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
27 feed.entries.push(item);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
28 }
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
29 }
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
30 };
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
31 var fp = AmbNews.__getFeedProcessor();
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
32 fp.listener = resultListener;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
33 fp.parseFromString(text, AmbNews.url(url));
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
34 }
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
35 callback(feed);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
36 }
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
37 AmbNews.__getXml(url, onXml);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
38 },
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
39 __getXml: function AmbNews_getXml(url, callback) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
40 var feedUrl = AmbNews.url(url);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
41 var annSvc = AmbNews.__getAnnSvc();
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
42
5
8cafc4c42c29 Changed page annotations from AmbNews/something to ambnews/something to match the way other paths are done, but it appears that page annotations are case-insensitive anyways, which is cool I guess.
Atul Varma <varmaa@toolness.com>
parents: 4
diff changeset
43 if (annSvc.pageHasAnnotation(feedUrl, "ambnews/feed-xml")) {
8cafc4c42c29 Changed page annotations from AmbNews/something to ambnews/something to match the way other paths are done, but it appears that page annotations are case-insensitive anyways, which is cool I guess.
Atul Varma <varmaa@toolness.com>
parents: 4
diff changeset
44 var xml = annSvc.getPageAnnotation(feedUrl, "ambnews/feed-xml");
1
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
45 // TODO: Perhaps re-enable this, but only let it live for a
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
46 // few minutes?
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
47 //callback(xml);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
48 //return;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
49 }
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
50
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
51 var request = new XMLHttpRequest();
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
52 request.open("GET", url, true);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
53
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
54 var onRscFunc = function getXml_onReadyStateChange() {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
55 if (request.readyState == 4) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
56 if (request.status == 200) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
57 if (request.responseText) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
58 annSvc.setPageAnnotation(feedUrl,
5
8cafc4c42c29 Changed page annotations from AmbNews/something to ambnews/something to match the way other paths are done, but it appears that page annotations are case-insensitive anyways, which is cool I guess.
Atul Varma <varmaa@toolness.com>
parents: 4
diff changeset
59 "ambnews/feed-xml",
1
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
60 request.responseText,
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
61 0,
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
62 annSvc.EXPIRE_DAYS);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
63 callback(request.responseText);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
64 } else
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
65 callback("");
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
66 } else
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
67 callback("");
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
68 }
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
69 };
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
70
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
71 request.onreadystatechange = onRscFunc;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
72 request.send(null);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
73 },
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
74 __getFeedProcessor: function AmbNews_getFeedProcessor() {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
75 var Cc = Components.classes;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
76 var Ci = Components.interfaces;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
77 var fp = Cc["@mozilla.org/feed-processor;1"]
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
78 .createInstance(Ci.nsIFeedProcessor);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
79 return fp;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
80 },
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
81 __getAnnSvc: function AmbNews_getAnnSvc() {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
82 var Cc = Components.classes;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
83 var annSvc = Cc["@mozilla.org/browser/annotation-service;1"]
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
84 .getService(Components.interfaces.nsIAnnotationService);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
85 return annSvc;
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
86 },
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
87 onLinkAdded: function AmbNews_onLinkAdded(aEvent) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
88 if (aEvent.target.rel == "alternate" &&
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
89 (aEvent.target.type == "application/rss+xml" ||
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
90 aEvent.target.type == "application/atom+xml")) {
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
91 var annSvc = AmbNews.__getAnnSvc();
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
92 var page = AmbNews.url(aEvent.target.baseURI);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
93 var feed = AmbNews.url(aEvent.target.href);
5
8cafc4c42c29 Changed page annotations from AmbNews/something to ambnews/something to match the way other paths are done, but it appears that page annotations are case-insensitive anyways, which is cool I guess.
Atul Varma <varmaa@toolness.com>
parents: 4
diff changeset
94 annSvc.setPageAnnotation(page, "ambnews/feed",
1
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
95 feed.spec, 0, annSvc.EXPIRE_WEEKS);
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
96 }
2
88b12596346d Added an about:news handler and made the default page for new tabs about:news.
Atul Varma <varmaa@toolness.com>
parents: 1
diff changeset
97 },
88b12596346d Added an about:news handler and made the default page for new tabs about:news.
Atul Varma <varmaa@toolness.com>
parents: 1
diff changeset
98 onLoad: function AmbNews_onLoad(aEvent) {
88b12596346d Added an about:news handler and made the default page for new tabs about:news.
Atul Varma <varmaa@toolness.com>
parents: 1
diff changeset
99 if (aEvent.target.baseURI == "about:blank") {
88b12596346d Added an about:news handler and made the default page for new tabs about:news.
Atul Varma <varmaa@toolness.com>
parents: 1
diff changeset
100 var doc = aEvent.target;
88b12596346d Added an about:news handler and made the default page for new tabs about:news.
Atul Varma <varmaa@toolness.com>
parents: 1
diff changeset
101 doc.defaultView.location = "about:news";
4
f4b6208eadd5 Increased delay to select URL bar text.
Atul Varma <varmaa@toolness.com>
parents: 3
diff changeset
102 // TODO: The delay here only works most of the time;
f4b6208eadd5 Increased delay to select URL bar text.
Atul Varma <varmaa@toolness.com>
parents: 3
diff changeset
103 // its effectiveness is a race condition and we should
f4b6208eadd5 Increased delay to select URL bar text.
Atul Varma <varmaa@toolness.com>
parents: 3
diff changeset
104 // figure out what even to listen for to actually select
f4b6208eadd5 Increased delay to select URL bar text.
Atul Varma <varmaa@toolness.com>
parents: 3
diff changeset
105 // the URL bar text consistently
f4b6208eadd5 Increased delay to select URL bar text.
Atul Varma <varmaa@toolness.com>
parents: 3
diff changeset
106 window.setTimeout(function() { gURLBar.select(); }, 50);
2
88b12596346d Added an about:news handler and made the default page for new tabs about:news.
Atul Varma <varmaa@toolness.com>
parents: 1
diff changeset
107 }
1
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
108 }
44bcb4975ead Added more files.
Atul Varma <varmaa@toolness.com>
parents:
diff changeset
109 };