]> git.wh0rd.org - tt-rss.git/blobdiff - js/tt-rss.js
get_all_labels: order by caption
[tt-rss.git] / js / tt-rss.js
index ed305a8bbd9d19758fa9d4c7c390f1f4f60def93..1872ad1ab230157e88472427800a569c655f987a 100644 (file)
@@ -41,72 +41,76 @@ function setActiveFeedId(id, is_cat) {
 
 
 function updateFeedList() {
+       try {
+               Element.show("feedlistLoading");
 
-       Element.show("feedlistLoading");
-
-       resetCounterCache();
-
-       if (dijit.byId("feedTree")) {
-               dijit.byId("feedTree").destroyRecursive();
-       }
-
-       var store = new dojo.data.ItemFileWriteStore({
-         url: "backend.php?op=pref_feeds&method=getfeedtree&mode=2"});
-
-       var treeModel = new fox.FeedStoreModel({
-               store: store,
-               query: {
-                       "type": getInitParam('enable_feed_cats') == 1 ? "category" : "feed"
-               },
-               rootId: "root",
-               rootLabel: "Feeds",
-               childrenAttrs: ["items"]
-       });
-
-       var tree = new fox.FeedTree({
-       model: treeModel,
-       onClick: function (item, node) {
-               var id = String(item.id);
-               var is_cat = id.match("^CAT:");
-               var feed = id.substr(id.indexOf(":")+1);
-               viewfeed({feed: feed, is_cat: is_cat});
-               return false;
-       },
-       openOnClick: false,
-       showRoot: false,
-       persist: true,
-       id: "feedTree",
-       }, "feedTree");
-
-/*             var menu = new dijit.Menu({id: 'feedMenu'});
-
-       menu.addChild(new dijit.MenuItem({
-          label: "Simple menu item"
-       }));
-
-//             menu.bindDomNode(tree.domNode); */
-
-       var tmph = dojo.connect(dijit.byId('feedMenu'), '_openMyself', function (event) {
-               console.log(dijit.getEnclosingWidget(event.target));
-               dojo.disconnect(tmph);
-       });
-
-       $("feeds-holder").appendChild(tree.domNode);
-
-       var tmph = dojo.connect(tree, 'onLoad', function() {
-               dojo.disconnect(tmph);
-               Element.hide("feedlistLoading");
-
-               try {
-                       feedlist_init();
+               resetCounterCache();
 
-                       loading_set_progress(25);
-               } catch (e) {
-                       exception_error(e);
+               if (dijit.byId("feedTree")) {
+                       dijit.byId("feedTree").destroyRecursive();
                }
-       });
 
-       tree.startup();
+               var store = new dojo.data.ItemFileWriteStore({
+                       url: "backend.php?op=pref_feeds&method=getfeedtree&mode=2"
+               });
+
+               var treeModel = new fox.FeedStoreModel({
+                       store: store,
+                       query: {
+                               "type": getInitParam('enable_feed_cats') == 1 ? "category" : "feed"
+                       },
+                       rootId: "root",
+                       rootLabel: "Feeds",
+                       childrenAttrs: ["items"]
+               });
+
+               var tree = new fox.FeedTree({
+                       model: treeModel,
+                       onClick: function (item, node) {
+                               var id = String(item.id);
+                               var is_cat = id.match("^CAT:");
+                               var feed = id.substr(id.indexOf(":") + 1);
+                               viewfeed({feed: feed, is_cat: is_cat});
+                               return false;
+                       },
+                       openOnClick: false,
+                       showRoot: false,
+                       persist: true,
+                       id: "feedTree",
+               }, "feedTree");
+
+               /*              var menu = new dijit.Menu({id: 'feedMenu'});
+
+                menu.addChild(new dijit.MenuItem({
+                label: "Simple menu item"
+                }));
+
+                //             menu.bindDomNode(tree.domNode); */
+
+               var tmph = dojo.connect(dijit.byId('feedMenu'), '_openMyself', function (event) {
+                       console.log(dijit.getEnclosingWidget(event.target));
+                       dojo.disconnect(tmph);
+               });
+
+               $("feeds-holder").appendChild(tree.domNode);
+
+               var tmph = dojo.connect(tree, 'onLoad', function () {
+                       dojo.disconnect(tmph);
+                       Element.hide("feedlistLoading");
+
+                       try {
+                               feedlist_init();
+
+                               loading_set_progress(25);
+                       } catch (e) {
+                               exception_error(e);
+                       }
+               });
+
+               tree.startup();
+       } catch (e) {
+               exception_error(e);
+       }
 }
 
 function catchupAllFeeds() {
@@ -224,6 +228,7 @@ function init() {
                        "dijit/form/Form",
                        "dijit/form/RadioButton",
                        "dijit/form/Select",
+               "dijit/form/MultiSelect",
                        "dijit/form/SimpleTextarea",
                        "dijit/form/TextBox",
                        "dijit/form/ComboBox",
@@ -847,26 +852,15 @@ function hotkey_handler(e) {
        if (e.target.nodeName == "INPUT" || e.target.nodeName == "TEXTAREA") return;
 
        var keycode = false;
-       var shift_key = false;
-       var ctrl_key = false;
-       var alt_key = false;
-       var meta_key = false;
 
        var cmdline = $('cmdline');
 
-       shift_key = e.shiftKey;
-       ctrl_key = e.ctrlKey;
-       alt_key = e.altKey;
-       meta_key = e.metaKey;
-
        if (window.event) {
                keycode = window.event.keyCode;
        } else if (e) {
                keycode = e.which;
        }
 
-       var keychar = String.fromCharCode(keycode);
-
        if (keycode == 27) { // escape
                hotkey_prefix = false;
        }
@@ -874,9 +868,8 @@ function hotkey_handler(e) {
        if (keycode == 16) return; // ignore lone shift
        if (keycode == 17) return; // ignore lone ctrl
 
-       keychar = keychar.toLowerCase();
-
        var hotkeys = getInitParam("hotkeys");
+       var keychar = String.fromCharCode(keycode).toLowerCase();
 
        if (!hotkey_prefix && hotkeys[0].indexOf(keychar) != -1) {
 
@@ -889,6 +882,9 @@ function hotkey_handler(e) {
                cmdline.innerHTML = keychar;
                Element.show(cmdline);
 
+               e.stopPropagation();
+
+               // returning false here literally disables ctrl-c in browser lol (because C is a valid prefix)
                return true;
        }
 
@@ -897,10 +893,10 @@ function hotkey_handler(e) {
        var hotkey = keychar.search(/[a-zA-Z0-9]/) != -1 ? keychar : "(" + keycode + ")";
 
        // ensure ^*char notation
-       if (shift_key) hotkey = "*" + hotkey;
-       if (ctrl_key) hotkey = "^" + hotkey;
-       if (alt_key) hotkey = "+" + hotkey;
-       if (meta_key) hotkey = "%" + hotkey;
+       if (e.shiftKey) hotkey = "*" + hotkey;
+       if (e.ctrlKey) hotkey = "^" + hotkey;
+       if (e.altKey) hotkey = "+" + hotkey;
+       if (e.metaKey) hotkey = "%" + hotkey;
 
        hotkey = hotkey_prefix ? hotkey_prefix + " " + hotkey : hotkey;
        hotkey_prefix = false;
@@ -919,6 +915,7 @@ function hotkey_handler(e) {
 
        if (action != null) {
                action();
+               e.stopPropagation();
                return false;
        }
 }