summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2010-11-19 22:18:26 +0300
committerAndrew Dolgov <[email protected]>2010-11-19 22:18:26 +0300
commit1beea8001786b6cbc8a9fc42574970aede1b56dd (patch)
tree82e32d19d9aa34dd4a32f3a4a296ad9de4fa2656
parentbc372fe30fecfbf4a6d831b23480c057a989c79a (diff)
implement labels submenu; rework init process so that feedlist_init depends on feedTree being loaded
-rw-r--r--FeedTree.js11
-rw-r--r--tt-rss.js2
-rw-r--r--viewfeed.js44
3 files changed, 51 insertions, 6 deletions
diff --git a/FeedTree.js b/FeedTree.js
index f01fd24cf..19c32a95f 100644
--- a/FeedTree.js
+++ b/FeedTree.js
@@ -5,6 +5,17 @@ dojo.require("dijit.Tree");
dojo.require("dijit.Menu");
dojo.declare("fox.FeedStoreModel", dijit.tree.ForestStoreModel, {
+ getItemsInCategory: function (id) {
+ if (!this.store._itemsByIdentity) return undefined;
+
+ cat = this.store._itemsByIdentity['CAT:' + id];
+
+ if (cat && cat.items)
+ return cat.items;
+ else
+ return undefined;
+
+ },
getItemById: function(id) {
return this.store._itemsByIdentity[id];
},
diff --git a/tt-rss.js b/tt-rss.js
index af9f46726..c88a08533 100644
--- a/tt-rss.js
+++ b/tt-rss.js
@@ -133,6 +133,7 @@ function updateFeedList() {
var tmph = dojo.connect(tree, 'onLoad', function() {
dojo.disconnect(tmph);
Element.hide("feedlistLoading");
+ feedlist_init();
// var node = dijit.byId("feedTree")._itemNodesMap['FEED:-2'][0].domNode
// menu.bindDomNode(node);
@@ -328,7 +329,6 @@ function init_second_stage() {
if (has_local_storage())
localStorage.clear();
- feedlist_init();
setTimeout("timeout()", 3000);
console.log("second stage ok");
diff --git a/viewfeed.js b/viewfeed.js
index dadbe9485..b7ef31a7c 100644
--- a/viewfeed.js
+++ b/viewfeed.js
@@ -669,10 +669,10 @@ function toggleUnread(id, cmode, effect) {
}
}
-function selectionRemoveLabel(id) {
+function selectionRemoveLabel(id, ids) {
try {
- var ids = getSelectedArticleIds2();
+ if (!ids) var ids = getSelectedArticleIds2();
if (ids.length == 0) {
alert(__("No articles are selected."));
@@ -707,10 +707,10 @@ function selectionRemoveLabel(id) {
}
}
-function selectionAssignLabel(id) {
+function selectionAssignLabel(id, ids) {
try {
- var ids = getSelectedArticleIds2();
+ if (!ids) ids = getSelectedArticleIds2();
if (ids.length == 0) {
alert(__("No articles are selected."));
@@ -2265,7 +2265,9 @@ function initHeadlinesMenu() {
label: __("View in a new tab"),
onClick: function(event) {
hlOpenInNewTab(event, this.getParent().callerRowId);
- }}));
+ }}));
+
+ menu.addChild(new dijit.MenuSeparator());
menu.addChild(new dijit.MenuItem({
label: __("Open original article"),
@@ -2273,6 +2275,38 @@ function initHeadlinesMenu() {
openArticleInNewWindow(this.getParent().callerRowId);
}}));
+ var labels = dijit.byId("feedTree").model.getItemsInCategory(-2);
+
+ if (labels) {
+
+ menu.addChild(new dijit.MenuSeparator());
+
+ var labelsMenu = new dijit.Menu({ownerMenu: menu});
+
+ labels.each(function(label) {
+ var id = label.id[0];
+ var bare_id = id.substr(id.indexOf(":")+1);
+ var name = label.name[0];
+
+ bare_id = -11-bare_id;
+
+ labelsMenu.addChild(new dijit.MenuItem({
+ label: name,
+ labelId: bare_id,
+ onClick: function(event) {
+ //console.log(this.labelId);
+ //console.log(this.getParent().ownerMenu.callerRowId);
+ selectionAssignLabel(this.labelId,
+ [this.getParent().ownerMenu.callerRowId]);
+ }}));
+ });
+
+ menu.addChild(new dijit.PopupMenuItem({
+ label: __("Labels"),
+ popup: labelsMenu,
+ }));
+ }
+
menu.startup();
} catch (e) {