]> git.wh0rd.org - tt-rss.git/blob - digest.js
more digest page improvements
[tt-rss.git] / digest.js
1 var last_feeds = [];
2
3 var _active_feed_id = false;
4 var _active_feed_offset = false;
5
6 function viewfeed(feed_id, offset) {
7 try {
8
9 if (!feed_id) feed_id = _active_feed_id;
10
11 if (!offset)
12 offset = 0;
13 else
14 offset = _active_feed_offset + offset;
15
16 var query = "backend.php?op=rpc&subop=digest-update&feed_id=" + feed_id +
17 "&offset=" + offset;
18
19 console.log(query);
20
21 new Ajax.Request("backend.php", {
22 parameters: query,
23 onComplete: function(transport) {
24 digest_update(transport);
25 _active_feed_id = feed_id;
26 _active_feed_offset = offset;
27 } });
28
29 } catch (e) {
30 exception_error("view", e);
31 }
32 }
33
34 function find_feed(feeds, feed_id) {
35 try {
36 for (var i = 0; i < feeds.length; i++) {
37 if (feeds[i].id == feed_id)
38 return feeds[i];
39 }
40
41 return false;
42
43 } catch (e) {
44 exception_error("find_feed", e);
45 }
46 }
47
48 function get_feed_icon(feed) {
49 try {
50 if (feed.has_icon)
51 return 'icons/' + feed.id + '.ico';
52
53 if (feed.id == -1)
54 return 'images/mark_set.png';
55
56 if (feed.id == -2)
57 return 'images/pub_set.png';
58
59 if (feed.id == -3)
60 return 'images/fresh.png';
61
62 if (feed.id == -4)
63 return 'images/tag.png';
64
65 if (feed.id < -10)
66 return 'images/label.png';
67
68 } catch (e) {
69 exception_error("get_feed_icon", e);
70 }
71 }
72
73 function add_feed_entry(feed) {
74 try {
75 var icon_part = "";
76
77 icon_part = "<img src='" + get_feed_icon(feed) + "'/>";
78
79 var tmp_html = "<li>" +
80 icon_part +
81 "<a href=\"#\" onclick=\"viewfeed("+feed.id+")\">" + feed.title +
82 "<div class='unread-ctr'>" + feed.unread + "</div>" +
83 "</li>";
84
85 $("feeds-content").innerHTML += tmp_html;
86
87 } catch (e) {
88 exception_error("add_feed_entry", e);
89 }
90 }
91
92 function add_latest_entry(article, feed) {
93 try {
94
95
96 //$("latest-content").innerHTML += "bbb";
97
98 } catch (e) {
99 exception_error("add_latest_entry", e);
100 }
101 }
102
103 function add_headline_entry(article, feed) {
104 try {
105
106 var icon_part = "";
107
108 if (article.has_icon)
109 icon_part = "<img src='icons/" + article.feed_id + ".ico'/>";
110
111 var tmp_html = "<li>" +
112 icon_part +
113 "<a class='title'>" + article.title + "</a>" +
114 "<div class='body'><div class='excerpt'>" + article.excerpt + "</div>" +
115 "<div class='info'><a>" + feed.title + "</a> " + " @ " +
116 new Date(article.updated * 1000) + "</div>" +
117 "</div></li>";
118
119 $("headlines-content").innerHTML += tmp_html;
120
121 } catch (e) {
122 exception_error("add_headline_entry", e);
123 }
124 }
125
126 function digest_update(transport) {
127 try {
128 var feeds = transport.responseXML.getElementsByTagName('feeds')[0];
129 var headlines = transport.responseXML.getElementsByTagName('headlines')[0];
130
131 if (feeds) {
132 feeds = eval("(" + feeds.firstChild.nodeValue + ")");
133
134 last_feeds = feeds;
135
136 $('feeds-content').innerHTML = "";
137
138 for (var i = 0; i < feeds.length; i++) {
139 add_feed_entry(feeds[i]);
140 }
141 } else {
142 feeds = last_feeds;
143 }
144
145 if (headlines) {
146 headlines = eval("(" + headlines.firstChild.nodeValue + ")");
147
148 $('headlines-content').innerHTML = "";
149
150 Element.hide('headlines-content');
151
152 for (var i = 0; i < headlines.length; i++) {
153 add_headline_entry(headlines[i], find_feed(feeds, headlines[i].feed_id));
154 }
155
156 $('headlines-content').innerHTML += "<li>" +
157 "<div class='body'><a href=\"#\" onclick=\"viewfeed(false, 10)\">" +
158 __("More articles...") + "</a></div></li>";
159
160 new Effect.Appear('headlines-content');
161
162 }
163
164 } catch (e) {
165 exception_error("digest_update", e);
166 }
167 }
168
169 function digest_init() {
170 try {
171
172 new Ajax.Request("backend.php", {
173 parameters: "backend.php?op=rpc&subop=digest-init",
174 onComplete: function(transport) {
175 digest_update(transport);
176 window.setTimeout('viewfeed(-4)', 100);
177 } });
178
179 } catch (e) {
180 exception_error("digest_init", e);
181 }
182 }