Added editable field in the ZFS over iSCSI panel

- Made the fields Pool, Target, API Username, API Password editable.
- Added a Confirm Password field and logic to compare
- Hide the password in the 'Edit' panel.
- This is for issue/enhancement #26
- Kept each patch for the version of pvemanagerlib.js and if there are
bugs from the first patch release then added an '_<int>' to the version
of the patch. The pvemanagerlib.js will always follow the highest
version.
This commit is contained in:
Kevin Scott Adams 2018-10-23 15:42:23 -04:00
parent 7dfa7f367d
commit c487158579
5 changed files with 604 additions and 21 deletions

View File

@ -0,0 +1,167 @@
--- pvemanagerlib-5.2-10.js 2018-10-23 07:18:18.058603386 -0400
+++ pvemanagerlib.js 2018-10-23 15:29:52.573563883 -0400
@@ -5597,6 +5597,7 @@
alias: ['widget.pveiScsiProviderSelector'],
comboItems: [
['comstar', 'Comstar'],
+ ['freenas', 'FreeNAS-API'],
[ 'istgt', 'istgt'],
[ 'iet', 'IET'],
[ 'LIO', 'LIO']
@@ -28583,6 +28584,7 @@
data: {
isLIO: false,
isComstar: true,
+ isFreeNAS: false,
hasWriteCacheOption: true
}
},
@@ -28595,10 +28597,19 @@
}
},
changeISCSIProvider: function(f, newVal, oldVal) {
+ var me = this;
var vm = this.getViewModel();
vm.set('isLIO', newVal === 'LIO');
vm.set('isComstar', newVal === 'comstar');
- vm.set('hasWriteCacheOption', newVal === 'comstar' || newVal === 'istgt');
+ vm.set('isFreeNAS', newVal === 'freenas');
+ vm.set('hasWriteCacheOption', newVal === 'comstar' || newVal === 'freenas' || newVal === 'istgt');
+ if (newVal !== 'freenas') {
+ me.lookupReference('freenas_use_ssl_field').setValue(false);
+ me.lookupReference('freenas_apiv4_host_field').setValue('');
+ me.lookupReference('freenas_user_field').setValue('');
+ me.lookupReference('freenas_password_field').setValue('');
+ me.lookupReference('freenas_confirmpw_field').setValue('');
+ }
}
},
@@ -28616,6 +28627,7 @@
},
setValues: function diff(values) {
+ values.freenas_confirmpw = values.freenas_password;
values.writecache = values.nowritecache ? 0 : 1;
this.callParent([values]);
},
@@ -28632,7 +28644,7 @@
allowBlank: false
},
{
- xtype: me.isCreate ? 'textfield' : 'displayfield',
+ xtype: 'textfield',
name: 'pool',
value: '',
fieldLabel: gettext('Pool'),
@@ -28646,7 +28658,7 @@
allowBlank: false
},
{
- xtype: me.isCreate ? 'textfield' : 'displayfield',
+ xtype: 'textfield',
name: 'target',
value: '',
fieldLabel: gettext('Target'),
@@ -28657,8 +28669,28 @@
name: 'comstar_tg',
value: '',
fieldLabel: gettext('Target group'),
- bind: me.isCreate ? { disabled: '{!isComstar}' } : { hidden: '{!isComstar}' },
+ bind: { hidden: '{!isComstar}' },
allowBlank: true
+ },
+ {
+ xtype: 'proxmoxcheckbox',
+ name: 'freenas_use_ssl',
+ reference: 'freenas_use_ssl_field',
+ inputId: 'freenas_use_ssl_field',
+ checked: false,
+ bind: { hidden: '{!isFreeNAS}' },
+ uncheckedValue: 0,
+ fieldLabel: gettext('API use SSL')
+ },
+ {
+ xtype: 'textfield',
+ name: 'freenas_user',
+ reference: 'freenas_user_field',
+ inputId: 'freenas_user_field',
+ value: '',
+ allowBlank: false,
+ fieldLabel: gettext('API Username'),
+ bind: { hidden: '{!isFreeNAS}' },
}
];
@@ -28689,7 +28721,7 @@
xtype: me.isCreate ? 'textfield' : 'displayfield',
name: 'comstar_hg',
value: '',
- bind: me.isCreate ? { disabled: '{!isComstar}' } : { hidden: '{!isComstar}' },
+ bind: { hidden: '{!isComstar}' },
fieldLabel: gettext('Host group'),
allowBlank: true
},
@@ -28697,9 +28729,60 @@
xtype: me.isCreate ? 'textfield' : 'displayfield',
name: 'lio_tpg',
value: '',
- bind: me.isCreate ? { disabled: '{!isLIO}' } : { hidden: '{!isLIO}' },
+ bind: { hidden: '{!isLIO}' },
+ fieldLabel: gettext('Target portal group'),
+ allowBlank: true
+ },
+ {
+ xtype: 'proxmoxtextfield',
+ name: 'freenas_apiv4_host',
+ reference: 'freenas_apiv4_host_field',
+ value: '',
+ editable: true,
+ allowBlank: true,
+ emptyText: Proxmox.Utils.noneText,
+ bind: { hidden: '{!isFreeNAS}' },
+ fieldLabel: gettext('API IPv4 Host'),
+ allowBlank: true
+ },
+ {
+ xtype: 'proxmoxtextfield',
+ name: 'freenas_password',
+ reference: 'freenas_password_field',
+ inputType: me.isCreate ? '' : 'password',
+ value: '',
+ editable: true,
+ deleteEmpty: true,
+ allowBlank: false,
+ emptyText: Proxmox.Utils.noneText,
+ bind: { hidden: '{!isFreeNAS}' },
+ fieldLabel: gettext('API Password'),
+ change: function(f, value) {
+ if (f.rendered) {
+ f.up().down('field[name=freenas_confirmpw]').validate();
+ }
+ }
+ },
+ {
+ xtype: 'proxmoxtextfield',
+ name: 'freenas_confirmpw',
+ reference: 'freenas_confirmpw_field',
+ inputType: me.isCreate ? '' : 'password',
+ value: '',
+ editable: true,
+ deleteEmpty: true,
allowBlank: false,
- fieldLabel: gettext('Target portal group')
+ submitValue: false,
+ emptyText: Proxmox.Utils.noneText,
+ bind: { hidden: '{!isFreeNAS}' },
+ fieldLabel: gettext('Confirm Password'),
+ validator: function(value) {
+ var pw = this.up().down('field[name=freenas_password]').getValue();
+ if (pw !== value) {
+ return "Passwords do not match!";
+ }
+ return true;
+ }
}
];

View File

@ -0,0 +1,86 @@
--- pvemanagerlib.js.orig 2018-07-30 23:13:28.045035059 -0400
+++ pvemanagerlib.js.new 2018-08-19 10:42:58.494724196 -0400
@@ -5379,6 +5379,7 @@
alias: ['widget.pveiScsiProviderSelector'],
comboItems: [
['comstar', 'Comstar'],
+ ['freenas', 'FreeNAS-API'],
[ 'istgt', 'istgt'],
[ 'iet', 'IET']
]
@@ -27361,7 +27362,23 @@
value: '',
fieldLabel: gettext('Target group'),
allowBlank: true
- }
+ },
+ {
+ xtype: 'proxmoxcheckbox',
+ name: 'freenas_use_ssl',
+ checked: false,
+ uncheckedValue: 0,
+ hidden: me.iscsiprovider !== "freenas",
+ fieldLabel: gettext('FreeNAS API use SSL')
+ },
+ {
+ xtype: me.isCreate ? 'textfield' : 'displayfield',
+ name: 'freenas_user',
+ value: '',
+ hidden: me.iscsiprovider !== "freenas",
+ fieldLabel: gettext('FreeNAS User'),
+ allowBlank: true
+ },
];
me.column2 = [
@@ -27370,7 +27387,26 @@
name: 'iscsiprovider',
value: 'comstar',
fieldLabel: gettext('iSCSI Provider'),
- allowBlank: false
+ allowBlank: false,
+ listeners: {
+ change: function(f, value) {
+ if (value === "freenas") {
+ me.down('field[name=freenas_use_ssl]').setHidden(false);
+ me.down('field[name=freenas_apiv4_host]').setHidden(false);
+ me.down('field[name=freenas_user]').setHidden(false);
+ me.down('field[name=freenas_password]').setHidden(false);
+ } else {
+ me.down('field[name=freenas_use_ssl]').setHidden(true);
+ me.down('field[name=freenas_use_ssl]').setValue(false);
+ me.down('field[name=freenas_apiv4_host]').setHidden(true);
+ me.down('field[name=freenas_apiv4_host]').setValue(false);
+ me.down('field[name=freenas_user]').setHidden(true);
+ me.down('field[name=freenas_user]').setValue('');
+ me.down('field[name=freenas_password]').setHidden(true);
+ me.down('field[name=freenas_password]').setValue('');
+ }
+ }
+ }
},
{
xtype: 'proxmoxcheckbox',
@@ -27392,6 +27428,22 @@
value: '',
fieldLabel: gettext('Host group'),
allowBlank: true
+ },
+ {
+ xtype: me.isCreate ? 'textfield' : 'displayfield',
+ name: 'freenas_apiv4_host',
+ value: '',
+ hidden: me.iscsiprovider !== "freenas",
+ fieldLabel: gettext('API IPv4 Host'),
+ allowBlank: true
+ },
+ {
+ xtype: me.isCreate ? 'textfield' : 'displayfield',
+ name: 'freenas_password',
+ value: '',
+ hidden: me.iscsiprovider !== "freenas",
+ fieldLabel: gettext('FreeNAS Password'),
+ allowBlank: true
}
];

View File

@ -0,0 +1,102 @@
--- pvemanagerlib.js.5.2-8.js 2018-08-30 20:10:52.957313992 -0400
+++ pvemanagerlib.js.new 2018-09-01 16:20:05.131908768 -0400
@@ -28578,6 +28578,7 @@
data: {
isLIO: false,
isComstar: true,
+ isFreeNAS: false,
hasWriteCacheOption: true
}
},
@@ -28590,11 +28591,18 @@
}
},
changeISCSIProvider: function(f, newVal, oldVal) {
+ var me = this;
var vm = this.getViewModel();
vm.set('isLIO', newVal === 'LIO');
vm.set('isComstar', newVal === 'comstar');
vm.set('isFreeNAS', newVal === 'freenas');
- vm.set('hasWriteCacheOption', newVal === 'comstar' || newVal === 'istgt');
+ vm.set('hasWriteCacheOption', newVal === 'comstar' || newVal === 'freenas' || newVal === 'istgt');
+ if (newVal !== 'freenas') {
+ me.lookupReference('freenas_use_ssl_field').setValue(false);
+ me.lookupReference('freenas_apiv4_host_field').setValue('');
+ me.lookupReference('freenas_user_field').setValue('');
+ me.lookupReference('freenas_password_field').setValue('');
+ }
}
},
@@ -28653,16 +28661,28 @@
name: 'comstar_tg',
value: '',
fieldLabel: gettext('Target group'),
- bind: me.isCreate ? { disabled: '{!isComstar}' } : { hidden: '{!isComstar}' },
+ bind: me.isCreate ? { hidden: '{!isComstar}' } : { hidden: '{!isComstar}' },
allowBlank: true
},
{
+ xtype: 'proxmoxcheckbox',
+ name: 'freenas_use_ssl',
+ reference: 'freenas_use_ssl_field',
+ inputId: 'freenas_use_ssl_field',
+ checked: false,
+ bind: me.isCreate ? { hidden: '{!isFreeNAS}' } : { hidden: '{!isFreeNAS}' },
+ uncheckedValue: 0,
+ fieldLabel: gettext('API use SSL')
+ },
+ {
xtype: me.isCreate ? 'textfield' : 'displayfield',
name: 'freenas_user',
+ reference: 'freenas_user_field',
+ inputId: 'freenas_user_field',
value: '',
- fieldLabel: gettext('FreeNAS User'),
+ fieldLabel: gettext('API Username'),
bind: me.isCreate ? { hidden: '{!isFreeNAS}' } : { hidden: '{!isFreeNAS}' },
- allowBlank: true
+ allowBlank: me.isFreeNAS ? false : true
}
];
@@ -28693,7 +28713,7 @@
xtype: me.isCreate ? 'textfield' : 'displayfield',
name: 'comstar_hg',
value: '',
- bind: me.isCreate ? { disabled: '{!isComstar}' } : { hidden: '{!isComstar}' },
+ bind: me.isCreate ? { hidden: '{!isComstar}' } : { hidden: '{!isComstar}' },
fieldLabel: gettext('Host group'),
allowBlank: true
},
@@ -28701,9 +28721,27 @@
xtype: me.isCreate ? 'textfield' : 'displayfield',
name: 'lio_tpg',
value: '',
- bind: me.isCreate ? { disabled: '{!isLIO}' } : { hidden: '{!isLIO}' },
- allowBlank: false,
- fieldLabel: gettext('Target portal group')
+ bind: me.isCreate ? { hidden: '{!isLIO}' } : { hidden: '{!isLIO}' },
+ fieldLabel: gettext('Target portal group'),
+ allowBlank: true
+ },
+ {
+ xtype: me.isCreate ? 'textfield' : 'displayfield',
+ name: 'freenas_apiv4_host',
+ reference: 'freenas_apiv4_host_field',
+ value: '',
+ bind: me.isCreate ? { hidden: '{!isFreeNAS}' } : { hidden: '{!isFreeNAS}' },
+ fieldLabel: gettext('API IPv4 Host'),
+ allowBlank: true
+ },
+ {
+ xtype: me.isCreate ? 'textfield' : 'displayfield',
+ name: 'freenas_password',
+ reference: 'freenas_password_field',
+ value: '',
+ bind: me.isCreate ? { hidden: '{!isFreeNAS}' } : { hidden: '{!isFreeNAS}' },
+ fieldLabel: gettext('API Password'),
+ allowBlank: true
}
];

View File

@ -0,0 +1,169 @@
--- pvemanagerlib-5.2-9.js 2018-10-16 07:17:21.915593478 -0400
+++ pvemanagerlib.js 2018-10-21 21:52:20.781740237 -0400
@@ -5597,6 +5597,7 @@
alias: ['widget.pveiScsiProviderSelector'],
comboItems: [
['comstar', 'Comstar'],
+ ['freenas', 'FreeNAS-API'],
[ 'istgt', 'istgt'],
[ 'iet', 'IET'],
[ 'LIO', 'LIO']
@@ -28574,6 +28575,7 @@
data: {
isLIO: false,
isComstar: true,
+ isFreeNAS: false,
hasWriteCacheOption: true
}
},
@@ -28586,10 +28588,19 @@
}
},
changeISCSIProvider: function(f, newVal, oldVal) {
+ var me = this;
var vm = this.getViewModel();
vm.set('isLIO', newVal === 'LIO');
vm.set('isComstar', newVal === 'comstar');
- vm.set('hasWriteCacheOption', newVal === 'comstar' || newVal === 'istgt');
+ vm.set('isFreeNAS', newVal === 'freenas');
+ vm.set('hasWriteCacheOption', newVal === 'comstar' || newVal === 'freenas' || newVal === 'istgt');
+ if (newVal !== 'freenas') {
+ me.lookupReference('freenas_use_ssl_field').setValue(false);
+ me.lookupReference('freenas_apiv4_host_field').setValue('');
+ me.lookupReference('freenas_user_field').setValue('');
+ me.lookupReference('freenas_password_field').setValue('');
+ me.lookupReference('freenas_confirmpw_field').setValue('');
+ }
}
},
@@ -28607,6 +28618,7 @@
},
setValues: function diff(values) {
+ values.freenas_confirmpw = values.freenas_password;
values.writecache = values.nowritecache ? 0 : 1;
this.callParent([values]);
},
@@ -28623,7 +28635,7 @@
allowBlank: false
},
{
- xtype: me.isCreate ? 'textfield' : 'displayfield',
+ xtype: 'textfield',
name: 'pool',
value: '',
fieldLabel: gettext('Pool'),
@@ -28637,7 +28649,7 @@
allowBlank: false
},
{
- xtype: me.isCreate ? 'textfield' : 'displayfield',
+ xtype: 'textfield',
name: 'target',
value: '',
fieldLabel: gettext('Target'),
@@ -28648,8 +28660,28 @@
name: 'comstar_tg',
value: '',
fieldLabel: gettext('Target group'),
- bind: me.isCreate ? { disabled: '{!isComstar}' } : { hidden: '{!isComstar}' },
+ bind: { hidden: '{!isComstar}' },
allowBlank: true
+ },
+ {
+ xtype: 'proxmoxcheckbox',
+ name: 'freenas_use_ssl',
+ reference: 'freenas_use_ssl_field',
+ inputId: 'freenas_use_ssl_field',
+ checked: false,
+ bind: { hidden: '{!isFreeNAS}' },
+ uncheckedValue: 0,
+ fieldLabel: gettext('API use SSL')
+ },
+ {
+ xtype: 'textfield',
+ name: 'freenas_user',
+ reference: 'freenas_user_field',
+ inputId: 'freenas_user_field',
+ value: '',
+ allowBlank: false,
+ fieldLabel: gettext('API Username'),
+ bind: { hidden: '{!isFreeNAS}' },
}
];
@@ -28680,7 +28712,7 @@
xtype: me.isCreate ? 'textfield' : 'displayfield',
name: 'comstar_hg',
value: '',
- bind: me.isCreate ? { disabled: '{!isComstar}' } : { hidden: '{!isComstar}' },
+ bind: { hidden: '{!isComstar}' },
fieldLabel: gettext('Host group'),
allowBlank: true
},
@@ -28688,9 +28720,61 @@
xtype: me.isCreate ? 'textfield' : 'displayfield',
name: 'lio_tpg',
value: '',
- bind: me.isCreate ? { disabled: '{!isLIO}' } : { hidden: '{!isLIO}' },
- allowBlank: false,
- fieldLabel: gettext('Target portal group')
+ bind: { hidden: '{!isLIO}' },
+ fieldLabel: gettext('Target portal group'),
+ allowBlank: true
+ },
+ {
+ xtype: 'proxmoxtextfield',
+ name: 'freenas_apiv4_host',
+ reference: 'freenas_apiv4_host_field',
+ value: '',
+ editable: true,
+ deleteEmpty: true,
+ allowBlank: true,
+ emptyText: Proxmox.Utils.noneText,
+ bind: { hidden: '{!isFreeNAS}' },
+ fieldLabel: gettext('API IPv4 Host'),
+ allowBlank: true
+ },
+ {
+ xtype: 'proxmoxtextfield',
+ name: 'freenas_password',
+ reference: 'freenas_password_field',
+ inputType: me.isCreate ? '' : 'password',
+ value: '',
+ editable: true,
+ deleteEmpty: true,
+ allowBlank: false,
+ emptyText: Proxmox.Utils.noneText,
+ bind: { hidden: '{!isFreeNAS}' },
+ fieldLabel: gettext('API Password'),
+ change: function(f, value) {
+ if (f.rendered) {
+ f.up().down('field[name=freenas_confirmpw]').validate();
+ }
+ }
+ },
+ {
+ xtype: 'proxmoxtextfield',
+ name: 'freenas_confirmpw',
+ reference: 'freenas_confirmpw_field',
+ inputType: me.isCreate ? '' : 'password',
+ value: '',
+ editable: true,
+ deleteEmpty: true,
+ allowBlank: false,
+ submitValue: false,
+ emptyText: Proxmox.Utils.noneText,
+ bind: { hidden: '{!isFreeNAS}' },
+ fieldLabel: gettext('Confirm Password'),
+ validator: function(value) {
+ var pw = this.up().down('field[name=freenas_password]').getValue();
+ if (pw !== value) {
+ return "Passwords do not match!";
+ }
+ return true;
+ }
}
];

View File

@ -1,5 +1,5 @@
--- pvemanagerlib-5.2-9.js 2018-10-16 07:17:21.915593478 -0400 --- pvemanagerlib-5.2-10.js 2018-10-23 07:18:18.058603386 -0400
+++ pvemanagerlib.js 2018-10-21 00:46:12.524172694 -0400 +++ pvemanagerlib.js 2018-10-23 15:29:52.573563883 -0400
@@ -5597,6 +5597,7 @@ @@ -5597,6 +5597,7 @@
alias: ['widget.pveiScsiProviderSelector'], alias: ['widget.pveiScsiProviderSelector'],
comboItems: [ comboItems: [
@ -8,7 +8,7 @@
[ 'istgt', 'istgt'], [ 'istgt', 'istgt'],
[ 'iet', 'IET'], [ 'iet', 'IET'],
[ 'LIO', 'LIO'] [ 'LIO', 'LIO']
@@ -28574,6 +28575,7 @@ @@ -28583,6 +28584,7 @@
data: { data: {
isLIO: false, isLIO: false,
isComstar: true, isComstar: true,
@ -16,7 +16,7 @@
hasWriteCacheOption: true hasWriteCacheOption: true
} }
}, },
@@ -28586,10 +28588,18 @@ @@ -28595,10 +28597,19 @@
} }
}, },
changeISCSIProvider: function(f, newVal, oldVal) { changeISCSIProvider: function(f, newVal, oldVal) {
@ -32,16 +32,43 @@
+ me.lookupReference('freenas_apiv4_host_field').setValue(''); + me.lookupReference('freenas_apiv4_host_field').setValue('');
+ me.lookupReference('freenas_user_field').setValue(''); + me.lookupReference('freenas_user_field').setValue('');
+ me.lookupReference('freenas_password_field').setValue(''); + me.lookupReference('freenas_password_field').setValue('');
+ me.lookupReference('freenas_confirmpw_field').setValue('');
+ } + }
} }
}, },
@@ -28648,8 +28658,28 @@ @@ -28616,6 +28627,7 @@
},
setValues: function diff(values) {
+ values.freenas_confirmpw = values.freenas_password;
values.writecache = values.nowritecache ? 0 : 1;
this.callParent([values]);
},
@@ -28632,7 +28644,7 @@
allowBlank: false
},
{
- xtype: me.isCreate ? 'textfield' : 'displayfield',
+ xtype: 'textfield',
name: 'pool',
value: '',
fieldLabel: gettext('Pool'),
@@ -28646,7 +28658,7 @@
allowBlank: false
},
{
- xtype: me.isCreate ? 'textfield' : 'displayfield',
+ xtype: 'textfield',
name: 'target',
value: '',
fieldLabel: gettext('Target'),
@@ -28657,8 +28669,28 @@
name: 'comstar_tg', name: 'comstar_tg',
value: '', value: '',
fieldLabel: gettext('Target group'), fieldLabel: gettext('Target group'),
- bind: me.isCreate ? { disabled: '{!isComstar}' } : { hidden: '{!isComstar}' }, - bind: me.isCreate ? { disabled: '{!isComstar}' } : { hidden: '{!isComstar}' },
+ bind: me.isCreate ? { hidden: '{!isComstar}' } : { hidden: '{!isComstar}' }, + bind: { hidden: '{!isComstar}' },
allowBlank: true allowBlank: true
+ }, + },
+ { + {
@ -50,59 +77,91 @@
+ reference: 'freenas_use_ssl_field', + reference: 'freenas_use_ssl_field',
+ inputId: 'freenas_use_ssl_field', + inputId: 'freenas_use_ssl_field',
+ checked: false, + checked: false,
+ bind: me.isCreate ? { hidden: '{!isFreeNAS}' } : { hidden: '{!isFreeNAS}' }, + bind: { hidden: '{!isFreeNAS}' },
+ uncheckedValue: 0, + uncheckedValue: 0,
+ fieldLabel: gettext('API use SSL') + fieldLabel: gettext('API use SSL')
+ }, + },
+ { + {
+ xtype: me.isCreate ? 'textfield' : 'displayfield', + xtype: 'textfield',
+ name: 'freenas_user', + name: 'freenas_user',
+ reference: 'freenas_user_field', + reference: 'freenas_user_field',
+ inputId: 'freenas_user_field', + inputId: 'freenas_user_field',
+ value: '', + value: '',
+ allowBlank: false,
+ fieldLabel: gettext('API Username'), + fieldLabel: gettext('API Username'),
+ bind: me.isCreate ? { hidden: '{!isFreeNAS}' } : { hidden: '{!isFreeNAS}' }, + bind: { hidden: '{!isFreeNAS}' },
+ allowBlank: me.isFreeNAS ? false : true
} }
]; ];
@@ -28680,7 +28710,7 @@ @@ -28689,7 +28721,7 @@
xtype: me.isCreate ? 'textfield' : 'displayfield', xtype: me.isCreate ? 'textfield' : 'displayfield',
name: 'comstar_hg', name: 'comstar_hg',
value: '', value: '',
- bind: me.isCreate ? { disabled: '{!isComstar}' } : { hidden: '{!isComstar}' }, - bind: me.isCreate ? { disabled: '{!isComstar}' } : { hidden: '{!isComstar}' },
+ bind: me.isCreate ? { hidden: '{!isComstar}' } : { hidden: '{!isComstar}' }, + bind: { hidden: '{!isComstar}' },
fieldLabel: gettext('Host group'), fieldLabel: gettext('Host group'),
allowBlank: true allowBlank: true
}, },
@@ -28688,9 +28718,27 @@ @@ -28697,9 +28729,60 @@
xtype: me.isCreate ? 'textfield' : 'displayfield', xtype: me.isCreate ? 'textfield' : 'displayfield',
name: 'lio_tpg', name: 'lio_tpg',
value: '', value: '',
- bind: me.isCreate ? { disabled: '{!isLIO}' } : { hidden: '{!isLIO}' }, - bind: me.isCreate ? { disabled: '{!isLIO}' } : { hidden: '{!isLIO}' },
- allowBlank: false, + bind: { hidden: '{!isLIO}' },
- fieldLabel: gettext('Target portal group')
+ bind: me.isCreate ? { hidden: '{!isLIO}' } : { hidden: '{!isLIO}' },
+ fieldLabel: gettext('Target portal group'), + fieldLabel: gettext('Target portal group'),
+ allowBlank: true + allowBlank: true
+ }, + },
+ { + {
+ xtype: me.isCreate ? 'textfield' : 'displayfield', + xtype: 'proxmoxtextfield',
+ name: 'freenas_apiv4_host', + name: 'freenas_apiv4_host',
+ reference: 'freenas_apiv4_host_field', + reference: 'freenas_apiv4_host_field',
+ value: '', + value: '',
+ bind: me.isCreate ? { hidden: '{!isFreeNAS}' } : { hidden: '{!isFreeNAS}' }, + editable: true,
+ allowBlank: true,
+ emptyText: Proxmox.Utils.noneText,
+ bind: { hidden: '{!isFreeNAS}' },
+ fieldLabel: gettext('API IPv4 Host'), + fieldLabel: gettext('API IPv4 Host'),
+ allowBlank: true + allowBlank: true
+ }, + },
+ { + {
+ xtype: me.isCreate ? 'textfield' : 'displayfield', + xtype: 'proxmoxtextfield',
+ name: 'freenas_password', + name: 'freenas_password',
+ reference: 'freenas_password_field', + reference: 'freenas_password_field',
+ inputType: me.isCreate ? '' : 'password',
+ value: '', + value: '',
+ bind: me.isCreate ? { hidden: '{!isFreeNAS}' } : { hidden: '{!isFreeNAS}' }, + editable: true,
+ deleteEmpty: true,
+ allowBlank: false,
+ emptyText: Proxmox.Utils.noneText,
+ bind: { hidden: '{!isFreeNAS}' },
+ fieldLabel: gettext('API Password'), + fieldLabel: gettext('API Password'),
+ allowBlank: true + change: function(f, value) {
+ if (f.rendered) {
+ f.up().down('field[name=freenas_confirmpw]').validate();
+ }
+ }
+ },
+ {
+ xtype: 'proxmoxtextfield',
+ name: 'freenas_confirmpw',
+ reference: 'freenas_confirmpw_field',
+ inputType: me.isCreate ? '' : 'password',
+ value: '',
+ editable: true,
+ deleteEmpty: true,
allowBlank: false,
- fieldLabel: gettext('Target portal group')
+ submitValue: false,
+ emptyText: Proxmox.Utils.noneText,
+ bind: { hidden: '{!isFreeNAS}' },
+ fieldLabel: gettext('Confirm Password'),
+ validator: function(value) {
+ var pw = this.up().down('field[name=freenas_password]').getValue();
+ if (pw !== value) {
+ return "Passwords do not match!";
+ }
+ return true;
+ }
} }
]; ];