X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=digest.js;h=ee76c735bf3516a5b856a6680bb33b0ee4267f43;hb=8ad4bac0fd44220528896d8b5fedbb84220b1ea4;hp=82abe6676cb9434a8659ef90658d722162316773;hpb=ef1ef3bc29b3324830c26efa9678568c4c530e2f;p=tt-rss.git
diff --git a/digest.js b/digest.js
index 82abe667..ee76c735 100644
--- a/digest.js
+++ b/digest.js
@@ -1,9 +1,19 @@
var last_feeds = [];
+var init_params = {};
var _active_feed_id = false;
-var _active_feed_offset = false;
var _update_timeout = false;
+var _view_update_timeout = false;
var _feedlist_expanded = false;
+var _update_seq = 1;
+
+function article_appear(article_id) {
+ try {
+ new Effect.Appear('A-' + article_id);
+ } catch (e) {
+ exception_error("article_appear", e);
+ }
+}
function catchup_feed(feed_id, callback) {
try {
@@ -16,14 +26,14 @@ function catchup_feed(feed_id, callback) {
if (feed_id < 0) is_cat = "true"; // KLUDGE
- var query = "?op=rpc&subop=catchupFeed&feed_id=" +
+ var query = "?op=rpc&subop=catchupFeed&feed_id=" +
feed_id + "&is_cat=" + is_cat;
new Ajax.Request("backend.php", {
- parameters: query,
+ parameters: query,
onComplete: function(transport) {
if (callback) callback(transport);
-
+
update();
} });
}
@@ -33,27 +43,43 @@ function catchup_feed(feed_id, callback) {
}
}
-function catchup_visible_articles(callback) {
+function get_visible_article_ids() {
try {
var elems = $("headlines-content").getElementsByTagName("LI");
var ids = [];
-
+
for (var i = 0; i < elems.length; i++) {
if (elems[i].id && elems[i].id.match("A-")) {
- ids.push(elems[i].id.replace("A-", ""));
+ ids.push(elems[i].id.replace("A-", ""));
}
}
- var query = "?op=rpc&subop=catchupSelected" +
- "&cmode=0&ids=" + param_escape(ids);
+ return ids;
- new Ajax.Request("backend.php", {
- parameters: query,
- onComplete: function(transport) {
- if (callback) callback(transport);
+ } catch (e) {
+ exception_error("get_visible_article_ids", e);
+ }
+}
- viewfeed(_active_feed_id, 0);
- } });
+function catchup_visible_articles(callback) {
+ try {
+
+ var ids = get_visible_article_ids();
+
+ if (confirm(__("Mark %d displayed articles as read?").replace("%d", ids.length))) {
+
+ var query = "?op=rpc&subop=catchupSelected" +
+ "&cmode=0&ids=" + param_escape(ids);
+
+ new Ajax.Request("backend.php", {
+ parameters: query,
+ onComplete: function(transport) {
+ if (callback) callback(transport);
+
+ viewfeed(_active_feed_id, 0);
+ } });
+
+ }
} catch (e) {
exception_error("catchup_visible_articles", e);
@@ -66,7 +92,7 @@ function catchup_article(article_id, callback) {
"&cmode=0&ids=" + article_id;
new Ajax.Request("backend.php", {
- parameters: query,
+ parameters: query,
onComplete: function(transport) {
if (callback) callback(transport);
} });
@@ -76,6 +102,29 @@ function catchup_article(article_id, callback) {
}
}
+function set_selected_article(article_id) {
+ try {
+ $$("#headlines-content > li[id*=A-]").each(function(article) {
+ var id = article.id.replace("A-", "");
+
+ var cb = article.getElementsByTagName("INPUT")[0];
+
+ if (id == article_id) {
+ article.addClassName("selected");
+ cb.checked = true;
+ } else {
+ article.removeClassName("selected");
+ cb.checked = false;
+ }
+
+ });
+
+ } catch (e) {
+ exception_error("mark_selected_feed", e);
+ }
+}
+
+
function set_selected_feed(feed_id) {
try {
var feeds = $("feeds-content").getElementsByTagName("LI");
@@ -94,39 +143,26 @@ function set_selected_feed(feed_id) {
}
}
-function zoom(article_id) {
+function load_more() {
try {
- var elem = $('A-' + article_id);
+ var pr = $("H-LOADING-IMG");
- if (elem) {
- var divs = elem.getElementsByTagName('DIV');
-
- for (var i = 0; i < divs.length; i++) {
- if (divs[i].className == 'excerpt')
- Element.hide(divs[i]);
-
- if (divs[i].className == 'content')
- Element.show(divs[i]);
- }
- }
+ if (pr) Element.show(pr);
- //catchup_article(article_id,
- // function() { update(); });
+ var offset = $$("#headlines-content > li[id*=A-][class*=fresh],li[id*=A-][class*=unread]").length;
- } catch (e) {
- exception_error("zoom", e);
- }
-}
+ viewfeed(false, offset, false, false, true,
+ function() {
+ var pr = $("H-LOADING-IMG");
-function load_more() {
- try {
- viewfeed(_active_feed_id, _active_feed_offset + 10);
+ if (pr) Element.hide(pr);
+ });
} catch (e) {
exception_error("load_more", e);
}
}
-function update() {
+function update(callback) {
try {
console.log('updating feeds...');
@@ -138,6 +174,8 @@ function update() {
fatal_error_check(transport);
parse_feeds(transport);
set_selected_feed(_active_feed_id);
+
+ if (callback) callback(transport);
} });
_update_timeout = window.setTimeout('update()', 5*1000);
@@ -159,43 +197,154 @@ function remove_headline_entry(article_id) {
}
}
-function view(article_id, dismiss_only) {
+function view_update() {
+ try {
+ viewfeed(_active_feed_id, _active_feed_offset, false, true, true);
+ update();
+ } catch (e) {
+ exception_error("view_update", e);
+ }
+}
+
+function view(article_id) {
try {
- remove_headline_entry(article_id);
+ $("content").addClassName("move");
- catchup_article(article_id,
- function() {
- viewfeed(_active_feed_id, _active_feed_offset);
- update();
- });
+ var a = $("A-" + article_id);
+ var h = $("headlines");
+
+ setTimeout(function() {
+ // below or above viewport, reposition headline
+ if (a.offsetTop > h.scrollTop + h.offsetHeight || a.offsetTop+a.offsetHeight < h.scrollTop+a.offsetHeight)
+ h.scrollTop = a.offsetTop - (h.offsetHeight/2 - a.offsetHeight/2);
+ }, 500);
+
+ new Ajax.Request("backend.php", {
+ parameters: "?op=rpc&subop=digest-get-contents&article_id=" +
+ article_id,
+ onComplete: function(transport) {
+ fatal_error_check(transport);
+
+ var reply = JSON.parse(transport.responseText);
- return dismiss_only != true;
+ if (reply) {
+ var article = reply['article'];
+
+ var mark_part = "";
+ var publ_part = "";
+
+ var tags_part = "";
+
+ if (article.tags.length > 0) {
+ tags_part = " " + __("in") + " ";
+
+ for (var i = 0; i < Math.min(5, article.tags.length); i++) {
+ //tags_part += "" +
+ // article.tags[i] + ", ";
+
+ tags_part += article.tags[i] + ", ";
+ }
+
+ tags_part = tags_part.replace(/, $/, "");
+ tags_part = " ";
+
+ }
+
+ if (article.marked)
+ mark_part = "";
+ else
+ mark_part = "
";
+
+ if (article.published)
+ publ_part = "
";
+ else
+ publ_part = "
";
+
+ var tmp = "