summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2021-02-19 13:44:56 +0300
committerAndrew Dolgov <[email protected]>2021-02-19 13:44:56 +0300
commit660a1bbe011fef5f0fa6bb0af43521fed7598cc7 (patch)
treef31ee123db91e479b93a6d086fd78de2ecfae014 /js
parentbb4e4282f46824308aebc2eaeac29fa29f8687ad (diff)
* switch to xhr.post() almost everywhere
* call App.handlerpcjson() automatically on json request (if possible) * show net/log indicators in prefs
Diffstat (limited to 'js')
-rw-r--r--js/App.js134
-rw-r--r--js/CommonDialogs.js4
-rw-r--r--js/CommonFilters.js28
-rw-r--r--js/Feeds.js20
-rwxr-xr-xjs/Headlines.js34
-rw-r--r--js/PrefFeedTree.js8
-rw-r--r--js/PrefFilterTree.js6
-rw-r--r--js/PrefHelpers.js29
-rw-r--r--js/PrefLabelTree.js4
-rw-r--r--js/PrefUsers.js16
-rwxr-xr-xjs/common.js5
-rwxr-xr-xjs/prefs.js1
12 files changed, 142 insertions, 147 deletions
diff --git a/js/App.js b/js/App.js
index 1b0fa7c65..544057101 100644
--- a/js/App.js
+++ b/js/App.js
@@ -2,7 +2,7 @@
/* eslint-disable new-cap */
/* global __, Article, Headlines, Filters, fox */
-/* global xhrPost, xhr, dojo, dijit, PluginHost, Notify, Feeds, Cookie */
+/* global xhr, dojo, dijit, PluginHost, Notify, Feeds, Cookie */
/* global CommonDialogs, Plugins */
const App = {
@@ -371,72 +371,57 @@ const App = {
dialog.show();
});
},
- handleRpcJson: function(transport) {
+ handleRpcJson: function(reply) {
- const netalert = App.findAll("#toolbar .net-alert")[0];
+ const netalert = App.find(".net-alert");
- try {
- const reply = JSON.parse(transport.responseText);
-
- if (reply) {
- const error = reply['error'];
-
- if (error) {
- const code = error['code'];
- const msg = error['message'];
-
- console.warn("[handleRpcJson] received fatal error ", code, msg);
-
- if (code != 0) {
- /* global ERRORS */
- this.Error.fatal(ERRORS[code], {info: msg, code: code});
- return false;
- }
- }
+ if (reply) {
+ const error = reply['error'];
+ const seq = reply['seq'];
+ const message = reply['message'];
+ const counters = reply['counters'];
+ const runtime_info = reply['runtime-info'];
- const seq = reply['seq'];
+ if (error) {
+ const code = error['code'];
- if (seq && this.get_seq() != seq) {
- console.log("[handleRpcJson] sequence mismatch: ", seq, '!=', this.get_seq());
- return true;
- }
-
- const message = reply['message'];
-
- if (message == "UPDATE_COUNTERS") {
- console.log("need to refresh counters...");
- Feeds.requestCounters(true);
- }
+ if (code && code != 0) {
+ const msg = error['message'];
- const counters = reply['counters'];
+ console.warn("[handleRpcJson] received fatal error ", code, msg);
- if (counters)
- Feeds.parseCounters(counters);
-
- const runtime_info = reply['runtime-info'];
-
- if (runtime_info)
- this.parseRuntimeInfo(runtime_info);
+ /* global ERRORS */
+ this.Error.fatal(ERRORS[code], {info: msg, code: code});
+ return false;
+ }
+ }
- if (netalert) netalert.hide();
+ if (seq && this.get_seq() != seq) {
+ console.warn("[handleRpcJson] sequence mismatch: ", seq, '!=', this.get_seq());
+ return;
+ }
- return reply;
+ // not in preferences
+ if (typeof Feeds != "undefined") {
+ if (message == "UPDATE_COUNTERS") {
+ console.log("need to refresh counters...");
+ Feeds.requestCounters(true);
+ }
- } else {
- if (netalert) netalert.show();
+ if (counters)
+ Feeds.parseCounters(counters);
+ }
- Notify.error("Communication problem with server.");
- }
+ if (runtime_info)
+ this.parseRuntimeInfo(runtime_info);
- } catch (e) {
- if (netalert) netalert.show();
+ if (netalert) netalert.hide();
- Notify.error("Communication problem with server.");
+ } else {
+ if (netalert) netalert.show();
- console.error(e);
+ Notify.error("Communication problem with server.");
}
-
- return false;
},
parseRuntimeInfo: function(data) {
Object.keys(data).forEach((k) => {
@@ -450,7 +435,7 @@ const App = {
}
if (k == "recent_log_events") {
- const alert = App.findAll(".log-alert")[0];
+ const alert = App.find(".log-alert");
if (alert) {
v > 0 ? alert.show() : alert.hide();
@@ -462,10 +447,12 @@ const App = {
return;
}
- if (k == "max_feed_id" || k == "num_feeds") {
- if (this.getInitParam(k) != v) {
- console.log("feed count changed, need to reload feedlist.");
- Feeds.reload();
+ if (typeof Feeds != "undefined") {
+ if (k == "max_feed_id" || k == "num_feeds") {
+ if (this.getInitParam(k) && this.getInitParam(k) != v) {
+ console.log("feed count changed, need to reload feedlist:", this.getInitParam(k), v);
+ Feeds.reload();
+ }
}
}
@@ -668,6 +655,11 @@ const App = {
return errorMsg == "";
},
+ updateRuntimeInfo: function() {
+ xhr.json("backend.php", {op: "rpc", method: "getruntimeinfo"}, () => {
+ // handled by xhr.json()
+ });
+ },
initSecondStage: function() {
document.onkeydown = (event) => this.hotkeyHandler(event);
@@ -685,14 +677,18 @@ const App = {
if (tab) {
dijit.byId("pref-tabs").selectChild(tab);
- switch (this.urlParam('method')) {
- case "editfeed":
- window.setTimeout(() => {
- CommonDialogs.editFeed(this.urlParam('methodparam'))
- }, 100);
- break;
- default:
- console.warn("initSecondStage, unknown method:", this.urlParam("method"));
+ const method = this.urlParam("method");
+
+ if (method) {
+ switch (method) {
+ case "editfeed":
+ window.setTimeout(() => {
+ CommonDialogs.editFeed(this.urlParam('methodparam'))
+ }, 100);
+ break;
+ default:
+ console.warn("initSecondStage, unknown method:", method);
+ }
}
}
} else {
@@ -708,8 +704,14 @@ const App = {
dojo.connect(dijit.byId("pref-tabs"), "selectChild", function (elem) {
localStorage.setItem("ttrss:prefs-tab", elem.id);
+ App.updateRuntimeInfo();
});
+ if (!this.getInitParam("bw_limit"))
+ window.setInterval(() => {
+ App.updateRuntimeInfo();
+ }, 60 * 1000)
+
} else {
Feeds.reload();
diff --git a/js/CommonDialogs.js b/js/CommonDialogs.js
index 516da5c98..a75b36ed8 100644
--- a/js/CommonDialogs.js
+++ b/js/CommonDialogs.js
@@ -430,8 +430,8 @@ const CommonDialogs = {
const tmph = dojo.connect(dialog, 'onShow', function () {
dojo.disconnect(tmph);
- xhrPost("backend.php", {op: "pref-feeds", method: "editfeed", id: feed}, (transport) => {
- dialog.attr('content', transport.responseText);
+ xhr.post("backend.php", {op: "pref-feeds", method: "editfeed", id: feed}, (reply) => {
+ dialog.attr('content', reply);
})
});
diff --git a/js/CommonFilters.js b/js/CommonFilters.js
index 9cc93d7b8..0fc8f87ae 100644
--- a/js/CommonFilters.js
+++ b/js/CommonFilters.js
@@ -39,12 +39,12 @@ const Filters = {
createNewRuleElement: function(parentNode, replaceNode) {
const rule = dojo.formToJson("filter_new_rule_form");
- xhrPost("backend.php", {op: "pref-filters", method: "printrulename", rule: rule}, (transport) => {
+ xhr.post("backend.php", {op: "pref-filters", method: "printrulename", rule: rule}, (reply) => {
try {
const li = document.createElement('li');
li.innerHTML = `<input dojoType='dijit.form.CheckBox' type='checkbox' onclick='Lists.onRowChecked(this)'>
- <span onclick='App.dialogOf(this).editRule(this)'>${transport.responseText}</span>
+ <span onclick='App.dialogOf(this).editRule(this)'>${reply}</span>
${App.FormFields.hidden_tag("rule[]", rule)}`;
dojo.parser.parse(li);
@@ -70,12 +70,12 @@ const Filters = {
const action = dojo.formToJson(form);
- xhrPost("backend.php", { op: "pref-filters", method: "printactionname", action: action }, (transport) => {
+ xhr.post("backend.php", { op: "pref-filters", method: "printactionname", action: action }, (reply) => {
try {
const li = document.createElement('li');
li.innerHTML = `<input dojoType='dijit.form.CheckBox' type='checkbox' onclick='Lists.onRowChecked(this)'>
- <span onclick='App.dialogOf(this).editAction(this)'>${transport.responseText}</span>
+ <span onclick='App.dialogOf(this).editAction(this)'>${reply}</span>
${App.FormFields.hidden_tag("action[]", action)}`;
dojo.parser.parse(li);
@@ -107,8 +107,8 @@ const Filters = {
const tmph = dojo.connect(dialog, "onShow", null, function (/* e */) {
dojo.disconnect(tmph);
- xhrPost("backend.php", {op: 'pref-filters', method: 'newrule', rule: ruleStr}, (transport) => {
- dialog.attr('content', transport.responseText);
+ xhr.post("backend.php", {op: 'pref-filters', method: 'newrule', rule: ruleStr}, (reply) => {
+ dialog.attr('content', reply);
});
});
@@ -128,8 +128,8 @@ const Filters = {
const tmph = dojo.connect(dialog, "onShow", null, function (/* e */) {
dojo.disconnect(tmph);
- xhrPost("backend.php", {op: 'pref-filters', method: 'newaction', action: actionStr}, (transport) => {
- dialog.attr('content', transport.responseText);
+ xhr.post("backend.php", {op: 'pref-filters', method: 'newaction', action: actionStr}, (reply) => {
+ dialog.attr('content', reply);
});
});
@@ -149,10 +149,8 @@ const Filters = {
console.log("getTestResults:" + offset);
- xhrPost("backend.php", params, (transport) => {
+ xhr.json("backend.php", params, (result) => {
try {
- const result = JSON.parse(transport.responseText);
-
if (result && dialog && dialog.open) {
dialog.results += result.length;
@@ -239,7 +237,7 @@ const Filters = {
console.log('Filters.edit', query);
- xhrPost("backend.php", query, function (transport) {
+ xhr.post("backend.php", query, function (reply) {
try {
const dialog = new fox.SingleUseDialog({
id: "filterEditDlg",
@@ -311,7 +309,7 @@ const Filters = {
});
}
},
- content: transport.responseText
+ content: reply
});
if (!App.isPrefs()) {
@@ -334,9 +332,7 @@ const Filters = {
const query = {op: "article", method: "getmetadatabyid", id: Article.getActive()};
- xhrPost("backend.php", query, (transport) => {
- const reply = JSON.parse(transport.responseText);
-
+ xhr.json("backend.php", query, (reply) => {
let title = false;
if (reply && reply.title) title = reply.title;
diff --git a/js/Feeds.js b/js/Feeds.js
index e9681953e..01d31f3c1 100644
--- a/js/Feeds.js
+++ b/js/Feeds.js
@@ -130,8 +130,8 @@ const Feeds = {
this.reloadCurrent();
},
requestCounters: function() {
- xhrPost("backend.php", {op: "rpc", method: "getAllCounters", seq: App.next_seq()}, (transport) => {
- App.handleRpcJson(transport);
+ xhr.json("backend.php", {op: "rpc", method: "getAllCounters", seq: App.next_seq()}, () => {
+ //
});
},
reload: function() {
@@ -260,7 +260,7 @@ const Feeds = {
// bw_limit disables timeout() so we request initial counters separately
if (App.getInitParam("bw_limit")) {
- this.requestCounters(true);
+ App.requestCounters(true);
} else {
setTimeout(() => {
this.requestCounters(true);
@@ -361,8 +361,6 @@ const Feeds = {
query.m = "ForceUpdate";
}
- //Form.enable("toolbar-main");
-
if (!delayed)
if (!this.setExpando(feed, is_cat,
(is_cat) ? 'images/indicator_tiny.gif' : 'images/indicator_white.gif'))
@@ -374,11 +372,11 @@ const Feeds = {
window.clearTimeout(this._viewfeed_wait_timeout);
this._viewfeed_wait_timeout = window.setTimeout(() => {
- xhrPost("backend.php", query, (transport) => {
+ xhr.json("backend.php", query, (reply) => {
try {
window.clearTimeout(this._infscroll_timeout);
this.setExpando(feed, is_cat, 'images/blank_icon.gif');
- Headlines.onLoaded(transport, offset, append);
+ Headlines.onLoaded(reply, offset, append);
PluginHost.run(PluginHost.HOOK_FEED_LOADED, [feed, is_cat]);
} catch (e) {
App.Error.report(e);
@@ -439,9 +437,7 @@ const Feeds = {
Notify.progress("Loading, please wait...", true);
- xhrPost("backend.php", catchup_query, (transport) => {
- App.handleRpcJson(transport);
-
+ xhr.json("backend.php", catchup_query, () => {
const show_next_feed = App.getInitParam("on_catchup_show_next_feed");
// only select next unread feed if catching up entirely (as opposed to last week etc)
@@ -633,8 +629,8 @@ const Feeds = {
updateRandom: function() {
console.log("in update_random_feed");
- xhrPost("backend.php", {op: "rpc", method: "updaterandomfeed"}, (transport) => {
- App.handleRpcJson(transport, true);
+ xhr.json("backend.php", {op: "rpc", method: "updaterandomfeed"}, () => {
+ //
});
},
};
diff --git a/js/Headlines.js b/js/Headlines.js
index 34dc9385e..18e0a3687 100755
--- a/js/Headlines.js
+++ b/js/Headlines.js
@@ -1,7 +1,7 @@
'use strict';
/* global __, ngettext, Article, App */
-/* global xhrPost, dojo, dijit, PluginHost, Notify, $$, Feeds */
+/* global dojo, dijit, PluginHost, Notify, xhr, Feeds */
/* global CommonDialogs */
const Headlines = {
@@ -149,26 +149,26 @@ const Headlines = {
const promises = [];
if (ops.tmark.length != 0)
- promises.push(xhrPost("backend.php",
+ promises.push(xhr.post("backend.php",
{op: "rpc", method: "markSelected", ids: ops.tmark.toString(), cmode: 2}));
if (ops.tpub.length != 0)
- promises.push(xhrPost("backend.php",
+ promises.push(xhr.post("backend.php",
{op: "rpc", method: "publishSelected", ids: ops.tpub.toString(), cmode: 2}));
if (ops.read.length != 0)
- promises.push(xhrPost("backend.php",
+ promises.push(xhr.post("backend.php",
{op: "rpc", method: "catchupSelected", ids: ops.read.toString(), cmode: 0}));
if (ops.unread.length != 0)
- promises.push(xhrPost("backend.php",
+ promises.push(xhr.post("backend.php",
{op: "rpc", method: "catchupSelected", ids: ops.unread.toString(), cmode: 1}));
const scores = Object.keys(ops.rescore);
if (scores.length != 0) {
scores.forEach((score) => {
- promises.push(xhrPost("backend.php",
+ promises.push(xhr.post("backend.php",
{op: "article", method: "setScore", id: ops.rescore[score].toString(), score: score}));
});
}
@@ -622,9 +622,7 @@ const Headlines = {
dojo.parser.parse(target.domNode);
},
- onLoaded: function (transport, offset, append) {
- const reply = App.handleRpcJson(transport);
-
+ onLoaded: function (reply, offset, append) {
console.log("Headlines.onLoaded: offset=", offset, "append=", append);
let is_cat = false;
@@ -785,7 +783,6 @@ const Headlines = {
});
} else {
- console.error("Invalid object received: " + transport.responseText);
dijit.byId("headlines-frame").attr('content', "<div class='whiteBox'>" +
__('Could not update headlines (invalid object received - see error console for details)') +
"</div>");
@@ -1011,9 +1008,8 @@ const Headlines = {
ids: ids.toString(), lid: id
};
- xhrPost("backend.php", query, (transport) => {
- App.handleRpcJson(transport);
- this.onLabelsUpdated(transport);
+ xhr.json("backend.php", query, (reply) => {
+ this.onLabelsUpdated(reply);
});
},
selectionAssignLabel: function (id, ids) {
@@ -1029,9 +1025,8 @@ const Headlines = {
ids: ids.toString(), lid: id
};
- xhrPost("backend.php", query, (transport) => {
- App.handleRpcJson(transport);
- this.onLabelsUpdated(transport);
+ xhr.json("backend.php", query, (reply) => {
+ this.onLabelsUpdated(reply);
});
},
deleteSelection: function () {
@@ -1060,8 +1055,7 @@ const Headlines = {
const query = {op: "rpc", method: "delete", ids: rows.toString()};
- xhrPost("backend.php", query, (transport) => {
- App.handleRpcJson(transport);
+ xhr.json("backend.php", query, () => {
Feeds.reloadCurrent();
});
},
@@ -1246,9 +1240,7 @@ const Headlines = {
}
}
},
- onLabelsUpdated: function (transport) {
- const data = JSON.parse(transport.responseText);
-
+ onLabelsUpdated: function (data) {
if (data) {
data['info-for-headlines'].forEach(function (elem) {
App.findAll(".HLLCTR-" + elem.id).forEach(function (ctr) {
diff --git a/js/PrefFeedTree.js b/js/PrefFeedTree.js
index d3a4cd33d..a2a7f9141 100644
--- a/js/PrefFeedTree.js
+++ b/js/PrefFeedTree.js
@@ -129,8 +129,8 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree", "dojo/_b
const searchElem = App.byId("feed_search");
const search = (searchElem) ? searchElem.value : "";
- xhrPost("backend.php", { op: "pref-feeds", search: search }, (transport) => {
- dijit.byId('feedsTab').attr('content', transport.responseText);
+ xhr.post("backend.php", { op: "pref-feeds", search: search }, (reply) => {
+ dijit.byId('feedsTab').attr('content', reply);
Notify.close();
});
},
@@ -295,7 +295,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree", "dojo/_b
Notify.progress("Loading, please wait...");
- xhrPost("backend.php", {op: "pref-feeds", method: "editfeeds", ids: rows.toString()}, (transport) => {
+ xhr.post("backend.php", {op: "pref-feeds", method: "editfeeds", ids: rows.toString()}, (reply) => {
Notify.close();
try {
@@ -347,7 +347,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree", "dojo/_b
});
}
},
- content: transport.responseText
+ content: reply
});
dialog.show();
diff --git a/js/PrefFilterTree.js b/js/PrefFilterTree.js
index cc37808be..fff58ff1a 100644
--- a/js/PrefFilterTree.js
+++ b/js/PrefFilterTree.js
@@ -1,5 +1,5 @@
/* eslint-disable prefer-rest-params */
-/* global __, define, lib, dijit, dojo, xhr, Notify */
+/* global __, define, lib, dijit, dojo, xhr, App, Notify */
define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], function (declare, domConstruct) {
@@ -91,8 +91,8 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio
let search = "";
if (user_search) { search = user_search.value; }
- xhrPost("backend.php", { op: "pref-filters", search: search }, (transport) => {
- dijit.byId('filtersTab').attr('content', transport.responseText);
+ xhr.post("backend.php", { op: "pref-filters", search: search }, (reply) => {
+ dijit.byId('filtersTab').attr('content', reply);
Notify.close();
});
},
diff --git a/js/PrefHelpers.js b/js/PrefHelpers.js
index abf5fff51..d27e0e071 100644
--- a/js/PrefHelpers.js
+++ b/js/PrefHelpers.js
@@ -19,8 +19,8 @@ const Helpers = {
alert("No passwords selected.");
} else if (confirm(__("Remove selected app passwords?"))) {
- xhrPost("backend.php", {op: "pref-prefs", method: "deleteAppPassword", ids: rows.toString()}, (transport) => {
- this.updateContent(transport.responseText);
+ xhr.post("backend.php", {op: "pref-prefs", method: "deleteAppPassword", ids: rows.toString()}, (reply) => {
+ this.updateContent(reply);
Notify.close();
});
@@ -31,8 +31,8 @@ const Helpers = {
const title = prompt("Password description:")
if (title) {
- xhrPost("backend.php", {op: "pref-prefs", method: "generateAppPassword", title: title}, (transport) => {
- this.updateContent(transport.responseText);
+ xhr.post("backend.php", {op: "pref-prefs", method: "generateAppPassword", title: title}, (reply) => {
+ this.updateContent(reply);
Notify.close();
});
@@ -63,8 +63,13 @@ const Helpers = {
this.update();
},
update: function() {
- xhrPost("backend.php", { op: "pref-system", severity: dijit.byId("severity").attr('value'), page: Helpers.EventLog.log_page }, (transport) => {
- dijit.byId('systemTab').attr('content', transport.responseText);
+ xhr.post("backend.php", {
+ op: "pref-system",
+ severity: dijit.byId("severity").attr('value'),
+ page: Helpers.EventLog.log_page
+ }, (reply) => {
+
+ dijit.byId('systemTab').attr('content', reply);
Notify.close();
});
},
@@ -164,8 +169,8 @@ const Helpers = {
`<span dojoType='dijit.InlineEditBox' width='300px' autoSave='false'
profile-id='${profile.id}'>${profile.title}
<script type='dojo/method' event='onChange' args='value'>
- xhrPost("backend.php",
- {op: 'pref-prefs', method: 'saveprofile', value: value, id: this.attr('profile-id')}, (transport) => {
+ xhr.post("backend.php",
+ {op: 'pref-prefs', method: 'saveprofile', value: value, id: this.attr('profile-id')}, () => {
//
});
</script>
@@ -267,9 +272,9 @@ const Helpers = {
},
confirmReset: function() {
if (confirm(__("Reset to defaults?"))) {
- xhrPost("backend.php", {op: "pref-prefs", method: "resetconfig"}, (transport) => {
+ xhr.post("backend.php", {op: "pref-prefs", method: "resetconfig"}, (reply) => {
Helpers.Prefs.refresh();
- Notify.info(transport.responseText);
+ Notify.info(reply);
});
}
},
@@ -283,8 +288,8 @@ const Helpers = {
}
},
refresh: function() {
- xhrPost("backend.php", { op: "pref-prefs" }, (transport) => {
- dijit.byId('prefsTab').attr('content', transport.responseText);
+ xhr.post("backend.php", { op: "pref-prefs" }, (reply) => {
+ dijit.byId('prefsTab').attr('content', reply);
Notify.close();
});
},
diff --git a/js/PrefLabelTree.js b/js/PrefLabelTree.js
index 5e024afde..627b2cfbe 100644
--- a/js/PrefLabelTree.js
+++ b/js/PrefLabelTree.js
@@ -55,8 +55,8 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree", "dijit/f
return rv;
},
reload: function() {
- xhrPost("backend.php", { op: "pref-labels" }, (transport) => {
- dijit.byId('labelsTab').attr('content', transport.responseText);
+ xhr.post("backend.php", { op: "pref-labels" }, (reply) => {
+ dijit.byId('labelsTab').attr('content', reply);
Notify.close();
});
},
diff --git a/js/PrefUsers.js b/js/PrefUsers.js
index 9b9c1deaf..3eb83b02a 100644
--- a/js/PrefUsers.js
+++ b/js/PrefUsers.js
@@ -8,8 +8,8 @@ const Users = {
const user_search = App.byId("user_search");
const search = user_search ? user_search.value : "";
- xhrPost("backend.php", { op: "pref-users", sort: sort, search: search }, (transport) => {
- dijit.byId('usersTab').attr('content', transport.responseText);
+ xhr.post("backend.php", { op: "pref-users", sort: sort, search: search }, (reply) => {
+ dijit.byId('usersTab').attr('content', reply);
Notify.close();
});
},
@@ -19,8 +19,8 @@ const Users = {
if (login) {
Notify.progress("Adding user...");
- xhrPost("backend.php", {op: "pref-users", method: "add", login: login}, (transport) => {
- alert(transport.responseText);
+ xhr.post("backend.php", {op: "pref-users", method: "add", login: login}, (reply) => {
+ alert(reply);
Users.reload();
});
@@ -99,8 +99,8 @@ const Users = {
<div dojoType="dijit.layout.ContentPane" title="${__('User details')}">
<script type='dojo/method' event='onShow' args='evt'>
if (this.domNode.querySelector('.loading')) {
- xhrPost("backend.php", {op: 'pref-users', method: 'userdetails', id: ${user.id}}, (transport) => {
- this.attr('content', transport.responseText);
+ xhr.post("backend.php", {op: 'pref-users', method: 'userdetails', id: ${user.id}}, (reply) => {
+ this.attr('content', reply);
});
}
</script>
@@ -141,9 +141,9 @@ const Users = {
const id = rows[0];
- xhrPost("backend.php", {op: "pref-users", method: "resetPass", id: id}, (transport) => {
+ xhr.post("backend.php", {op: "pref-users", method: "resetPass", id: id}, (reply) => {
Notify.close();
- Notify.info(transport.responseText, true);
+ Notify.info(reply, true);
});
}
diff --git a/js/common.js b/js/common.js
index 1c9a0453c..e88b62602 100755
--- a/js/common.js
+++ b/js/common.js
@@ -155,7 +155,7 @@ const xhr = {
reject(error);
},
load: function(data, ioargs) {
- //console.log('xhr.post', '<<<', data, ioargs);
+ console.log('xhr.post', '<<<', ioargs.xhr);
if (complete != undefined)
complete(data, ioargs.xhr);
@@ -179,6 +179,9 @@ const xhr = {
console.log('xhr.json', '<<<', obj);
+ if (obj && typeof App != "undefined")
+ App.handleRpcJson(obj);
+
if (complete != undefined) complete(obj);
resolve(obj);
diff --git a/js/prefs.js b/js/prefs.js
index 803a7edf3..a23a74856 100755
--- a/js/prefs.js
+++ b/js/prefs.js
@@ -41,6 +41,7 @@ require(["dojo/_base/kernel",
"dojo/data/ItemFileWriteStore",
"lib/CheckBoxStoreModel",
"lib/CheckBoxTree",
+ "fox/PluginHost",
"fox/CommonDialogs",
"fox/CommonFilters",
"fox/PrefUsers",