]> git.wh0rd.org Git - tt-rss.git/commitdiff
implement labels submenu; rework init process so that feedlist_init depends on feedTr...
authorAndrew Dolgov <fox@madoka.volgo-balt.ru>
Fri, 19 Nov 2010 19:18:26 +0000 (22:18 +0300)
committerAndrew Dolgov <fox@madoka.volgo-balt.ru>
Fri, 19 Nov 2010 19:18:26 +0000 (22:18 +0300)
FeedTree.js
tt-rss.js
viewfeed.js

index f01fd24cf0dddf56c1dd812283fd58412600436a..19c32a95f6d412d49748332f39f7dd3dc33085cf 100644 (file)
@@ -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];
        },
index af9f46726beae7dcbd118f9f266370dd115d8560..c88a08533858ae3cb58c856020c028a579b89c78 100644 (file)
--- 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");
index dadbe94852fd021e8234a4b18abdb93a5bba8953..b7ef31a7c07de5e3591479ca80475bec1aeaf541 100644 (file)
@@ -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) {