summaryrefslogtreecommitdiff
path: root/js/PrefUsers.js
blob: f09c738055af884ef8437080778d2cd19809f854 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
'use strict'

/* global __  */
/* global xhrPost, dojo, dijit, Notify, Tables */

const	Users = {
	reload: function(sort) {
		const user_search = $("user_search");
		const search = user_search ? user_search.value : "";

		xhrPost("backend.php", { op: "pref-users", sort: sort, search: search }, (transport) => {
			dijit.byId('userConfigTab').attr('content', transport.responseText);
			Notify.close();
		});
	},
	add: function() {
		const login = prompt(__("Please enter username:"), "");

		if (login) {
			Notify.progress("Adding user...");

			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=" +
			encodeURIComponent(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();
						Users.reload();
					});
				}
			},
			href: query
		});

		dialog.show();
	},
	resetSelected: function() {
		const rows = this.getSelection();

		if (rows.length == 0) {
			alert(__("No users 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.close();
				Notify.info(transport.responseText, true);
			});

		}
	},
	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 selected."));
		}
	},
	editSelected: function() {
		const rows = this.getSelection();

		if (rows.length == 0) {
			alert(__("No users selected."));
			return;
		}

		if (rows.length > 1) {
			alert(__("Please select one user."));
			return;
		}

		this.edit(rows[0]);
	},
	getSelection :function() {
		return Tables.getSelected("users-list");
	}
}