]> git.wh0rd.org Git - 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 }