summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--install/ui/dns.js61
1 files changed, 41 insertions, 20 deletions
diff --git a/install/ui/dns.js b/install/ui/dns.js
index 35c945b2f..4959a89c4 100644
--- a/install/ui/dns.js
+++ b/install/ui/dns.js
@@ -534,6 +534,10 @@ IPA.dns.get_record_metadata = function() {
{
name: 'a_part_ip_address',
validators: [IPA.ip_v4_address_validator()]
+ },
+ {
+ type: 'checkbox',
+ name: 'a_extra_create_reverse'
}
],
columns: [
@@ -549,6 +553,10 @@ IPA.dns.get_record_metadata = function() {
{
name:'aaaa_part_ip_address',
validators: [IPA.ip_v6_address_validator()]
+ },
+ {
+ type: 'checkbox',
+ name: 'aaaa_extra_create_reverse'
}
],
columns: [
@@ -1045,7 +1053,7 @@ IPA.dns.extend_spec = function(spec, fields, widgets) {
}
};
-IPA.dns.record_prepare_editor_for_type = function(type, fields, widgets) {
+IPA.dns.record_prepare_editor_for_type = function(type, fields, widgets, update) {
var set_defined = function(property, object, name) {
if (property !== undefined) {
@@ -1069,19 +1077,27 @@ IPA.dns.record_prepare_editor_for_type = function(type, fields, widgets) {
for (var i=0; i<type.attributes.length;i++) {
var attribute = type.attributes[i];
- //create field
- var field = {};
if (typeof attribute === 'string') {
- field.name = attribute;
- } else {
- field.name = attribute.name;
- field.label = attribute.label ||
- IPA.dns.record_get_attr_label(attribute.name);
- set_defined(attribute.type, field, 'type');
- set_defined(attribute.validators, field, 'validators');
- set_defined(attribute.required, field, 'required');
- copy_obj(widget, attribute.field_opt);
+ attribute = {
+ name: attribute
+ };
}
+
+ var metadata = IPA.get_entity_param('dnsrecord', attribute.name);
+ if (metadata && update && metadata.flags &&
+ metadata.flags.indexOf('no_update') > -1) continue;
+
+ //create field
+ var field = {};
+
+ field.name = attribute.name;
+ field.label = attribute.label ||
+ IPA.dns.record_get_attr_label(attribute.name);
+ set_defined(attribute.type, field, 'type');
+ set_defined(attribute.validators, field, 'validators');
+ set_defined(attribute.required, field, 'required');
+ copy_obj(widget, attribute.field_opt);
+
field.widget = type.name+'.'+field.name;
fields.push(field);
@@ -1214,6 +1230,9 @@ IPA.dns.record_get_attr_label = function(part_name) {
if (part_name.indexOf('_part_') > -1) {
label = label.substring(label.indexOf(' '));
+ } else if (part_name.indexOf('_extra_') > -1) {
+
+ label = label.substring(label.indexOf(' '));
}
return label;
@@ -1293,16 +1312,18 @@ IPA.dnsrecord_adder_dialog_type_policy = function(spec) {
var fields = that.container.fields.get_fields();
for (var i=0; i<fields.length; i++) {
- var field = fields[i];
+ var field = fields[i];
var fieldtype;
- var index = field.name.indexOf('_part_');
- if (index > -1) {
- fieldtype = field.name.substring(0, index);
- } else {
- fieldtype = field.name.substring(0, field.name.indexOf('record'));
- }
+ var attr_types = ['_part_', '_extra_', 'record'];
+ for (var j=0; j<attr_types.length; j++) {
+ var index = field.name.indexOf(attr_types[j]);
+ if (index > -1) {
+ fieldtype = field.name.substring(0, index);
+ break;
+ }
+ }
field.enabled = (field.name === 'idnsname' ||
field.name === that.type_field_name ||
@@ -1657,7 +1678,7 @@ IPA.dns.record_type_table_widget = function(spec) {
var type = IPA.dns.get_record_type(dnstype+'record');
IPA.dns.record_prepare_editor_for_type(type, dialog_spec.fields,
- dialog_spec.widgets);
+ dialog_spec.widgets, true);
var dialog = IPA.entity_adder_dialog(dialog_spec);