]> git.proxmox.com Git - pve-manager.git/blob - www/manager/dc/UserView.js
use standard titles for create/edit dialogs
[pve-manager.git] / www / manager / dc / UserView.js
1 Ext.define('PVE.dc.UserView', {
2 extend: 'Ext.grid.GridPanel',
3
4 alias: ['widget.pveUserView'],
5
6 initComponent : function() {
7 var me = this;
8
9 var store = new Ext.data.Store({
10 id: "users",
11 model: 'pve-users',
12 sorters: {
13 property: 'userid',
14 order: 'DESC'
15 }
16 });
17
18 var reload = function() {
19 store.load();
20 };
21
22 var remove_btn = new Ext.Button({
23 text: gettext('Remove'),
24 disabled: true,
25 handler: function() {
26 var msg;
27 var sm = me.getSelectionModel();
28 var rec = sm.getSelection()[0];
29 if (!rec) {
30 return;
31 }
32
33 var userid = rec.data.userid;
34
35 msg = 'Are you sure you want to permanently delete the user: ' + userid;
36 Ext.Msg.confirm('Deletion Confirmation', msg, function(btn) {
37 if (btn !== 'yes') {
38 return;
39 }
40
41 PVE.Utils.API2Request({
42 url: '/access/users/' + userid,
43 method: 'DELETE',
44 waitMsgTarget: me,
45 callback: function() {
46 reload();
47 },
48 failure: function (response, opts) {
49 Ext.Msg.alert('Error',response.htmlStatus);
50 }
51 });
52 });
53 }
54 });
55
56 var run_editor = function() {
57 var sm = me.getSelectionModel();
58 var rec = sm.getSelection()[0];
59 if (!rec) {
60 return;
61 }
62
63 var win = Ext.create('PVE.dc.UserEdit',{
64 userid: rec.data.userid
65 });
66 win.on('destroy', reload);
67 win.show();
68 };
69
70 var edit_btn = new Ext.Button({
71 text: gettext('Edit'),
72 disabled: true,
73 handler: run_editor
74 });
75
76 var set_button_status = function() {
77 var sm = me.getSelectionModel();
78 var rec = sm.getSelection()[0];
79
80 if (!rec) {
81 remove_btn.disable();
82 edit_btn.disable();
83 return;
84 }
85
86 edit_btn.setDisabled(false);
87
88 remove_btn.setDisabled(rec.data.userid === 'root@pam');
89 };
90
91 var tbar = [
92 {
93 text: gettext('Create'),
94 handler: function() {
95 var win = Ext.create('PVE.dc.UserEdit',{
96 });
97 win.on('destroy', reload);
98 win.show();
99 }
100 },
101 edit_btn, remove_btn
102 ];
103
104 var render_expire = function(date) {
105 if (!date) {
106 return 'never';
107 }
108 return Ext.Date.format(date, "Y-m-d");
109 };
110
111 var render_full_name = function(firstname, metaData, record) {
112
113 var first = firstname || '';
114 var last = record.data.lastname || '';
115 return first + " " + last;
116 };
117
118 var render_username = function(userid) {
119 return userid.match(/^([^@]+)/)[1];
120 };
121
122 var render_realm = function(userid) {
123 return userid.match(/@([^@]+)$/)[1];
124 };
125
126 Ext.apply(me, {
127 store: store,
128 stateful: false,
129 tbar: tbar,
130
131 viewConfig: {
132 trackOver: false
133 },
134
135 columns: [
136 {
137 header: gettext('User name'),
138 width: 200,
139 sortable: true,
140 renderer: render_username,
141 dataIndex: 'userid'
142 },
143 {
144 header: gettext('Realm'),
145 width: 100,
146 sortable: true,
147 renderer: render_realm,
148 dataIndex: 'userid'
149 },
150 {
151 header: gettext('Enabled'),
152 width: 80,
153 sortable: true,
154 dataIndex: 'enable'
155 },
156 {
157 header: gettext('Expire'),
158 width: 80,
159 sortable: true,
160 renderer: render_expire,
161 dataIndex: 'expire'
162 },
163 {
164 header: gettext('Name'),
165 width: 150,
166 sortable: true,
167 renderer: render_full_name,
168 dataIndex: 'firstname'
169 },
170 {
171 id: 'comment',
172 header: gettext('Comment'),
173 sortable: false,
174 dataIndex: 'comment',
175 flex: 1
176 }
177 ],
178 listeners: {
179 show: reload,
180 itemdblclick: run_editor,
181 selectionchange: set_button_status
182 }
183 });
184
185 me.callParent();
186 }
187 });