]> git.wh0rd.org - tt-rss.git/blobdiff - PrefFeedTree.js
sanity check: properly check for ISCONFIGURED
[tt-rss.git] / PrefFeedTree.js
index f8d1e7b15fb33619605d10bea5e323c8b705221a..db59b5081b83d030da4b2c9c59f63e195afee0b1 100644 (file)
@@ -1,16 +1,82 @@
 dojo.provide("fox.PrefFeedTree");
+dojo.provide("fox.PrefFeedStore");
 
 dojo.require("lib.CheckBoxTree");
+dojo.require("dojo.data.ItemFileWriteStore");
+
+dojo.declare("fox.PrefFeedStore", dojo.data.ItemFileWriteStore, {
+       
+       _saveEverything: function(saveCompleteCallback, saveFailedCallback,
+                                                               newFileContentString) {
+
+               dojo.xhrPost({
+                       url: "backend.php",
+                       content: {op: "pref-feeds", subop: "savefeedorder",
+                               payload: newFileContentString},
+                       error: saveFailedCallback,
+                       load: saveCompleteCallback});
+       },
+
+});            
 
 dojo.declare("fox.PrefFeedTree", lib.CheckBoxTree, {
+       _createTreeNode: function(args) {
+               var tnode = this.inherited(arguments);
+
+               if (args.item.icon)
+                       tnode.iconNode.src = args.item.icon[0];
+
+               var param = this.model.store.getValue(args.item, 'param');
+
+               if (param) {
+                       param = dojo.doc.createElement('span');
+                       param.className = 'feedParam';
+                       param.innerHTML = args.item.param[0];
+                       dojo.place(param, tnode.labelNode, 'after');
+               }
+
+               return tnode;
+       },
+       onDndDrop: function() {
+               this.inherited(arguments);
+               this.tree.model.store.save();
+       },
+       getRowClass: function (item, opened) {
+               return (!item.error || item.error == '') ? "dijitTreeRow" : 
+                       "dijitTreeRow Error";
+       },
+       getIconClass: function (item, opened) {
+               return (!item || this.model.store.getValue(item, 'type') == 'category') ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "feedIcon";
+       },
        checkItemAcceptance: function(target, source, position) {
                var item = dijit.getEnclosingWidget(target).item;
 
-               console.log(source.currentWidget);
-               
+               // disable copying items
+               source.copyState = function() { return false; }
+
+               var source_item = false;
+
+               source.forInSelectedItems(function(node) {
+                       source_item = node.data.item;
+               });
+
+               if (!source_item || !item) return false;
+
                var id = String(item.id);
-               return (id.match("CAT:") || position != "over");
-               return true;
+               var source_id = String(source_item.id);
+
+               var id = this.tree.model.store.getValue(item, 'id');
+               var source_id = source.tree.model.store.getValue(source_item, 'id');
+
+               //console.log(id + " " + position + " " + source_id);
+
+               if (source_id.match("FEED:")) {
+                       return ((id.match("CAT:") && position == "over") ||
+                               (id.match("FEED:") && position != "over"));
+               } else if (source_id.match("CAT:")) {
+                       return ((id.match("CAT:") && position != "over") ||
+                               (id.match("root") && position == "over"));
+               }
        },
 });