]> git.wh0rd.org - tt-rss.git/blobdiff - tt-rss.js
dijit.tree feedlist improvements
[tt-rss.git] / tt-rss.js
index b0e747a0cebc9e19ffe3ed3d84dff00a6846cb6a..d5905346d4098cb7565f38a7f34eab8beee92803 100644 (file)
--- a/tt-rss.js
+++ b/tt-rss.js
@@ -10,6 +10,7 @@ var hotkey_prefix_pressed = false;
 var init_params = {};
 var _force_scheduled_update = false;
 var last_scheduled_update = false;
+var treeModel;
 
 var _rpc_seq = 0;
 
@@ -37,13 +38,14 @@ function getActiveFeedId() {
 
 function setActiveFeedId(id, is_cat) {
        try {
-               //console.log("sAFID(" + id + ", " + is_cat + ")");
                _active_feed_id = id;
 
                if (is_cat != undefined) {
                        _active_feed_is_cat = is_cat;
                }
 
+               selectFeed(id, is_cat);
+
        } catch (e) {
                exception_error("setActiveFeedId", e);
        }
@@ -91,15 +93,15 @@ function dlg_frefresh_callback(transport, deleted_feed) {
                setTimeout("viewfeed(-5)", 100);
        }
 
-       setTimeout('updateFeedList(false, false)', 50);
+       setTimeout('updateFeedList()', 50);
        closeInfoBox();
 }
 
 function updateFeedList() {
        try {
-               //console.log("updateFeedList");
+               console.warn("updateFeedList: function not implemented");
        
-               var query_str = "backend.php?op=feeds";
+/*             var query_str = "backend.php?op=feeds";
        
                if (display_tags) {
                        query_str = query_str + "&tags=1";
@@ -113,7 +115,7 @@ function updateFeedList() {
                        parameters: query_str,
                        onComplete: function(transport) { 
                                render_feedlist(transport.responseText);
-                       } });
+                       } }); */
 
        } catch (e) {
                exception_error("updateFeedList", e);
@@ -244,8 +246,74 @@ function init() {
                dojo.require("dijit.layout.ContentPane");
                dojo.require("dijit.Dialog");
                dojo.require("dijit.form.Button");
-
-               //return remove_splash();
+               dojo.require("dojo.data.ItemFileWriteStore");
+               dojo.require("dijit.Tree");
+               dojo.require("dijit.form.Select");
+               dojo.require("dojo.parser");
+
+               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);
+                                       tnode.labelNode.innerHTML = args.label;
+                                       return tnode;
+                                       },
+                               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);                             
+                               },
+                               showRoot: false,
+                       }, "feedTree");
+
+               });
 
                if (!genericSanityCheck()) 
                        return;
@@ -278,15 +346,15 @@ function init_second_stage() {
 
                feeds_sort_by_unread = getInitParam("feeds_sort_by_unread") == 1;
 
-               setTimeout('updateFeedList(false, false)', 50);
-
-               console.log("second stage ok");
-
                loading_set_progress(60);
 
                if (has_local_storage())
                        localStorage.clear();
 
+               console.log("second stage ok");
+
+               feedlist_init();
+
        } catch (e) {
                exception_error("init_second_stage", e);
        }
@@ -580,69 +648,10 @@ function feedEditSave() {
 
 function collapse_feedlist() {
        try {
-               //console.log("collapse_feedlist");
-               
-/*             var theme = getInitParam("theme");
-               if (theme != "" && 
-                               !getInitParam("theme_options").match("collapse_feedlist")) return;
-
-               var fl = $("feeds-holder");
-               var fh = $("headlines-frame");
-               var fc = $("content-frame");
-               var ft = $("toolbar");
-               var ff = $("footer");
-               var fhdr = $("header");
-               var fbtn = $("collapse_feeds_btn");
-
-               if (!Element.visible(fl)) {
-                       Element.show(fl);
-                       fbtn.innerHTML = "<<";
-
-                       if (theme != "graycube") {
-
-                               fh.style.left = fl.offsetWidth + "px";
-                               ft.style.left = fl.offsetWidth + "px";
-                               if (fc) fc.style.left = fl.offsetWidth + "px";
-                               if (ff && theme != "compat") ff.style.left = (fl.offsetWidth-1) + "px";
-
-                               if (theme == "compact") fhdr.style.left = (fl.offsetWidth + 10) + "px";
-                       } else {
-                               fh.style.left = fl.offsetWidth + 40 + "px";
-                               ft.style.left = fl.offsetWidth + 40 +"px";
-                               if (fc) fc.style.left = fl.offsetWidth + 40 + "px";
-                       }
-
-                       query = "?op=rpc&subop=setpref&key=_COLLAPSED_FEEDLIST&value=false";
-
-                       new Ajax.Request("backend.php", { parameters: query });
-
-               } else {
-                       Element.hide(fl);
-                       fbtn.innerHTML = ">>";
-
-                       if (theme != "graycube") {
-
-                               fh.style.left = "0px";
-                               ft.style.left = "0px";
-                               if (fc) fc.style.left = "0px";
-                               if (ff) ff.style.left = "0px";
-
-                               if (theme == "compact") fhdr.style.left = "10px";
-
-                       } else {
-                               fh.style.left = "20px";
-                               ft.style.left = "20px";
-                               if (fc) fc.style.left = "20px";
-
-                       }
-
-                       query = "?op=rpc&subop=setpref&key=_COLLAPSED_FEEDLIST&value=true";
-
-                       new Ajax.Request("backend.php", { parameters: query });
-
-               } */
+               console.warn("collapse_feedlist: function not implemented");
 
                query = "?op=rpc&subop=setpref&key=_COLLAPSED_FEEDLIST&value=true";
+               new Ajax.Request("backend.php", { parameters: query });
 
        } catch (e) {
                exception_error("collapse_feedlist", e);