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]; + } } } }