]>
git.wh0rd.org - tt-rss.git/blob - digest.js
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>" + feed
.title
+ "</a> " + " @ " +
216 new Date(article
.updated
* 1000) + "</div>" +
219 $("headlines-content").innerHTML
+= tmp_html
;
222 exception_error("add_headline_entry", e
);
226 function digest_update(transport
, feed_id
) {
228 var feeds
= transport
.responseXML
.getElementsByTagName('feeds')[0];
229 var headlines
= transport
.responseXML
.getElementsByTagName('headlines')[0];
232 feeds
= eval("(" + feeds
.firstChild
.nodeValue
+ ")");
236 $('feeds-content').innerHTML
= "";
238 for (var i
= 0; i
< feeds
.length
; i
++) {
239 add_feed_entry(feeds
[i
]);
246 headlines
= eval("(" + headlines
.firstChild
.nodeValue
+ ")");
248 if (_active_feed_id
!= feed_id
)
249 $('headlines-content').innerHTML
= "";
251 //Element.hide('headlines-content');
253 var pr
= $('MORE-PROMPT');
260 for (var i
= 0; i
< headlines
.length
; i
++) {
261 var elem
= $('A-' + headlines
[i
].id
);
263 if (elem
&& Element
.visible(elem
)) {
267 add_headline_entry(headlines
[i
], find_feed(feeds
, headlines
[i
].feed_id
));
271 $('headlines-content').innerHTML
+= "<li id='MORE-PROMPT'>" +
272 "<div class='body'><a href=\"#\" onclick=\"load_more()\">" +
273 __("More articles...") + "</a></div></li>";
275 new Effect
.Appear('headlines-content');
280 exception_error("digest_update", e
);
284 function digest_init() {
287 new Ajax
.Request("backend.php", {
288 parameters
: "backend.php?op=rpc&subop=digest-init",
289 onComplete: function(transport
) {
290 digest_update(transport
, -4);
291 window
.setTimeout('viewfeed(-4)', 100);
295 exception_error("digest_init", e
);