]> git.proxmox.com Git - pmg-gui.git/blame - js/UserView.js
fix bug #1707: use correct units for deferred mail queue (minutes)
[pmg-gui.git] / js / UserView.js
CommitLineData
ff735274 1/*global Proxmox*/
de0ebd99
DC
2/*jslint confusion: true*/
3/*renderer is string and function*/
ec1dd829
DM
4Ext.define('pmg-users', {
5 extend: 'Ext.data.Model',
6 fields: [
7 'userid', 'firstname', 'lastname' , 'email', 'comment',
56ea3718 8 'role', 'keys', 'realm',
ec1dd829
DM
9 { type: 'boolean', name: 'enable' },
10 { type: 'date', dateFormat: 'timestamp', name: 'expire' }
11 ],
12 proxy: {
13 type: 'proxmox',
14 url: "/api2/json/access/users"
15 },
16 idProperty: 'userid'
17});
18
19Ext.define('PMG.UserView', {
20 extend: 'Ext.grid.GridPanel',
21 alias: 'widget.pmgUserView',
22
8f5de6bf
DM
23 store: {
24 autoLoad: true,
25 model: 'pmg-users',
26 sorters: [
27 {
28 property: 'realm',
29 direction: 'ASC'
30 },
31 {
32 property: 'userid',
33 direction: 'ASC'
34 }
35 ]
36 },
37
4468e69c 38 controller: {
ec1dd829 39
4468e69c 40 xclass: 'Ext.app.ViewController',
ec1dd829 41
e93402ee
DM
42 init: function(view) {
43 Proxmox.Utils.monStoreErrors(view, view.store);
44 },
45
4468e69c 46 renderUsername: function(userid) {
fb511cb2 47 return Ext.htmlEncode(userid.match(/^(.+)(@[^@]+)$/)[1]);
4468e69c 48 },
ec1dd829 49
4468e69c
DM
50 renderFullName: function(firstname, metaData, record) {
51 var first = firstname || '';
52 var last = record.data.lastname || '';
fb511cb2 53 return Ext.htmlEncode(first + " " + last);
4468e69c 54 },
ec1dd829 55
4468e69c
DM
56 onAdd: function() {
57 var view = this.getView();
58
59 var win = Ext.create('PMG.UserEdit', {});
131ba4f6 60 win.on('destroy', function() { view.reload(); });
4468e69c
DM
61 win.show();
62 },
63
64 onEdit: function() {
65 var view = this.getView();
ec1dd829 66
4468e69c 67 var rec = view.selModel.getSelection()[0];
ec1dd829
DM
68
69 var win = Ext.create('PMG.UserEdit', {
4468e69c 70 userid: rec.data.userid
ec1dd829 71 });
131ba4f6 72 win.on('destroy', function() { view.reload(); });
ec1dd829 73 win.show();
4468e69c
DM
74 },
75
76 onPassword: function(btn, event, rec) {
77 var view = this.getView();
ec1dd829 78
4468e69c
DM
79 var win = Ext.create('Proxmox.window.PasswordEdit',{
80 userid: rec.data.userid
81 });
131ba4f6 82 win.on('destroy', function() { view.reload(); });
4468e69c
DM
83 win.show();
84 },
85
86 onAfterRemove: function(btn, res) {
87 var view = this.getView();
88 view.reload();
89 }
90 },
91
92 listeners: {
93 scope: 'controller',
771bd0b9 94 itemdblclick: 'onEdit'
4468e69c
DM
95 },
96
97 tbar: [
98 {
99 text: gettext('Add'),
100 reference: 'addBtn',
101 handler: 'onAdd'
102 },
103 {
104 xtype: 'proxmoxButton',
ec1dd829
DM
105 text: gettext('Edit'),
106 disabled: true,
4468e69c
DM
107 handler: 'onEdit'
108 },
109 {
110 xtype: 'proxmoxStdRemoveButton',
111 baseurl: '/access/users',
112 reference: 'removeBtn',
113 callback: 'onAfterRemove',
114 waitMsgTarget: true
115 },
116 {
117 xtype: 'proxmoxButton',
ec1dd829
DM
118 text: gettext('Password'),
119 disabled: true,
4468e69c
DM
120 handler: 'onPassword'
121 }
122 ],
ec1dd829 123
4468e69c
DM
124 columns: [
125 {
126 header: gettext('User name'),
127 width: 200,
128 sortable: true,
129 renderer: 'renderUsername',
130 dataIndex: 'userid'
131 },
132 {
133 header: gettext('Realm'),
134 width: 100,
135 sortable: true,
136 dataIndex: 'realm'
137 },
7818f0a3
DM
138 {
139 header: gettext('Role'),
140 width: 150,
141 sortable: true,
142 renderer: PMG.Utils.format_user_role,
143 dataIndex: 'role'
144 },
4468e69c
DM
145 {
146 header: gettext('Enabled'),
147 width: 80,
148 sortable: true,
149 renderer: Proxmox.Utils.format_boolean,
150 dataIndex: 'enable'
151 },
152 {
153 header: gettext('Expire'),
154 width: 80,
155 sortable: true,
156 renderer: Proxmox.Utils.format_expire,
157 dataIndex: 'expire'
158 },
159 {
160 header: gettext('Name'),
161 width: 150,
162 sortable: true,
163 renderer: 'renderFullName',
164 dataIndex: 'firstname'
165 },
166 {
167 header: gettext('Comment'),
168 sortable: false,
169 renderer: Ext.String.htmlEncode,
170 dataIndex: 'comment',
171 flex: 1
172 }
173 ],
ec1dd829 174
4468e69c
DM
175 reload: function() {
176 var me = this;
ec1dd829 177
4468e69c 178 me.store.load();
ec1dd829
DM
179 }
180});