PrefFilterTree.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. dojo.provide("fox.PrefFilterTree");
  2. dojo.require("lib.CheckBoxTree");
  3. dojo.require("dojo.data.ItemFileWriteStore");
  4. dojo.declare("fox.PrefFilterStore", dojo.data.ItemFileWriteStore, {
  5. _saveEverything: function(saveCompleteCallback, saveFailedCallback,
  6. newFileContentString) {
  7. dojo.xhrPost({
  8. url: "backend.php",
  9. content: {op: "pref-filters", method: "savefilterorder",
  10. payload: newFileContentString},
  11. error: saveFailedCallback,
  12. load: saveCompleteCallback});
  13. },
  14. });
  15. dojo.declare("fox.PrefFilterTree", lib.CheckBoxTree, {
  16. _createTreeNode: function(args) {
  17. var tnode = this.inherited(arguments);
  18. var enabled = this.model.store.getValue(args.item, 'enabled');
  19. var param = this.model.store.getValue(args.item, 'param');
  20. var rules = this.model.store.getValue(args.item, 'rules');
  21. if (param) {
  22. param = dojo.doc.createElement('span');
  23. param.className = (enabled != false) ? 'labelParam' : 'labelParam Disabled';
  24. param.innerHTML = args.item.param[0];
  25. dojo.place(param, tnode.rowNode, 'first');
  26. }
  27. if (rules) {
  28. param = dojo.doc.createElement('span');
  29. param.className = 'filterRules';
  30. param.innerHTML = rules;
  31. dojo.place(param, tnode.rowNode, 'next');
  32. }
  33. if (this.model.store.getValue(args.item, 'id') != 'root') {
  34. var img = dojo.doc.createElement('img');
  35. img.src ='images/filter.png';
  36. img.className = 'markedPic';
  37. tnode._filterIconNode = img;
  38. dojo.place(tnode._filterIconNode, tnode.labelNode, 'before');
  39. }
  40. return tnode;
  41. },
  42. getLabel: function(item) {
  43. var label = item.name;
  44. var feed = this.model.store.getValue(item, 'feed');
  45. var inverse = this.model.store.getValue(item, 'inverse');
  46. if (feed)
  47. label += " (" + __("in") + " " + feed + ")";
  48. if (inverse)
  49. label += " (" + __("Inverse") + ")";
  50. /* if (item.param)
  51. label = "<span class=\"labelFixedLength\">" + label +
  52. "</span>" + item.param[0]; */
  53. return label;
  54. },
  55. getIconClass: function (item, opened) {
  56. return (!item || this.model.mayHaveChildren(item)) ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "invisible";
  57. },
  58. getLabelClass: function (item, opened) {
  59. var enabled = this.model.store.getValue(item, 'enabled');
  60. return (enabled != false) ? "dijitTreeLabel labelFixedLength" : "dijitTreeLabel labelFixedLength Disabled";
  61. },
  62. getRowClass: function (item, opened) {
  63. return (!item.error || item.error == '') ? "dijitTreeRow" :
  64. "dijitTreeRow Error";
  65. },
  66. checkItemAcceptance: function(target, source, position) {
  67. var item = dijit.getEnclosingWidget(target).item;
  68. // disable copying items
  69. source.copyState = function() { return false; };
  70. return position != 'over';
  71. },
  72. onDndDrop: function() {
  73. this.inherited(arguments);
  74. this.tree.model.store.save();
  75. },
  76. });