]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/dc/UserView.js
bump version to 5.1-3
[pve-manager.git] / www / manager6 / dc / UserView.js
CommitLineData
ee7a4dad
DM
1Ext.define('PVE.dc.UserView', {
2 extend: 'Ext.grid.GridPanel',
3
4 alias: ['widget.pveUserView'],
5
ba93a9c6
DC
6 onlineHelp: 'pveum_users',
7
3ac2a964
DC
8 stateful: true,
9 stateId: 'grid-users',
10
ee7a4dad
DM
11 initComponent : function() {
12 var me = this;
13
14 var caps = Ext.state.Manager.get('GuiCap');
15
16 var store = new Ext.data.Store({
17 id: "users",
18 model: 'pve-users',
19 sorters: {
20 property: 'userid',
21 order: 'DESC'
22 }
23 });
24
25 var reload = function() {
26 store.load();
27 };
28
29 var sm = Ext.create('Ext.selection.RowModel', {});
30
3b1ca3ff 31 var remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
ee7a4dad 32 selModel: sm,
3b1ca3ff 33 baseurl: '/access/users/',
ee7a4dad
DM
34 enableFn: function(rec) {
35 if (!caps.access['User.Modify']) {
36 return false;
37 }
38 return rec.data.userid !== 'root@pam';
39 },
3b1ca3ff
DC
40 callback: function() {
41 reload();
ee7a4dad
DM
42 }
43 });
44
45 var run_editor = function() {
46 var rec = sm.getSelection()[0];
47 if (!rec || !caps.access['User.Modify']) {
48 return;
49 }
50
51 var win = Ext.create('PVE.dc.UserEdit',{
52 userid: rec.data.userid
53 });
54 win.on('destroy', reload);
55 win.show();
56 };
57
5720fafa 58 var edit_btn = new Proxmox.button.Button({
ee7a4dad
DM
59 text: gettext('Edit'),
60 disabled: true,
61 enableFn: function(rec) {
62 return !!caps.access['User.Modify'];
63 },
64 selModel: sm,
65 handler: run_editor
66 });
67
5720fafa 68 var pwchange_btn = new Proxmox.button.Button({
ee7a4dad
DM
69 text: gettext('Password'),
70 disabled: true,
71 selModel: sm,
72 handler: function(btn, event, rec) {
83c52beb 73 var win = Ext.create('Proxmox.window.PasswordEdit', {
ee7a4dad
DM
74 userid: rec.data.userid
75 });
76 win.on('destroy', reload);
77 win.show();
78 }
79 });
80
81 var tbar = [
82 {
83 text: gettext('Add'),
84 disabled: !caps.access['User.Modify'],
85 handler: function() {
86 var win = Ext.create('PVE.dc.UserEdit',{
87 });
88 win.on('destroy', reload);
89 win.show();
90 }
91 },
92 edit_btn, remove_btn, pwchange_btn
93 ];
94
95 var render_full_name = function(firstname, metaData, record) {
96
97 var first = firstname || '';
98 var last = record.data.lastname || '';
7daa19ff 99 return Ext.htmlEncode(first + " " + last);
ee7a4dad
DM
100 };
101
102 var render_username = function(userid) {
103 return userid.match(/^(.+)(@[^@]+)$/)[1];
104 };
105
106 var render_realm = function(userid) {
107 return userid.match(/@([^@]+)$/)[1];
108 };
109
110 Ext.apply(me, {
111 store: store,
112 selModel: sm,
ee7a4dad
DM
113 tbar: tbar,
114 viewConfig: {
115 trackOver: false
116 },
117 columns: [
118 {
119 header: gettext('User name'),
120 width: 200,
121 sortable: true,
122 renderer: render_username,
123 dataIndex: 'userid'
124 },
125 {
126 header: gettext('Realm'),
127 width: 100,
128 sortable: true,
129 renderer: render_realm,
130 dataIndex: 'userid'
131 },
132 {
133 header: gettext('Enabled'),
134 width: 80,
135 sortable: true,
e7ade592 136 renderer: Proxmox.Utils.format_boolean,
ee7a4dad
DM
137 dataIndex: 'enable'
138 },
139 {
140 header: gettext('Expire'),
141 width: 80,
142 sortable: true,
e7ade592 143 renderer: Proxmox.Utils.format_expire,
ee7a4dad
DM
144 dataIndex: 'expire'
145 },
146 {
147 header: gettext('Name'),
148 width: 150,
149 sortable: true,
150 renderer: render_full_name,
151 dataIndex: 'firstname'
152 },
153 {
ee7a4dad
DM
154 header: gettext('Comment'),
155 sortable: false,
2eb0767b 156 renderer: Ext.String.htmlEncode,
ee7a4dad
DM
157 dataIndex: 'comment',
158 flex: 1
159 }
160 ],
161 listeners: {
c0b3df6e 162 activate: reload,
ee7a4dad
DM
163 itemdblclick: run_editor
164 }
165 });
166
167 me.callParent();
168 }
169});