]> git.wh0rd.org - tt-rss.git/blobdiff - js/tt-rss.js
fix catching up for grouped feeds
[tt-rss.git] / js / tt-rss.js
index c14c65f2797c939e8e09a12601131c151afbedfa..5261485ae340833b3f089c152e3dc4f9c034fd72 100644 (file)
@@ -79,7 +79,7 @@ function updateFeedList() {
                        var id = String(item.id);
                        var is_cat = id.match("^CAT:");
                        var feed = id.substr(id.indexOf(":")+1);
-                       viewfeed(feed, '', is_cat);
+                       viewfeed({feed: feed, is_cat: is_cat});
                        return false;
                },
                openOnClick: false,
@@ -147,10 +147,10 @@ function catchupAllFeeds() {
 }
 
 function viewCurrentFeed(method) {
-       console.log("viewCurrentFeed");
+       console.log("viewCurrentFeed: " + method);
 
        if (getActiveFeedId() != undefined) {
-               viewfeed(getActiveFeedId(), method, activeFeedIsCat());
+               viewfeed({feed: getActiveFeedId(), is_cat: activeFeedIsCat(), method: method});
        }
        return false; // block unneeded form submits
 }
@@ -231,6 +231,7 @@ function init() {
                dojo.require("dijit.form.Select");
                dojo.require("dijit.form.SimpleTextarea");
                dojo.require("dijit.form.TextBox");
+               dojo.require("dijit.form.ComboBox");
                dojo.require("dijit.form.ValidationTextBox");
                dojo.require("dijit.InlineEditBox");
                dojo.require("dijit.layout.AccordionContainer");
@@ -272,13 +273,13 @@ function init() {
                                var rv = dijit.byId("feedTree").getNextFeed(
                                                getActiveFeedId(), activeFeedIsCat());
 
-                               if (rv) viewfeed(rv[0], '', rv[1], null, null, null, true);
+                               if (rv) viewfeed({feed: rv[0], is_cat: rv[1], can_wait: true})
                };
                hotkey_actions["prev_feed"] = function() {
                                var rv = dijit.byId("feedTree").getPreviousFeed(
                                                getActiveFeedId(), activeFeedIsCat());
 
-                               if (rv) viewfeed(rv[0], '', rv[1], null, null, null, true);
+                               if (rv) viewfeed({feed: rv[0], is_cat: rv[1], can_wait: true})
                };
                hotkey_actions["next_article"] = function() {
                                moveToPost('next');
@@ -301,21 +302,27 @@ function init() {
                hotkey_actions["collapse_article"] = function() {
                                var id = getActiveArticleId();
                                var elem = $("CICD-"+id);
-                               if(elem.visible()) {
-                                       cdmCollapseArticle(null, id);
-                               }
-                               else {
-                                       cdmExpandArticle(id);
+
+                               if (elem) {
+                                       if (elem.visible()) {
+                                               cdmCollapseArticle(null, id);
+                                       }
+                                       else {
+                                               cdmExpandArticle(id);
+                                       }
                                }
                };
                hotkey_actions["toggle_expand"] = function() {
                                var id = getActiveArticleId();
                                var elem = $("CICD-"+id);
-                               if(elem.visible()) {
-                                       cdmCollapseArticle(null, id, false);
-                               }
-                               else {
-                                       cdmExpandArticle(id);
+
+                               if (elem) {
+                                       if (elem.visible()) {
+                                               cdmCollapseArticle(null, id, false);
+                                       }
+                                       else {
+                                               cdmExpandArticle(id);
+                                       }
                                }
                };
                hotkey_actions["search_dialog"] = function() {
@@ -404,7 +411,7 @@ function init() {
                };
                hotkey_actions["feed_refresh"] = function() {
                                if (getActiveFeedId() != undefined) {
-                                       viewfeed(getActiveFeedId(), '', activeFeedIsCat());
+                                       viewfeed({feed: getActiveFeedId(), is_cat: activeFeedIsCat()});
                                        return;
                                }
                };
@@ -415,11 +422,18 @@ function init() {
                                quickAddFeed();
                };
                hotkey_actions["feed_debug_update"] = function() {
-                               window.open("backend.php?op=feeds&method=view&feed=" + getActiveFeedId() +
-                                       "&view_mode=adaptive&order_by=default&update=&m=ForceUpdate&cat=" +
-                                       activeFeedIsCat() + "&DevForceUpdate=1&debug=1&xdebug=1&csrf_token=" +
-                                       getInitParam("csrf_token"));
+                       if (!activeFeedIsCat() && parseInt(getActiveFeedId()) > 0) {
+                               window.open("backend.php?op=feeds&method=update_debugger&feed_id=" + getActiveFeedId() +
+                               "&csrf_token=" + getInitParam("csrf_token"));
+                       } else {
+                               alert("You can't debug this kind of feed.");
+                       }
+               };
+
+               hotkey_actions["feed_debug_viewfeed"] = function() {
+                       viewfeed({feed: getActiveFeedId(), is_cat: activeFeedIsCat(), viewfeed_debug: true});
                };
+
                hotkey_actions["feed_edit"] = function() {
                                if (activeFeedIsCat())
                                        alert(__("You can't edit this kind of feed."));
@@ -445,16 +459,16 @@ function init() {
                                }
                };
                hotkey_actions["goto_all"] = function() {
-                               viewfeed(-4);
+                               viewfeed({feed: -4});
                };
                hotkey_actions["goto_fresh"] = function() {
-                               viewfeed(-3);
+                               viewfeed({feed: -3});
                };
                hotkey_actions["goto_marked"] = function() {
-                               viewfeed(-1);
+                               viewfeed({feed: -1});
                };
                hotkey_actions["goto_published"] = function() {
-                               viewfeed(-2);
+                               viewfeed({feed: -2});
                };
                hotkey_actions["goto_tagcloud"] = function() {
                                displayDlg(__("Tag cloud"), "printTagCloud");
@@ -500,7 +514,13 @@ function init() {
                                if (!isCdmMode()) {
                                        _widescreen_mode = !_widescreen_mode;
 
+                                       // reset stored sizes because geometry changed
+                                       setCookie("ttrss_ci_width", 0);
+                                       setCookie("ttrss_ci_height", 0);
+
                                        switchPanelMode(_widescreen_mode);
+                               } else {
+                                       alert(__("Widescreen is not available in combined mode."));
                                }
                };
                hotkey_actions["help_dialog"] = function() {
@@ -550,36 +570,26 @@ function init_second_stage() {
                        updateFeedList();
                        closeArticlePanel();
 
-                       _widescreen_mode = getInitParam("widescreen");
-                       switchPanelMode(_widescreen_mode);
-
                        if (parseInt(getCookie("ttrss_fh_width")) > 0) {
                                dijit.byId("feeds-holder").domNode.setStyle(
                                        {width: getCookie("ttrss_fh_width") + "px" });
                        }
 
-                       if (parseInt(getCookie("ttrss_ci_width")) > 0) {
-                               if (_widescreen_mode) {
-                                       dijit.byId("content-insert").domNode.setStyle(
-                                               {width: getCookie("ttrss_ci_width") + "px" });
-
-                               } else {
-                                       dijit.byId("content-insert").domNode.setStyle(
-                                               {height: getCookie("ttrss_ci_height") + "px" });
-                               }
-                       }
-
                        dijit.byId("main").resize();
 
                        var tmph = dojo.connect(dijit.byId('feeds-holder'), 'resize',
                                function (args) {
-                                       setCookie("ttrss_fh_width", args.w, getInitParam("cookie_lifetime"));
+                                       if (args && args.w >= 0) {
+                                               setCookie("ttrss_fh_width", args.w, getInitParam("cookie_lifetime"));
+                                       }
                        });
 
                        var tmph = dojo.connect(dijit.byId('content-insert'), 'resize',
                                function (args) {
-                                       setCookie("ttrss_ci_width", args.w, getInitParam("cookie_lifetime"));
-                                       setCookie("ttrss_ci_height", args.h, getInitParam("cookie_lifetime"));
+                                       if (args && args.w >= 0 && args.h >= 0) {
+                                               setCookie("ttrss_ci_width", args.w, getInitParam("cookie_lifetime"));
+                                               setCookie("ttrss_ci_height", args.h, getInitParam("cookie_lifetime"));
+                                       }
                        });
 
                });
@@ -620,6 +630,9 @@ function init_second_stage() {
                hotkeys[1] = tmp;
                setInitParam("hotkeys", hotkeys);
 
+               _widescreen_mode = getInitParam("widescreen");
+               switchPanelMode(_widescreen_mode);
+
                console.log("second stage ok");
 
                if (getInitParam("simple_update")) {
@@ -644,9 +657,6 @@ function quickMenuGo(opid) {
                case "qmcTagCloud":
                        displayDlg(__("Tag cloud"), "printTagCloud");
                        break;
-               case "qmcTagSelect":
-                       displayDlg(__("Select item(s) by tags"), "printTagSelect");
-                       break;
                case "qmcSearch":
                        search();
                        break;
@@ -702,7 +712,13 @@ function quickMenuGo(opid) {
                        if (!isCdmMode()) {
                                _widescreen_mode = !_widescreen_mode;
 
+                               // reset stored sizes because geometry changed
+                               setCookie("ttrss_ci_width", 0);
+                               setCookie("ttrss_ci_height", 0);
+
                                switchPanelMode(_widescreen_mode);
+                       } else {
+                               alert(__("Widescreen is not available in combined mode."));
                        }
                        break;
                case "qmcHKhelp":
@@ -748,15 +764,6 @@ function parse_runtime_info(data) {
 
 //             console.log("RI: " + k + " => " + v);
 
-               if (k == "new_version_available") {
-                       if (v == "1") {
-                               Element.show(dijit.byId("newVersionIcon").domNode);
-                       } else {
-                               Element.hide(dijit.byId("newVersionIcon").domNode);
-                       }
-                       return;
-               }
-
                if (k == "dep_ts" && parseInt(getInitParam("dep_ts")) > 0) {
                        if (parseInt(getInitParam("dep_ts")) < parseInt(v) && getInitParam("reload_on_ts_change")) {
                                window.location.reload();
@@ -764,12 +771,22 @@ function parse_runtime_info(data) {
                }
 
                if (k == "daemon_is_running" && v != 1) {
-                       notify_error("<span onclick=\"javascript:explainError(1)\">Update daemon is not running.</span>", true);
+                       notify_error("<span onclick=\"explainError(1)\">Update daemon is not running.</span>", true);
                        return;
                }
 
+               if (k == "update_result") {
+                       var updatesIcon = dijit.byId("updatesIcon").domNode;
+
+                       if (v) {
+                               Element.show(updatesIcon);
+                       } else {
+                               Element.hide(updatesIcon);
+                       }
+               }
+
                if (k == "daemon_stamp_ok" && v != 1) {
-                       notify_error("<span onclick=\"javascript:explainError(3)\">Update daemon is not updating feeds.</span>", true);
+                       notify_error("<span onclick=\"explainError(3)\">Update daemon is not updating feeds.</span>", true);
                        return;
                }
 
@@ -848,11 +865,15 @@ function hotkey_handler(e) {
                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;
@@ -894,6 +915,8 @@ function hotkey_handler(e) {
                // ensure ^*char notation
                if (shift_key) hotkey = "*" + hotkey;
                if (ctrl_key) hotkey = "^" + hotkey;
+               if (alt_key) hotkey = "+" + hotkey;
+               if (meta_key) hotkey = "%" + hotkey;
 
                hotkey = hotkey_prefix ? hotkey_prefix + " " + hotkey : hotkey;
                hotkey_prefix = false;
@@ -954,31 +977,16 @@ function reverseHeadlineOrder() {
        }
 }
 
-function newVersionDlg() {
-       try {
-               var query = "backend.php?op=dlg&method=newVersion";
-
-               if (dijit.byId("newVersionDlg"))
-                       dijit.byId("newVersionDlg").destroyRecursive();
-
-               dialog = new dijit.Dialog({
-                       id: "newVersionDlg",
-                       title: __("New version available!"),
-                       style: "width: 600px",
-                       href: query,
-               });
-
-               dialog.show();
-
-       } catch (e) {
-               exception_error("newVersionDlg", e);
-       }
-}
-
 function handle_rpc_json(transport, scheduled_call) {
        try {
                var reply = JSON.parse(transport.responseText);
 
+               var netalert_dijit = dijit.byId("net-alert");
+               var netalert = false;
+
+               if (netalert_dijit)
+                       netalert = netalert_dijit.domNode;
+
                if (reply) {
 
                        var error = reply['error'];
@@ -1025,16 +1033,21 @@ function handle_rpc_json(transport, scheduled_call) {
                        if (runtime_info)
                                parse_runtime_info(runtime_info);
 
-                       Element.hide(dijit.byId("net-alert").domNode);
+                       if (netalert) Element.hide(netalert);
 
                } else {
-                       //notify_error("Error communicating with server.");
-                       Element.show(dijit.byId("net-alert").domNode);
+                       if (netalert)
+                               Element.show(netalert);
+                       else
+                               notify_error("Communication problem with server.");
                }
 
        } catch (e) {
-               Element.show(dijit.byId("net-alert").domNode);
-               //notify_error("Error communicating with server.");
+               if (netalert)
+                       Element.show(netalert);
+               else
+                       notify_error("Communication problem with server.");
+
                console.log(e);
                //exception_error("handle_rpc_json", e, transport);
        }
@@ -1054,11 +1067,13 @@ function switchPanelMode(wide) {
 
                        dijit.byId("content-insert").domNode.setStyle({width: '50%',
                                height: 'auto',
-                               borderLeftWidth: '1px',
-                               borderLeftColor: '#c0c0c0',
                                borderTopWidth: '0px' });
 
-                       $("headlines-toolbar").setStyle({ borderBottomWidth: '0px' });
+                       if (parseInt(getCookie("ttrss_ci_width")) > 0) {
+                               dijit.byId("content-insert").domNode.setStyle(
+                                       {width: getCookie("ttrss_ci_width") + "px" });
+                       }
+
                        $("headlines-frame").setStyle({ borderBottomWidth: '0px' });
                        $("headlines-frame").addClassName("wide");
 
@@ -1068,10 +1083,12 @@ function switchPanelMode(wide) {
 
                        dijit.byId("content-insert").domNode.setStyle({width: 'auto',
                                height: '50%',
-                               borderLeftWidth: '0px',
-                               borderTopWidth: '1px'});
+                               borderTopWidth: '0px'});
 
-                       $("headlines-toolbar").setStyle({ borderBottomWidth: '1px' });
+                       if (parseInt(getCookie("ttrss_ci_height")) > 0) {
+                               dijit.byId("content-insert").domNode.setStyle(
+                                       {height: getCookie("ttrss_ci_height") + "px" });
+                       }
 
                        $("headlines-frame").setStyle({ borderBottomWidth: '1px' });
                        $("headlines-frame").removeClassName("wide");