]>
Commit | Line | Data |
---|---|---|
ee7a4dad DM |
1 | Ext.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 | ||
ee7a4dad DM |
95 | var render_username = function(userid) { |
96 | return userid.match(/^(.+)(@[^@]+)$/)[1]; | |
97 | }; | |
98 | ||
99 | var render_realm = function(userid) { | |
100 | return userid.match(/@([^@]+)$/)[1]; | |
101 | }; | |
102 | ||
103 | Ext.apply(me, { | |
104 | store: store, | |
105 | selModel: sm, | |
ee7a4dad DM |
106 | tbar: tbar, |
107 | viewConfig: { | |
108 | trackOver: false | |
109 | }, | |
110 | columns: [ | |
111 | { | |
112 | header: gettext('User name'), | |
113 | width: 200, | |
114 | sortable: true, | |
115 | renderer: render_username, | |
116 | dataIndex: 'userid' | |
117 | }, | |
118 | { | |
119 | header: gettext('Realm'), | |
120 | width: 100, | |
121 | sortable: true, | |
122 | renderer: render_realm, | |
123 | dataIndex: 'userid' | |
124 | }, | |
125 | { | |
126 | header: gettext('Enabled'), | |
127 | width: 80, | |
128 | sortable: true, | |
e7ade592 | 129 | renderer: Proxmox.Utils.format_boolean, |
ee7a4dad DM |
130 | dataIndex: 'enable' |
131 | }, | |
132 | { | |
133 | header: gettext('Expire'), | |
134 | width: 80, | |
135 | sortable: true, | |
e7ade592 | 136 | renderer: Proxmox.Utils.format_expire, |
ee7a4dad DM |
137 | dataIndex: 'expire' |
138 | }, | |
139 | { | |
140 | header: gettext('Name'), | |
141 | width: 150, | |
142 | sortable: true, | |
6ad4be69 | 143 | renderer: PVE.Utils.render_full_name, |
ee7a4dad DM |
144 | dataIndex: 'firstname' |
145 | }, | |
146 | { | |
ee7a4dad DM |
147 | header: gettext('Comment'), |
148 | sortable: false, | |
2eb0767b | 149 | renderer: Ext.String.htmlEncode, |
ee7a4dad DM |
150 | dataIndex: 'comment', |
151 | flex: 1 | |
152 | } | |
153 | ], | |
154 | listeners: { | |
c0b3df6e | 155 | activate: reload, |
ee7a4dad DM |
156 | itemdblclick: run_editor |
157 | } | |
158 | }); | |
159 | ||
160 | me.callParent(); | |
161 | } | |
162 | }); |