-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'],
+ onlineHelp: 'pmgconfig_localuser',
- 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.isCreate = !userid;
+ me.url = userid ? baseurl + '/' + userid : baseurl;
+ me.method = userid ? 'PUT' : 'POST';
+ me.autoLoad = !!userid;
+
+ return {
+ useridXType: userid ? 'displayfield' : 'textfield',
+ isSuperUser: userid === 'root@pam',
+ };
+ },
+
items: {
xtype: 'inputpanel',
column1: [
xtype: 'textfield',
name: 'username',
fieldLabel: gettext('User name'),
+ renderer: Ext.htmlEncode,
allowBlank: false,
- bind: {
+ minLength: 4,
+ cbind: {
submitValue: '{isCreate}',
- editable: '{isCreate}'
- }
+ xtype: '{useridXType}',
+ },
},
{
xtype: 'textfield',
allowBlank: false,
name: 'password',
listeners: {
- change: function(field){
+ change: function(field) {
field.next().validate();
},
- blur: function(field){
+ blur: function(field) {
field.next().validate();
- }
+ },
},
- hidden: true, // avoid flicker
- bind: {
+ cbind: {
hidden: '{!isCreate}',
- disabled: '{!isCreate}'
- }
+ disabled: '{!isCreate}',
+ },
},
{
- xtype: 'textfield',
+ xtype: 'textfield',
inputType: 'password',
fieldLabel: gettext('Confirm password'),
name: 'verifypassword',
initialPassField: 'password',
allowBlank: false,
submitValue: false,
- hidden: true, // avoid flicker
- bind: {
+ cbind: {
hidden: '{!isCreate}',
- disabled: '{!isCreate}'
- }
+ disabled: '{!isCreate}',
+ },
},
{
xtype: 'pmgRoleSelector',
name: 'role',
allowBlank: false,
fieldLabel: gettext('Role'),
- bind: {
- disabled: '{isSuperUser}'
- }
+ cbind: {
+ disabled: '{isSuperUser}',
+ },
},
{
xtype: 'datefield',
format: 'Y-m-d',
submitFormat: 'U',
fieldLabel: gettext('Expire'),
- bind: {
- disabled: '{isSuperUser}'
- }
+ cbind: {
+ disabled: '{isSuperUser}',
+ },
},
{
xtype: 'proxmoxcheckbox',
uncheckedValue: 0,
defaultValue: 1,
checked: true,
- bind: {
- disabled: '{isSuperUser}'
- }
- }
+ cbind: {
+ disabled: '{isSuperUser}',
+ },
+ },
],
column2: [
xtype: 'proxmoxtextfield',
name: 'firstname',
fieldLabel: gettext('First Name'),
- bind: {
- deleteEmpty: '{!isCreate}'
- }
+ cbind: {
+ deleteEmpty: '{!isCreate}',
+ },
},
{
xtype: 'proxmoxtextfield',
name: 'lastname',
fieldLabel: gettext('Last Name'),
- bind: {
- deleteEmpty: '{!isCreate}'
- }
+ cbind: {
+ deleteEmpty: '{!isCreate}',
+ },
},
{
xtype: 'proxmoxtextfield',
name: 'email',
fieldLabel: gettext('E-Mail'),
vtype: 'proxmoxMail',
- bind: {
- deleteEmpty: '{!isCreate}'
- }
- }
+ cbind: {
+ deleteEmpty: '{!isCreate}',
+ },
+ },
],
columnB: [
xtype: 'proxmoxtextfield',
name: 'comment',
fieldLabel: gettext('Comment'),
- bind: {
+ cbind: {
disabled: '{isSuperUser}',
- deleteEmpty: '{!isCreate}'
- }
+ deleteEmpty: '{!isCreate}',
+ },
},
{
xtype: 'proxmoxtextfield',
name: 'keys',
fieldLabel: gettext('Key IDs'),
- bind: {
- deleteEmpty: '{!isCreate}'
- }
- }
- ]
- },
-
- controller: {
-
- xclass: 'Ext.app.ViewController',
-
- initViewModel: function(viewModel) {
-
- var view = this.getView();
- var userid = view.getUserid();
-
- viewModel.set('userid', userid);
- }
+ cbind: {
+ deleteEmpty: '{!isCreate}',
+ },
+ },
+ ],
},
getValues: function(dirtyOnly) {
values.expire = 0;
}
- if (me.create) {
+ if (me.isCreate) {
values.userid = values.username + '@pmg';
}
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';
- }
-
- return userid;
- }
});