diff --git a/classes/feeds.php b/classes/feeds.php index 93e44e3bb..63366fd0d 100755 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -388,7 +388,7 @@ class Feeds extends Handler_Protected { $vgroup_last_feed = $feed_id; - $vf_catchup_link = "".__('mark feed as read').""; + $vf_catchup_link = "".__('mark feed as read').""; $reply['content'] .= "
". "
$feed_icon_img
". @@ -481,7 +481,7 @@ class Feeds extends Handler_Protected { $vgroup_last_feed = $feed_id; - $vf_catchup_link = "".__('mark feed as read').""; + $vf_catchup_link = "".__('mark feed as read').""; $feed_icon_src = Feeds::getFeedIcon($feed_id); $feed_icon_img = ""; diff --git a/index.php b/index.php index 48bd559f8..820db9073 100644 --- a/index.php +++ b/index.php @@ -207,16 +207,16 @@ -
+
-
+
-
+
-
+
diff --git a/js/FeedTree.js b/js/FeedTree.js index 21a19bf85..55eb3dc30 100755 --- a/js/FeedTree.js +++ b/js/FeedTree.js @@ -41,7 +41,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"], menu.addChild(new dijit.MenuItem({ label: __("Mark as read"), onClick: function() { - catchupFeed(this.getParent().row_id); + Feeds.catchupFeed(this.getParent().row_id); }})); if (bare_id > 0) { @@ -69,7 +69,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"], menu.addChild(new dijit.MenuItem({ label: __("Mark as read"), onClick: function() { - catchupFeed(this.getParent().row_id, true); + Feeds.catchupFeed(this.getParent().row_id, true); }})); menu.addChild(new dijit.MenuItem({ diff --git a/js/feedlist.js b/js/feedlist.js index b808451b4..c2a0e816d 100644 --- a/js/feedlist.js +++ b/js/feedlist.js @@ -69,23 +69,23 @@ const Feeds = { continue; } - /*if (getFeedUnread(id, (kind == "cat")) != ctr || + /*if (Feeds.getFeedUnread(id, (kind == "cat")) != ctr || (kind == "cat")) { }*/ - setFeedUnread(id, (kind == "cat"), ctr); - setFeedValue(id, (kind == "cat"), 'auxcounter', auxctr); + Feeds.setFeedUnread(id, (kind == "cat"), ctr); + Feeds.setFeedValue(id, (kind == "cat"), 'auxcounter', auxctr); if (kind != "cat") { - setFeedValue(id, false, 'error', error); - setFeedValue(id, false, 'updated', updated); + Feeds.setFeedValue(id, false, 'error', error); + Feeds.setFeedValue(id, false, 'updated', updated); if (id > 0) { if (has_img) { - setFeedIcon(id, false, + Feeds.setFeedIcon(id, false, getInitParam("icons_url") + "/" + id + ".ico?" + has_img); } else { - setFeedIcon(id, false, 'images/blank_icon.gif'); + Feeds.setFeedIcon(id, false, 'images/blank_icon.gif'); } } } @@ -104,7 +104,7 @@ const Feeds = { }, openNextUnreadFeed: function() { const is_cat = Feeds.activeFeedIsCat(); - const nuf = getNextUnreadFeed(Feeds.getActiveFeedId(), is_cat); + const nuf = Feeds.getNextUnreadFeed(Feeds.getActiveFeedId(), is_cat); if (nuf) this.viewfeed({feed: nuf, is_cat: is_cat}); }, collapseFeedlist: function() { @@ -129,13 +129,13 @@ const Feeds = { counters_last_request = timestamp; - let query = {op: "rpc", method: "getAllCounters", seq: App.next_seq()}; + let query = {op: "rpc", method: "getAllCounters", seq: Utils.next_seq()}; if (!force) query.last_article_id = getInitParam("last_article_id"); xhrPost("backend.php", query, (transport) => { - App.handleRpcJson(transport); + Utils.handleRpcJson(transport); }); } else { @@ -357,7 +357,7 @@ const Feeds = { Form.enable("main_toolbar_form"); if (!delayed) - if (!setFeedExpandoIcon(feed, is_cat, + if (!Feeds.setFeedExpandoIcon(feed, is_cat, (is_cat) ? 'images/indicator_tiny.gif' : 'images/indicator_white.gif')) notify_progress("Loading, please wait...", true); @@ -377,7 +377,7 @@ const Feeds = { catchupBatchedArticles(() => { xhrPost("backend.php", query, (transport) => { try { - setFeedExpandoIcon(feed, is_cat, 'images/blank_icon.gif'); + Feeds.setFeedExpandoIcon(feed, is_cat, 'images/blank_icon.gif'); Headlines.onLoaded(transport, offset); PluginHost.run(PluginHost.HOOK_FEED_LOADED, [feed, is_cat]); } catch (e) { @@ -404,221 +404,207 @@ const Feeds = { } }, decrementFeedCounter: function(feed, is_cat) { - let ctr = getFeedUnread(feed, is_cat); + let ctr = Feeds.getFeedUnread(feed, is_cat); if (ctr > 0) { - setFeedUnread(feed, is_cat, ctr - 1); + Feeds.setFeedUnread(feed, is_cat, ctr - 1); App.global_unread -= 1; App.updateTitle(); if (!is_cat) { - const cat = parseInt(getFeedCategory(feed)); + const cat = parseInt(Feeds.getFeedCategory(feed)); if (!isNaN(cat)) { - ctr = getFeedUnread(cat, true); + ctr = Feeds.getFeedUnread(cat, true); if (ctr > 0) { - setFeedUnread(cat, true, ctr - 1); + Feeds.setFeedUnread(cat, true, ctr - 1); } } } } - } -}; + }, + catchupFeed: function(feed, is_cat, mode) { + if (is_cat == undefined) is_cat = false; -function getFeedUnread(feed, is_cat) { - try { - const tree = dijit.byId("feedTree"); + let str = false; - if (tree && tree.model) - return tree.model.getFeedUnread(feed, is_cat); - - } catch (e) { - // - } - - return -1; -} - -function getFeedCategory(feed) { - try { - const tree = dijit.byId("feedTree"); - - if (tree && tree.model) - return tree.getFeedCategory(feed); - - } catch (e) { - // - } - - return false; -} - -function getFeedName(feed, is_cat) { - - if (isNaN(feed)) return feed; // it's a tag - - const tree = dijit.byId("feedTree"); - - if (tree && tree.model) - return tree.model.getFeedValue(feed, is_cat, 'name'); -} - -/* function getFeedValue(feed, is_cat, key) { - try { - const tree = dijit.byId("feedTree"); - - if (tree && tree.model) - return tree.model.getFeedValue(feed, is_cat, key); - - } catch (e) { - // - } - return ''; -} */ - -function setFeedUnread(feed, is_cat, unread) { - const tree = dijit.byId("feedTree"); - - if (tree && tree.model) - return tree.model.setFeedUnread(feed, is_cat, unread); -} - -function setFeedValue(feed, is_cat, key, value) { - try { - const tree = dijit.byId("feedTree"); - - if (tree && tree.model) - return tree.model.setFeedValue(feed, is_cat, key, value); - - } catch (e) { - // - } -} - -function setFeedIcon(feed, is_cat, src) { - const tree = dijit.byId("feedTree"); - - if (tree) return tree.setFeedIcon(feed, is_cat, src); -} - -function setFeedExpandoIcon(feed, is_cat, src) { - const tree = dijit.byId("feedTree"); - - if (tree) return tree.setFeedExpandoIcon(feed, is_cat, src); - - return false; -} - -function getNextUnreadFeed(feed, is_cat) { - const tree = dijit.byId("feedTree"); - const nuf = tree.model.getNextUnreadFeed(feed, is_cat); - - if (nuf) - return tree.model.store.getValue(nuf, 'bare_id'); -} - -function catchupCurrentFeed(mode) { - catchupFeed(Feeds.getActiveFeedId(), Feeds.activeFeedIsCat(), mode); -} - -function catchupFeedInGroup(id) { - const title = getFeedName(id); - - const str = __("Mark all articles in %s as read?").replace("%s", title); - - if (getInitParam("confirm_feed_catchup") != 1 || confirm(str)) { - - const rows = $$("#headlines-frame > div[id*=RROW][data-orig-feed-id='"+id+"']"); - - if (rows.length > 0) { - - rows.each(function (row) { - row.removeClassName("Unread"); - - if (row.getAttribute("data-article-id") != getActiveArticleId()) { - new Effect.Fade(row, {duration: 0.5}); - } - - }); - - const feedTitles = $$("#headlines-frame > div[class='feed-title']"); - - for (let i = 0; i < feedTitles.length; i++) { - if (feedTitles[i].getAttribute("data-feed-id") == id) { - - if (i < feedTitles.length - 1) { - new Effect.Fade(feedTitles[i], {duration: 0.5}); - } - - break; - } - } - - Headlines.updateFloatingTitle(true); + switch (mode) { + case "1day": + str = __("Mark %w in %s older than 1 day as read?"); + break; + case "1week": + str = __("Mark %w in %s older than 1 week as read?"); + break; + case "2week": + str = __("Mark %w in %s older than 2 weeks as read?"); + break; + default: + str = __("Mark %w in %s as read?"); } + const mark_what = last_search_query && last_search_query[0] ? __("search results") : __("all articles"); + const fn = Feeds.getFeedName(feed, is_cat); + + str = str.replace("%s", fn) + .replace("%w", mark_what); + + if (getInitParam("confirm_feed_catchup") == 1 && !confirm(str)) { + return; + } + + const catchup_query = { + op: 'rpc', method: 'catchupFeed', feed_id: feed, + is_cat: is_cat, mode: mode, search_query: last_search_query[0], + search_lang: last_search_query[1] + }; + notify_progress("Loading, please wait...", true); - xhrPost("backend.php", { op: "rpc", method: "catchupFeed", feed_id: id, is_cat: false}, (transport) => { - App.handleRpcJson(transport); - }); - } -} + xhrPost("backend.php", catchup_query, (transport) => { + Utils.handleRpcJson(transport); -function catchupFeed(feed, is_cat, mode) { - if (is_cat == undefined) is_cat = false; + const show_next_feed = getInitParam("on_catchup_show_next_feed") == "1"; - let str = false; + if (show_next_feed) { + const nuf = Feeds.getNextUnreadFeed(feed, is_cat); - switch (mode) { - case "1day": - str = __("Mark %w in %s older than 1 day as read?"); - break; - case "1week": - str = __("Mark %w in %s older than 1 week as read?"); - break; - case "2week": - str = __("Mark %w in %s older than 2 weeks as read?"); - break; - default: - str = __("Mark %w in %s as read?"); - } - - const mark_what = last_search_query && last_search_query[0] ? __("search results") : __("all articles"); - const fn = getFeedName(feed, is_cat); - - str = str.replace("%s", fn) - .replace("%w", mark_what); - - if (getInitParam("confirm_feed_catchup") == 1 && !confirm(str)) { - return; - } - - const catchup_query = {op: 'rpc', method: 'catchupFeed', feed_id: feed, - is_cat: is_cat, mode: mode, search_query: last_search_query[0], - search_lang: last_search_query[1]}; - - notify_progress("Loading, please wait...", true); - - xhrPost("backend.php", catchup_query, (transport) => { - App.handleRpcJson(transport); - - const show_next_feed = getInitParam("on_catchup_show_next_feed") == "1"; - - if (show_next_feed) { - const nuf = getNextUnreadFeed(feed, is_cat); - - if (nuf) { - Feeds.viewfeed({feed: nuf, is_cat: is_cat}); + if (nuf) { + this.viewfeed({feed: nuf, is_cat: is_cat}); + } + } else if (feed == Feeds.getActiveFeedId() && is_cat == Feeds.activeFeedIsCat()) { + this.viewCurrentFeed(); } - } else if (feed == Feeds.getActiveFeedId() && is_cat == Feeds.activeFeedIsCat()) { - Feeds.viewCurrentFeed(); + + notify(""); + }); + }, + catchupCurrentFeed: function(mode) { + Feeds.catchupFeed(Feeds.getActiveFeedId(), Feeds.activeFeedIsCat(), mode); + }, + catchupFeedInGroup: function(id) { + const title = Feeds.getFeedName(id); + + const str = __("Mark all articles in %s as read?").replace("%s", title); + + if (getInitParam("confirm_feed_catchup") != 1 || confirm(str)) { + + const rows = $$("#headlines-frame > div[id*=RROW][data-orig-feed-id='" + id + "']"); + + if (rows.length > 0) { + + rows.each(function (row) { + row.removeClassName("Unread"); + + if (row.getAttribute("data-article-id") != getActiveArticleId()) { + new Effect.Fade(row, {duration: 0.5}); + } + + }); + + const feedTitles = $$("#headlines-frame > div[class='feed-title']"); + + for (let i = 0; i < feedTitles.length; i++) { + if (feedTitles[i].getAttribute("data-feed-id") == id) { + + if (i < feedTitles.length - 1) { + new Effect.Fade(feedTitles[i], {duration: 0.5}); + } + + break; + } + } + + Headlines.updateFloatingTitle(true); + } + + notify_progress("Loading, please wait...", true); + + xhrPost("backend.php", {op: "rpc", method: "catchupFeed", feed_id: id, is_cat: false}, (transport) => { + Utils.handleRpcJson(transport); + }); + } + }, + getFeedUnread: function(feed, is_cat) { + try { + const tree = dijit.byId("feedTree"); + + if (tree && tree.model) + return tree.model.getFeedUnread(feed, is_cat); + + } catch (e) { + // } - notify(""); - }); -} + return -1; + }, + getFeedCategory: function(feed) { + try { + const tree = dijit.byId("feedTree"); + if (tree && tree.model) + return tree.getFeedCategory(feed); + } catch (e) { + // + } + return false; + }, + getFeedName: function(feed, is_cat) { + if (isNaN(feed)) return feed; // it's a tag + + const tree = dijit.byId("feedTree"); + + if (tree && tree.model) + return tree.model.getFeedValue(feed, is_cat, 'name'); + }, + setFeedUnread: function(feed, is_cat, unread) { + const tree = dijit.byId("feedTree"); + + if (tree && tree.model) + return tree.model.setFeedUnread(feed, is_cat, unread); + }, + setFeedValue: function(feed, is_cat, key, value) { + try { + const tree = dijit.byId("feedTree"); + + if (tree && tree.model) + return tree.model.setFeedValue(feed, is_cat, key, value); + + } catch (e) { + // + } + }, + getFeedValue: function(feed, is_cat, key) { + try { + const tree = dijit.byId("feedTree"); + + if (tree && tree.model) + return tree.model.getFeedValue(feed, is_cat, key); + + } catch (e) { + // + } + return ''; + }, + setFeedIcon: function(feed, is_cat, src) { + const tree = dijit.byId("feedTree"); + + if (tree) return tree.setFeedIcon(feed, is_cat, src); + }, + setFeedExpandoIcon: function(feed, is_cat, src) { + const tree = dijit.byId("feedTree"); + + if (tree) return tree.setFeedExpandoIcon(feed, is_cat, src); + + return false; + }, + getNextUnreadFeed: function(feed, is_cat) { + const tree = dijit.byId("feedTree"); + const nuf = tree.model.getNextUnreadFeed(feed, is_cat); + + if (nuf) + return tree.model.store.getValue(nuf, 'bare_id'); + } +}; diff --git a/js/functions.js b/js/functions.js index d9778ad22..174dbebfe 100755 --- a/js/functions.js +++ b/js/functions.js @@ -57,6 +57,14 @@ Array.prototype.remove = function(s) { }; const Utils = { + _rpc_seq: 0, + next_seq: function() { + this._rpc_seq += 1; + return this._rpc_seq; + }, + get_seq: function() { + return this._rpc_seq; + }, cleanupMemory: function(root) { const dijits = dojo.query("[widgetid]", dijit.byId(root).domNode).map(dijit.byNode); @@ -127,6 +135,126 @@ const Utils = { return false; }, + handleRpcJson: function(transport) { + + const netalert_dijit = dijit.byId("net-alert"); + let netalert = false; + + if (netalert_dijit) netalert = netalert_dijit.domNode; + + try { + const reply = JSON.parse(transport.responseText); + + if (reply) { + + const error = reply['error']; + + if (error) { + const code = error['code']; + const msg = error['msg']; + + console.warn("[handleRpcJson] received fatal error " + code + "/" + msg); + + if (code != 0) { + fatalError(code, msg); + return false; + } + } + + const seq = reply['seq']; + + if (seq && this.get_seq() != seq) { + console.log("[handleRpcJson] sequence mismatch: " + seq + + " (want: " + this.get_seq() + ")"); + return true; + } + + const message = reply['message']; + + if (message == "UPDATE_COUNTERS") { + console.log("need to refresh counters..."); + setInitParam("last_article_id", -1); + Feeds.requestCounters(true); + } + + const counters = reply['counters']; + + if (counters) + Feeds.parseCounters(counters); + + const runtime_info = reply['runtime-info']; + + if (runtime_info) + Utils.parseRuntimeInfo(runtime_info); + + if (netalert) netalert.hide(); + + return reply; + + } else { + if (netalert) + netalert.show(); + else + notify_error("Communication problem with server."); + } + + } catch (e) { + if (netalert) + netalert.show(); + else + notify_error("Communication problem with server."); + + console.error(e); + } + + return false; + }, + parseRuntimeInfo: function(data) { + + //console.log("parsing runtime info..."); + + for (const k in data) { + const v = data[k]; + + if (k == "dep_ts" && parseInt(getInitParam("dep_ts")) > 0) { + if (parseInt(getInitParam("dep_ts")) < parseInt(v) && getInitParam("reload_on_ts_change")) { + window.location.reload(); + } + } + + if (k == "daemon_is_running" && v != 1) { + notify_error("Update daemon is not running.", true); + return; + } + + if (k == "update_result") { + const updatesIcon = dijit.byId("updatesIcon").domNode; + + if (v) { + Element.show(updatesIcon); + } else { + Element.hide(updatesIcon); + } + } + + if (k == "daemon_stamp_ok" && v != 1) { + notify_error("Update daemon is not updating feeds.", true); + return; + } + + if (k == "max_feed_id" || k == "num_feeds") { + if (init_params[k] != v) { + console.log("feed count changed, need to reload feedlist."); + Feeds.reload(); + } + } + + init_params[k] = v; + notify(''); + } + + PluginHost.run(PluginHost.HOOK_RUNTIME_INFO_LOADED, data); + }, }; function report_error(message, filename, lineno, colno, error) { diff --git a/js/tt-rss.js b/js/tt-rss.js index b5b785321..078ac7c63 100644 --- a/js/tt-rss.js +++ b/js/tt-rss.js @@ -4,15 +4,7 @@ let _widescreen_mode = false; let hotkey_actions = {}; const App = { - _rpc_seq: 0, global_unread: -1, - next_seq: function() { - this._rpc_seq += 1; - return this._rpc_seq; - }, - get_seq: function() { - return this._rpc_seq; - }, updateTitle: function() { let tmp = "Tiny Tiny RSS"; @@ -85,126 +77,6 @@ const App = { xhrPost("backend.php", {op: "rpc", method: "setpanelmode", wide: wide ? 1 : 0}); }, - parseRuntimeInfo: function(data) { - - //console.log("parsing runtime info..."); - - for (const k in data) { - const v = data[k]; - - if (k == "dep_ts" && parseInt(getInitParam("dep_ts")) > 0) { - if (parseInt(getInitParam("dep_ts")) < parseInt(v) && getInitParam("reload_on_ts_change")) { - window.location.reload(); - } - } - - if (k == "daemon_is_running" && v != 1) { - notify_error("Update daemon is not running.", true); - return; - } - - if (k == "update_result") { - const updatesIcon = dijit.byId("updatesIcon").domNode; - - if (v) { - Element.show(updatesIcon); - } else { - Element.hide(updatesIcon); - } - } - - if (k == "daemon_stamp_ok" && v != 1) { - notify_error("Update daemon is not updating feeds.", true); - return; - } - - if (k == "max_feed_id" || k == "num_feeds") { - if (init_params[k] != v) { - console.log("feed count changed, need to reload feedlist."); - Feeds.reload(); - } - } - - init_params[k] = v; - notify(''); - } - - PluginHost.run(PluginHost.HOOK_RUNTIME_INFO_LOADED, data); - }, - handleRpcJson: function(transport) { - - const netalert_dijit = dijit.byId("net-alert"); - let netalert = false; - - if (netalert_dijit) netalert = netalert_dijit.domNode; - - try { - const reply = JSON.parse(transport.responseText); - - if (reply) { - - const error = reply['error']; - - if (error) { - const code = error['code']; - const msg = error['msg']; - - console.warn("[handleRpcJson] received fatal error " + code + "/" + msg); - - if (code != 0) { - fatalError(code, msg); - return false; - } - } - - const seq = reply['seq']; - - if (seq && this.get_seq() != seq) { - console.log("[handleRpcJson] sequence mismatch: " + seq + - " (want: " + this.get_seq() + ")"); - return true; - } - - const message = reply['message']; - - if (message == "UPDATE_COUNTERS") { - console.log("need to refresh counters..."); - setInitParam("last_article_id", -1); - Feeds.requestCounters(true); - } - - const counters = reply['counters']; - - if (counters) - Feeds.parseCounters(counters); - - const runtime_info = reply['runtime-info']; - - if (runtime_info) - this.parseRuntimeInfo(runtime_info); - - if (netalert) netalert.hide(); - - return reply; - - } else { - if (netalert) - netalert.show(); - else - notify_error("Communication problem with server."); - } - - } catch (e) { - if (netalert) - netalert.show(); - else - notify_error("Communication problem with server."); - - console.error(e); - } - - return false; - }, }; function search() { @@ -459,7 +331,7 @@ function init_hotkey_actions() { }; hotkey_actions["feed_catchup"] = function() { if (Feeds.getActiveFeedId() != undefined) { - catchupCurrentFeed(); + Feeds.catchupCurrentFeed(); return; } }; @@ -677,7 +549,7 @@ function quickMenuGo(opid) { return; } - var fn = getFeedName(actid); + var fn = Feeds.getFeedName(actid); var pr = __("Unsubscribe from %s?").replace("%s", fn); @@ -743,7 +615,7 @@ function update_random_feed() { console.log("in update_random_feed"); xhrPost("backend.php", { op: "rpc", method: "updateRandomFeed" }, (transport) => { - App.handleRpcJson(transport, true); + Utils.handleRpcJson(transport, true); window.setTimeout(update_random_feed, 30*1000); }); } diff --git a/js/viewfeed.js b/js/viewfeed.js index 637aa0473..bb3f5ef98 100755 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -75,7 +75,7 @@ const Headlines = { const view_mode = document.forms["main_toolbar_form"].view_mode.value; const unread_in_buffer = $$("#headlines-frame > div[id*=RROW][class*=Unread]").length; const num_all = $$("#headlines-frame > div[id*=RROW]").length; - const num_unread = getFeedUnread(Feeds.getActiveFeedId(), Feeds.activeFeedIsCat()); + const num_unread = Feeds.getFeedUnread(Feeds.getActiveFeedId(), Feeds.activeFeedIsCat()); // TODO implement marked & published @@ -248,7 +248,7 @@ const Headlines = { } }, onLoaded: function(transport, offset) { - const reply = App.handleRpcJson(transport); + const reply = Utils.handleRpcJson(transport); console.log("Headlines.onLoaded: offset=", offset); @@ -436,7 +436,7 @@ function view(id, noexpand) { xhrPost("backend.php", {op: "article", method: "view", id: id, cids: cids.toString()}, (transport) => { try { - const reply = App.handleRpcJson(transport); + const reply = Utils.handleRpcJson(transport); if (reply) { @@ -491,7 +491,7 @@ function toggleMark(id, client_only) { if (!client_only) xhrPost("backend.php", query, (transport) => { - App.handleRpcJson(transport); + Utils.handleRpcJson(transport); }); } } @@ -518,7 +518,7 @@ function togglePub(id, client_only) { if (!client_only) xhrPost("backend.php", query, (transport) => { - App.handleRpcJson(transport); + Utils.handleRpcJson(transport); }); } @@ -642,7 +642,7 @@ function toggleUnread(id, cmode) { if (row.className != origClassName) xhrPost("backend.php", {op: "rpc", method: "catchupSelected", cmode: cmode, ids: id},(transport) => { - App.handleRpcJson(transport); + Utils.handleRpcJson(transport); }); } } @@ -659,7 +659,7 @@ function selectionRemoveLabel(id, ids) { ids: ids.toString(), lid: id }; xhrPost("backend.php", query, (transport) => { - App.handleRpcJson(transport); + Utils.handleRpcJson(transport); updateHeadlineLabels(transport); }); } @@ -676,7 +676,7 @@ function selectionAssignLabel(id, ids) { ids: ids.toString(), lid: id }; xhrPost("backend.php", query, (transport) => { - App.handleRpcJson(transport); + Utils.handleRpcJson(transport); updateHeadlineLabels(transport); }); } @@ -719,7 +719,7 @@ function selectionToggleUnread(params) { notify_progress("Loading, please wait..."); xhrPost("backend.php", query, (transport) => { - App.handleRpcJson(transport); + Utils.handleRpcJson(transport); if (callback) callback(transport); }); } @@ -740,7 +740,7 @@ function selectionToggleMarked(ids) { ids: rows.toString(), cmode: 2 }; xhrPost("backend.php", query, (transport) => { - App.handleRpcJson(transport); + Utils.handleRpcJson(transport); }); } @@ -762,7 +762,7 @@ function selectionTogglePublished(ids) { ids: rows.toString(), cmode: 2 }; xhrPost("backend.php", query, (transport) => { - App.handleRpcJson(transport); + Utils.handleRpcJson(transport); }); } } @@ -862,7 +862,7 @@ function deleteSelection() { return; } - const fn = getFeedName(Feeds.getActiveFeedId(), Feeds.activeFeedIsCat()); + const fn = Feeds.getFeedName(Feeds.getActiveFeedId(), Feeds.activeFeedIsCat()); let str; if (Feeds.getActiveFeedId() != 0) { @@ -881,7 +881,7 @@ function deleteSelection() { const query = { op: "rpc", method: "delete", ids: rows.toString() }; xhrPost("backend.php", query, (transport) => { - App.handleRpcJson(transport); + Utils.handleRpcJson(transport); Feeds.viewCurrentFeed(); }); } @@ -896,7 +896,7 @@ function archiveSelection() { return; } - const fn = getFeedName(Feeds.getActiveFeedId(), Feeds.activeFeedIsCat()); + const fn = Feeds.getFeedName(Feeds.getActiveFeedId(), Feeds.activeFeedIsCat()); let str; let op; @@ -924,7 +924,7 @@ function archiveSelection() { const query = {op: "rpc", method: op, ids: rows.toString()}; xhrPost("backend.php", query, (transport) => { - App.handleRpcJson(transport); + Utils.handleRpcJson(transport); Feeds.viewCurrentFeed(); }); } @@ -938,7 +938,7 @@ function catchupSelection() { return; } - const fn = getFeedName(Feeds.getActiveFeedId(), Feeds.activeFeedIsCat()); + const fn = Feeds.getFeedName(Feeds.getActiveFeedId(), Feeds.activeFeedIsCat()); let str = ngettext("Mark %d selected article in %s as read?", "Mark %d selected articles in %s as read?", rows.length); @@ -1091,7 +1091,7 @@ function catchupBatchedArticles(callback) { cmode: 0, ids: batch.toString() }; xhrPost("backend.php", query, (transport) => { - const reply = App.handleRpcJson(transport); + const reply = Utils.handleRpcJson(transport); if (reply) { const batch = reply.ids; @@ -1167,7 +1167,7 @@ function catchupRelativeToArticle(below, id) { cmode: 0, ids: ids_to_mark.toString() }; xhrPost("backend.php", query, (transport) => { - App.handleRpcJson(transport); + Utils.handleRpcJson(transport); }); } } @@ -1489,7 +1489,7 @@ function initHeadlinesMenu() { menu.addChild(new dijit.MenuItem({ label: __("Mark feed as read"), onClick: function () { - catchupFeedInGroup(this.getParent().currentTarget.getAttribute("data-feed-id")); + Feeds.catchupFeedInGroup(this.getParent().currentTarget.getAttribute("data-feed-id")); } }));