From 442456184c23b8da36d6f9e0ac098d4a57c17659 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Thu, 29 Mar 2012 15:03:48 +0400 Subject: [PATCH] simplify catching up of feeds, do not reload headlines buffer on catchup unless on_catchup_show_next_feed is enabled (closes #442) --- classes/feeds.php | 19 +----------- js/feedlist.js | 73 ++++++++++++++++++++++++++--------------------- js/tt-rss.js | 28 ------------------ 3 files changed, 41 insertions(+), 79 deletions(-) diff --git a/classes/feeds.php b/classes/feeds.php index 2f4870f91..aacad5508 100644 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -177,28 +177,11 @@ class Feeds extends Protected_Handler { $method_split = explode(":", $method); -/* if ($method == "CatchupSelected") { - $ids = explode(",", db_escape_string($_REQUEST["ids"])); - $cmode = sprintf("%d", $_REQUEST["cmode"]); - - catchupArticlesById($this->link, $ids, $cmode); - } */ - if ($method == "ForceUpdate" && $feed && is_numeric($feed) > 0) { include "rssfuncs.php"; update_rss_feed($this->link, $feed, true); } - if ($method == "MarkAllRead") { - catchup_feed($this->link, $feed, $cat_view); - - if (get_pref($this->link, 'ON_CATCHUP_SHOW_NEXT_FEED')) { - if ($next_unread_feed) { - $feed = $next_unread_feed; - } - } - } - if ($method_split[0] == "MarkAllReadGR") { catchup_feed($this->link, $method_split[1], false); } @@ -443,7 +426,7 @@ class Feeds extends Protected_Handler { $cur_feed_title = htmlspecialchars($cur_feed_title); - $vf_catchup_link = "(".__('mark as read').")"; + $vf_catchup_link = "(".__('mark as read').")"; $reply['content'] .= "
". "
$feed_icon_img
". diff --git a/js/feedlist.js b/js/feedlist.js index 271d2059e..7262d6aa3 100644 --- a/js/feedlist.js +++ b/js/feedlist.js @@ -148,39 +148,6 @@ function viewfeed(feed, method, is_cat, offset, background, infscroll_req) { _search_query = false; } - if (method == "MarkAllRead") { - - var show_next_feed = getInitParam("on_catchup_show_next_feed") == "1"; - - if (show_next_feed) { - var nuf = getNextUnreadFeed(feed, is_cat); - - if (nuf) { - var cached_nuf = cache_get("feed:" + nuf + ":false"); - - if (cached_nuf) { - - render_local_headlines(nuf, false, JSON.parse(cached_nuf)); - - var catchup_query = "?op=rpc&method=catchupFeed&feed_id=" + - feed + "&is_cat=" + is_cat; - - console.log(catchup_query); - - new Ajax.Request("backend.php", { - parameters: catchup_query, - onComplete: function(transport) { - handle_rpc_json(transport); - } }); - - return; - } else { - query += "&nuf=" + param_escape(nuf); - } - } - } - } - if (offset != 0) { query = query + "&skip=" + offset; @@ -476,6 +443,26 @@ function getNextUnreadFeed(feed, is_cat) { } } +function catchupCurrentFeed() { + return catchupFeed(getActiveFeedId(), activeFeedIsCat()); +} + +function catchupFeedInGroup(id) { + try { + + var title = getFeedName(id); + + var str = __("Mark all articles in %s as read?").replace("%s", title); + + if (getInitParam("confirm_feed_catchup") != 1 || confirm(str)) { + return viewCurrentFeed('MarkAllReadGR:' + id); + } + + } catch (e) { + exception_error("catchupFeedInGroup", e); + } +} + function catchupFeed(feed, is_cat) { try { var str = __("Mark all articles in %s as read?"); @@ -496,6 +483,26 @@ function catchupFeed(feed, is_cat) { parameters: catchup_query, onComplete: function(transport) { handle_rpc_json(transport); + + if (feed == getActiveFeedId() && is_cat == activeFeedIsCat()) { + + $$("#headlines-frame > div[id*=RROW][class*=Unread]").each( + function(child) { + child.removeClassName("Unread"); + } + ); + } + + var show_next_feed = getInitParam("on_catchup_show_next_feed") == "1"; + + if (show_next_feed) { + var nuf = getNextUnreadFeed(feed, is_cat); + + if (nuf) { + viewfeed(nuf); + } + } + notify(""); } }); diff --git a/js/tt-rss.js b/js/tt-rss.js index 5804ee501..ef5d72e5b 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -504,34 +504,6 @@ function parse_runtime_info(data) { } } -function catchupCurrentFeed() { - - var fn = getFeedName(getActiveFeedId(), activeFeedIsCat()); - - var str = __("Mark all articles in %s as read?").replace("%s", fn); - - if (getInitParam("confirm_feed_catchup") != 1 || confirm(str)) { - return viewCurrentFeed('MarkAllRead'); - } -} - -function catchupFeedInGroup(id) { - - try { - - var title = getFeedName(id); - - var str = __("Mark all articles in %s as read?").replace("%s", title); - - if (getInitParam("confirm_feed_catchup") != 1 || confirm(str)) { - return viewCurrentFeed('MarkAllReadGR:' + id); - } - - } catch (e) { - exception_error("catchupFeedInGroup", e); - } -} - function collapse_feedlist() { try {