]> git.wh0rd.org - tt-rss.git/blobdiff - js/tt-rss.js
hotkey actions: toggle_expand, collapse_article: check if element exists
[tt-rss.git] / js / tt-rss.js
index 2a741ab2dc1ac4374fe1bba92fefd9712e71837b..84f2e67b1baba39b703b802ac68e6bf252bb68f8 100644 (file)
@@ -116,6 +116,7 @@ function updateFeedList() {
 
                tree.startup();
 
+
        } catch (e) {
                exception_error("updateFeedList", e);
        }
@@ -230,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");
@@ -249,7 +251,7 @@ function init() {
                if (!genericSanityCheck())
                        return false;
 
-               loading_set_progress(20);
+               loading_set_progress(30);
 
                var a = document.createElement('audio');
 
@@ -271,13 +273,13 @@ function init() {
                                var rv = dijit.byId("feedTree").getNextFeed(
                                                getActiveFeedId(), activeFeedIsCat());
 
-                               if (rv) viewfeed(rv[0], '', rv[1]);
+                               if (rv) viewfeed(rv[0], '', rv[1], null, null, null, true);
                };
                hotkey_actions["prev_feed"] = function() {
                                var rv = dijit.byId("feedTree").getPreviousFeed(
                                                getActiveFeedId(), activeFeedIsCat());
 
-                               if (rv) viewfeed(rv[0], '', rv[1]);
+                               if (rv) viewfeed(rv[0], '', rv[1], null, null, null, true);
                };
                hotkey_actions["next_article"] = function() {
                                moveToPost('next');
@@ -300,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() {
@@ -332,12 +340,15 @@ function init() {
                hotkey_actions["edit_tags"] = function() {
                                var id = getActiveArticleId();
                                if (id) {
-                                       editArticleTags(id, getActiveFeedId(), isCdmMode());
+                                       editArticleTags(id);
                                };
                        }
                hotkey_actions["dismiss_selected"] = function() {
                                dismissSelectedArticles();
                };
+               hotkey_actions["dismiss_read"] = function() {
+                               dismissReadArticles();
+               };
                hotkey_actions["open_in_new_window"] = function() {
                                if (getActiveArticleId()) {
                                        openArticleInNewWindow(getActiveArticleId());
@@ -496,6 +507,10 @@ 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);
                                }
                };
@@ -546,12 +561,28 @@ function init_second_stage() {
                        updateFeedList();
                        closeArticlePanel();
 
-                       _widescreen_mode = getInitParam("widescreen");
-
-                       if (_widescreen_mode) {
-                               switchPanelMode(_widescreen_mode);
+                       if (parseInt(getCookie("ttrss_fh_width")) > 0) {
+                               dijit.byId("feeds-holder").domNode.setStyle(
+                                       {width: getCookie("ttrss_fh_width") + "px" });
                        }
 
+                       dijit.byId("main").resize();
+
+                       var tmph = dojo.connect(dijit.byId('feeds-holder'), 'resize',
+                               function (args) {
+                                       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) {
+                                       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"));
+                                       }
+                       });
+
                });
 
                delCookie("ttrss_test");
@@ -573,7 +604,7 @@ function init_second_stage() {
                        setActiveFeedId(hash_feed_id, hash_feed_is_cat);
                }
 
-               loading_set_progress(30);
+               loading_set_progress(50);
 
                // can't use cache_clear() here because viewfeed might not have initialized yet
                if ('sessionStorage' in window && window['sessionStorage'] !== null)
@@ -590,6 +621,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")) {
@@ -672,6 +706,10 @@ 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);
                        }
                        break;
@@ -762,19 +800,14 @@ function collapse_feedlist() {
 
                if (!Element.visible('feeds-holder')) {
                        Element.show('feeds-holder');
-                       Element.show('feeds-holder_splitter');
                        $("collapse_feeds_btn").innerHTML = "<<";
                } else {
                        Element.hide('feeds-holder');
-                       Element.hide('feeds-holder_splitter');
                        $("collapse_feeds_btn").innerHTML = ">>";
                }
 
                dijit.byId("main").resize();
 
-               query = "?op=rpc&method=setpref&key=_COLLAPSED_FEEDLIST&value=true";
-               new Ajax.Request("backend.php", { parameters: query });
-
        } catch (e) {
                exception_error("collapse_feedlist", e);
        }
@@ -822,11 +855,16 @@ 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;
@@ -868,6 +906,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;
@@ -953,6 +993,12 @@ 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'];
@@ -999,16 +1045,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);
        }
@@ -1028,11 +1079,15 @@ 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");
 
                } else {
 
@@ -1040,10 +1095,16 @@ function switchPanelMode(wide) {
 
                        dijit.byId("content-insert").domNode.setStyle({width: 'auto',
                                height: '50%',
-                               borderLeftWidth: '0px',
-                               borderTopWidth: '1px'});
+                               borderTopWidth: '0px'});
+
+                       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");
 
-                       $("headlines-toolbar").setStyle({ borderBottomWidth: '1px' });
                }
 
                closeArticlePanel();