]> git.proxmox.com Git - pmg-gui.git/blame - js/UserEdit.js
js/UserEdit.js: do not use onGetValues
[pmg-gui.git] / js / UserEdit.js
CommitLineData
b7e43bc4
DM
1Ext.define('PMG.UserViewModel', {
2 extend: 'Ext.app.ViewModel',
3 alias: 'viewmodel.pmgUserViewModel',
4
5 data: {
6 userid: undefined,
7 isCreate: true,
8 isSuperUser: false,
9 }
10});
ec1dd829 11
b7e43bc4
DM
12Ext.define('PMG.UserEdit', {
13 extend: 'Proxmox.window.Edit',
14 alias: ['widget.pmgUserEdit'],
ec1dd829 15
b7e43bc4 16 viewModel: { type: 'pmgUserViewModel' },
ec1dd829 17
b7e43bc4 18 isAdd: true,
ec1dd829 19
b7e43bc4 20 subject: gettext('User'),
ec1dd829 21
b7e43bc4 22 fieldDefaults: { labelWidth: 120 },
4d904e0a 23
b7e43bc4
DM
24 items: {
25 xtype: 'inputpanel',
b7e43bc4
DM
26 column1: [
27 {
28 xtype: 'textfield',
c5e49a3d 29 name: 'username',
b7e43bc4
DM
30 fieldLabel: gettext('User name'),
31 allowBlank: false,
32 bind: {
b7e43bc4
DM
33 submitValue: '{isCreate}',
34 editable: '{isCreate}'
35 }
36 },
37 {
38 xtype: 'textfield',
39 inputType: 'password',
40 fieldLabel: gettext('Password'),
41 minLength: 5,
42 name: 'password',
43 listeners: {
44 change: function(field){
45 field.next().validate();
46 },
47 blur: function(field){
48 field.next().validate();
49 }
50 },
5c0672e4 51 hidden: true, // avoid flicker
b7e43bc4
DM
52 bind: {
53 hidden: '{!isCreate}',
54 disabled: '{!isCreate}'
55 }
56 },
57 {
58 xtype: 'textfield',
59 inputType: 'password',
60 fieldLabel: gettext('Confirm password'),
61 name: 'verifypassword',
62 vtype: 'password',
63 initialPassField: 'password',
64 submitValue: false,
5c0672e4 65 hidden: true, // avoid flicker
b7e43bc4
DM
66 bind: {
67 hidden: '{!isCreate}',
68 disabled: '{!isCreate}'
69 }
70 },
ec1dd829 71 {
c0ffdd00 72 xtype: 'pmgRoleSelector',
ec1dd829
DM
73 name: 'role',
74 allowBlank: false,
b7e43bc4
DM
75 fieldLabel: gettext('Role'),
76 bind: {
77 disabled: '{isSuperUser}'
78 }
ec1dd829 79 },
b7e43bc4 80 {
ec1dd829
DM
81 xtype: 'datefield',
82 name: 'expire',
83 emptyText: Proxmox.Utils.neverText,
84 format: 'Y-m-d',
ec1dd829 85 submitFormat: 'U',
b7e43bc4
DM
86 fieldLabel: gettext('Expire'),
87 bind: {
88 disabled: '{isSuperUser}'
89 }
ec1dd829
DM
90 },
91 {
92 xtype: 'proxmoxcheckbox',
93 fieldLabel: gettext('Enabled'),
94 name: 'enable',
ec1dd829
DM
95 uncheckedValue: 0,
96 defaultValue: 1,
b7e43bc4
DM
97 checked: true,
98 bind: {
99 disabled: '{isSuperUser}'
100 }
ec1dd829 101 }
b7e43bc4 102 ],
ec1dd829 103
b7e43bc4 104 column2: [
ec1dd829
DM
105 {
106 xtype: 'proxmoxtextfield',
107 name: 'firstname',
b7e43bc4
DM
108 fieldLabel: gettext('First Name'),
109 bind: {
110 deleteEmpty: '{!isCreate}'
111 }
ec1dd829
DM
112 },
113 {
114 xtype: 'proxmoxtextfield',
115 name: 'lastname',
b7e43bc4
DM
116 fieldLabel: gettext('Last Name'),
117 bind: {
118 deleteEmpty: '{!isCreate}'
119 }
ec1dd829
DM
120 },
121 {
122 xtype: 'proxmoxtextfield',
123 name: 'email',
124 fieldLabel: gettext('E-Mail'),
b7e43bc4
DM
125 vtype: 'proxmoxMail',
126 bind: {
127 deleteEmpty: '{!isCreate}'
128 }
ec1dd829 129 }
b7e43bc4 130 ],
ec1dd829 131
b7e43bc4 132 columnB: [
ec1dd829
DM
133 {
134 xtype: 'proxmoxtextfield',
135 name: 'comment',
b7e43bc4
DM
136 fieldLabel: gettext('Comment'),
137 bind: {
138 disabled: '{isSuperUser}',
139 deleteEmpty: '{!isCreate}'
140 }
ec1dd829
DM
141 },
142 {
143 xtype: 'proxmoxtextfield',
144 name: 'keys',
b7e43bc4
DM
145 fieldLabel: gettext('Key IDs'),
146 bind: {
147 deleteEmpty: '{!isCreate}'
148 }
ec1dd829 149 }
b7e43bc4
DM
150 ]
151 },
ec1dd829 152
b7e43bc4 153 controller: {
ec1dd829 154
b7e43bc4 155 xclass: 'Ext.app.ViewController',
4d904e0a 156
bf01ac26
DM
157 initViewModel: function(viewModel) {
158
159 var view = this.getView();
b7e43bc4 160 var userid = view.userid;
4d904e0a 161
bf01ac26 162 viewModel.set('isCreate', !view.userid);
4d904e0a 163
b7e43bc4
DM
164 if (userid) {
165 viewModel.set('userid', userid);
166 if (userid === 'root@pam') {
167 viewModel.set('isSuperUser', true);
168 }
169 }
170 }
4d904e0a
DM
171 },
172
c5e49a3d
DM
173 getValues: function(dirtyOnly) {
174 var me = this;
175
176 var values = me.callParent(arguments);
177
178 // hack: ExtJS datefield does not submit 0, so we need to set that
179 if (!values.expire) {
180 values.expire = 0;
181 }
182
183 if (me.create) {
184 values.userid = values.username + '@pmg';
185 }
186
187 delete values.username;
188
189 if (!values.password) {
190 delete values.password;
191 }
192
193 return values;
194 },
195
2d1e22dd
DM
196 setValues: function(values) {
197 var me = this;
198
199 if (Ext.isDefined(values.expire)) {
200 if (values.expire) {
201 values.expire = new Date(values.expire * 1000);
202 } else {
203 // display 'never' instead of '1970-01-01'
204 values.expire = null;
205 }
206 }
207
208 me.callParent([values]);
209 },
210
4d904e0a
DM
211 initComponent : function() {
212 var me = this;
213
b7e43bc4
DM
214 var userid = me.userid;
215 me.create = !userid; // fixme
4d904e0a 216
b7e43bc4 217 if (!userid) {
4d904e0a
DM
218 me.url = '/api2/extjs/access/users';
219 me.method = 'POST';
220 } else {
c62792c1 221 me.autoLoad = true;
b7e43bc4 222 me.url = '/api2/extjs/access/users/' + userid;
4d904e0a
DM
223 me.method = 'PUT';
224 }
225
b7e43bc4 226 me.callParent();
ec1dd829
DM
227 }
228});