From 7da8d2f296ce10fc926bff01bc22cd3e0d7b7c46 Mon Sep 17 00:00:00 2001 From: Petr Voborník Date: Thu, 23 Feb 2012 13:54:07 +0100 Subject: Added unsupported_validator dnszone attributes idnsallowquery and idnsallowtransfer have valid but currently unsupported values: 'localhost' and 'localnets'. New validator was introduced for unsuported values. By using this validator user can see that the value is currently unsupported instead of showing 'invalid value' or passing the value to server and creating error there. https://fedorahosted.org/freeipa/ticket/2351 --- install/ui/dns.js | 12 ++++++++---- install/ui/field.js | 19 +++++++++++++++++++ install/ui/test/data/ipa_init.json | 3 ++- 3 files changed, 29 insertions(+), 5 deletions(-) (limited to 'install/ui') diff --git a/install/ui/dns.js b/install/ui/dns.js index 42002192..4182074a 100644 --- a/install/ui/dns.js +++ b/install/ui/dns.js @@ -131,9 +131,11 @@ IPA.dns.zone_entity = function(spec) { type: 'netaddr', name: 'idnsallowquery', validators: [ + IPA.unsupported_validator({ + unsupported: ['localhost', 'localnets'] + }), IPA.network_validator({ - specials: ['any', 'none', - 'localhost', 'localnets'], + specials: ['any', 'none'], allow_negation: true, allow_host_address: true })] @@ -142,9 +144,11 @@ IPA.dns.zone_entity = function(spec) { type: 'netaddr', name: 'idnsallowtransfer', validators: [ + IPA.unsupported_validator({ + unsupported: ['localhost', 'localnets'] + }), IPA.network_validator({ - specials: ['any', 'none', - 'localhost', 'localnets'], + specials: ['any', 'none'], allow_negation: true, allow_host_address: true })] diff --git a/install/ui/field.js b/install/ui/field.js index 4f88c16e..e78a4e96 100644 --- a/install/ui/field.js +++ b/install/ui/field.js @@ -459,6 +459,25 @@ IPA.metadata_validator = function(spec) { return that; }; +IPA.unsupported_validator = function(spec) { + + var that = IPA.validator(spec); + + that.unsupported = spec.unsupported || []; + that.message = spec.message || IPA.messages.widget.validation.unsupported; + + that.validate = function(value, context) { + + if (IPA.is_empty(value)) return that.true_result(); + + if (that.unsupported.indexOf(value) > -1) return that.false_result(); + + return that.true_result(); + }; + + return that; +}; + IPA.checkbox_field = function(spec) { spec = spec || {}; diff --git a/install/ui/test/data/ipa_init.json b/install/ui/test/data/ipa_init.json index f0789d07..29880b2e 100644 --- a/install/ui/test/data/ipa_init.json +++ b/install/ui/test/data/ipa_init.json @@ -434,7 +434,8 @@ "max_value": "Maximum value is ${value}", "min_value": "Minimum value is ${value}", "net_address": "Not a valid network address", - "required": "Required field" + "required": "Required field", + "unsupported": "Unsupported value" } } } -- cgit