further objectification
This commit is contained in:
parent
072c03fbac
commit
1d82bd4f19
|
@ -139,7 +139,7 @@
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
Event.observe(window, 'load', function() {
|
Event.observe(window, 'load', function() {
|
||||||
init();
|
App.init();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
|
@ -187,7 +187,7 @@
|
||||||
<form id="main_toolbar_form" action="" onsubmit='return false'>
|
<form id="main_toolbar_form" action="" onsubmit='return false'>
|
||||||
|
|
||||||
<select name="view_mode" title="<?php echo __('Show articles') ?>"
|
<select name="view_mode" title="<?php echo __('Show articles') ?>"
|
||||||
onchange="viewModeChanged()"
|
onchange="App.onViewModeChanged()"
|
||||||
dojoType="dijit.form.Select">
|
dojoType="dijit.form.Select">
|
||||||
<option selected="selected" value="adaptive"><?php echo __('Adaptive') ?></option>
|
<option selected="selected" value="adaptive"><?php echo __('Adaptive') ?></option>
|
||||||
<option value="all_articles"><?php echo __('All Articles') ?></option>
|
<option value="all_articles"><?php echo __('All Articles') ?></option>
|
||||||
|
@ -199,7 +199,7 @@
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select title="<?php echo __('Sort articles') ?>"
|
<select title="<?php echo __('Sort articles') ?>"
|
||||||
onchange="viewModeChanged()"
|
onchange="App.onViewModeChanged()"
|
||||||
dojoType="dijit.form.Select" name="order_by">
|
dojoType="dijit.form.Select" name="order_by">
|
||||||
<option selected="selected" value="default"><?php echo __('Default') ?></option>
|
<option selected="selected" value="default"><?php echo __('Default') ?></option>
|
||||||
<option value="feed_dates"><?php echo __('Newest first') ?></option>
|
<option value="feed_dates"><?php echo __('Newest first') ?></option>
|
||||||
|
|
110
js/functions.js
110
js/functions.js
|
@ -255,6 +255,60 @@ const Utils = {
|
||||||
|
|
||||||
PluginHost.run(PluginHost.HOOK_RUNTIME_INFO_LOADED, data);
|
PluginHost.run(PluginHost.HOOK_RUNTIME_INFO_LOADED, data);
|
||||||
},
|
},
|
||||||
|
backendSanityCallback: function (transport) {
|
||||||
|
|
||||||
|
const reply = JSON.parse(transport.responseText);
|
||||||
|
|
||||||
|
if (!reply) {
|
||||||
|
fatalError(3, "Sanity check: invalid RPC reply", transport.responseText);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const error_code = reply['error']['code'];
|
||||||
|
|
||||||
|
if (error_code && error_code != 0) {
|
||||||
|
return fatalError(error_code, reply['error']['message']);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("sanity check ok");
|
||||||
|
|
||||||
|
const params = reply['init-params'];
|
||||||
|
|
||||||
|
if (params) {
|
||||||
|
console.log('reading init-params...');
|
||||||
|
|
||||||
|
for (const k in params) {
|
||||||
|
if (params.hasOwnProperty(k)) {
|
||||||
|
switch (k) {
|
||||||
|
case "label_base_index":
|
||||||
|
_label_base_index = parseInt(params[k])
|
||||||
|
break;
|
||||||
|
case "hotkeys":
|
||||||
|
// filter mnemonic definitions (used for help panel) from hotkeys map
|
||||||
|
// i.e. *(191)|Ctrl-/ -> *(191)
|
||||||
|
|
||||||
|
const tmp = [];
|
||||||
|
for (const sequence in params[k][1]) {
|
||||||
|
const filtered = sequence.replace(/\|.*$/, "");
|
||||||
|
tmp[filtered] = params[k][1][sequence];
|
||||||
|
}
|
||||||
|
|
||||||
|
params[k][1] = tmp;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("IP:", k, "=>", params[k]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
init_params = params;
|
||||||
|
|
||||||
|
// PluginHost might not be available on non-index pages
|
||||||
|
window.PluginHost && PluginHost.run(PluginHost.HOOK_PARAMS_LOADED, init_params);
|
||||||
|
}
|
||||||
|
|
||||||
|
App.initSecondStage();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function report_error(message, filename, lineno, colno, error) {
|
function report_error(message, filename, lineno, colno, error) {
|
||||||
|
@ -1193,62 +1247,6 @@ function unsubscribeFeed(feed_id, title) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function backend_sanity_check_callback(transport) {
|
|
||||||
|
|
||||||
const reply = JSON.parse(transport.responseText);
|
|
||||||
|
|
||||||
if (!reply) {
|
|
||||||
fatalError(3, "Sanity check: invalid RPC reply", transport.responseText);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const error_code = reply['error']['code'];
|
|
||||||
|
|
||||||
if (error_code && error_code != 0) {
|
|
||||||
return fatalError(error_code, reply['error']['message']);
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log("sanity check ok");
|
|
||||||
|
|
||||||
const params = reply['init-params'];
|
|
||||||
|
|
||||||
if (params) {
|
|
||||||
console.log('reading init-params...');
|
|
||||||
|
|
||||||
for (const k in params) {
|
|
||||||
if (params.hasOwnProperty(k)) {
|
|
||||||
switch (k) {
|
|
||||||
case "label_base_index":
|
|
||||||
_label_base_index = parseInt(params[k])
|
|
||||||
break;
|
|
||||||
case "hotkeys":
|
|
||||||
// filter mnemonic definitions (used for help panel) from hotkeys map
|
|
||||||
// i.e. *(191)|Ctrl-/ -> *(191)
|
|
||||||
|
|
||||||
const tmp = [];
|
|
||||||
for (const sequence in params[k][1]) {
|
|
||||||
const filtered = sequence.replace(/\|.*$/, "");
|
|
||||||
tmp[filtered] = params[k][1][sequence];
|
|
||||||
}
|
|
||||||
|
|
||||||
params[k][1] = tmp;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log("IP:", k, "=>", params[k]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
init_params = params;
|
|
||||||
|
|
||||||
// PluginHost might not be available on non-index pages
|
|
||||||
window.PluginHost && PluginHost.run(PluginHost.HOOK_PARAMS_LOADED, init_params);
|
|
||||||
}
|
|
||||||
|
|
||||||
init_second_stage();
|
|
||||||
}
|
|
||||||
|
|
||||||
// noinspection JSUnusedGlobalSymbols
|
// noinspection JSUnusedGlobalSymbols
|
||||||
function genUrlChangeKey(feed, is_cat) {
|
function genUrlChangeKey(feed, is_cat) {
|
||||||
if (confirm(__("Generate new syndication address for this feed?"))) {
|
if (confirm(__("Generate new syndication address for this feed?"))) {
|
||||||
|
|
449
js/tt-rss.js
449
js/tt-rss.js
|
@ -5,6 +5,158 @@ let hotkey_actions = {};
|
||||||
|
|
||||||
const App = {
|
const App = {
|
||||||
global_unread: -1,
|
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() {
|
updateTitle: function() {
|
||||||
let tmp = "Tiny Tiny RSS";
|
let tmp = "Tiny Tiny RSS";
|
||||||
|
|
||||||
|
@ -14,6 +166,10 @@ const App = {
|
||||||
|
|
||||||
document.title = tmp;
|
document.title = tmp;
|
||||||
},
|
},
|
||||||
|
onViewModeChanged: function() {
|
||||||
|
ArticleCache.clear();
|
||||||
|
return Feeds.viewCurrentFeed('');
|
||||||
|
},
|
||||||
isCombinedMode: function() {
|
isCombinedMode: function() {
|
||||||
return getInitParam("combined_display_mode");
|
return getInitParam("combined_display_mode");
|
||||||
},
|
},
|
||||||
|
@ -73,7 +229,7 @@ const App = {
|
||||||
|
|
||||||
Article.closeArticlePanel();
|
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});
|
xhrPost("backend.php", {op: "rpc", method: "setpanelmode", wide: wide ? 1 : 0});
|
||||||
},
|
},
|
||||||
|
@ -102,176 +258,80 @@ function search() {
|
||||||
dialog.show();
|
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() {
|
function init_hotkey_actions() {
|
||||||
hotkey_actions["next_feed"] = function() {
|
hotkey_actions["next_feed"] = function () {
|
||||||
const rv = dijit.byId("feedTree").getNextFeed(
|
const rv = dijit.byId("feedTree").getNextFeed(
|
||||||
Feeds.getActiveFeedId(), Feeds.activeFeedIsCat());
|
Feeds.getActiveFeedId(), Feeds.activeFeedIsCat());
|
||||||
|
|
||||||
if (rv) Feeds.viewfeed({feed: rv[0], is_cat: rv[1], delayed: true})
|
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(
|
const rv = dijit.byId("feedTree").getPreviousFeed(
|
||||||
Feeds.getActiveFeedId(), Feeds.activeFeedIsCat());
|
Feeds.getActiveFeedId(), Feeds.activeFeedIsCat());
|
||||||
|
|
||||||
if (rv) Feeds.viewfeed({feed: rv[0], is_cat: rv[1], delayed: true})
|
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');
|
moveToPost('next');
|
||||||
};
|
};
|
||||||
hotkey_actions["prev_article"] = function() {
|
hotkey_actions["prev_article"] = function () {
|
||||||
moveToPost('prev');
|
moveToPost('prev');
|
||||||
};
|
};
|
||||||
hotkey_actions["next_article_noscroll"] = function() {
|
hotkey_actions["next_article_noscroll"] = function () {
|
||||||
moveToPost('next', true);
|
moveToPost('next', true);
|
||||||
};
|
};
|
||||||
hotkey_actions["prev_article_noscroll"] = function() {
|
hotkey_actions["prev_article_noscroll"] = function () {
|
||||||
moveToPost('prev', true);
|
moveToPost('prev', true);
|
||||||
};
|
};
|
||||||
hotkey_actions["next_article_noexpand"] = function() {
|
hotkey_actions["next_article_noexpand"] = function () {
|
||||||
moveToPost('next', true, true);
|
moveToPost('next', true, true);
|
||||||
};
|
};
|
||||||
hotkey_actions["prev_article_noexpand"] = function() {
|
hotkey_actions["prev_article_noexpand"] = function () {
|
||||||
moveToPost('prev', true, true);
|
moveToPost('prev', true, true);
|
||||||
};
|
};
|
||||||
hotkey_actions["search_dialog"] = function() {
|
hotkey_actions["search_dialog"] = function () {
|
||||||
search();
|
search();
|
||||||
};
|
};
|
||||||
hotkey_actions["toggle_mark"] = function() {
|
hotkey_actions["toggle_mark"] = function () {
|
||||||
selectionToggleMarked();
|
selectionToggleMarked();
|
||||||
};
|
};
|
||||||
hotkey_actions["toggle_publ"] = function() {
|
hotkey_actions["toggle_publ"] = function () {
|
||||||
selectionTogglePublished();
|
selectionTogglePublished();
|
||||||
};
|
};
|
||||||
hotkey_actions["toggle_unread"] = function() {
|
hotkey_actions["toggle_unread"] = function () {
|
||||||
selectionToggleUnread({no_error: 1});
|
selectionToggleUnread({no_error: 1});
|
||||||
};
|
};
|
||||||
hotkey_actions["edit_tags"] = function() {
|
hotkey_actions["edit_tags"] = function () {
|
||||||
const id = getActiveArticleId();
|
const id = getActiveArticleId();
|
||||||
if (id) {
|
if (id) {
|
||||||
editArticleTags(id);
|
editArticleTags(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
hotkey_actions["open_in_new_window"] = function() {
|
hotkey_actions["open_in_new_window"] = function () {
|
||||||
if (getActiveArticleId()) {
|
if (getActiveArticleId()) {
|
||||||
Article.openArticleInNewWindow(getActiveArticleId());
|
Article.openArticleInNewWindow(getActiveArticleId());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
hotkey_actions["catchup_below"] = function() {
|
hotkey_actions["catchup_below"] = function () {
|
||||||
catchupRelativeToArticle(1);
|
catchupRelativeToArticle(1);
|
||||||
};
|
};
|
||||||
hotkey_actions["catchup_above"] = function() {
|
hotkey_actions["catchup_above"] = function () {
|
||||||
catchupRelativeToArticle(0);
|
catchupRelativeToArticle(0);
|
||||||
};
|
};
|
||||||
hotkey_actions["article_scroll_down"] = function() {
|
hotkey_actions["article_scroll_down"] = function () {
|
||||||
scrollArticle(40);
|
scrollArticle(40);
|
||||||
};
|
};
|
||||||
hotkey_actions["article_scroll_up"] = function() {
|
hotkey_actions["article_scroll_up"] = function () {
|
||||||
scrollArticle(-40);
|
scrollArticle(-40);
|
||||||
};
|
};
|
||||||
hotkey_actions["close_article"] = function() {
|
hotkey_actions["close_article"] = function () {
|
||||||
if (App.isCombinedMode()) {
|
if (App.isCombinedMode()) {
|
||||||
cdmCollapseActive();
|
cdmCollapseActive();
|
||||||
} else {
|
} else {
|
||||||
Article.closeArticlePanel();
|
Article.closeArticlePanel();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
hotkey_actions["email_article"] = function() {
|
hotkey_actions["email_article"] = function () {
|
||||||
if (typeof emailArticle != "undefined") {
|
if (typeof emailArticle != "undefined") {
|
||||||
emailArticle();
|
emailArticle();
|
||||||
} else if (typeof mailtoArticle != "undefined") {
|
} else if (typeof mailtoArticle != "undefined") {
|
||||||
|
@ -280,37 +340,37 @@ function init_hotkey_actions() {
|
||||||
alert(__("Please enable mail plugin first."));
|
alert(__("Please enable mail plugin first."));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
hotkey_actions["select_all"] = function() {
|
hotkey_actions["select_all"] = function () {
|
||||||
selectArticles('all');
|
selectArticles('all');
|
||||||
};
|
};
|
||||||
hotkey_actions["select_unread"] = function() {
|
hotkey_actions["select_unread"] = function () {
|
||||||
selectArticles('unread');
|
selectArticles('unread');
|
||||||
};
|
};
|
||||||
hotkey_actions["select_marked"] = function() {
|
hotkey_actions["select_marked"] = function () {
|
||||||
selectArticles('marked');
|
selectArticles('marked');
|
||||||
};
|
};
|
||||||
hotkey_actions["select_published"] = function() {
|
hotkey_actions["select_published"] = function () {
|
||||||
selectArticles('published');
|
selectArticles('published');
|
||||||
};
|
};
|
||||||
hotkey_actions["select_invert"] = function() {
|
hotkey_actions["select_invert"] = function () {
|
||||||
selectArticles('invert');
|
selectArticles('invert');
|
||||||
};
|
};
|
||||||
hotkey_actions["select_none"] = function() {
|
hotkey_actions["select_none"] = function () {
|
||||||
selectArticles('none');
|
selectArticles('none');
|
||||||
};
|
};
|
||||||
hotkey_actions["feed_refresh"] = function() {
|
hotkey_actions["feed_refresh"] = function () {
|
||||||
if (Feeds.getActiveFeedId() != undefined) {
|
if (Feeds.getActiveFeedId() != undefined) {
|
||||||
Feeds.viewfeed({feed: Feeds.getActiveFeedId(), is_cat: Feeds.activeFeedIsCat()});
|
Feeds.viewfeed({feed: Feeds.getActiveFeedId(), is_cat: Feeds.activeFeedIsCat()});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
hotkey_actions["feed_unhide_read"] = function() {
|
hotkey_actions["feed_unhide_read"] = function () {
|
||||||
Feeds.toggleDispRead();
|
Feeds.toggleDispRead();
|
||||||
};
|
};
|
||||||
hotkey_actions["feed_subscribe"] = function() {
|
hotkey_actions["feed_subscribe"] = function () {
|
||||||
quickAddFeed();
|
quickAddFeed();
|
||||||
};
|
};
|
||||||
hotkey_actions["feed_debug_update"] = function() {
|
hotkey_actions["feed_debug_update"] = function () {
|
||||||
if (!Feeds.activeFeedIsCat() && parseInt(Feeds.getActiveFeedId()) > 0) {
|
if (!Feeds.activeFeedIsCat() && parseInt(Feeds.getActiveFeedId()) > 0) {
|
||||||
window.open("backend.php?op=feeds&method=update_debugger&feed_id=" + Feeds.getActiveFeedId() +
|
window.open("backend.php?op=feeds&method=update_debugger&feed_id=" + Feeds.getActiveFeedId() +
|
||||||
"&csrf_token=" + getInitParam("csrf_token"));
|
"&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});
|
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())
|
if (Feeds.activeFeedIsCat())
|
||||||
alert(__("You can't edit this kind of feed."));
|
alert(__("You can't edit this kind of feed."));
|
||||||
else
|
else
|
||||||
editFeed(Feeds.getActiveFeedId());
|
editFeed(Feeds.getActiveFeedId());
|
||||||
};
|
};
|
||||||
hotkey_actions["feed_catchup"] = function() {
|
hotkey_actions["feed_catchup"] = function () {
|
||||||
if (Feeds.getActiveFeedId() != undefined) {
|
if (Feeds.getActiveFeedId() != undefined) {
|
||||||
Feeds.catchupCurrentFeed();
|
Feeds.catchupCurrentFeed();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
hotkey_actions["feed_reverse"] = function() {
|
hotkey_actions["feed_reverse"] = function () {
|
||||||
reverseHeadlineOrder();
|
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"}, () => {
|
xhrPost("backend.php", {op: "rpc", method: "togglepref", key: "VFEED_GROUP_BY_FEED"}, () => {
|
||||||
Feeds.viewCurrentFeed();
|
Feeds.viewCurrentFeed();
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
hotkey_actions["catchup_all"] = function() {
|
hotkey_actions["catchup_all"] = function () {
|
||||||
Feeds.catchupAllFeeds();
|
Feeds.catchupAllFeeds();
|
||||||
};
|
};
|
||||||
hotkey_actions["cat_toggle_collapse"] = function() {
|
hotkey_actions["cat_toggle_collapse"] = function () {
|
||||||
if (Feeds.activeFeedIsCat()) {
|
if (Feeds.activeFeedIsCat()) {
|
||||||
dijit.byId("feedTree").collapseCat(Feeds.getActiveFeedId());
|
dijit.byId("feedTree").collapseCat(Feeds.getActiveFeedId());
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
hotkey_actions["goto_all"] = function() {
|
hotkey_actions["goto_all"] = function () {
|
||||||
Feeds.viewfeed({feed: -4});
|
Feeds.viewfeed({feed: -4});
|
||||||
};
|
};
|
||||||
hotkey_actions["goto_fresh"] = function() {
|
hotkey_actions["goto_fresh"] = function () {
|
||||||
Feeds.viewfeed({feed: -3});
|
Feeds.viewfeed({feed: -3});
|
||||||
};
|
};
|
||||||
hotkey_actions["goto_marked"] = function() {
|
hotkey_actions["goto_marked"] = function () {
|
||||||
Feeds.viewfeed({feed: -1});
|
Feeds.viewfeed({feed: -1});
|
||||||
};
|
};
|
||||||
hotkey_actions["goto_published"] = function() {
|
hotkey_actions["goto_published"] = function () {
|
||||||
Feeds.viewfeed({feed: -2});
|
Feeds.viewfeed({feed: -2});
|
||||||
};
|
};
|
||||||
hotkey_actions["goto_tagcloud"] = function() {
|
hotkey_actions["goto_tagcloud"] = function () {
|
||||||
Utils.displayDlg(__("Tag cloud"), "printTagCloud");
|
Utils.displayDlg(__("Tag cloud"), "printTagCloud");
|
||||||
};
|
};
|
||||||
hotkey_actions["goto_prefs"] = function() {
|
hotkey_actions["goto_prefs"] = function () {
|
||||||
gotoPreferences();
|
gotoPreferences();
|
||||||
};
|
};
|
||||||
hotkey_actions["select_article_cursor"] = function() {
|
hotkey_actions["select_article_cursor"] = function () {
|
||||||
const id = getArticleUnderPointer();
|
const id = getArticleUnderPointer();
|
||||||
if (id) {
|
if (id) {
|
||||||
const row = $("RROW-" + id);
|
const row = $("RROW-" + id);
|
||||||
|
@ -389,16 +448,16 @@ function init_hotkey_actions() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
hotkey_actions["create_label"] = function() {
|
hotkey_actions["create_label"] = function () {
|
||||||
addLabel();
|
addLabel();
|
||||||
};
|
};
|
||||||
hotkey_actions["create_filter"] = function() {
|
hotkey_actions["create_filter"] = function () {
|
||||||
quickAddFilter();
|
quickAddFilter();
|
||||||
};
|
};
|
||||||
hotkey_actions["collapse_sidebar"] = function() {
|
hotkey_actions["collapse_sidebar"] = function () {
|
||||||
Feeds.viewCurrentFeed();
|
Feeds.viewCurrentFeed();
|
||||||
};
|
};
|
||||||
hotkey_actions["toggle_embed_original"] = function() {
|
hotkey_actions["toggle_embed_original"] = function () {
|
||||||
if (typeof embedOriginalArticle != "undefined") {
|
if (typeof embedOriginalArticle != "undefined") {
|
||||||
if (getActiveArticleId())
|
if (getActiveArticleId())
|
||||||
embedOriginalArticle(getActiveArticleId());
|
embedOriginalArticle(getActiveArticleId());
|
||||||
|
@ -406,7 +465,7 @@ function init_hotkey_actions() {
|
||||||
alert(__("Please enable embed_original plugin first."));
|
alert(__("Please enable embed_original plugin first."));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
hotkey_actions["toggle_widescreen"] = function() {
|
hotkey_actions["toggle_widescreen"] = function () {
|
||||||
if (!App.isCombinedMode()) {
|
if (!App.isCombinedMode()) {
|
||||||
_widescreen_mode = !_widescreen_mode;
|
_widescreen_mode = !_widescreen_mode;
|
||||||
|
|
||||||
|
@ -419,10 +478,10 @@ function init_hotkey_actions() {
|
||||||
alert(__("Widescreen is not available in combined mode."));
|
alert(__("Widescreen is not available in combined mode."));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
hotkey_actions["help_dialog"] = function() {
|
hotkey_actions["help_dialog"] = function () {
|
||||||
Utils.helpDialog("main");
|
Utils.helpDialog("main");
|
||||||
};
|
};
|
||||||
hotkey_actions["toggle_combined_mode"] = function() {
|
hotkey_actions["toggle_combined_mode"] = function () {
|
||||||
notify_progress("Loading, please wait...");
|
notify_progress("Loading, please wait...");
|
||||||
|
|
||||||
const value = App.isCombinedMode() ? "false" : "true";
|
const value = App.isCombinedMode() ? "false" : "true";
|
||||||
|
@ -435,79 +494,16 @@ function init_hotkey_actions() {
|
||||||
Feeds.viewCurrentFeed();
|
Feeds.viewCurrentFeed();
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
hotkey_actions["toggle_cdm_expanded"] = function() {
|
hotkey_actions["toggle_cdm_expanded"] = function () {
|
||||||
notify_progress("Loading, please wait...");
|
notify_progress("Loading, please wait...");
|
||||||
|
|
||||||
const value = getInitParam("cdm_expanded") ? "false" : "true";
|
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"));
|
setInitParam("cdm_expanded", !getInitParam("cdm_expanded"));
|
||||||
Feeds.viewCurrentFeed();
|
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) {
|
function quickMenuGo(opid) {
|
||||||
|
@ -584,33 +580,10 @@ function quickMenuGo(opid) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function viewModeChanged() {
|
|
||||||
cache_clear();
|
|
||||||
return Feeds.viewCurrentFeed('');
|
|
||||||
}
|
|
||||||
|
|
||||||
function inPreferences() {
|
function inPreferences() {
|
||||||
return false;
|
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() {
|
function update_random_feed() {
|
||||||
console.log("in update_random_feed");
|
console.log("in update_random_feed");
|
||||||
|
|
||||||
|
|
187
js/viewfeed.js
187
js/viewfeed.js
|
@ -13,7 +13,29 @@ let loaded_article_ids = [];
|
||||||
let current_first_id = 0;
|
let current_first_id = 0;
|
||||||
let last_search_query;
|
let last_search_query;
|
||||||
|
|
||||||
let has_storage = 'sessionStorage' in window && window['sessionStorage'] !== null;
|
const ArticleCache = {
|
||||||
|
has_storage: 'sessionStorage' in window && window['sessionStorage'] !== null,
|
||||||
|
set: function(id, obj) {
|
||||||
|
if (this.has_storage)
|
||||||
|
try {
|
||||||
|
sessionStorage["article:" + id] = obj;
|
||||||
|
} catch (e) {
|
||||||
|
sessionStorage.clear();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
get: function(id) {
|
||||||
|
if (this.has_storage)
|
||||||
|
return sessionStorage["article:" + id];
|
||||||
|
},
|
||||||
|
clear: function() {
|
||||||
|
if (this.has_storage)
|
||||||
|
sessionStorage.clear();
|
||||||
|
},
|
||||||
|
del: function(id) {
|
||||||
|
if (this.has_storage)
|
||||||
|
sessionStorage.removeItem("article:" + id);
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
const Article = {
|
const Article = {
|
||||||
closeArticlePanel: function () {
|
closeArticlePanel: function () {
|
||||||
|
@ -58,6 +80,62 @@ const Article = {
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
view: function(id, noexpand) {
|
||||||
|
setActiveArticleId(id);
|
||||||
|
|
||||||
|
if (!noexpand) {
|
||||||
|
console.log("loading article", id);
|
||||||
|
|
||||||
|
const cids = [];
|
||||||
|
|
||||||
|
/* only request uncached articles */
|
||||||
|
|
||||||
|
getRelativePostIds(id).each((n) => {
|
||||||
|
if (!ArticleCache.get(n))
|
||||||
|
cids.push(n);
|
||||||
|
});
|
||||||
|
|
||||||
|
const cached_article = ArticleCache.get(id);
|
||||||
|
|
||||||
|
if (cached_article) {
|
||||||
|
console.log('rendering cached', id);
|
||||||
|
this.renderArticle(cached_article);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
xhrPost("backend.php", {op: "article", method: "view", id: id, cids: cids.toString()}, (transport) => {
|
||||||
|
try {
|
||||||
|
const reply = Utils.handleRpcJson(transport);
|
||||||
|
|
||||||
|
if (reply) {
|
||||||
|
|
||||||
|
reply.each(function (article) {
|
||||||
|
if (getActiveArticleId() == article['id']) {
|
||||||
|
Article.renderArticle(article['content']);
|
||||||
|
}
|
||||||
|
ArticleCache.set(article['id'], article['content']);
|
||||||
|
});
|
||||||
|
|
||||||
|
} else {
|
||||||
|
console.error("Invalid object received: " + transport.responseText);
|
||||||
|
|
||||||
|
Article.renderArticle("<div class='whiteBox'>" +
|
||||||
|
__('Could not display article (invalid object received - see error console for details)') + "</div>");
|
||||||
|
}
|
||||||
|
|
||||||
|
//const unread_in_buffer = $$("#headlines-frame > div[id*=RROW][class*=Unread]").length;
|
||||||
|
//request_counters(unread_in_buffer == 0);
|
||||||
|
|
||||||
|
notify("");
|
||||||
|
|
||||||
|
} catch (e) {
|
||||||
|
exception_error(e);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
const Headlines = {
|
const Headlines = {
|
||||||
|
@ -409,67 +487,23 @@ const Headlines = {
|
||||||
|
|
||||||
notify("");
|
notify("");
|
||||||
},
|
},
|
||||||
|
reverseHeadlineOrder: function() {
|
||||||
|
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 view(id, noexpand) {
|
|
||||||
setActiveArticleId(id);
|
|
||||||
|
|
||||||
if (!noexpand) {
|
|
||||||
console.log("loading article", id);
|
|
||||||
|
|
||||||
const cids = [];
|
|
||||||
|
|
||||||
/* only request uncached articles */
|
|
||||||
|
|
||||||
getRelativePostIds(id).each((n) => {
|
|
||||||
if (!cache_get("article:" + n))
|
|
||||||
cids.push(n);
|
|
||||||
});
|
|
||||||
|
|
||||||
const cached_article = cache_get("article:" + id);
|
|
||||||
|
|
||||||
if (cached_article) {
|
|
||||||
console.log('rendering cached', id);
|
|
||||||
Article.renderArticle(cached_article);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
xhrPost("backend.php", {op: "article", method: "view", id: id, cids: cids.toString()}, (transport) => {
|
|
||||||
try {
|
|
||||||
const reply = Utils.handleRpcJson(transport);
|
|
||||||
|
|
||||||
if (reply) {
|
|
||||||
|
|
||||||
reply.each(function(article) {
|
|
||||||
if (getActiveArticleId() == article['id']) {
|
|
||||||
Article.renderArticle(article['content']);
|
|
||||||
}
|
|
||||||
//cids_requested.remove(article['id']);
|
|
||||||
|
|
||||||
cache_set("article:" + article['id'], article['content']);
|
|
||||||
});
|
|
||||||
|
|
||||||
} else {
|
|
||||||
console.error("Invalid object received: " + transport.responseText);
|
|
||||||
|
|
||||||
Article.renderArticle("<div class='whiteBox'>" +
|
|
||||||
__('Could not display article (invalid object received - see error console for details)') + "</div>");
|
|
||||||
}
|
|
||||||
|
|
||||||
//const unread_in_buffer = $$("#headlines-frame > div[id*=RROW][class*=Unread]").length;
|
|
||||||
//request_counters(unread_in_buffer == 0);
|
|
||||||
|
|
||||||
notify("");
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
exception_error(e);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function toggleMark(id, client_only) {
|
function toggleMark(id, client_only) {
|
||||||
const query = { op: "rpc", id: id, method: "mark" };
|
const query = { op: "rpc", id: id, method: "mark" };
|
||||||
const row = $("RROW-" + id);
|
const row = $("RROW-" + id);
|
||||||
|
@ -576,7 +610,7 @@ function moveToPost(mode, noscroll, noexpand) {
|
||||||
|
|
||||||
} else if (next_id) {
|
} else if (next_id) {
|
||||||
correctHeadlinesOffset(next_id);
|
correctHeadlinesOffset(next_id);
|
||||||
view(next_id, noexpand);
|
Article.view(next_id, noexpand);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -601,7 +635,7 @@ function moveToPost(mode, noscroll, noexpand) {
|
||||||
|
|
||||||
} else if (prev_id) {
|
} else if (prev_id) {
|
||||||
correctHeadlinesOffset(prev_id);
|
correctHeadlinesOffset(prev_id);
|
||||||
view(prev_id, noexpand);
|
Article.view(prev_id, noexpand);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -918,7 +952,7 @@ function archiveSelection() {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let i = 0; i < rows.length; i++) {
|
for (let i = 0; i < rows.length; i++) {
|
||||||
cache_delete("article:" + rows[i]);
|
ArticleCache.del(rows[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
const query = {op: "rpc", method: op, ids: rows.toString()};
|
const query = {op: "rpc", method: op, ids: rows.toString()};
|
||||||
|
@ -1224,7 +1258,7 @@ function hlClicked(event, id) {
|
||||||
Article.openArticleInNewWindow(id);
|
Article.openArticleInNewWindow(id);
|
||||||
setActiveArticleId(id);
|
setActiveArticleId(id);
|
||||||
} else {
|
} else {
|
||||||
view(id);
|
Article.view(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -1505,31 +1539,6 @@ function initHeadlinesMenu() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function cache_set(id, obj) {
|
|
||||||
//console.log("cache_set: " + id);
|
|
||||||
if (has_storage)
|
|
||||||
try {
|
|
||||||
sessionStorage[id] = obj;
|
|
||||||
} catch (e) {
|
|
||||||
sessionStorage.clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function cache_get(id) {
|
|
||||||
if (has_storage)
|
|
||||||
return sessionStorage[id];
|
|
||||||
}
|
|
||||||
|
|
||||||
function cache_clear() {
|
|
||||||
if (has_storage)
|
|
||||||
sessionStorage.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
function cache_delete(id) {
|
|
||||||
if (has_storage)
|
|
||||||
sessionStorage.removeItem(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
// noinspection JSUnusedGlobalSymbols
|
// noinspection JSUnusedGlobalSymbols
|
||||||
function setSelectionScore() {
|
function setSelectionScore() {
|
||||||
const ids = getSelectedArticleIds2();
|
const ids = getSelectedArticleIds2();
|
||||||
|
|
|
@ -19,7 +19,7 @@ function editArticleNote(id) {
|
||||||
dialog.hide();
|
dialog.hide();
|
||||||
|
|
||||||
if (reply) {
|
if (reply) {
|
||||||
cache_delete("article:" + id);
|
ArticleCache.del(id);
|
||||||
|
|
||||||
var elem = $("POSTNOTE-" + id);
|
var elem = $("POSTNOTE-" + id);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue