summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--js/FeedTree.js56
-rw-r--r--js/feedlist.js2
2 files changed, 58 insertions, 0 deletions
diff --git a/js/FeedTree.js b/js/FeedTree.js
index 2e686c156..e0b068f17 100644
--- a/js/FeedTree.js
+++ b/js/FeedTree.js
@@ -218,7 +218,63 @@ dojo.declare("fox.FeedTree", dijit.Tree, {
return label;
},
+ expandParentNodes: function(feed, is_cat, list) {
+ try {
+ for (var i = 0; i < list.length; i++) {
+ var id = String(list[i].id);
+ var item = this._itemNodesMap[id];
+
+ if (item) {
+ item = item[0];
+ this._expandNode(item);
+ }
+ }
+ } catch (e) {
+ exception_error("expandParentNodes", e);
+ }
+ },
+ findNodeParentsAndExpandThem: function(feed, is_cat, root, parents) {
+ // expands all parents of specified feed to properly mark it as active
+ // my fav thing about frameworks is doing everything myself
+ try {
+ var test_id = is_cat ? 'CAT:' + feed : 'FEED:' + feed;
+
+ if (!root) {
+ if (!this.model || !this.model.store) return false;
+
+ var items = this.model.store._arrayOfTopLevelItems;
+
+ for (var i = 0; i < items.length; i++) {
+ if (String(items[i].id) == test_id) {
+ this.expandParentNodes(feed, is_cat, parents);
+ } else {
+ this.findNodeParentsAndExpandThem(feed, is_cat, items[i], []);
+ }
+ }
+ } else {
+ if (root.items) {
+ parents.push(root);
+
+ for (var i = 0; i < root.items.length; i++) {
+ if (String(root.items[i].id) == test_id) {
+ this.expandParentNodes(feed, is_cat, parents);
+ } else {
+ this.findNodeParentsAndExpandThem(feed, is_cat, root.items[i], parents);
+ }
+ }
+ } else {
+ if (String(root.id) == test_id) {
+ this.expandParentNodes(feed, is_cat, parents);
+ }
+ }
+ }
+ } catch (e) {
+ exception_error("findNodeParentsAndExpandThem", e);
+ }
+ },
selectFeed: function(feed, is_cat) {
+ this.findNodeParentsAndExpandThem(feed, is_cat, false, false);
+
if (is_cat)
treeNode = this._itemNodesMap['CAT:' + feed];
else
diff --git a/js/feedlist.js b/js/feedlist.js
index aaf6c2aa6..7385177d1 100644
--- a/js/feedlist.js
+++ b/js/feedlist.js
@@ -513,3 +513,5 @@ function decrementFeedCounter(feed, is_cat) {
exception_error("decrement_feed_counter", e);
}
}
+
+