summaryrefslogtreecommitdiffstats
path: root/install/ui/dns.js
diff options
context:
space:
mode:
Diffstat (limited to 'install/ui/dns.js')
-rw-r--r--install/ui/dns.js142
1 files changed, 141 insertions, 1 deletions
diff --git a/install/ui/dns.js b/install/ui/dns.js
index 58aeaddff..f01d2bb9c 100644
--- a/install/ui/dns.js
+++ b/install/ui/dns.js
@@ -80,15 +80,155 @@ IPA.entity_factories.dnszone = function() {
}).
standard_association_facets().
adder_dialog({
+ factory: IPA.dnszone_adder_dialog,
+ width: 500,
+ height: 300,
fields: [
'idnsname',
+ {
+ factory: IPA.checkbox_widget,
+ name: 'name_from_ip',
+ undo: false
+ },
'idnssoamname',
'idnssoarname',
- {factory:IPA.force_dnszone_add_checkbox_widget}]
+ {
+ factory: IPA.force_dnszone_add_checkbox_widget
+ }
+ ]
}).
build();
};
+IPA.dnszone_adder_dialog = function(spec) {
+
+ spec = spec || {};
+
+ var that = IPA.add_dialog(spec);
+
+ that.create = function() {
+
+ var table = $('<table/>').appendTo(that.container);
+
+ var field = that.fields.get('idnsname');
+ var tr = $('<tr/>').appendTo(table);
+
+ var td = $('<td/>', {
+ style: 'vertical-align: top;',
+ title: field.label
+ }).appendTo(tr);
+
+ td.append($('<label/>', {
+ text: field.label+':'
+ }));
+
+ td = $('<td/>', {
+ style: 'vertical-align: top;'
+ }).appendTo(tr);
+
+ var span = $('<span/>', {
+ name: field.name
+ }).appendTo(td);
+
+ field.create(span);
+ field.field_span = span;
+
+ field = that.fields.get('name_from_ip');
+ tr = $('<tr/>').appendTo(table);
+
+ td = $('<td/>', {
+ style: 'vertical-align: top;',
+ title: field.label
+ }).appendTo(tr);
+
+ td = $('<td/>', {
+ style: 'vertical-align: top;'
+ }).appendTo(tr);
+
+ span = $('<span/>', {
+ name: field.name
+ }).appendTo(td);
+
+ td.append($('<label/>', {
+ text: field.label
+ }));
+
+ field.create(span);
+ field.field_span = span;
+
+ tr = $('<tr/>').appendTo(table);
+
+ td = $('<td/>', {
+ colspan: 2,
+ html: '&nbsp;'
+ }).appendTo(tr);
+
+ var fields = that.fields.values;
+ for (var i=0; i<fields.length; i++) {
+ field = fields[i];
+ if (field.name == 'idnsname' || field.name == 'name_from_ip') continue;
+ if (field.hidden) continue;
+
+ tr = $('<tr/>').appendTo(table);
+
+ td = $('<td/>', {
+ style: 'vertical-align: top;',
+ title: field.label
+ }).appendTo(tr);
+
+ td.append($('<label/>', {
+ text: field.label+':'
+ }));
+
+ td = $('<td/>', {
+ style: 'vertical-align: top;'
+ }).appendTo(tr);
+
+ span = $('<span/>', {
+ name: field.name
+ }).appendTo(td);
+
+ field.create(span);
+ field.field_span = span;
+ }
+ };
+
+ that.save = function(record) {
+
+ var idnsname;
+ var name_from_ip;
+
+ var fields = that.fields.values;
+ for (var i=0; i<fields.length; i++) {
+ var field = fields[i];
+
+ if (field.name == 'idnsname') {
+
+ idnsname = field.save()[0];
+
+ } else if (field.name == 'name_from_ip') {
+
+ name_from_ip = field.save()[0];
+ if (name_from_ip) {
+ record.name_from_ip = idnsname;
+ } else {
+ record.idnsname = idnsname;
+ }
+
+ } else if (field.name == 'idnssoarname') {
+
+ field.optional = name_from_ip;
+
+ } else {
+ var values = field.save();
+ record[field.name] = values.join(',');
+ }
+ }
+ };
+
+ return that;
+};
+
IPA.dns_record_search_load = function (result) {
this.table.empty();
var normalized_record;