catchup in category view mode jumps to the next unread category

This commit is contained in:
Andrew Dolgov 2008-10-01 05:06:55 +01:00
parent 886d4bce27
commit f46192bb19
3 changed files with 68 additions and 15 deletions

View file

@ -135,6 +135,12 @@ function viewfeed(feed, subop, is_cat, subop_param, skip_history, offset) {
if (subop == "MarkAllRead") {
var show_next_feed = getInitParam("on_catchup_show_next_feed") == "1";
if (show_next_feed) {
if (!activeFeedIsCat()) {
var feedlist = document.getElementById('feedList');
var next_unread_feed = getRelativeFeedId(feedlist,
@ -145,13 +151,26 @@ function viewfeed(feed, subop, is_cat, subop_param, skip_history, offset) {
-3, "next", true);
}
var show_next_feed = getInitParam("on_catchup_show_next_feed") == "1";
if (next_unread_feed && show_next_feed && !activeFeedIsCat()) {
if (next_unread_feed) {
query = query + "&nuf=" + param_escape(next_unread_feed);
//setActiveFeedId(next_unread_feed);
feed = next_unread_feed;
}
} else {
var next_unread_feed = getNextUnreadCat(feed);
/* we don't need to specify that our next feed is actually
a category, because we're in the is_cat mode by definition
already */
if (next_unread_feed && show_next_feed) {
query = query + "&nuf=" + param_escape(next_unread_feed);
feed = next_unread_feed;
}
}
}
}
if (is_cat) {

View file

@ -1035,6 +1035,40 @@ function toggleSelectRow(sender) {
}
}
function getNextUnreadCat(id) {
try {
var rows = document.getElementById("feedList").getElementsByTagName("LI");
var feeds = new Array();
var unread_only = true;
var is_cat = true;
for (var i = 0; i < rows.length; i++) {
if (rows[i].id.match("FCAT-")) {
if (rows[i].id == "FCAT-" + id && is_cat || (Element.visible(rows[i]) && Element.visible(rows[i].parentNode))) {
var cat_id = parseInt(rows[i].id.replace("FCAT-", ""));
if (cat_id >= 0) {
if (!unread_only || get_cat_unread(cat_id) > 0) {
feeds.push(cat_id);
}
}
}
}
}
var idx = feeds.indexOf(id);
if (idx != -1 && idx < feeds.length) {
return feeds[idx+1];
} else {
return feeds.shift();
}
} catch (e) {
exception_error("getNextUnreadCat", e);
}
}
function getRelativeFeedId2(id, is_cat, direction, unread_only) {
try {