summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Vobornik <pvoborni@redhat.com>2013-04-16 15:25:15 +0200
committerPetr Vobornik <pvoborni@redhat.com>2013-05-06 16:22:27 +0200
commit799bb24931f97be849eea48c6497adcd239e287c (patch)
tree54c2e13c5a6954e45752f94a04747bf88b582406
parent511452ec41d7427fd284233ac39a50072d0ece55 (diff)
downloadfreeipa-799bb24931f97be849eea48c6497adcd239e287c.tar.gz
freeipa-799bb24931f97be849eea48c6497adcd239e287c.tar.xz
freeipa-799bb24931f97be849eea48c6497adcd239e287c.zip
Builder and registry for validators
https://fedorahosted.org/freeipa/ticket/3235
-rw-r--r--install/ui/src/freeipa/dns.js27
-rw-r--r--install/ui/src/freeipa/field.js14
-rw-r--r--install/ui/src/freeipa/host.js7
-rw-r--r--install/ui/src/freeipa/ipa.js5
-rw-r--r--install/ui/src/freeipa/trust.js5
-rw-r--r--install/ui/src/freeipa/user.js5
6 files changed, 43 insertions, 20 deletions
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
}
]