summaryrefslogtreecommitdiff
path: root/js/tt-rss.js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2018-12-01 17:42:21 +0300
committerAndrew Dolgov <[email protected]>2018-12-01 17:42:21 +0300
commit1d82bd4f19de40f0cf966545c372595caa2c8afe (patch)
treeabebe8390295aa0adf1195f3f9a09b361df4c07a /js/tt-rss.js
parent072c03fbac8213a378afda56578a28bca9382baa (diff)
further objectification
Diffstat (limited to 'js/tt-rss.js')
-rw-r--r--js/tt-rss.js449
1 files changed, 211 insertions, 238 deletions
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");