X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=feedlist.js;h=e0ffae7f18d835ba57d29c4f068c752b5ecc156e;hb=a299881140a256317dfa394489789bd1eea507d5;hp=1c2adc887906689ae5714e9bbb81174019f1d55d;hpb=28364067638ca31ca03cf63e4ec0dc581731171d;p=tt-rss.git diff --git a/feedlist.js b/feedlist.js index 1c2adc88..e0ffae7f 100644 --- a/feedlist.js +++ b/feedlist.js @@ -48,7 +48,7 @@ function loadMoreHeadlines() { } -function viewfeed(feed, subop, is_cat, offset, background, infscrol_req) { +function viewfeed(feed, subop, is_cat, offset, background, infscroll_req) { try { if (is_cat == undefined) is_cat = false; @@ -58,23 +58,52 @@ function viewfeed(feed, subop, is_cat, offset, background, infscrol_req) { if (subop == undefined) subop = ''; if (offset == undefined) offset = 0; if (background == undefined) background = false; - if (infscrol_req == undefined) infscrol_req = false; + if (infscroll_req == undefined) infscroll_req = false; last_requested_article = 0; var cached_headlines = false; - if (feed == getActiveFeedId()) + if (feed == getActiveFeedId()) { cache_delete("feed:" + feed + ":" + is_cat); - else + } else { cached_headlines = cache_get("feed:" + feed + ":" + is_cat); - if (offset == 0) + // switching to a different feed, we might as well catchup stuff visible + // in headlines buffer (if any) + if (!background && getInitParam("cdm_auto_catchup") == 1 && parseInt(getActiveFeedId()) > 0) { + + $$("#headlines-frame > div[id*=RROW][class*=Unread]").each( + function(child) { + var hf = $("headlines-frame"); + + if (hf.scrollTop + hf.offsetHeight >= + child.offsetTop + child.offsetHeight) { + + var id = child.id.replace("RROW-", ""); + + if (catchup_id_batch.indexOf(id) == -1) + catchup_id_batch.push(id); + + } + + if (catchup_id_batch.length > 0) { + window.clearTimeout(catchup_timeout_id); + + if (!_infscroll_request_sent) { + catchup_timeout_id = window.setTimeout('catchupBatchedArticles()', + 2000); + } + } + + }); + } + } + + if (offset == 0 && !background) dijit.byId("content-tabs").selectChild( dijit.byId("content-tabs").getChildren()[0]); - var force_nocache = false; - if (!background) { if (getActiveFeedId() != feed || offset == 0) { active_post_id = 0; @@ -180,7 +209,7 @@ function viewfeed(feed, subop, is_cat, offset, background, infscrol_req) { parameters: query, onComplete: function(transport) { setFeedExpandoIcon(feed, is_cat, 'images/blank_icon.gif'); - headlines_callback2(transport, offset, background, infscrol_req); + headlines_callback2(transport, offset, background, infscroll_req); } }); } catch (e) { @@ -281,18 +310,14 @@ function displayNewContentPrompt(id) { function parse_counters(elems, scheduled_call) { try { - - var feeds_found = 0; - for (var l = 0; l < elems.length; l++) { - var id = elems[l].id + var id = elems[l].id; var kind = elems[l].kind; - var ctr = parseInt(elems[l].counter) + var ctr = parseInt(elems[l].counter); var error = elems[l].error; var has_img = elems[l].has_img; var updated = elems[l].updated; - var title = elems[l].title; if (id == "global-unread") { global_unread = ctr; @@ -305,8 +330,6 @@ function parse_counters(elems, scheduled_call) { continue; } - var treeItem; - // TODO: enable new content notification for categories if (!activeFeedIsCat() && id == getActiveFeedId() @@ -457,3 +480,30 @@ function getNextUnreadFeed(feed, is_cat) { } } +function catchupFeed(feed, is_cat) { + try { + var str = __("Mark all articles in %s as read?"); + var fn = getFeedName(getActiveFeedId(), activeFeedIsCat()); + + str = str.replace("%s", fn); + + if (getInitParam("confirm_feed_catchup") == 1 && !confirm(str)) { + return; + } + + var catchup_query = "?op=rpc&subop=catchupFeed&feed_id=" + + feed + "&is_cat=" + is_cat; + + notify_progress("Loading, please wait...", true); + + new Ajax.Request("backend.php", { + parameters: catchup_query, + onComplete: function(transport) { + handle_rpc_json(transport); + notify(""); + } }); + + } catch (e) { + exception_error("catchupFeed", e); + } +}