]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/dc/UserView.js
gui: refactor render_full_name
[pve-manager.git] / www / manager6 / dc / UserView.js
1 Ext.define('PVE.dc.UserView', {
2 extend: 'Ext.grid.GridPanel',
3
4 alias: ['widget.pveUserView'],
5
6 onlineHelp: 'pveum_users',
7
8 stateful: true,
9 stateId: 'grid-users',
10
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
31 var remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
32 selModel: sm,
33 baseurl: '/access/users/',
34 enableFn: function(rec) {
35 if (!caps.access['User.Modify']) {
36 return false;
37 }
38 return rec.data.userid !== 'root@pam';
39 },
40 callback: function() {
41 reload();
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
58 var edit_btn = new Proxmox.button.Button({
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
68 var pwchange_btn = new Proxmox.button.Button({
69 text: gettext('Password'),
70 disabled: true,
71 selModel: sm,
72 handler: function(btn, event, rec) {
73 var win = Ext.create('Proxmox.window.PasswordEdit', {
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_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,
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,
129 renderer: Proxmox.Utils.format_boolean,
130 dataIndex: 'enable'
131 },
132 {
133 header: gettext('Expire'),
134 width: 80,
135 sortable: true,
136 renderer: Proxmox.Utils.format_expire,
137 dataIndex: 'expire'
138 },
139 {
140 header: gettext('Name'),
141 width: 150,
142 sortable: true,
143 renderer: PVE.Utils.render_full_name,
144 dataIndex: 'firstname'
145 },
146 {
147 header: gettext('Comment'),
148 sortable: false,
149 renderer: Ext.String.htmlEncode,
150 dataIndex: 'comment',
151 flex: 1
152 }
153 ],
154 listeners: {
155 activate: reload,
156 itemdblclick: run_editor
157 }
158 });
159
160 me.callParent();
161 }
162 });