simplify catching up of feeds, do not reload headlines buffer on catchup unless on_catchup_show_next_feed is enabled (closes #442)

This commit is contained in:
Andrew Dolgov 2012-03-29 15:03:48 +04:00
parent d4c64ecc77
commit 442456184c
3 changed files with 41 additions and 79 deletions

View File

@ -177,28 +177,11 @@ class Feeds extends Protected_Handler {
$method_split = explode(":", $method); $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) { if ($method == "ForceUpdate" && $feed && is_numeric($feed) > 0) {
include "rssfuncs.php"; include "rssfuncs.php";
update_rss_feed($this->link, $feed, true); 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") { if ($method_split[0] == "MarkAllReadGR") {
catchup_feed($this->link, $method_split[1], false); catchup_feed($this->link, $method_split[1], false);
} }
@ -443,7 +426,7 @@ class Feeds extends Protected_Handler {
$cur_feed_title = htmlspecialchars($cur_feed_title); $cur_feed_title = htmlspecialchars($cur_feed_title);
$vf_catchup_link = "(<a onclick='javascript:catchupFeedInGroup($feed_id);' href='#'>".__('mark as read')."</a>)"; $vf_catchup_link = "(<a onclick='catchupFeedInGroup($feed_id);' href='#'>".__('mark as read')."</a>)";
$reply['content'] .= "<div class='cdmFeedTitle'>". $reply['content'] .= "<div class='cdmFeedTitle'>".
"<div style=\"float : right\">$feed_icon_img</div>". "<div style=\"float : right\">$feed_icon_img</div>".

View File

@ -148,39 +148,6 @@ function viewfeed(feed, method, is_cat, offset, background, infscroll_req) {
_search_query = false; _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) { if (offset != 0) {
query = query + "&skip=" + offset; 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) { function catchupFeed(feed, is_cat) {
try { try {
var str = __("Mark all articles in %s as read?"); var str = __("Mark all articles in %s as read?");
@ -496,6 +483,26 @@ function catchupFeed(feed, is_cat) {
parameters: catchup_query, parameters: catchup_query,
onComplete: function(transport) { onComplete: function(transport) {
handle_rpc_json(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(""); notify("");
} }); } });

View File

@ -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() { function collapse_feedlist() {
try { try {