summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndré Glüpker <[email protected]>2014-06-14 12:37:05 +0200
committerAndré Glüpker <[email protected]>2014-06-14 12:37:05 +0200
commitd922b09c4356ffb88a3ffbf9a60ebb8f890fd7ce (patch)
tree35977d8094beb6ddf71b6160d3f4990daa563ce0
parent1fa5c5409ddd36c1ceac6eb8bfcb19f35f89662e (diff)
Skip nested Feed when calling getNextUnreadFeed()
This function is only called when using "Mark all as read". So every time, this function gets called right now, all nested categories get marked as read as well, so we don't want to jump to them. Instead we want to the next category with same or higher tier.
-rw-r--r--classes/pref/feeds.php1
-rw-r--r--js/FeedTree.js12
2 files changed, 9 insertions, 4 deletions
diff --git a/classes/pref/feeds.php b/classes/pref/feeds.php
index 6021978b7..43b474278 100644
--- a/classes/pref/feeds.php
+++ b/classes/pref/feeds.php
@@ -55,6 +55,7 @@ class Pref_Feeds extends Handler_Protected {
$cat['unread'] = 0;
$cat['child_unread'] = 0;
$cat['auxcounter'] = 0;
+ $cat['parent_id'] = $cat_id;
$cat['items'] = $this->get_category_items($line['id']);
diff --git a/js/FeedTree.js b/js/FeedTree.js
index 4ae82d8d9..6c06f00d5 100644
--- a/js/FeedTree.js
+++ b/js/FeedTree.js
@@ -58,12 +58,12 @@ dojo.declare("fox.FeedStoreModel", dijit.tree.ForestStoreModel, {
if (is_cat) {
treeItem = this.store._itemsByIdentity['CAT:' + feed];
- items = this.store._arrayOfTopLevelItems;
} else {
treeItem = this.store._itemsByIdentity['FEED:' + feed];
- items = this.store._arrayOfAllItems;
}
+ items = this.store._arrayOfAllItems;
+
for (var i = 0; i < items.length; i++) {
if (items[i] == treeItem) {
@@ -71,14 +71,18 @@ dojo.declare("fox.FeedStoreModel", dijit.tree.ForestStoreModel, {
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];
+ if (unread > 0 && ((is_cat && id.match("CAT:")) || (!is_cat && id.match("FEED:")))) {
+ if( !is_cat || ! (this.store.hasAttribute(items[j], 'parent_id') && this.store.getValue(items[j], 'parent_id') == feed) ) return items[j];
+ }
}
for (var 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];
+ if (unread > 0 && ((is_cat && id.match("CAT:")) || (!is_cat && id.match("FEED:")))) {
+ if( !is_cat || ! (this.store.hasAttribute(items[j], 'parent_id') && this.store.getValue(items[j], 'parent_id') == feed) ) return items[j];
+ }
}
}
}