if (treeItem)
return this.store.setValue(treeItem, key, value);
},
+ getNextUnreadFeed: function (feed, is_cat) {
+ if (is_cat) {
+ treeItem = this.store._itemsByIdentity['CAT:' + feed];
+ items = this.store._arrayOfTopLevelItems;
+ } else {
+ treeItem = this.store._itemsByIdentity['FEED:' + feed];
+ items = this.store._arrayOfAllItems;
+ }
+
+ for (var i = 0; i < items.length; i++) {
+ if (items[i] == treeItem) {
+
+ for (j = i+1; j < items.length; j++) {
+ var unread = this.store.getValue(items[j], 'unread');
+ var id = this.store.getValue(items[j], 'id');
+
+ if (unread > 0 && (is_cat || id.match("FEED:"))) return items[j];
+ }
+
+ for (j = 0; j < i; j++) {
+ var unread = this.store.getValue(items[j], 'unread');
+ var id = this.store.getValue(items[j], 'id');
+
+ if (unread > 0 && (is_cat || id.match("FEED:"))) return items[j];
+ }
+ }
+ }
+
+ return null;
+ },
+ hasCats: function() {
+ if (this.store && this.store._itemsByIdentity)
+ return this.store._itemsByIdentity['CAT:-1'] != undefined;
+ else
+ return false;
+ },
});
dojo.declare("fox.FeedTree", dijit.Tree, {
var id = args.item.id[0];
var bare_id = parseInt(id.substr(id.indexOf(':')+1));
+ if (bare_id < -10) {
+ var span = dojo.doc.createElement('span');
+ var fg_color = args.item.fg_color[0];
+ var bg_color = args.item.bg_color[0];
+
+ span.innerHTML = "α";
+ span.className = 'labelColorIndicator';
+ span.setStyle({
+ color: fg_color,
+ backgroundColor: bg_color});
+
+ dojo.place(span, tnode.iconNode, 'replace');
+ }
+
if (id.match("FEED:") && bare_id > 0) {
var menu = new dijit.Menu();
menu.row_id = bare_id;
menu.addChild(new dijit.MenuItem({
label: __("Edit feed"),
onClick: function() {
- editFeedDlg(this.getParent().row_id);
+ editFeed(this.getParent().row_id);
}}));
menu.addChild(new dijit.MenuItem({
"dijitTreeRow Error";
},
getLabel: function(item) {
+ var name = String(item.name);
+
+ /* Horrible */
+ name = name.replace(/"/g, "\"");
+ name = name.replace(/&/g, "&");
+ name = name.replace(/—/g, "-");
+ name = name.replace(/</g, "<");
+ name = name.replace(/>/g, ">");
+
if (item.unread > 0) {
- return item.name + " (" + item.unread + ")";
+ return name + " (" + item.unread + ")";
} else {
- return item.name;
+ return name;
}
},
selectFeed: function(feed, is_cat) {
return false;
},
hasCats: function() {
- if (this.model.store && this.model.store._itemsByIdentity)
- return this.model.store._itemsByIdentity['CAT:-1'] != undefined;
- else
- return false;
+ return this.model.hasCats();
},
hideRead: function (hide, show_special) {
if (this.hasCats()) {
return cat_unread;
},
+ collapseCat: function(id) {
+ if (!this.model.hasCats()) return;
+
+ var tree = this;
+
+ var node = tree._itemNodesMap['CAT:' + id][0];
+ var item = tree.model.store._itemsByIdentity['CAT:' + id];
+
+ if (node && item) {
+ var hidden = tree.model.store.getValue(item, 'hidden');
+
+ if (hidden)
+ tree._expandNode(node);
+ else
+ tree._collapseNode(node);
+
+ tree.model.store.setValue(item, 'hidden', !hidden);
+ }
+ },
+ collapseHiddenCats: function() {
+ if (!this.model.hasCats()) return;
+
+ var cats = this.model.store._arrayOfTopLevelItems;
+ var tree = this;
+
+ dojo.forEach(cats, function(cat) {
+ var hidden = tree.model.store.getValue(cat, 'hidden');
+ var id = tree.model.store.getValue(cat, 'id');
+ var node = tree._itemNodesMap[id][0];
+
+ if (hidden)
+ tree._collapseNode(node);
+ else
+ tree._expandNode(node);
+
+ });
+ },
+ getNextFeed: function (feed, is_cat) {
+ if (is_cat) {
+ treeItem = this.model.store._itemsByIdentity['CAT:' + feed];
+ } else {
+ treeItem = this.model.store._itemsByIdentity['FEED:' + feed];
+ }
+
+ items = this.model.store._arrayOfAllItems;
+ var item = items[0];
+
+ for (var i = 0; i < items.length; i++) {
+ if (items[i] == treeItem) {
+
+ for (j = i+1; j < items.length; j++) {
+ var id = String(items[j].id);
+ var box = this._itemNodesMap[id];
+
+ if (box) {
+ var row = box[0].rowNode;
+ var cat = box[0].rowNode.parentNode.parentNode;
+
+ if (Element.visible(cat) && Element.visible(row)) {
+ item = items[j];
+ break;
+ }
+ }
+ }
+ break;
+ }
+ }
+
+ if (item) {
+ return [this.model.store.getValue(item, 'bare_id'),
+ !this.model.store.getValue(item, 'id').match('FEED:')];
+ } else {
+ return false;
+ }
+ },
+ getPreviousFeed: function (feed, is_cat) {
+ if (is_cat) {
+ treeItem = this.model.store._itemsByIdentity['CAT:' + feed];
+ } else {
+ treeItem = this.model.store._itemsByIdentity['FEED:' + feed];
+ }
+
+ items = this.model.store._arrayOfAllItems;
+ var item = items[0];
+
+ for (var i = 0; i < items.length; i++) {
+ if (items[i] == treeItem) {
+
+ for (j = i-1; j > 0; j--) {
+ var id = String(items[j].id);
+ var box = this._itemNodesMap[id];
+
+ if (box) {
+ var row = box[0].rowNode;
+ var cat = box[0].rowNode.parentNode.parentNode;
+
+ if (Element.visible(cat) && Element.visible(row)) {
+ item = items[j];
+ break;
+ }
+ }
+
+ }
+ break;
+ }
+ }
+
+ if (item) {
+ return [this.model.store.getValue(item, 'bare_id'),
+ !this.model.store.getValue(item, 'id').match('FEED:')];
+ } else {
+ return false;
+ }
+
+ },
+
});