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"));
+ }
},
});