-Ext.define('PMG.UserViewModel', {
- extend: 'Ext.app.ViewModel',
- alias: 'viewmodel.pmgUserViewModel',
-
- data: {
- userid: undefined,
- isCreate: true
- },
-
- formulas: {
- isCreate: function (get) {
- return !get('userid');
- },
- isSuperUser: function (get) {
- return get('userid') === 'root@pam';
- }
- }
-});
-
Ext.define('PMG.UserEdit', {
extend: 'Proxmox.window.Edit',
- alias: ['widget.pmgUserEdit'],
-
- config: {
- userid: undefined
- },
+ alias: 'widget.pmgUserEdit',
+ mixins: ['Proxmox.Mixin.CBind'],
- viewModel: { type: 'pmgUserViewModel' },
+ userid: undefined,
isAdd: true,
fieldDefaults: { labelWidth: 120 },
+ cbindData: function(initialConfig) {
+ var me = this;
+
+ var userid = initialConfig.userid;
+ var baseurl = '/api2/extjs/access/users';
+
+ me.create = !userid;
+ me.url = userid ? baseurl + '/' + userid : baseurl;
+ me.method = userid ? 'PUT' : 'POST';
+ me.autoLoad = userid ? true : false;
+
+ return {
+ isSuperUser: userid === 'root@pam',
+ }
+ },
+
items: {
xtype: 'inputpanel',
column1: [
name: 'username',
fieldLabel: gettext('User name'),
allowBlank: false,
- bind: {
- submitValue: '{isCreate}',
- editable: '{isCreate}'
+ cbind: {
+ submitValue: '{create}',
+ editable: '{create}'
}
},
{
field.next().validate();
}
},
- hidden: true, // avoid flicker
- bind: {
- hidden: '{!isCreate}',
- disabled: '{!isCreate}'
+ cbind: {
+ hidden: '{!create}',
+ disabled: '{!create}'
}
},
{
initialPassField: 'password',
allowBlank: false,
submitValue: false,
- hidden: true, // avoid flicker
- bind: {
- hidden: '{!isCreate}',
- disabled: '{!isCreate}'
+ cbind: {
+ hidden: '{!create}',
+ disabled: '{!create}'
}
},
{
name: 'role',
allowBlank: false,
fieldLabel: gettext('Role'),
- bind: {
+ cbind: {
disabled: '{isSuperUser}'
}
},
format: 'Y-m-d',
submitFormat: 'U',
fieldLabel: gettext('Expire'),
- bind: {
+ cbind: {
disabled: '{isSuperUser}'
}
},
uncheckedValue: 0,
defaultValue: 1,
checked: true,
- bind: {
+ cbind: {
disabled: '{isSuperUser}'
}
}
xtype: 'proxmoxtextfield',
name: 'firstname',
fieldLabel: gettext('First Name'),
- bind: {
- deleteEmpty: '{!isCreate}'
+ cbind: {
+ deleteEmpty: '{!create}'
}
},
{
xtype: 'proxmoxtextfield',
name: 'lastname',
fieldLabel: gettext('Last Name'),
- bind: {
- deleteEmpty: '{!isCreate}'
+ cbind: {
+ deleteEmpty: '{!create}'
}
},
{
name: 'email',
fieldLabel: gettext('E-Mail'),
vtype: 'proxmoxMail',
- bind: {
- deleteEmpty: '{!isCreate}'
+ cbind: {
+ deleteEmpty: '{!create}'
}
}
],
xtype: 'proxmoxtextfield',
name: 'comment',
fieldLabel: gettext('Comment'),
- bind: {
+ cbind: {
disabled: '{isSuperUser}',
- deleteEmpty: '{!isCreate}'
+ deleteEmpty: '{!create}'
}
},
{
xtype: 'proxmoxtextfield',
name: 'keys',
fieldLabel: gettext('Key IDs'),
- bind: {
- deleteEmpty: '{!isCreate}'
+ cbind: {
+ deleteEmpty: '{!create}'
}
}
]
},
- controller: {
-
- xclass: 'Ext.app.ViewController',
-
- initViewModel: function(viewModel) {
-
- var view = this.getView();
- var userid = view.getUserid();
-
- viewModel.set('userid', userid);
- }
- },
-
getValues: function(dirtyOnly) {
var me = this;
}
me.callParent([values]);
- },
-
- create: true,
- url: '/api2/extjs/access/users',
- autoLoad: false,
- method: 'POST',
-
- updateUserid: function(userid) {
- var me = this;
-
- me.create = !userid; // fixme
-
- if (!userid) {
- autoLoad = false;
- me.url = '/api2/extjs/access/users';
- me.method = 'POST';
- } else {
- me.autoLoad = true;
- me.url = '/api2/extjs/access/users/' + userid;
- me.method = 'PUT';
- }
}
});