]> git.wh0rd.org - tt-rss.git/blobdiff - tt-rss.js
make f a hotkey persistent; obsolete option HIDE_READ_FEEDS
[tt-rss.git] / tt-rss.js
index fbfde92d4394e456b4213ce4057486b5d300766b..04671c04893b1e343e28201401fc8f5a31370e08 100644 (file)
--- a/tt-rss.js
+++ b/tt-rss.js
@@ -15,6 +15,7 @@ var number_of_feeds = 0;
 var sanity_check_done = false;
 var _hfd_scrolltop = 0;
 var hotkey_prefix = false;
+var hotkey_prefix_pressed = false;
 var init_params = new Object();
 var ver_offset = 0;
 var hor_offset = 0;
@@ -26,7 +27,6 @@ function activeFeedIsCat() {
 }
 
 function getActiveFeedId() {
-//     return getCookie("ttrss_vf_actfeed");
        try {
                debug("gAFID: " + _active_feed_id);
                return _active_feed_id;
@@ -36,7 +36,6 @@ function getActiveFeedId() {
 }
 
 function setActiveFeedId(id, is_cat) {
-//     return setCookie("ttrss_vf_actfeed", id);
        try {
                debug("sAFID(" + id + ", " + is_cat + ")");
                _active_feed_id = id;
@@ -132,8 +131,18 @@ function backend_sanity_check_callback(transport) {
                }
 
                if (!transport.responseXML) {
-                       fatalError(3, "Sanity check: Received reply is not XML", transport.responseText);
-                       return;
+                       if (!store) {
+                               fatalError(3, "Sanity check: Received reply is not XML", 
+                                       transport.responseText);
+                               return;
+                       } else {
+                               init_offline();
+                               return;
+                       }
+               }
+
+               if (getURLParam("offline")) {
+                       return init_offline();
                }
 
                var reply = transport.responseXML.firstChild.firstChild;
@@ -220,7 +229,8 @@ function scheduleFeedUpdate(force) {
 
        debug("REFETCH query: " + query_str);
 
-       new Ajax.Request(query_str, {
+       new Ajax.Request("backend.php", {
+               parameters: query_str,
                onComplete: function(transport) { 
                                refetch_callback2(transport); 
                        } });
@@ -257,7 +267,8 @@ function updateFeedList(silent, fetch) {
 
        debug("updateFeedList Q=" + query_str);
 
-       new Ajax.Request(query_str, {
+       new Ajax.Request("backend.php", {
+               parameters: query_str,
                onComplete: function(transport) { 
                        feedlist_callback2(transport); 
                } });
@@ -276,7 +287,8 @@ function catchupAllFeeds() {
 
                debug("catchupAllFeeds Q=" + query_str);
 
-               new Ajax.Request(query_str, {
+               new Ajax.Request("backend.php", {
+                       parameters: query_str,
                        onComplete: function(transport) { 
                                feedlist_callback2(transport); 
                        } });
@@ -361,9 +373,9 @@ function genericSanityCheck() {
 
 //     if (!Ajax.getTransport()) fatalError(1);
 
-       setCookie("ttrss_vf_test", "TEST");
+       setCookie("ttrss_test", "TEST");
        
-       if (getCookie("ttrss_vf_test") != "TEST") {
+       if (getCookie("ttrss_test") != "TEST") {
                fatalError(2);
        }
 
@@ -374,11 +386,6 @@ function init() {
 
        try {
 
-               // this whole shebang is based on http://www.birnamdesigns.com/misc/busted2.html
-
-               if (arguments.callee.done) return;
-               arguments.callee.done = true;           
-
                init_gears();
 
                disableContainerChildren("headlinesToolbar", true);
@@ -397,17 +404,11 @@ function init() {
 
                loading_set_progress(30);
 
-               offline_mode = false;
-               if (store) offline_mode = store.currentVersion;
-
-               if (offline_mode) {
-                       init_offline();
-               } else {
-                       new Ajax.Request("backend.php?op=rpc&subop=sanityCheck" + params,       {
-                               onComplete: function(transport) {
-                                               backend_sanity_check_callback(transport);
-                                       } });
-               }
+               new Ajax.Request("backend.php", {
+                       parameters: "backend.php?op=rpc&subop=sanityCheck" + params,
+                       onComplete: function(transport) {
+                                       backend_sanity_check_callback(transport);
+                               } });
 
        } catch (e) {
                exception_error("init", e);
@@ -505,14 +506,14 @@ function init_second_stage() {
 
        try {
 
-               delCookie("ttrss_vf_test");
+               delCookie("ttrss_test");
 
 //             document.onresize = resize_headlines;
+               window.onresize=resize_headlines;
 
                var toolbar = document.forms["main_toolbar_form"];
 
                dropboxSelect(toolbar.view_mode, getInitParam("default_view_mode"));
-               dropboxSelect(toolbar.limit, getInitParam("default_view_limit"));
                dropboxSelect(toolbar.order_by, getInitParam("default_view_order_by"));
 
                daemon_enabled = getInitParam("daemon_enabled") == 1;
@@ -679,11 +680,12 @@ function quickMenuGo(opid) {
 
                        if (confirm(__("Reset category order?"))) {
 
-                               var query = "backend.php?op=feeds&subop=catsortreset";
+                               var query = "?op=feeds&subop=catsortreset";
 
                                notify_progress("Loading, please wait...", true);
 
-                               new Ajax.Request(query, {
+                               new Ajax.Request("backend.php", {
+                                       parameters: query,
                                        onComplete: function(transport) { 
                                                window.setTimeout('updateFeedList(false, false)', 50);
                                        } });
@@ -703,9 +705,10 @@ function unsubscribeFeed(feed_id, title) {
        if (title == undefined || confirm(msg)) {
                notify_progress("Removing feed...");
 
-               var query = "backend.php?op=pref-feeds&quiet=1&subop=remove&ids=" + feed_id;
+               var query = "?op=pref-feeds&quiet=1&subop=remove&ids=" + feed_id;
 
-               new Ajax.Request(query, {
+               new Ajax.Request("backend.php", {
+                       parameters: query,
                        onComplete: function(transport) {
                                        dlg_frefresh_callback(transport, feed_id);
                                } });
@@ -723,15 +726,18 @@ function updateFeedTitle(t) {
 function toggleDispRead() {
        try {
 
-               var hide_read_feeds = (getInitParam("hide_read_feeds") == "1");
-
-               hide_read_feeds = !hide_read_feeds;
+               var hide = !(getInitParam("hide_read_feeds") == "1");
 
-               debug("toggle_disp_read => " + hide_read_feeds);
+               hideOrShowFeeds(hide);
 
-               hideOrShowFeeds(hide_read_feeds);
+               var query = "?op=rpc&subop=setpref&key=HIDE_READ_FEEDS&value=" + 
+                       param_escape(hide);
 
-               storeInitParam("hide_read_feeds", hide_read_feeds, true);
+               new Ajax.Request("backend.php", {
+                       parameters: query,
+                       onComplete: function(transport) { 
+                               setInitParam("hide_read_feeds", hide);
+                       } });
                                
        } catch (e) {
                exception_error("toggleDispRead", e);
@@ -842,14 +848,17 @@ function editFeedDlg(feed) {
                var query = "";
        
                if (feed > 0) {
-                       query = "backend.php?op=pref-feeds&subop=editfeed&id=" +        param_escape(feed);
+                       query = "?op=pref-feeds&subop=editfeed&id=" +   param_escape(feed);
                } else {
-                       query = "backend.php?op=pref-labels&subop=edit&id=" +   param_escape(-feed-11);
+                       query = "?op=pref-labels&subop=edit&id=" +      param_escape(-feed-11);
                }
 
                disableHotkeys();
 
-               new Ajax.Request(query, {
+               notify_progress("Loading, please wait...", true);
+
+               new Ajax.Request("backend.php", {
+                       parameters: query,
                        onComplete: function(transport) { 
                                infobox_callback2(transport); 
                        } });
@@ -897,9 +906,10 @@ function clearFeedArticles(feed_id) {
 
        notify_progress("Clearing feed...");
 
-       var query = "backend.php?op=pref-feeds&quiet=1&subop=clear&id=" + feed_id;
+       var query = "?op=pref-feeds&quiet=1&subop=clear&id=" + feed_id;
 
-       new Ajax.Request(query, {
+       new Ajax.Request("backend.php", {
+               parameters: query,
                onComplete: function(transport) {
                                dlg_frefresh_callback(transport, feed_id);
                        } });
@@ -941,7 +951,9 @@ function collapse_feedlist() {
                                if (fc) fc.style.left = fl.offsetWidth + 40 + "px";
                        }
 
-                       setCookie("ttrss_vf_fclps", "0");
+                       query = "?op=rpc&subop=setpref&key=_COLLAPSED_FEEDLIST&value=false";
+
+                       new Ajax.Request("backend.php", { parameters: query });
 
                } else {
                        Element.hide(fl);
@@ -963,7 +975,10 @@ function collapse_feedlist() {
 
                        }
 
-                       setCookie("ttrss_vf_fclps", "1");
+                       query = "?op=rpc&subop=setpref&key=_COLLAPSED_FEEDLIST&value=true";
+
+                       new Ajax.Request("backend.php", { parameters: query });
+
                }
        } catch (e) {
                exception_error("toggle_feedlist", e);
@@ -986,9 +1001,10 @@ function viewLimitChanged() {
                var pr = prompt(__("Assign score to article:"), score);
 
                if (pr != undefined) {
-                       var query = "backend.php?op=rpc&subop=setScore&id=" + id + "&score=" + pr;
+                       var query = "?op=rpc&subop=setScore&id=" + id + "&score=" + pr;
 
-                       new Ajax.Request(query, {
+                       new Ajax.Request("backend.php", {
+                       parameters: query,
                        onComplete: function(transport) {
                                        viewCurrentFeed();
                                } });
@@ -1019,12 +1035,13 @@ function rescoreCurrentFeed() {
        if (confirm(pr)) {
                notify_progress("Rescoring articles...");
 
-               var query = "backend.php?op=pref-feeds&subop=rescore&quiet=1&ids=" + actid;
+               var query = "?op=pref-feeds&subop=rescore&quiet=1&ids=" + actid;
 
-               new Ajax.Request(query, {
-               onComplete: function(transport) {
-                       viewCurrentFeed();
-               } });
+               new Ajax.Request("backend.php", {
+                       parameters: query,
+                       onComplete: function(transport) {
+                               viewCurrentFeed();
+                       } });
        }
 }
 
@@ -1035,6 +1052,7 @@ function hotkey_handler(e) {
                var keycode;
                var shift_key = false;
 
+               var cmdline = $('cmdline');
                var feedlist = $('feedList');
 
                try {
@@ -1069,8 +1087,16 @@ function hotkey_handler(e) {
                if ((keycode == 70 || keycode == 67 || keycode == 71) 
                                && !hotkey_prefix) {
 
+                       var date = new Date();
+                       var ts = Math.round(date.getTime() / 1000);
+
                        hotkey_prefix = keycode;
-                       debug("KP: PREFIX=" + keycode + " CHAR=" + keychar);
+                       hotkey_prefix_pressed = ts;
+
+                       cmdline.innerHTML = keychar;
+                       Element.show(cmdline);
+
+                       debug("KP: PREFIX=" + keycode + " CHAR=" + keychar + " TS=" + ts);
                        return true;
                }
 
@@ -1080,6 +1106,8 @@ function hotkey_handler(e) {
 
                /* Global hotkeys */
 
+               Element.hide(cmdline);
+
                if (!hotkey_prefix) {
 
                        if (keycode == 68 && shift_key) { // d
@@ -1440,12 +1468,13 @@ function addLabel() {
                                return false;
                        }
 
-                       var query = "backend.php?op=pref-labels&subop=add&caption=" + 
+                       var query = "?op=pref-labels&subop=add&caption=" + 
                                param_escape(caption);
 
                        notify_progress("Loading, please wait...", true);
 
-                       new Ajax.Request(query, {
+                       new Ajax.Request("backend.php", {
+                               parameters: query,
                                onComplete: function(transport) { 
                                        updateFeedList();
                        } });
@@ -1467,15 +1496,20 @@ function feedBrowserSubscribe() {
 
                var selected = getSelectedFeedsFromBrowser();
 
+               var mode = document.forms['feed_browser'].mode;
+
+               mode = mode[mode.selectedIndex].value;
+
                if (selected.length > 0) {
                        closeInfoBox();
 
                        notify_progress("Loading, please wait...", true);
 
-                       var query =  "backend.php?op=pref-feeds&subop=massSubscribe&ids="+
-                               param_escape(selected.toString());
+                       var query = "?op=pref-feeds&subop=massSubscribe&ids="+
+                               param_escape(selected.toString()) + "&mode=" + param_escape(mode);
 
-                       new Ajax.Request(query, {
+                       new Ajax.Request("backend.php", {
+                               parameters: query,
                                onComplete: function(transport) { 
                                        updateFeedList();
                                } });