]> git.proxmox.com Git - pmg-gui.git/blobdiff - js/UserEdit.js
node certificate: make parent panel scrollable
[pmg-gui.git] / js / UserEdit.js
index 33fc669ec5017191d4fac40c14571f5fb5cb94ca..e2125305fa92b382fee6beb757938b2327837c69 100644 (file)
@@ -1,19 +1,10 @@
-Ext.define('PMG.UserViewModel', {
-    extend: 'Ext.app.ViewModel',
-    alias: 'viewmodel.pmgUserViewModel',
-
-    data: {
-       userid: undefined,
-       isCreate: true,
-       isSuperUser: false,
-    }
-});
-
 Ext.define('PMG.UserEdit', {
     extend: 'Proxmox.window.Edit',
-    alias: ['widget.pmgUserEdit'],
+    alias: 'widget.pmgUserEdit',
+    mixins: ['Proxmox.Mixin.CBind'],
+    onlineHelp: 'pmgconfig_localuser',
 
-    viewModel: { type: 'pmgUserViewModel' },
+    userid: undefined,
 
     isAdd: true,
 
@@ -21,79 +12,80 @@ Ext.define('PMG.UserEdit', {
 
     fieldDefaults: { labelWidth: 120 },
 
-    items: {
-       xtype: 'inputpanel',
-       onGetValues: function(values) {
-           var me = this;
+    cbindData: function(initialConfig) {
+       var me = this;
 
-           // hack: ExtJS datefield does not submit 0, so we need to set that
-           if (!values.expire) {
-               values.expire = 0;
-           }
+       var userid = initialConfig.userid;
+       var baseurl = '/api2/extjs/access/users';
 
-           if (me.create) {
-               values.userid = values.userid + '@pmg';
-           }
+       me.isCreate = !userid;
+       me.url = userid ? baseurl + '/' + userid : baseurl;
+       me.method = userid ? 'PUT' : 'POST';
+       me.autoLoad = !!userid;
 
-           if (!values.password) {
-               delete values.password;
-           }
-
-           return values;
-       },
+       return {
+           useridXType: userid ? 'displayfield' : 'textfield',
+           isSuperUser: userid === 'root@pam',
+       };
+    },
 
+    items: {
+       xtype: 'inputpanel',
        column1: [
            {
                xtype: 'textfield',
-               name: 'userid',
+               name: 'username',
                fieldLabel: gettext('User name'),
+               renderer: Ext.htmlEncode,
                allowBlank: false,
-               bind: {
-                   value: '{userid}',
+               minLength: 4,
+               cbind: {
                    submitValue: '{isCreate}',
-                   editable: '{isCreate}'
-               }
+                   xtype: '{useridXType}',
+               },
            },
            {
                xtype: 'textfield',
                inputType: 'password',
                fieldLabel: gettext('Password'),
                minLength: 5,
+               allowBlank: false,
                name: 'password',
                listeners: {
-                    change: function(field){
+                    change: function(field) {
                        field.next().validate();
                     },
-                    blur: function(field){
+                    blur: function(field) {
                        field.next().validate();
-                    }
+                    },
                },
-               bind: {
+               cbind: {
                    hidden: '{!isCreate}',
-                   disabled: '{!isCreate}'
-               }
+                   disabled: '{!isCreate}',
+               },
            },
            {
-               xtype: 'textfield',
+               xtype: 'textfield',
                inputType: 'password',
                fieldLabel: gettext('Confirm password'),
                name: 'verifypassword',
                vtype: 'password',
                initialPassField: 'password',
+               allowBlank: false,
                submitValue: false,
-               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',
@@ -102,9 +94,9 @@ Ext.define('PMG.UserEdit', {
                format: 'Y-m-d',
                submitFormat: 'U',
                 fieldLabel: gettext('Expire'),
-               bind: {
-                   disabled: '{isSuperUser}'
-               }
+               cbind: {
+                   disabled: '{isSuperUser}',
+               },
             },
            {
                xtype: 'proxmoxcheckbox',
@@ -113,10 +105,10 @@ Ext.define('PMG.UserEdit', {
                uncheckedValue: 0,
                defaultValue: 1,
                checked: true,
-               bind: {
-                   disabled: '{isSuperUser}'
-               }
-           }
+               cbind: {
+                   disabled: '{isSuperUser}',
+               },
+           },
        ],
 
        column2: [
@@ -124,27 +116,27 @@ Ext.define('PMG.UserEdit', {
                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: [
@@ -152,73 +144,57 @@ Ext.define('PMG.UserEdit', {
                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}'
-               }
-           }
-       ]
+               cbind: {
+                   deleteEmpty: '{!isCreate}',
+               },
+           },
+       ],
     },
 
-    controller: {
+    getValues: function(dirtyOnly) {
+       var me = this;
 
-       xclass: 'Ext.app.ViewController',
+       var values = me.callParent(arguments);
 
-       init: function(view) {
-           var userid = view.userid;
-           var viewModel = view.getViewModel();
+       // hack: ExtJS datefield does not submit 0, so we need to set that
+       if (!values.expire) {
+           values.expire = 0;
+       }
 
-           view.getViewModel().set('isCreate', !view.userid);
+       if (me.isCreate) {
+           values.userid = values.username + '@pmg';
+       }
 
-           if (userid) {
-               viewModel.set('userid', userid);
-               if (userid === 'root@pam') {
-                   viewModel.set('isSuperUser', true);
-               }
-           }
+       delete values.username;
+
+       if (!values.password) {
+           delete values.password;
        }
-    },
 
-    initComponent : function() {
-        var me = this;
+       return values;
+    },
 
-       var userid = me.userid;
-       me.create = !userid; // fixme
+    setValues: function(values) {
+       var me = this;
 
-        if (!userid) {
-            me.url = '/api2/extjs/access/users';
-            me.method = 'POST';
-        } else {
-            me.url = '/api2/extjs/access/users/' + userid;
-            me.method = 'PUT';
+       if (Ext.isDefined(values.expire)) {
+           if (values.expire) {
+               values.expire = new Date(values.expire * 1000);
+           } else {
+               // display 'never' instead of '1970-01-01'
+               values.expire = null;
+           }
        }
 
-       me.callParent();
-
-       if (userid) {
-            me.load({
-               success: function(response, options) {
-                   var data = response.result.data;
-                   if (Ext.isDefined(data.expire)) {
-                       if (data.expire) {
-                           data.expire = new Date(data.expire * 1000);
-                       } else {
-                           // display 'never' instead of '1970-01-01'
-                           data.expire = null;
-                       }
-                   }
-
-                   me.setValues(data);
-                }
-            });
-        }
-    }
+       me.callParent([values]);
+    },
 });