1
0
mirror of https://git.tt-rss.org/git/tt-rss.git synced 2025-12-13 13:35:56 +00:00

prefs: remove some more stuff from global context (user management, etc)

This commit is contained in:
Andrew Dolgov
2018-12-02 16:17:36 +03:00
parent 58e54282d3
commit b9869dbc01
5 changed files with 163 additions and 225 deletions

View File

@@ -82,6 +82,15 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio
getIconClass: function (item, opened) {
return (!item || this.model.store.getValue(item, 'type') == 'category') ? (opened ? "dijitFolderOpened" : "dijitFolderClosed") : "feedIcon";
},
reload: function() {
const searchElem = $("feed_search");
let search = (searchElem) ? searchElem.value : "";
xhrPost("backend.php", { op: "pref-feeds", search: search }, (transport) => {
dijit.byId('feedConfigTab').attr('content', transport.responseText);
notify("");
});
},
checkItemAcceptance: function(target, source, position) {
const item = dijit.getEnclosingWidget(target).item;
@@ -113,14 +122,14 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio
notify_progress("Loading, please wait...");
xhrPost("backend.php", {op: "pref-feeds", method: "feedsortreset"}, () => {
updateFeedList();
this.reload();
});
},
resetCatOrder: function() {
notify_progress("Loading, please wait...");
xhrPost("backend.php", {op: "pref-feeds", method: "catsortreset"}, () => {
updateFeedList();
this.reload();
});
},
removeCategory: function(id, item) {
@@ -129,7 +138,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio
xhrPost("backend.php", {op: "pref-feeds", method: "removeCat", ids: id}, () => {
notify('');
updateFeedList();
this.reload();
});
}
},
@@ -147,7 +156,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio
};
xhrPost("backend.php", query, () => {
updateFeedList();
this.reload();
});
}
@@ -189,7 +198,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio
};
xhrPost("backend.php", query, () => {
updateFeedList();
this.reload();
});
}
} else {
@@ -284,7 +293,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio
xhrPost("backend.php", query, () => {
dialog.hide();
updateFeedList();
dijit.byId("feedTree").reload();
});
}
},
@@ -306,7 +315,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio
notify_progress("Loading, please wait...");
xhrPost("backend.php", { op: 'pref-feeds', method: 'renamecat', id: id, title: new_name }, () => {
updateFeedList();
this.reload();
});
}
},
@@ -318,7 +327,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio
xhrPost("backend.php", {op: "pref-feeds", method: "addCat", cat: title}, () => {
notify('');
updateFeedList();
this.reload();
});
}
},
@@ -339,7 +348,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio
xhrPost("backend.php", this.attr('value'), () => {
notify("");
updateFeedList();
dijit.byId("feedTree").reload();
dialog.hide();
});
}
@@ -376,8 +385,8 @@ define(["dojo/_base/declare", "dojo/dom-construct", "lib/CheckBoxTree"], functio
xhrPost("backend.php", query, () => {
notify('');
dijit.byId("feedTree").reload();
dialog.hide();
updateFeedList();
});
}

View File

@@ -132,6 +132,17 @@ const App = {
};
const Prefs = {
clearFeedAccessKeys: function() {
if (confirm(__("This will invalidate all previously generated feed URLs. Continue?"))) {
notify_progress("Clearing URLs...");
xhrPost("backend.php", {op: "pref-feeds", method: "clearKeys"}, () => {
notify_info("Generated URLs cleared.");
});
}
return false;
},
clearEventLog: function() {
if (confirm(__("Clear event log?"))) {
@@ -264,187 +275,120 @@ const Prefs = {
}
};
function notify_callback2(transport, sticky) {
notify_info(transport.responseText, sticky);
}
const Users = {
reload: function(sort) {
const user_search = $("user_search");
const search = user_search ? user_search.value : "";
function updateFeedList() {
xhrPost("backend.php", { op: "pref-users", sort: sort, search: search }, (transport) => {
dijit.byId('userConfigTab').attr('content', transport.responseText);
notify("");
});
},
add: function() {
const login = prompt(__("Please enter username:"), "");
const user_search = $("feed_search");
let search = "";
if (user_search) { search = user_search.value; }
if (login) {
notify_progress("Adding user...");
xhrPost("backend.php", { op: "pref-feeds", search: search }, (transport) => {
dijit.byId('feedConfigTab').attr('content', transport.responseText);
notify("");
});
}
function updateUsersList(sort_key) {
const user_search = $("user_search");
const search = user_search ? user_search.value : "";
const query = { op: "pref-users", sort: sort_key, search: search };
xhrPost("backend.php", query, (transport) => {
dijit.byId('userConfigTab').attr('content', transport.responseText);
notify("");
});
}
function addUser() {
const login = prompt(__("Please enter login:"), "");
if (login == null) {
return false;
}
if (login == "") {
alert(__("Can't create user: no login specified."));
return false;
}
notify_progress("Adding user...");
xhrPost("backend.php", { op: "pref-users", method: "add", login: login }, (transport) => {
notify_callback2(transport);
updateUsersList();
});
}
function editUser(id) {
const query = "backend.php?op=pref-users&method=edit&id=" +
param_escape(id);
if (dijit.byId("userEditDlg"))
dijit.byId("userEditDlg").destroyRecursive();
const dialog = new dijit.Dialog({
id: "userEditDlg",
title: __("User Editor"),
style: "width: 600px",
execute: function () {
if (this.validate()) {
notify_progress("Saving data...", true);
xhrPost("backend.php", dojo.formToObject("user_edit_form"), (transport) => {
dialog.hide();
updateUsersList();
});
}
},
href: query
});
dialog.show();
}
function getSelectedUsers() {
return Tables.getSelected("prefUserList");
}
function removeSelectedUsers() {
const sel_rows = getSelectedUsers();
if (sel_rows.length > 0) {
if (confirm(__("Remove selected users? Neither default admin nor your account will be removed."))) {
notify_progress("Removing selected users...");
const query = { op: "pref-users", method: "remove",
ids: sel_rows.toString() };
xhrPost("backend.php", query, () => {
updateUsersList();
xhrPost("backend.php", {op: "pref-users", method: "add", login: login}, (transport) => {
alert(transport.responseText);
Users.reload();
});
}
},
edit: function(id) {
const query = "backend.php?op=pref-users&method=edit&id=" +
param_escape(id);
} else {
alert(__("No users are selected."));
}
if (dijit.byId("userEditDlg"))
dijit.byId("userEditDlg").destroyRecursive();
return false;
}
const dialog = new dijit.Dialog({
id: "userEditDlg",
title: __("User Editor"),
style: "width: 600px",
execute: function () {
if (this.validate()) {
notify_progress("Saving data...", true);
function editSelectedUser() {
const rows = getSelectedUsers();
if (rows.length == 0) {
alert(__("No users are selected."));
return;
}
if (rows.length > 1) {
alert(__("Please select only one user."));
return;
}
notify("");
editUser(rows[0]);
}
function resetSelectedUserPass() {
const rows = getSelectedUsers();
if (rows.length == 0) {
alert(__("No users are selected."));
return;
}
if (rows.length > 1) {
alert(__("Please select only one user."));
return;
}
if (confirm(__("Reset password of selected user?"))) {
notify_progress("Resetting password for selected user...");
const id = rows[0];
xhrPost("backend.php", { op: "pref-users", method: "resetPass", id: id }, (transport) => {
notify_info(transport.responseText, true);
xhrPost("backend.php", dojo.formToObject("user_edit_form"), (transport) => {
dialog.hide();
Users.reload();
});
}
},
href: query
});
dialog.show();
},
resetSelected: function() {
const rows = this.getSelection();
if (rows.length == 0) {
alert(__("No users are selected."));
return;
}
if (rows.length > 1) {
alert(__("Please select one user."));
return;
}
if (confirm(__("Reset password of selected user?"))) {
notify_progress("Resetting password for selected user...");
const id = rows[0];
xhrPost("backend.php", {op: "pref-users", method: "resetPass", id: id}, (transport) => {
notify('');
alert(transport.responseText);
});
}
},
removeSelected: function() {
const sel_rows = this.getSelection();
if (sel_rows.length > 0) {
if (confirm(__("Remove selected users? Neither default admin nor your account will be removed."))) {
notify_progress("Removing selected users...");
const query = {
op: "pref-users", method: "remove",
ids: sel_rows.toString()
};
xhrPost("backend.php", query, () => {
this.reload();
});
}
} else {
alert(__("No users are selected."));
}
},
editSelected: function() {
const rows = this.getSelection();
if (rows.length == 0) {
alert(__("No users are selected."));
return;
}
if (rows.length > 1) {
alert(__("Please select one user."));
return;
}
this.edit(rows[0]);
},
getSelection :function() {
return Tables.getSelected("prefUserList");
}
}
function selectedUserDetails() {
const rows = getSelectedUsers();
if (rows.length == 0) {
alert(__("No users are selected."));
return;
}
if (rows.length > 1) {
alert(__("Please select only one user."));
return;
}
const query = "backend.php?op=pref-users&method=userdetails&id=" + param_escape(rows[0]);
if (dijit.byId("userDetailsDlg"))
dijit.byId("userDetailsDlg").destroyRecursive();
const dialog = new dijit.Dialog({
id: "userDetailsDlg",
title: __("User details"),
style: "width: 600px",
execute: function () {
dialog.hide();
},
href: query
});
dialog.show();
}
};
function opmlImportComplete(iframe) {
if (!iframe.contentDocument.body.innerHTML) return false;
@@ -541,19 +485,6 @@ function opmlRegenKey() {
return false;
}
function clearFeedAccessKeys() {
if (confirm(__("This will invalidate all previously generated feed URLs. Continue?"))) {
notify_progress("Clearing URLs...");
xhrPost("backend.php", { op: "pref-feeds", method: "clearKeys" }, () => {
notify_info("Generated URLs cleared.");
});
}
return false;
}
function gotoExportOpml(filename, settings) {
const tmp = settings ? 1 : 0;
document.location.href = "backend.php?op=opml&method=export&filename=" + filename + "&settings=" + tmp;