summaryrefslogtreecommitdiff
path: root/js/PrefUsers.js
blob: 20790ec5d66bd9075f8a48d6580244a04a82f3d9 (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
121
'use strict'
/* global __, ngettext */
define(["dojo/_base/declare"], function (declare) {

	return declare("fox.PrefUsers", null, {
		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();
					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 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("prefUserList");
		}
	});
});