From a1cdede403ddc54da7a53f89eda304c151bf3757 Mon Sep 17 00:00:00 2001 From: KevinAdams Date: Fri, 1 Feb 2019 14:34:40 -0500 Subject: [PATCH] Fix non-FreeNAS providers to enable the 'Add' button. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - When using the 'allowBlank' property of extjs, it provided the functionality to the FreeNAS provider but disabled the 'Add' button of other providers when all necessary data was entered. This was because three fields in the FreeNAS provider was 'allowBlank' equal to 'false' causing the ‘Add’ button to not be ‘enabled’. Upon further development the 'allowBlank' property is not 'bindable' and was causing issues with the modal window. No other similar code was found in the pvemanagerlib.js to replicate this and it was mentioned in a post that the ‘allowBlank’ property to be bindable was a feature request to come. This fix allows for all functionality of the providers to work correctly in the modal window. This fixes issue #36. --- ...s.patch => pvemanagerlib-5.3-6_2.js.patch} | 65 ++++++++++++------- pve-manager/js/pvemanagerlib.js.patch | 65 ++++++++++++------- 2 files changed, 84 insertions(+), 46 deletions(-) rename pve-manager/js/{pvemanagerlib-5.3-6_1.js.patch => pvemanagerlib-5.3-6_2.js.patch} (80%) diff --git a/pve-manager/js/pvemanagerlib-5.3-6_1.js.patch b/pve-manager/js/pvemanagerlib-5.3-6_2.js.patch similarity index 80% rename from pve-manager/js/pvemanagerlib-5.3-6_1.js.patch rename to pve-manager/js/pvemanagerlib-5.3-6_2.js.patch index 7dd08e0..d0e07e7 100644 --- a/pve-manager/js/pvemanagerlib-5.3-6_1.js.patch +++ b/pve-manager/js/pvemanagerlib-5.3-6_2.js.patch @@ -1,5 +1,5 @@ --- pvemanagerlib-5.3-6.js 2018-12-21 12:54:58.650421078 -0500 -+++ pvemanagerlib.js 2018-12-21 12:55:25.170120836 -0500 ++++ pvemanagerlib.js 2019-02-01 13:52:17.906074280 -0500 @@ -5894,6 +5894,7 @@ alias: ['widget.pveiScsiProviderSelector'], comboItems: [ @@ -16,7 +16,7 @@ hasWriteCacheOption: true } }, -@@ -30097,10 +30099,19 @@ +@@ -30097,10 +30099,26 @@ } }, changeISCSIProvider: function(f, newVal, oldVal) { @@ -31,13 +31,20 @@ + me.lookupReference('freenas_use_ssl_field').setValue(false); + me.lookupReference('freenas_apiv4_host_field').setValue(''); + me.lookupReference('freenas_user_field').setValue(''); ++ me.lookupReference('freenas_user_field').allowBlank = true; + me.lookupReference('freenas_password_field').setValue(''); ++ me.lookupReference('freenas_password_field').allowBlank = true; + me.lookupReference('freenas_confirmpw_field').setValue(''); ++ me.lookupReference('freenas_confirmpw_field').allowBlank = true; ++ } else { ++ me.lookupReference('freenas_user_field').allowBlank = false; ++ me.lookupReference('freenas_password_field').allowBlank = false; ++ me.lookupReference('freenas_confirmpw_field').allowBlank = false; + } } }, -@@ -30118,6 +30129,7 @@ +@@ -30118,6 +30136,7 @@ }, setValues: function diff(values) { @@ -45,7 +52,7 @@ values.writecache = values.nowritecache ? 0 : 1; this.callParent([values]); }, -@@ -30134,7 +30146,7 @@ +@@ -30134,7 +30153,7 @@ allowBlank: false }, { @@ -54,7 +61,7 @@ name: 'pool', value: '', fieldLabel: gettext('Pool'), -@@ -30144,11 +30156,11 @@ +@@ -30144,11 +30163,11 @@ xtype: me.isCreate ? 'textfield' : 'displayfield', name: 'blocksize', value: '4k', @@ -68,12 +75,14 @@ name: 'target', value: '', fieldLabel: gettext('Target'), -@@ -30159,8 +30171,28 @@ +@@ -30159,8 +30178,33 @@ name: 'comstar_tg', value: '', fieldLabel: gettext('Target group'), - bind: me.isCreate ? { disabled: '{!isComstar}' } : { hidden: '{!isComstar}' }, -+ bind: { hidden: '{!isComstar}' }, ++ bind: { ++ hidden: '{!isComstar}' ++ }, allowBlank: true + }, + { @@ -82,7 +91,9 @@ + reference: 'freenas_use_ssl_field', + inputId: 'freenas_use_ssl_field', + checked: false, -+ bind: { hidden: '{!isFreeNAS}' }, ++ bind: { ++ hidden: '{!isFreeNAS}' ++ }, + uncheckedValue: 0, + fieldLabel: gettext('API use SSL') + }, @@ -92,27 +103,34 @@ + reference: 'freenas_user_field', + inputId: 'freenas_user_field', + value: '', -+ allowBlank: false, + fieldLabel: gettext('API Username'), -+ bind: { hidden: '{!isFreeNAS}' }, ++ bind: { ++ hidden: '{!isFreeNAS}' ++ } } ]; -@@ -30191,7 +30223,7 @@ +@@ -30191,7 +30235,9 @@ xtype: me.isCreate ? 'textfield' : 'displayfield', name: 'comstar_hg', value: '', - bind: me.isCreate ? { disabled: '{!isComstar}' } : { hidden: '{!isComstar}' }, -+ bind: { hidden: '{!isComstar}' }, ++ bind: { ++ hidden: '{!isComstar}' ++ }, fieldLabel: gettext('Host group'), allowBlank: true }, -@@ -30199,9 +30231,60 @@ +@@ -30199,9 +30245,64 @@ xtype: me.isCreate ? 'textfield' : 'displayfield', name: 'lio_tpg', value: '', - bind: me.isCreate ? { disabled: '{!isLIO}' } : { hidden: '{!isLIO}' }, -+ bind: { hidden: '{!isLIO}' }, +- allowBlank: false, +- fieldLabel: gettext('Target portal group') ++ bind: { ++ hidden: '{!isLIO}' ++ }, + fieldLabel: gettext('Target portal group'), + allowBlank: true + }, @@ -122,11 +140,11 @@ + reference: 'freenas_apiv4_host_field', + value: '', + editable: true, -+ allowBlank: true, + emptyText: Proxmox.Utils.noneText, -+ bind: { hidden: '{!isFreeNAS}' }, ++ bind: { ++ hidden: '{!isFreeNAS}' ++ }, + fieldLabel: gettext('API IPv4 Host'), -+ allowBlank: true + }, + { + xtype: 'proxmoxtextfield', @@ -136,9 +154,10 @@ + value: '', + editable: true, + deleteEmpty: true, -+ allowBlank: false, + emptyText: Proxmox.Utils.noneText, -+ bind: { hidden: '{!isFreeNAS}' }, ++ bind: { ++ hidden: '{!isFreeNAS}' ++ }, + fieldLabel: gettext('API Password'), + change: function(f, value) { + if (f.rendered) { @@ -153,12 +172,12 @@ + inputType: me.isCreate ? '' : 'password', + value: '', + editable: true, -+ deleteEmpty: true, - allowBlank: false, -- fieldLabel: gettext('Target portal group') + submitValue: false, ++ deleteEmpty: true, + emptyText: Proxmox.Utils.noneText, -+ bind: { hidden: '{!isFreeNAS}' }, ++ bind: { ++ hidden: '{!isFreeNAS}' ++ }, + fieldLabel: gettext('Confirm Password'), + validator: function(value) { + var pw = this.up().down('field[name=freenas_password]').getValue(); diff --git a/pve-manager/js/pvemanagerlib.js.patch b/pve-manager/js/pvemanagerlib.js.patch index 7dd08e0..d0e07e7 100644 --- a/pve-manager/js/pvemanagerlib.js.patch +++ b/pve-manager/js/pvemanagerlib.js.patch @@ -1,5 +1,5 @@ --- pvemanagerlib-5.3-6.js 2018-12-21 12:54:58.650421078 -0500 -+++ pvemanagerlib.js 2018-12-21 12:55:25.170120836 -0500 ++++ pvemanagerlib.js 2019-02-01 13:52:17.906074280 -0500 @@ -5894,6 +5894,7 @@ alias: ['widget.pveiScsiProviderSelector'], comboItems: [ @@ -16,7 +16,7 @@ hasWriteCacheOption: true } }, -@@ -30097,10 +30099,19 @@ +@@ -30097,10 +30099,26 @@ } }, changeISCSIProvider: function(f, newVal, oldVal) { @@ -31,13 +31,20 @@ + me.lookupReference('freenas_use_ssl_field').setValue(false); + me.lookupReference('freenas_apiv4_host_field').setValue(''); + me.lookupReference('freenas_user_field').setValue(''); ++ me.lookupReference('freenas_user_field').allowBlank = true; + me.lookupReference('freenas_password_field').setValue(''); ++ me.lookupReference('freenas_password_field').allowBlank = true; + me.lookupReference('freenas_confirmpw_field').setValue(''); ++ me.lookupReference('freenas_confirmpw_field').allowBlank = true; ++ } else { ++ me.lookupReference('freenas_user_field').allowBlank = false; ++ me.lookupReference('freenas_password_field').allowBlank = false; ++ me.lookupReference('freenas_confirmpw_field').allowBlank = false; + } } }, -@@ -30118,6 +30129,7 @@ +@@ -30118,6 +30136,7 @@ }, setValues: function diff(values) { @@ -45,7 +52,7 @@ values.writecache = values.nowritecache ? 0 : 1; this.callParent([values]); }, -@@ -30134,7 +30146,7 @@ +@@ -30134,7 +30153,7 @@ allowBlank: false }, { @@ -54,7 +61,7 @@ name: 'pool', value: '', fieldLabel: gettext('Pool'), -@@ -30144,11 +30156,11 @@ +@@ -30144,11 +30163,11 @@ xtype: me.isCreate ? 'textfield' : 'displayfield', name: 'blocksize', value: '4k', @@ -68,12 +75,14 @@ name: 'target', value: '', fieldLabel: gettext('Target'), -@@ -30159,8 +30171,28 @@ +@@ -30159,8 +30178,33 @@ name: 'comstar_tg', value: '', fieldLabel: gettext('Target group'), - bind: me.isCreate ? { disabled: '{!isComstar}' } : { hidden: '{!isComstar}' }, -+ bind: { hidden: '{!isComstar}' }, ++ bind: { ++ hidden: '{!isComstar}' ++ }, allowBlank: true + }, + { @@ -82,7 +91,9 @@ + reference: 'freenas_use_ssl_field', + inputId: 'freenas_use_ssl_field', + checked: false, -+ bind: { hidden: '{!isFreeNAS}' }, ++ bind: { ++ hidden: '{!isFreeNAS}' ++ }, + uncheckedValue: 0, + fieldLabel: gettext('API use SSL') + }, @@ -92,27 +103,34 @@ + reference: 'freenas_user_field', + inputId: 'freenas_user_field', + value: '', -+ allowBlank: false, + fieldLabel: gettext('API Username'), -+ bind: { hidden: '{!isFreeNAS}' }, ++ bind: { ++ hidden: '{!isFreeNAS}' ++ } } ]; -@@ -30191,7 +30223,7 @@ +@@ -30191,7 +30235,9 @@ xtype: me.isCreate ? 'textfield' : 'displayfield', name: 'comstar_hg', value: '', - bind: me.isCreate ? { disabled: '{!isComstar}' } : { hidden: '{!isComstar}' }, -+ bind: { hidden: '{!isComstar}' }, ++ bind: { ++ hidden: '{!isComstar}' ++ }, fieldLabel: gettext('Host group'), allowBlank: true }, -@@ -30199,9 +30231,60 @@ +@@ -30199,9 +30245,64 @@ xtype: me.isCreate ? 'textfield' : 'displayfield', name: 'lio_tpg', value: '', - bind: me.isCreate ? { disabled: '{!isLIO}' } : { hidden: '{!isLIO}' }, -+ bind: { hidden: '{!isLIO}' }, +- allowBlank: false, +- fieldLabel: gettext('Target portal group') ++ bind: { ++ hidden: '{!isLIO}' ++ }, + fieldLabel: gettext('Target portal group'), + allowBlank: true + }, @@ -122,11 +140,11 @@ + reference: 'freenas_apiv4_host_field', + value: '', + editable: true, -+ allowBlank: true, + emptyText: Proxmox.Utils.noneText, -+ bind: { hidden: '{!isFreeNAS}' }, ++ bind: { ++ hidden: '{!isFreeNAS}' ++ }, + fieldLabel: gettext('API IPv4 Host'), -+ allowBlank: true + }, + { + xtype: 'proxmoxtextfield', @@ -136,9 +154,10 @@ + value: '', + editable: true, + deleteEmpty: true, -+ allowBlank: false, + emptyText: Proxmox.Utils.noneText, -+ bind: { hidden: '{!isFreeNAS}' }, ++ bind: { ++ hidden: '{!isFreeNAS}' ++ }, + fieldLabel: gettext('API Password'), + change: function(f, value) { + if (f.rendered) { @@ -153,12 +172,12 @@ + inputType: me.isCreate ? '' : 'password', + value: '', + editable: true, -+ deleteEmpty: true, - allowBlank: false, -- fieldLabel: gettext('Target portal group') + submitValue: false, ++ deleteEmpty: true, + emptyText: Proxmox.Utils.noneText, -+ bind: { hidden: '{!isFreeNAS}' }, ++ bind: { ++ hidden: '{!isFreeNAS}' ++ }, + fieldLabel: gettext('Confirm Password'), + validator: function(value) { + var pw = this.up().down('field[name=freenas_password]').getValue();