From 102cfe73c6662ab632ff8f81f924a3c642747b29 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 16 Nov 2010 11:41:31 +0300 Subject: [PATCH] implement updateFeedList() --- feedlist.js | 9 +++ tt-rss.js | 162 +++++++++++++++++++++++++--------------------------- 2 files changed, 87 insertions(+), 84 deletions(-) diff --git a/feedlist.js b/feedlist.js index 428a054f1..edf14c340 100644 --- a/feedlist.js +++ b/feedlist.js @@ -641,6 +641,8 @@ function resort_feedlist() { function hideOrShowFeeds(hide) { var tree = dijit.byId("feedTree"); + if (!tree) return; + if (getInitParam("enable_feed_cats")) { var cats = tree.model.store._arrayOfTopLevelItems; @@ -690,6 +692,9 @@ function hideOrShowFeedsCategory(feeds, hide) { try { //console.warn("hideOrShowFeedsCategory: function not implemented"); var tree = dijit.byId("feedTree"); + + if (!tree) return; + var cat_unread = 0; feeds.each(function(feed) { @@ -909,6 +914,8 @@ function selectFeed(feed, is_cat) { try { var tree = dijit.byId("feedTree"); + if (!tree) return; + if (is_cat) treeNode = tree._itemNodesMap['CAT:' + feed]; else @@ -929,6 +936,8 @@ function setFeedIcon(feed, is_cat, src) { try { var tree = dijit.byId("feedTree"); + if (!tree) return; + if (is_cat) treeNode = tree._itemNodesMap['CAT:' + feed]; else diff --git a/tt-rss.js b/tt-rss.js index 8864e81a3..282ef813b 100644 --- a/tt-rss.js +++ b/tt-rss.js @@ -99,23 +99,84 @@ function dlg_frefresh_callback(transport, deleted_feed) { function updateFeedList() { try { - console.warn("updateFeedList: function not implemented"); - -/* var query_str = "backend.php?op=feeds"; - - if (display_tags) { - query_str = query_str + "&tags=1"; + + if (dijit.byId("feedTree")) { + dijit.byId("feedTree").destroyRecursive(); } - - if (getActiveFeedId() && !activeFeedIsCat()) { - query_str = query_str + "&actid=" + getActiveFeedId(); - } - - new Ajax.Request("backend.php", { - parameters: query_str, - onComplete: function(transport) { - render_feedlist(transport.responseText); - } }); */ + + var store = new dojo.data.ItemFileWriteStore({ + url: "backend.php?op=feeds"}); + + treeModel = new dijit.tree.ForestStoreModel({ + store: store, + query: { + "type": "feed" + }, + rootId: "root", + rootLabel: "Feeds", + childrenAttrs: ["items"] + }); + + var tree = new dijit.Tree({ + model: treeModel, + _createTreeNode: function(args) { + var tnode = new dijit._TreeNode(args); + + if (args.item.icon) + tnode.iconNode.src = args.item.icon[0]; + + //tnode.labelNode.innerHTML = args.label; + return tnode; + }, + getIconClass: function (item, opened) { + return (!item || this.model.mayHaveChildren(item)) ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "feedIcon"; + }, + getLabelClass: function (item, opened) { + return (item.unread == 0) ? "dijitTreeLabel" : "dijitTreeLabel Unread"; + }, + getRowClass: function (item, opened) { + return (!item.error || item.error == '') ? "dijitTreeRow" : + "dijitTreeRow Error"; + }, + getLabel: function(item) { + if (item.unread > 0) { + return item.name + " (" + item.unread + ")"; + } else { + return item.name; + } + }, + onOpen: function (item, node) { + var id = String(item.id); + var cat_id = id.substr(id.indexOf(":")+1); + + new Ajax.Request("backend.php", + { parameters: "backend.php?op=feeds&subop=collapse&cid=" + + param_escape(cat_id) + "&mode=1" } ); + }, + onClose: function (item, node) { + var id = String(item.id); + var cat_id = id.substr(id.indexOf(":")+1); + + new Ajax.Request("backend.php", + { parameters: "backend.php?op=feeds&subop=collapse&cid=" + + param_escape(cat_id) + "&mode=0" } ); + + }, + onClick: function (item, node) { + var id = String(item.id); + var is_cat = id.match("^CAT:"); + var feed = id.substr(id.indexOf(":")+1); + viewfeed(feed, '', is_cat); + return false; + }, + openOnClick: false, + showRoot: false, + id: "feedTree", + }, "feedTree"); + + $("feeds-holder").appendChild(tree.domNode); + + tree.startup(); } catch (e) { exception_error("updateFeedList", e); @@ -253,74 +314,7 @@ function init() { dojo.addOnLoad(function() { - var store = new dojo.data.ItemFileWriteStore({ - url: "backend.php?op=feeds"}); - - treeModel = new dijit.tree.ForestStoreModel({ - store: store, - query: { - "type": "feed" - }, - rootId: "root", - rootLabel: "Feeds", - childrenAttrs: ["items"] - }); - - var tree = new dijit.Tree({ - model: treeModel, - _createTreeNode: function(args) { - var tnode = new dijit._TreeNode(args); - - if (args.item.icon) - tnode.iconNode.src = args.item.icon[0]; - - //tnode.labelNode.innerHTML = args.label; - return tnode; - }, - getIconClass: function (item, opened) { - return (!item || this.model.mayHaveChildren(item)) ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "feedIcon"; - }, - getLabelClass: function (item, opened) { - return (item.unread == 0) ? "dijitTreeLabel" : "dijitTreeLabel Unread"; - }, - getRowClass: function (item, opened) { - return (!item.error || item.error == '') ? "dijitTreeRow" : - "dijitTreeRow Error"; - }, - getLabel: function(item) { - if (item.unread > 0) { - return item.name + " (" + item.unread + ")"; - } else { - return item.name; - } - }, - onOpen: function (item, node) { - var id = String(item.id); - var cat_id = id.substr(id.indexOf(":")+1); - - new Ajax.Request("backend.php", - { parameters: "backend.php?op=feeds&subop=collapse&cid=" + - param_escape(cat_id) + "&mode=1" } ); - }, - onClose: function (item, node) { - var id = String(item.id); - var cat_id = id.substr(id.indexOf(":")+1); - - new Ajax.Request("backend.php", - { parameters: "backend.php?op=feeds&subop=collapse&cid=" + - param_escape(cat_id) + "&mode=0" } ); - - }, - onClick: function (item, node) { - var id = String(item.id); - var is_cat = id.match("^CAT:"); - var feed = id.substr(id.indexOf(":")+1); - viewfeed(feed, '', is_cat); - return false; - }, - openOnClick: false, - showRoot: false, - }, "feedTree"); + updateFeedList(); });