]> git.wh0rd.org - tt-rss.git/commitdiff
Merge pull request #379 from Joschasa/getNextUnreadFeed_skip_nested
authorAndrew Dolgov <gothfox@users.noreply.github.com>
Sun, 15 Jun 2014 07:12:20 +0000 (11:12 +0400)
committerAndrew Dolgov <gothfox@users.noreply.github.com>
Sun, 15 Jun 2014 07:12:20 +0000 (11:12 +0400)
Skip nested Cats/Feeds when calling getNextUnreadFeed()

classes/pref/feeds.php
js/FeedTree.js

index 6021978b76200bda19103452c3e758e524d441c1..43b474278d66cad1f25e2416d0004e4fd02a59ff 100644 (file)
@@ -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']);
 
index 4ae82d8d96b9fa6fe9da6cae7502b19ba4fa6652..6c06f00d5ea09fc775906a09579540be2b32e957 100644 (file)
@@ -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];
+                                       }
                                }
                        }
                }