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