1
0
mirror of https://git.tt-rss.org/git/tt-rss.git synced 2025-12-23 12:51:28 +00:00

fix opening next unread feed on catchup

This commit is contained in:
Andrew Dolgov
2010-11-20 11:25:08 +03:00
parent e5d9c77052
commit 692de15991
2 changed files with 45 additions and 5 deletions

View File

@@ -52,6 +52,42 @@ dojo.declare("fox.FeedStoreModel", dijit.tree.ForestStoreModel, {
if (treeItem) if (treeItem)
return this.store.setValue(treeItem, key, value); return this.store.setValue(treeItem, key, value);
}, },
getNextUnreadFeed: function (feed, is_cat) {
if (is_cat) {
treeItem = this.store._itemsByIdentity['CAT:' + feed];
items = this.store._arrayOfTopLevelItems;
} else {
treeItem = this.store._itemsByIdentity['FEED:' + feed];
items = this.store._arrayOfAllItems;
}
for (var i = 0; i < items.length; i++) {
if (items[i] == treeItem) {
for (j = i+1; j < items.length; j++) {
var unread = this.store.getValue(items[j], 'unread');
var id = this.store.getValue(items[j], 'id');
if (unread > 0 && (is_cat || id.match("FEED:"))) return items[j];
}
for (j = 0; j < i; j++) {
var unread = this.store.getValue(items[j], 'unread');
var id = this.store.getValue(items[j], 'id');
if (unread > 0 && (is_cat || id.match("FEED:"))) return items[j];
}
}
}
return null;
},
hasCats: function() {
if (this.store && this.store._itemsByIdentity)
return this.store._itemsByIdentity['CAT:-1'] != undefined;
else
return false;
},
}); });
dojo.declare("fox.FeedTree", dijit.Tree, { dojo.declare("fox.FeedTree", dijit.Tree, {
@@ -144,10 +180,7 @@ dojo.declare("fox.FeedTree", dijit.Tree, {
return false; return false;
}, },
hasCats: function() { hasCats: function() {
if (this.model.store && this.model.store._itemsByIdentity) return this.model.hasCats();
return this.model.store._itemsByIdentity['CAT:-1'] != undefined;
else
return false;
}, },
hideRead: function (hide, show_special) { hideRead: function (hide, show_special) {
if (this.hasCats()) { if (this.hasCats()) {

View File

@@ -115,7 +115,14 @@ function viewfeed(feed, subop, is_cat, offset) {
var show_next_feed = getInitParam("on_catchup_show_next_feed") == "1"; var show_next_feed = getInitParam("on_catchup_show_next_feed") == "1";
if (show_next_feed) { if (show_next_feed) {
// TODO: implement show_next_feed handling var tree = dijit.byId("feedTree");
var nuf = tree.model.getNextUnreadFeed(feed, is_cat);
if (nuf) {
var nuf_id = tree.model.store.getValue(nuf, 'bare_id');
query = query + "&nuf=" + param_escape(nuf_id);
}
} }
} }