From 799bb24931f97be849eea48c6497adcd239e287c Mon Sep 17 00:00:00 2001 From: Petr Vobornik Date: Tue, 16 Apr 2013 15:25:15 +0200 Subject: Builder and registry for validators https://fedorahosted.org/freeipa/ticket/3235 --- install/ui/src/freeipa/dns.js | 27 ++++++++++++++++++--------- install/ui/src/freeipa/field.js | 14 ++++++++++++-- install/ui/src/freeipa/host.js | 7 ++++--- install/ui/src/freeipa/ipa.js | 5 +++-- install/ui/src/freeipa/trust.js | 5 +++-- install/ui/src/freeipa/user.js | 5 +++-- 6 files changed, 43 insertions(+), 20 deletions(-) (limited to 'install/ui') diff --git a/install/ui/src/freeipa/dns.js b/install/ui/src/freeipa/dns.js index ced1e3cdc..bccb52134 100644 --- a/install/ui/src/freeipa/dns.js +++ b/install/ui/src/freeipa/dns.js @@ -70,7 +70,7 @@ IPA.dns.config_entity = function(spec) { { $type: 'multivalued', name: 'idnsforwarders', - validators: [IPA.dnsforwarder_validator()] + validators: [ 'dnsforwarder'] }, { $type: 'radio', @@ -184,26 +184,28 @@ IPA.dns.zone_entity = function(spec) { $type: 'netaddr', name: 'idnsallowquery', validators: [ - IPA.network_validator({ + { + $type: 'network', specials: ['any', 'none', 'localhost', 'localnets'], allow_negation: true, allow_host_address: true - })] + }] }, { $type: 'netaddr', name: 'idnsallowtransfer', validators: [ - IPA.network_validator({ + { + $type: 'network', specials: ['any', 'none', 'localhost', 'localnets'], allow_negation: true, allow_host_address: true - })] + }] }, { $type: 'multivalued', name: 'idnsforwarders', - validators: [IPA.dnsforwarder_validator()] + validators: [ 'dnsforwarder'] }, { $type: 'radio', @@ -302,7 +304,7 @@ IPA.dns.zone_entity = function(spec) { $type: 'dnszone_name', name: 'name_from_ip', radio_name: 'dnszone_name_type', - validators: [IPA.network_validator()] + validators: ['network'] } ] }, @@ -792,7 +794,7 @@ IPA.dns.get_record_metadata = function() { attributes: [ { name: 'a_part_ip_address', - validators: [IPA.ip_v4_address_validator()] + validators: ['ip_v4_address'] }, { $type: 'checkbox', @@ -811,7 +813,7 @@ IPA.dns.get_record_metadata = function() { attributes: [ { name:'aaaa_part_ip_address', - validators: [IPA.ip_v6_address_validator()] + validators: ['ip_v6_address'] }, { $type: 'checkbox', @@ -2533,6 +2535,7 @@ IPA.register('dnsrecord', IPA.dns.record_entity); phases.on('registration', function() { var w = reg.widget; var f = reg.field; + var v = reg.validator; w.register('dnszone_name', IPA.dnszone_name_widget); w.register('force_dnszone_add_checkbox', IPA.force_dnszone_add_checkbox_widget); @@ -2545,6 +2548,12 @@ phases.on('registration', function() { f.register('dnsrecord_type_table', IPA.dns.record_type_table_field); w.register('netaddr', IPA.multivalued_widget); f.register('netaddr', IPA.dns.netaddr_field); + + v.register('ip_address', IPA.ip_address_validator); + v.register('ip_v4_address', IPA.ip_v4_address_validator); + v.register('ip_v6_address', IPA.ip_v6_address_validator); + v.register('dnsforwarder', IPA.dnsforwarder_validator); + v.register('network', IPA.network_validator); }); return {}; diff --git a/install/ui/src/freeipa/field.js b/install/ui/src/freeipa/field.js index 292f8881b..6d05a256f 100644 --- a/install/ui/src/freeipa/field.js +++ b/install/ui/src/freeipa/field.js @@ -75,7 +75,7 @@ IPA.field = function(spec) { that.undo = spec.undo === undefined ? true : spec.undo; that.metadata = spec.metadata; - that.validators = spec.validators || []; + that.validators = builder.build('validator', spec.validators) || []; that.priority = spec.priority; @@ -914,7 +914,7 @@ exp.post_op = function(obj, spec, context) { return obj; }; -// New builder and registry +// Field builder and registry exp.builder = builder.get('field'); exp.builder.factory = IPA.field; exp.builder.string_mode = 'property'; @@ -923,8 +923,14 @@ reg.set('field', exp.builder.registry); exp.builder.pre_ops.push(exp.pre_op); exp.builder.post_ops.push(exp.post_op); +// Validator builder and registry +exp.validator_builder = builder.get('validator'); +//exp.validator_builder.factory = IPA.formatter; +reg.set('validator', exp.validator_builder.registry); + exp.register = function() { var f = reg.field; + var v = reg.validator; f.register('checkbox', IPA.checkbox_field); f.register('checkboxes', IPA.checkboxes_field); @@ -941,6 +947,10 @@ exp.register = function() { f.register('textarea', IPA.field); f.register('text', IPA.field); f.register('value_map', IPA.field); + + v.register('metadata', IPA.metadata_validator); + v.register('unsupported', IPA.unsupported_validator); + v.register('same_password', IPA.same_password_validator); }; phases.on('registration', exp.register); diff --git a/install/ui/src/freeipa/host.js b/install/ui/src/freeipa/host.js index 0cb7f5ab0..220cbcee5 100644 --- a/install/ui/src/freeipa/host.js +++ b/install/ui/src/freeipa/host.js @@ -230,7 +230,7 @@ IPA.host.entity = function(spec) { fields: [ { name: 'ip_address', - validators: [ IPA.ip_address_validator() ], + validators: [ 'ip_address' ], metadata: IPA.get_command_option('host_add', 'ip_address') }, { @@ -803,9 +803,10 @@ IPA.host.set_otp_dialog = function(spec) { label: '@i18n:password.verify_password', $type: 'password', required: true, - validators: [IPA.same_password_validator({ + validators: [{ + $type: 'same_password', other_field: 'password1' - })] + }] } ] } diff --git a/install/ui/src/freeipa/ipa.js b/install/ui/src/freeipa/ipa.js index a9481615e..fec27d9e5 100644 --- a/install/ui/src/freeipa/ipa.js +++ b/install/ui/src/freeipa/ipa.js @@ -1500,9 +1500,10 @@ IPA.unauthorized_dialog = function(spec) { $type: 'password', required: true, label: text.get('@i18n:password.verify_password', "Verify Password"), - validators: [IPA.same_password_validator({ + validators: [{ + $type: 'same_password', other_field: 'new_password' - })] + }] } ] } diff --git a/install/ui/src/freeipa/trust.js b/install/ui/src/freeipa/trust.js index 145ffc132..31dbbb9b9 100644 --- a/install/ui/src/freeipa/trust.js +++ b/install/ui/src/freeipa/trust.js @@ -121,9 +121,10 @@ IPA.trust.entity = function(spec) { label: '@i18n:password.verify_password', widget: 'method.trust_secret_verify', flags: ['no_command'], - validators: [IPA.same_password_validator({ + validators: [{ + $type: 'same_password', other_field: 'trust_secret' - })] + }] } ], widgets: [ diff --git a/install/ui/src/freeipa/user.js b/install/ui/src/freeipa/user.js index 6d9c0c2d1..04e589b77 100644 --- a/install/ui/src/freeipa/user.js +++ b/install/ui/src/freeipa/user.js @@ -509,9 +509,10 @@ IPA.user_password_dialog = function(spec) { name: 'password2', label: '@i18n:password.verify_password', $type: 'password', - validators: [IPA.same_password_validator({ + validators: [{ + $type: 'same_password', other_field: 'password1' - })], + }], required: true } ] -- cgit