From 1d82bd4f19de40f0cf966545c372595caa2c8afe Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sat, 1 Dec 2018 17:42:21 +0300 Subject: further objectification --- js/tt-rss.js | 449 ++++++++++++++++++++++++++++------------------------------- 1 file changed, 211 insertions(+), 238 deletions(-) (limited to 'js/tt-rss.js') diff --git a/js/tt-rss.js b/js/tt-rss.js index 078ac7c63..66a94f714 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -5,6 +5,158 @@ let hotkey_actions = {}; const App = { global_unread: -1, + init: function() { + + window.onerror = function (message, filename, lineno, colno, error) { + report_error(message, filename, lineno, colno, error); + }; + + require(["dojo/_base/kernel", + "dojo/ready", + "dojo/parser", + "dojo/_base/loader", + "dojo/_base/html", + "dojo/query", + "dijit/ProgressBar", + "dijit/ColorPalette", + "dijit/Dialog", + "dijit/form/Button", + "dijit/form/ComboButton", + "dijit/form/CheckBox", + "dijit/form/DropDownButton", + "dijit/form/FilteringSelect", + "dijit/form/Form", + "dijit/form/RadioButton", + "dijit/form/Select", + "dijit/form/MultiSelect", + "dijit/form/SimpleTextarea", + "dijit/form/TextBox", + "dijit/form/ComboBox", + "dijit/form/ValidationTextBox", + "dijit/InlineEditBox", + "dijit/layout/AccordionContainer", + "dijit/layout/BorderContainer", + "dijit/layout/ContentPane", + "dijit/layout/TabContainer", + "dijit/PopupMenuItem", + "dijit/Menu", + "dijit/Toolbar", + "dijit/Tree", + "dijit/tree/dndSource", + "dijit/tree/ForestStoreModel", + "dojo/data/ItemFileWriteStore", + "fox/FeedStoreModel", + "fox/FeedTree"], function (dojo, ready, parser) { + + ready(function () { + + try { + parser.parse(); + + if (!App.genericSanityCheck()) + return false; + + setLoadingProgress(30); + init_hotkey_actions(); + + const a = document.createElement('audio'); + const hasAudio = !!a.canPlayType; + const hasSandbox = "sandbox" in document.createElement("iframe"); + const hasMp3 = !!(a.canPlayType && a.canPlayType('audio/mpeg;').replace(/no/, '')); + const clientTzOffset = new Date().getTimezoneOffset() * 60; + + const params = { + op: "rpc", method: "sanityCheck", hasAudio: hasAudio, + hasMp3: hasMp3, + clientTzOffset: clientTzOffset, + hasSandbox: hasSandbox + }; + + xhrPost("backend.php", params, (transport) => { + try { + Utils.backendSanityCallback(transport); + } catch (e) { + console.error(e); + } + }); + + } catch (e) { + exception_error(e); + } + + }); + + + }); + }, + initSecondStage: function () { + Feeds.reload(); + Article.closeArticlePanel(); + + if (parseInt(getCookie("ttrss_fh_width")) > 0) { + dijit.byId("feeds-holder").domNode.setStyle( + {width: getCookie("ttrss_fh_width") + "px"}); + } + + dijit.byId("main").resize(); + + dojo.connect(dijit.byId('feeds-holder'), 'resize', + function (args) { + if (args && args.w >= 0) { + setCookie("ttrss_fh_width", args.w, getInitParam("cookie_lifetime")); + } + }); + + 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"); + + const toolbar = document.forms["main_toolbar_form"]; + + dijit.getEnclosingWidget(toolbar.view_mode).attr('value', + getInitParam("default_view_mode")); + + dijit.getEnclosingWidget(toolbar.order_by).attr('value', + getInitParam("default_view_order_by")); + + const hash_feed_id = hash_get('f'); + const hash_feed_is_cat = hash_get('c') == "1"; + + if (hash_feed_id != undefined) { + Feeds.setActiveFeedId(hash_feed_id, hash_feed_is_cat); + } + + setLoadingProgress(50); + + ArticleCache.clear(); + + _widescreen_mode = getInitParam("widescreen"); + this.switchPanelMode(_widescreen_mode); + + Headlines.initScrollHandler(); + + console.log("second stage ok"); + + if (getInitParam("simple_update")) { + console.log("scheduling simple feed updater..."); + window.setTimeout(update_random_feed, 30 * 1000); + } + }, + genericSanityCheck: function() { + setCookie("ttrss_test", "TEST"); + + if (getCookie("ttrss_test") != "TEST") { + return fatalError(2); + } + + return true; + }, updateTitle: function() { let tmp = "Tiny Tiny RSS"; @@ -14,6 +166,10 @@ const App = { document.title = tmp; }, + onViewModeChanged: function() { + ArticleCache.clear(); + return Feeds.viewCurrentFeed(''); + }, isCombinedMode: function() { return getInitParam("combined_display_mode"); }, @@ -73,7 +229,7 @@ const App = { Article.closeArticlePanel(); - if (article_id) view(article_id); + if (article_id) Article.view(article_id); xhrPost("backend.php", {op: "rpc", method: "setpanelmode", wide: wide ? 1 : 0}); }, @@ -102,176 +258,80 @@ function search() { dialog.show(); } -function genericSanityCheck() { - setCookie("ttrss_test", "TEST"); - - if (getCookie("ttrss_test") != "TEST") { - return fatalError(2); - } - - return true; -} - - -function init() { - - window.onerror = function(message, filename, lineno, colno, error) { - report_error(message, filename, lineno, colno, error); - }; - - require(["dojo/_base/kernel", - "dojo/ready", - "dojo/parser", - "dojo/_base/loader", - "dojo/_base/html", - "dojo/query", - "dijit/ProgressBar", - "dijit/ColorPalette", - "dijit/Dialog", - "dijit/form/Button", - "dijit/form/ComboButton", - "dijit/form/CheckBox", - "dijit/form/DropDownButton", - "dijit/form/FilteringSelect", - "dijit/form/Form", - "dijit/form/RadioButton", - "dijit/form/Select", - "dijit/form/MultiSelect", - "dijit/form/SimpleTextarea", - "dijit/form/TextBox", - "dijit/form/ComboBox", - "dijit/form/ValidationTextBox", - "dijit/InlineEditBox", - "dijit/layout/AccordionContainer", - "dijit/layout/BorderContainer", - "dijit/layout/ContentPane", - "dijit/layout/TabContainer", - "dijit/PopupMenuItem", - "dijit/Menu", - "dijit/Toolbar", - "dijit/Tree", - "dijit/tree/dndSource", - "dijit/tree/ForestStoreModel", - "dojo/data/ItemFileWriteStore", - "fox/FeedStoreModel", - "fox/FeedTree" ], function (dojo, ready, parser) { - - ready(function() { - - try { - parser.parse(); - - if (!genericSanityCheck()) - return false; - - setLoadingProgress(30); - init_hotkey_actions(); - - const a = document.createElement('audio'); - const hasAudio = !!a.canPlayType; - const hasSandbox = "sandbox" in document.createElement("iframe"); - const hasMp3 = !!(a.canPlayType && a.canPlayType('audio/mpeg;').replace(/no/, '')); - const clientTzOffset = new Date().getTimezoneOffset() * 60; - - const params = { - op: "rpc", method: "sanityCheck", hasAudio: hasAudio, - hasMp3: hasMp3, - clientTzOffset: clientTzOffset, - hasSandbox: hasSandbox - }; - - xhrPost("backend.php", params, (transport) => { - try { - backend_sanity_check_callback(transport); - } catch (e) { - console.error(e); - } - }); - - } catch (e) { - exception_error(e); - } - - }); - - - }); -} - function init_hotkey_actions() { - hotkey_actions["next_feed"] = function() { + hotkey_actions["next_feed"] = function () { const rv = dijit.byId("feedTree").getNextFeed( Feeds.getActiveFeedId(), Feeds.activeFeedIsCat()); if (rv) Feeds.viewfeed({feed: rv[0], is_cat: rv[1], delayed: true}) }; - hotkey_actions["prev_feed"] = function() { + hotkey_actions["prev_feed"] = function () { const rv = dijit.byId("feedTree").getPreviousFeed( Feeds.getActiveFeedId(), Feeds.activeFeedIsCat()); if (rv) Feeds.viewfeed({feed: rv[0], is_cat: rv[1], delayed: true}) }; - hotkey_actions["next_article"] = function() { + hotkey_actions["next_article"] = function () { moveToPost('next'); }; - hotkey_actions["prev_article"] = function() { + hotkey_actions["prev_article"] = function () { moveToPost('prev'); }; - hotkey_actions["next_article_noscroll"] = function() { + hotkey_actions["next_article_noscroll"] = function () { moveToPost('next', true); }; - hotkey_actions["prev_article_noscroll"] = function() { + hotkey_actions["prev_article_noscroll"] = function () { moveToPost('prev', true); }; - hotkey_actions["next_article_noexpand"] = function() { + hotkey_actions["next_article_noexpand"] = function () { moveToPost('next', true, true); }; - hotkey_actions["prev_article_noexpand"] = function() { + hotkey_actions["prev_article_noexpand"] = function () { moveToPost('prev', true, true); }; - hotkey_actions["search_dialog"] = function() { + hotkey_actions["search_dialog"] = function () { search(); }; - hotkey_actions["toggle_mark"] = function() { + hotkey_actions["toggle_mark"] = function () { selectionToggleMarked(); }; - hotkey_actions["toggle_publ"] = function() { + hotkey_actions["toggle_publ"] = function () { selectionTogglePublished(); }; - hotkey_actions["toggle_unread"] = function() { + hotkey_actions["toggle_unread"] = function () { selectionToggleUnread({no_error: 1}); }; - hotkey_actions["edit_tags"] = function() { + hotkey_actions["edit_tags"] = function () { const id = getActiveArticleId(); if (id) { editArticleTags(id); } } - hotkey_actions["open_in_new_window"] = function() { + hotkey_actions["open_in_new_window"] = function () { if (getActiveArticleId()) { Article.openArticleInNewWindow(getActiveArticleId()); } }; - hotkey_actions["catchup_below"] = function() { + hotkey_actions["catchup_below"] = function () { catchupRelativeToArticle(1); }; - hotkey_actions["catchup_above"] = function() { + hotkey_actions["catchup_above"] = function () { catchupRelativeToArticle(0); }; - hotkey_actions["article_scroll_down"] = function() { + hotkey_actions["article_scroll_down"] = function () { scrollArticle(40); }; - hotkey_actions["article_scroll_up"] = function() { + hotkey_actions["article_scroll_up"] = function () { scrollArticle(-40); }; - hotkey_actions["close_article"] = function() { + hotkey_actions["close_article"] = function () { if (App.isCombinedMode()) { cdmCollapseActive(); } else { Article.closeArticlePanel(); } }; - hotkey_actions["email_article"] = function() { + hotkey_actions["email_article"] = function () { if (typeof emailArticle != "undefined") { emailArticle(); } else if (typeof mailtoArticle != "undefined") { @@ -280,37 +340,37 @@ function init_hotkey_actions() { alert(__("Please enable mail plugin first.")); } }; - hotkey_actions["select_all"] = function() { + hotkey_actions["select_all"] = function () { selectArticles('all'); }; - hotkey_actions["select_unread"] = function() { + hotkey_actions["select_unread"] = function () { selectArticles('unread'); }; - hotkey_actions["select_marked"] = function() { + hotkey_actions["select_marked"] = function () { selectArticles('marked'); }; - hotkey_actions["select_published"] = function() { + hotkey_actions["select_published"] = function () { selectArticles('published'); }; - hotkey_actions["select_invert"] = function() { + hotkey_actions["select_invert"] = function () { selectArticles('invert'); }; - hotkey_actions["select_none"] = function() { + hotkey_actions["select_none"] = function () { selectArticles('none'); }; - hotkey_actions["feed_refresh"] = function() { + hotkey_actions["feed_refresh"] = function () { if (Feeds.getActiveFeedId() != undefined) { Feeds.viewfeed({feed: Feeds.getActiveFeedId(), is_cat: Feeds.activeFeedIsCat()}); return; } }; - hotkey_actions["feed_unhide_read"] = function() { + hotkey_actions["feed_unhide_read"] = function () { Feeds.toggleDispRead(); }; - hotkey_actions["feed_subscribe"] = function() { + hotkey_actions["feed_subscribe"] = function () { quickAddFeed(); }; - hotkey_actions["feed_debug_update"] = function() { + hotkey_actions["feed_debug_update"] = function () { if (!Feeds.activeFeedIsCat() && parseInt(Feeds.getActiveFeedId()) > 0) { window.open("backend.php?op=feeds&method=update_debugger&feed_id=" + Feeds.getActiveFeedId() + "&csrf_token=" + getInitParam("csrf_token")); @@ -319,58 +379,57 @@ function init_hotkey_actions() { } }; - hotkey_actions["feed_debug_viewfeed"] = function() { + hotkey_actions["feed_debug_viewfeed"] = function () { Feeds.viewfeed({feed: Feeds.getActiveFeedId(), is_cat: Feeds.activeFeedIsCat(), viewfeed_debug: true}); }; - hotkey_actions["feed_edit"] = function() { + hotkey_actions["feed_edit"] = function () { if (Feeds.activeFeedIsCat()) alert(__("You can't edit this kind of feed.")); else editFeed(Feeds.getActiveFeedId()); }; - hotkey_actions["feed_catchup"] = function() { + hotkey_actions["feed_catchup"] = function () { if (Feeds.getActiveFeedId() != undefined) { Feeds.catchupCurrentFeed(); return; } }; - hotkey_actions["feed_reverse"] = function() { - reverseHeadlineOrder(); + hotkey_actions["feed_reverse"] = function () { + Headlines.reverseHeadlineOrder(); }; - hotkey_actions["feed_toggle_vgroup"] = function() { + hotkey_actions["feed_toggle_vgroup"] = function () { xhrPost("backend.php", {op: "rpc", method: "togglepref", key: "VFEED_GROUP_BY_FEED"}, () => { Feeds.viewCurrentFeed(); }) }; - hotkey_actions["catchup_all"] = function() { + hotkey_actions["catchup_all"] = function () { Feeds.catchupAllFeeds(); }; - hotkey_actions["cat_toggle_collapse"] = function() { + hotkey_actions["cat_toggle_collapse"] = function () { if (Feeds.activeFeedIsCat()) { dijit.byId("feedTree").collapseCat(Feeds.getActiveFeedId()); - return; } }; - hotkey_actions["goto_all"] = function() { + hotkey_actions["goto_all"] = function () { Feeds.viewfeed({feed: -4}); }; - hotkey_actions["goto_fresh"] = function() { + hotkey_actions["goto_fresh"] = function () { Feeds.viewfeed({feed: -3}); }; - hotkey_actions["goto_marked"] = function() { + hotkey_actions["goto_marked"] = function () { Feeds.viewfeed({feed: -1}); }; - hotkey_actions["goto_published"] = function() { + hotkey_actions["goto_published"] = function () { Feeds.viewfeed({feed: -2}); }; - hotkey_actions["goto_tagcloud"] = function() { + hotkey_actions["goto_tagcloud"] = function () { Utils.displayDlg(__("Tag cloud"), "printTagCloud"); }; - hotkey_actions["goto_prefs"] = function() { + hotkey_actions["goto_prefs"] = function () { gotoPreferences(); }; - hotkey_actions["select_article_cursor"] = function() { + hotkey_actions["select_article_cursor"] = function () { const id = getArticleUnderPointer(); if (id) { const row = $("RROW-" + id); @@ -389,16 +448,16 @@ function init_hotkey_actions() { } } }; - hotkey_actions["create_label"] = function() { + hotkey_actions["create_label"] = function () { addLabel(); }; - hotkey_actions["create_filter"] = function() { + hotkey_actions["create_filter"] = function () { quickAddFilter(); }; - hotkey_actions["collapse_sidebar"] = function() { + hotkey_actions["collapse_sidebar"] = function () { Feeds.viewCurrentFeed(); }; - hotkey_actions["toggle_embed_original"] = function() { + hotkey_actions["toggle_embed_original"] = function () { if (typeof embedOriginalArticle != "undefined") { if (getActiveArticleId()) embedOriginalArticle(getActiveArticleId()); @@ -406,7 +465,7 @@ function init_hotkey_actions() { alert(__("Please enable embed_original plugin first.")); } }; - hotkey_actions["toggle_widescreen"] = function() { + hotkey_actions["toggle_widescreen"] = function () { if (!App.isCombinedMode()) { _widescreen_mode = !_widescreen_mode; @@ -419,10 +478,10 @@ function init_hotkey_actions() { alert(__("Widescreen is not available in combined mode.")); } }; - hotkey_actions["help_dialog"] = function() { + hotkey_actions["help_dialog"] = function () { Utils.helpDialog("main"); }; - hotkey_actions["toggle_combined_mode"] = function() { + hotkey_actions["toggle_combined_mode"] = function () { notify_progress("Loading, please wait..."); const value = App.isCombinedMode() ? "false" : "true"; @@ -435,79 +494,16 @@ function init_hotkey_actions() { Feeds.viewCurrentFeed(); }) }; - hotkey_actions["toggle_cdm_expanded"] = function() { + hotkey_actions["toggle_cdm_expanded"] = function () { notify_progress("Loading, please wait..."); const value = getInitParam("cdm_expanded") ? "false" : "true"; - xhrPost("backend.php", { op: "rpc", method: "setpref", key: "CDM_EXPANDED", value: value }, () => { + xhrPost("backend.php", {op: "rpc", method: "setpref", key: "CDM_EXPANDED", value: value}, () => { setInitParam("cdm_expanded", !getInitParam("cdm_expanded")); Feeds.viewCurrentFeed(); }); }; - -} - -function init_second_stage() { - Feeds.reload(); - Article.closeArticlePanel(); - - 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"); - - const toolbar = document.forms["main_toolbar_form"]; - - dijit.getEnclosingWidget(toolbar.view_mode).attr('value', - getInitParam("default_view_mode")); - - dijit.getEnclosingWidget(toolbar.order_by).attr('value', - getInitParam("default_view_order_by")); - - const hash_feed_id = hash_get('f'); - const hash_feed_is_cat = hash_get('c') == "1"; - - if (hash_feed_id != undefined) { - Feeds.setActiveFeedId(hash_feed_id, hash_feed_is_cat); - } - - setLoadingProgress(50); - - // can't use cache_clear() here because viewfeed might not have initialized yet - if ('sessionStorage' in window && window['sessionStorage'] !== null) - sessionStorage.clear(); - - _widescreen_mode = getInitParam("widescreen"); - App.switchPanelMode(_widescreen_mode); - - Headlines.initScrollHandler(); - - console.log("second stage ok"); - - if (getInitParam("simple_update")) { - console.log("scheduling simple feed updater..."); - window.setTimeout(update_random_feed, 30*1000); - } } function quickMenuGo(opid) { @@ -584,33 +580,10 @@ function quickMenuGo(opid) { } } -function viewModeChanged() { - cache_clear(); - return Feeds.viewCurrentFeed(''); -} - function inPreferences() { return false; } -function reverseHeadlineOrder() { - - const toolbar = document.forms["main_toolbar_form"]; - const order_by = dijit.getEnclosingWidget(toolbar.order_by); - - let value = order_by.attr('value'); - - if (value == "date_reverse") - value = "default"; - else - value = "date_reverse"; - - order_by.attr('value', value); - - Feeds.viewCurrentFeed(); - -} - function update_random_feed() { console.log("in update_random_feed"); -- cgit v1.2.3