]> git.wh0rd.org - tt-rss.git/commitdiff
implement updateFeedList()
authorAndrew Dolgov <fox@madoka.volgo-balt.ru>
Tue, 16 Nov 2010 08:41:31 +0000 (11:41 +0300)
committerAndrew Dolgov <fox@madoka.volgo-balt.ru>
Tue, 16 Nov 2010 08:41:46 +0000 (11:41 +0300)
feedlist.js
tt-rss.js

index 428a054f190e52a1399027de3e9721907fcc8706..edf14c340c4f22baa822327f43bf0352a15f32a9 100644 (file)
@@ -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
index 8864e81a3d596392e471aeb7a95907971d0c8433..282ef813bf61b41cc5474c78abf3939629a87440 100644 (file)
--- 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 (getActiveFeedId() && !activeFeedIsCat()) {
-                       query_str = query_str + "&actid=" + getActiveFeedId();
+
+               if (dijit.byId("feedTree")) {
+                       dijit.byId("feedTree").destroyRecursive();
                }
-               
-               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();
 
                });