]>
Commit | Line | Data |
---|---|---|
c01f40f4 AD |
1 | var last_feeds = []; |
2 | ||
1ca8997b AD |
3 | var _active_feed_id = false; |
4 | var _active_feed_offset = false; | |
118e9399 | 5 | var _update_timeout = false; |
1ca8997b | 6 | |
118e9399 | 7 | function zoom(article_id) { |
22933e5e | 8 | try { |
118e9399 | 9 | var elem = $('A-' + article_id); |
22933e5e | 10 | |
118e9399 AD |
11 | if (elem) { |
12 | var divs = elem.getElementsByTagName('DIV'); | |
13 | ||
14 | for (var i = 0; i < divs.length; i++) { | |
15 | if (divs[i].className == 'excerpt') | |
16 | Element.hide(divs[i]); | |
17 | ||
18 | if (divs[i].className == 'content') | |
19 | Element.show(divs[i]); | |
20 | } | |
21 | } | |
22 | ||
23 | var query = "backend.php?op=rpc&subop=digest-mark&article_id=" + article_id; | |
24 | ||
25 | new Ajax.Request("backend.php", { | |
26 | parameters: query, | |
27 | onComplete: function(transport) { | |
28 | window.clearTimeout(_update_timeout); | |
29 | _update_timeout = window.setTimeout('update()', 1000); | |
30 | } }); | |
31 | ||
32 | } catch (e) { | |
33 | exception_error("zoom", e); | |
34 | } | |
35 | } | |
36 | ||
37 | function load_more() { | |
38 | try { | |
39 | var elem = $('MORE-PROMPT'); | |
40 | ||
41 | if (elem) { | |
42 | elem.id = ''; | |
43 | Element.hide(elem); | |
44 | } | |
45 | ||
46 | viewfeed(_active_feed_id, _active_feed_offset + 10); | |
47 | } catch (e) { | |
48 | exception_error("load_more", e); | |
49 | } | |
50 | } | |
51 | ||
52 | function update() { | |
53 | try { | |
54 | viewfeed(_active_feed_id, _active_feed_offset); | |
55 | } catch (e) { | |
56 | exception_error("update", e); | |
57 | } | |
58 | } | |
59 | ||
60 | function view(article_id, dismiss_only) { | |
61 | try { | |
62 | var elem = $('A-' + article_id); | |
63 | ||
64 | elem.id = ''; | |
65 | ||
66 | //new Effect.Fade(elem, {duration : 0.3}); | |
67 | ||
68 | Element.hide(elem); | |
69 | ||
70 | var query = "backend.php?op=rpc&subop=digest-mark&article_id=" + article_id; | |
71 | ||
72 | new Ajax.Request("backend.php", { | |
73 | parameters: query, | |
74 | onComplete: function(transport) { | |
75 | window.clearTimeout(_update_timeout); | |
76 | _update_timeout = window.setTimeout('update()', 1000); | |
77 | } }); | |
78 | ||
79 | return dismiss_only != true; | |
22933e5e AD |
80 | } catch (e) { |
81 | exception_error("view", e); | |
82 | } | |
83 | } | |
84 | ||
1ca8997b | 85 | function viewfeed(feed_id, offset) { |
b41c2549 AD |
86 | try { |
87 | ||
1ca8997b AD |
88 | if (!feed_id) feed_id = _active_feed_id; |
89 | ||
90 | if (!offset) | |
91 | offset = 0; | |
92 | else | |
93 | offset = _active_feed_offset + offset; | |
94 | ||
95 | var query = "backend.php?op=rpc&subop=digest-update&feed_id=" + feed_id + | |
96 | "&offset=" + offset; | |
97 | ||
98 | console.log(query); | |
99 | ||
b41c2549 | 100 | new Ajax.Request("backend.php", { |
1ca8997b | 101 | parameters: query, |
b41c2549 | 102 | onComplete: function(transport) { |
118e9399 | 103 | digest_update(transport, feed_id); |
1ca8997b AD |
104 | _active_feed_id = feed_id; |
105 | _active_feed_offset = offset; | |
b41c2549 AD |
106 | } }); |
107 | ||
108 | } catch (e) { | |
109 | exception_error("view", e); | |
110 | } | |
111 | } | |
112 | ||
118e9399 AD |
113 | function find_article(articles, article_id) { |
114 | try { | |
115 | for (var i = 0; i < articles.length; i++) { | |
116 | if (articles[i].id == article_id) | |
117 | return articles[i]; | |
118 | } | |
119 | ||
120 | return false; | |
121 | ||
122 | } catch (e) { | |
123 | exception_error("find_article", e); | |
124 | } | |
125 | } | |
126 | ||
c01f40f4 AD |
127 | function find_feed(feeds, feed_id) { |
128 | try { | |
129 | for (var i = 0; i < feeds.length; i++) { | |
130 | if (feeds[i].id == feed_id) | |
131 | return feeds[i]; | |
132 | } | |
133 | ||
134 | return false; | |
135 | ||
136 | } catch (e) { | |
137 | exception_error("find_feed", e); | |
138 | } | |
139 | } | |
140 | ||
b41c2549 AD |
141 | function get_feed_icon(feed) { |
142 | try { | |
143 | if (feed.has_icon) | |
144 | return 'icons/' + feed.id + '.ico'; | |
145 | ||
146 | if (feed.id == -1) | |
147 | return 'images/mark_set.png'; | |
148 | ||
149 | if (feed.id == -2) | |
150 | return 'images/pub_set.png'; | |
151 | ||
152 | if (feed.id == -3) | |
153 | return 'images/fresh.png'; | |
154 | ||
155 | if (feed.id == -4) | |
156 | return 'images/tag.png'; | |
157 | ||
158 | if (feed.id < -10) | |
159 | return 'images/label.png'; | |
160 | ||
161 | } catch (e) { | |
162 | exception_error("get_feed_icon", e); | |
163 | } | |
164 | } | |
165 | ||
c01f40f4 AD |
166 | function add_feed_entry(feed) { |
167 | try { | |
168 | var icon_part = ""; | |
169 | ||
b41c2549 | 170 | icon_part = "<img src='" + get_feed_icon(feed) + "'/>"; |
c01f40f4 AD |
171 | |
172 | var tmp_html = "<li>" + | |
173 | icon_part + | |
1ca8997b | 174 | "<a href=\"#\" onclick=\"viewfeed("+feed.id+")\">" + feed.title + |
c01f40f4 AD |
175 | "<div class='unread-ctr'>" + feed.unread + "</div>" + |
176 | "</li>"; | |
177 | ||
178 | $("feeds-content").innerHTML += tmp_html; | |
179 | ||
180 | } catch (e) { | |
181 | exception_error("add_feed_entry", e); | |
182 | } | |
183 | } | |
184 | ||
b41c2549 | 185 | function add_latest_entry(article, feed) { |
c01f40f4 | 186 | try { |
b41c2549 AD |
187 | |
188 | ||
189 | //$("latest-content").innerHTML += "bbb"; | |
c01f40f4 AD |
190 | |
191 | } catch (e) { | |
192 | exception_error("add_latest_entry", e); | |
193 | } | |
194 | } | |
195 | ||
196 | function add_headline_entry(article, feed) { | |
197 | try { | |
198 | ||
199 | var icon_part = ""; | |
200 | ||
201 | if (article.has_icon) | |
1ca8997b | 202 | icon_part = "<img src='icons/" + article.feed_id + ".ico'/>"; |
c01f40f4 | 203 | |
22933e5e | 204 | var tmp_html = "<li id=\"A-"+article.id+"\">" + |
c01f40f4 | 205 | icon_part + |
118e9399 | 206 | "<img title='Dismiss' onclick=\"view("+article.id+", true)\" class='digest-check' src='images/digest_checkbox.png'>" + |
22933e5e AD |
207 | "<a target=\"_blank\" href=\""+article.link+"\""+ |
208 | "onclick=\"return view("+article.id+")\" class='title'>" + | |
209 | article.title + "</a>" + | |
118e9399 AD |
210 | "<div class='body'>" + |
211 | "<div title=\"Click to expand article\" onclick=\"zoom("+article.id+")\" class='excerpt'>" + | |
212 | article.excerpt + "</div>" + | |
213 | "<div style='display : none' class='content'>" + | |
214 | article.content + "</div>" + | |
c01f40f4 | 215 | "<div class='info'><a>" + feed.title + "</a> " + " @ " + |
b41c2549 | 216 | new Date(article.updated * 1000) + "</div>" + |
1ca8997b | 217 | "</div></li>"; |
c01f40f4 AD |
218 | |
219 | $("headlines-content").innerHTML += tmp_html; | |
220 | ||
221 | } catch (e) { | |
222 | exception_error("add_headline_entry", e); | |
223 | } | |
224 | } | |
225 | ||
118e9399 | 226 | function digest_update(transport, feed_id) { |
c01f40f4 AD |
227 | try { |
228 | var feeds = transport.responseXML.getElementsByTagName('feeds')[0]; | |
229 | var headlines = transport.responseXML.getElementsByTagName('headlines')[0]; | |
230 | ||
231 | if (feeds) { | |
c01f40f4 AD |
232 | feeds = eval("(" + feeds.firstChild.nodeValue + ")"); |
233 | ||
1ca8997b AD |
234 | last_feeds = feeds; |
235 | ||
b41c2549 AD |
236 | $('feeds-content').innerHTML = ""; |
237 | ||
c01f40f4 AD |
238 | for (var i = 0; i < feeds.length; i++) { |
239 | add_feed_entry(feeds[i]); | |
240 | } | |
1ca8997b AD |
241 | } else { |
242 | feeds = last_feeds; | |
c01f40f4 AD |
243 | } |
244 | ||
245 | if (headlines) { | |
246 | headlines = eval("(" + headlines.firstChild.nodeValue + ")"); | |
247 | ||
118e9399 AD |
248 | if (_active_feed_id != feed_id) |
249 | $('headlines-content').innerHTML = ""; | |
250 | ||
251 | //Element.hide('headlines-content'); | |
252 | ||
253 | var pr = $('MORE-PROMPT'); | |
b41c2549 | 254 | |
118e9399 AD |
255 | if (pr) { |
256 | pr.id = ''; | |
257 | Element.hide(pr); | |
258 | } | |
1ca8997b | 259 | |
c01f40f4 | 260 | for (var i = 0; i < headlines.length; i++) { |
118e9399 AD |
261 | var elem = $('A-' + headlines[i].id); |
262 | ||
263 | if (elem && Element.visible(elem)) { | |
264 | ||
265 | ||
266 | } else { | |
267 | add_headline_entry(headlines[i], find_feed(feeds, headlines[i].feed_id)); | |
268 | } | |
c01f40f4 | 269 | } |
b41c2549 | 270 | |
118e9399 AD |
271 | $('headlines-content').innerHTML += "<li id='MORE-PROMPT'>" + |
272 | "<div class='body'><a href=\"#\" onclick=\"load_more()\">" + | |
273 | __("More articles...") + "</a></div></li>"; | |
1ca8997b AD |
274 | |
275 | new Effect.Appear('headlines-content'); | |
276 | ||
c01f40f4 AD |
277 | } |
278 | ||
279 | } catch (e) { | |
280 | exception_error("digest_update", e); | |
281 | } | |
282 | } | |
283 | ||
284 | function digest_init() { | |
285 | try { | |
286 | ||
287 | new Ajax.Request("backend.php", { | |
288 | parameters: "backend.php?op=rpc&subop=digest-init", | |
289 | onComplete: function(transport) { | |
118e9399 | 290 | digest_update(transport, -4); |
1ca8997b | 291 | window.setTimeout('viewfeed(-4)', 100); |
c01f40f4 AD |
292 | } }); |
293 | ||
294 | } catch (e) { | |
295 | exception_error("digest_init", e); | |
296 | } | |
297 | } |