3 var _active_feed_id = false;
4 var _active_feed_offset = false;
5 var _update_timeout = false;
7 function zoom(article_id) {
9 var elem = $('A-' + article_id);
12 var divs = elem.getElementsByTagName('DIV');
14 for (var i = 0; i < divs.length; i++) {
15 if (divs[i].className == 'excerpt')
16 Element.hide(divs[i]);
18 if (divs[i].className == 'content')
19 Element.show(divs[i]);
23 var query = "backend.php?op=rpc&subop=digest-mark&article_id=" + article_id;
25 new Ajax.Request("backend.php", {
27 onComplete: function(transport) {
28 window.clearTimeout(_update_timeout);
29 _update_timeout = window.setTimeout('update()', 1000);
33 exception_error("zoom", e);
37 function load_more() {
39 var elem = $('MORE-PROMPT');
46 viewfeed(_active_feed_id, _active_feed_offset + 10);
48 exception_error("load_more", e);
54 viewfeed(_active_feed_id, _active_feed_offset);
56 exception_error("update", e);
60 function view(article_id, dismiss_only) {
62 var elem = $('A-' + article_id);
66 //new Effect.Fade(elem, {duration : 0.3});
70 var query = "backend.php?op=rpc&subop=digest-mark&article_id=" + article_id;
72 new Ajax.Request("backend.php", {
74 onComplete: function(transport) {
75 window.clearTimeout(_update_timeout);
76 _update_timeout = window.setTimeout('update()', 1000);
79 return dismiss_only != true;
81 exception_error("view", e);
85 function viewfeed(feed_id, offset) {
88 if (!feed_id) feed_id = _active_feed_id;
93 offset = _active_feed_offset + offset;
95 var query = "backend.php?op=rpc&subop=digest-update&feed_id=" + feed_id +
100 new Ajax.Request("backend.php", {
102 onComplete: function(transport) {
103 digest_update(transport, feed_id);
104 _active_feed_id = feed_id;
105 _active_feed_offset = offset;
109 exception_error("view", e);
113 function find_article(articles, article_id) {
115 for (var i = 0; i < articles.length; i++) {
116 if (articles[i].id == article_id)
123 exception_error("find_article", e);
127 function find_feed(feeds, feed_id) {
129 for (var i = 0; i < feeds.length; i++) {
130 if (feeds[i].id == feed_id)
137 exception_error("find_feed", e);
141 function get_feed_icon(feed) {
144 return 'icons/' + feed.id + '.ico';
147 return 'images/mark_set.png';
150 return 'images/pub_set.png';
153 return 'images/fresh.png';
156 return 'images/tag.png';
159 return 'images/label.png';
162 exception_error("get_feed_icon", e);
166 function add_feed_entry(feed) {
170 icon_part = "<img src='" + get_feed_icon(feed) + "'/>";
172 var tmp_html = "<li>" +
174 "<a href=\"#\" onclick=\"viewfeed("+feed.id+")\">" + feed.title +
175 "<div class='unread-ctr'>" + feed.unread + "</div>" +
178 $("feeds-content").innerHTML += tmp_html;
181 exception_error("add_feed_entry", e);
185 function add_latest_entry(article, feed) {
189 //$("latest-content").innerHTML += "bbb";
192 exception_error("add_latest_entry", e);
196 function add_headline_entry(article, feed) {
201 if (article.has_icon)
202 icon_part = "<img src='icons/" + article.feed_id + ".ico'/>";
204 var tmp_html = "<li id=\"A-"+article.id+"\">" +
206 "<img title='Dismiss' onclick=\"view("+article.id+", true)\" class='digest-check' src='images/digest_checkbox.png'>" +
207 "<a target=\"_blank\" href=\""+article.link+"\""+
208 "onclick=\"return view("+article.id+")\" class='title'>" +
209 article.title + "</a>" +
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>" +
215 "<div class='info'><a href=\#\" onclick=\"viewfeed("+feed.id+")\">" +
216 feed.title + "</a> " + " @ " +
217 new Date(article.updated * 1000) + "</div>" +
220 $("headlines-content").innerHTML += tmp_html;
223 exception_error("add_headline_entry", e);
227 function digest_update(transport, feed_id) {
229 var feeds = transport.responseXML.getElementsByTagName('feeds')[0];
230 var headlines = transport.responseXML.getElementsByTagName('headlines')[0];
233 feeds = eval("(" + feeds.firstChild.nodeValue + ")");
237 $('feeds-content').innerHTML = "";
239 for (var i = 0; i < feeds.length; i++) {
240 add_feed_entry(feeds[i]);
247 headlines = eval("(" + headlines.firstChild.nodeValue + ")");
249 if (_active_feed_id != feed_id)
250 $('headlines-content').innerHTML = "";
252 //Element.hide('headlines-content');
254 var pr = $('MORE-PROMPT');
261 for (var i = 0; i < headlines.length; i++) {
262 var elem = $('A-' + headlines[i].id);
264 if (elem && Element.visible(elem)) {
268 add_headline_entry(headlines[i], find_feed(feeds, headlines[i].feed_id));
272 $('headlines-content').innerHTML += "<li id='MORE-PROMPT'>" +
273 "<div class='body'><a href=\"#\" onclick=\"load_more()\">" +
274 __("More articles...") + "</a></div></li>";
276 new Effect.Appear('headlines-content');
281 exception_error("digest_update", e);
285 function digest_init() {
288 new Ajax.Request("backend.php", {
289 parameters: "backend.php?op=rpc&subop=digest-init",
290 onComplete: function(transport) {
291 digest_update(transport, -4);
292 window.setTimeout('viewfeed(-4)', 100);
296 exception_error("digest_init", e);