]> git.wh0rd.org - tt-rss.git/blob - PrefFeedTree.js
fix drag and drop changing of categories; fix empty categories using wrong icon class
[tt-rss.git] / PrefFeedTree.js
1 dojo.provide("fox.PrefFeedTree");
2 dojo.provide("fox.PrefFeedStore");
3
4 dojo.require("lib.CheckBoxTree");
5
6 dojo.declare("fox.PrefFeedStore", dojo.data.ItemFileWriteStore, {
7
8 _saveEverything: function(saveCompleteCallback, saveFailedCallback,
9 newFileContentString) {
10
11 dojo.xhrPost({
12 url: "backend.php",
13 content: {op: "pref-feeds", subop: "savefeedorder",
14 payload: newFileContentString},
15 error: saveFailedCallback,
16 load: saveCompleteCallback});
17 },
18
19 });
20
21 dojo.declare("fox.PrefFeedTree", lib.CheckBoxTree, {
22 _createTreeNode: function(args) {
23 var tnode = this.inherited(arguments);
24
25 if (args.item.icon)
26 tnode.iconNode.src = args.item.icon[0];
27
28 return tnode;
29 },
30 onDndDrop: function() {
31 this.inherited(arguments);
32 this.tree.model.store.save();
33 },
34 getRowClass: function (item, opened) {
35 return (!item.error || item.error == '') ? "dijitTreeRow" :
36 "dijitTreeRow Error";
37 },
38 getIconClass: function (item, opened) {
39 return (!item || this.model.store.getValue(item, 'type') == 'category') ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "feedIcon";
40 },
41 checkItemAcceptance: function(target, source, position) {
42 var item = dijit.getEnclosingWidget(target).item;
43
44 // disable copying items
45 source.copyState = function() { return false; }
46
47 var source_item = false;
48
49 source.forInSelectedItems(function(node) {
50 source_item = node.data.item;
51 });
52
53 if (!source_item || !item) return false;
54
55 var id = String(item.id);
56 var source_id = String(source_item.id);
57
58 var id = this.tree.model.store.getValue(item, 'id');
59 var source_id = source.tree.model.store.getValue(source_item, 'id');
60
61 //console.log(id + " " + position + " " + source_id);
62
63 if (source_id.match("FEED:")) {
64 return ((id.match("CAT:") && position == "over") ||
65 (id.match("FEED:") && position != "over"));
66 } else if (source_id.match("CAT:")) {
67 return ((id.match("CAT:") && position != "over") ||
68 (id.match("root") && position == "over"));
69 }
70 },
71 });
72