diff --git a/index.php b/index.php
index 669509e..60cdf8b 100644
--- a/index.php
+++ b/index.php
@@ -436,7 +436,23 @@ $(document).ready(function () {
create: true,
list: false,
edit: false,
- defaultValue: '',
+ input: function(data) {
+ var $template = data.form.find('#Edit-template');
+ var $elem = $('');
+ $elem.val();
+ $template.change(function() {
+ $.get('zones.php?action=gettemplatenameservers&template='+$template.val()+'&prisec=pri', function(getdata) {
+ if (getdata != "") {
+ $elem.val(getdata);
+ $elem.attr('readonly', true);
+ } else {
+ $elem.val();
+ $elem.attr('readonly', false);
+ }
+ });
+ });
+ return $elem;
+ },
inputClass: 'nameserver nameserver1'
},
nameserver2: {
@@ -444,7 +460,23 @@ $(document).ready(function () {
create: true,
list: false,
edit: false,
- defaultValue: '',
+ input: function(data) {
+ var $template = data.form.find('#Edit-template');
+ var $elem = $('');
+ $elem.val();
+ $template.change(function() {
+ $.get('zones.php?action=gettemplatenameservers&template='+$template+'&prisec=sec', function(getdata) {
+ if (getdata != "") {
+ $elem.val(getdata);
+ $elem.attr('readonly', true);
+ } else {
+ $elem.val();
+ $elem.attr('readonly', false);
+ }
+ });
+ });
+ return $elem;
+ },
inputClass: 'nameserver nameserver2'
},
serial: {
diff --git a/zones.php b/zones.php
index 83cc135..0dd31b4 100644
--- a/zones.php
+++ b/zones.php
@@ -498,6 +498,9 @@ case "create":
if ($template['name'] !== $_POST['template']) continue;
foreach ($template['records'] as $record) {
+ if ($record['type'] == 'NS' and array_search($record['content'], $nameservers) !== FALSE) {
+ continue;
+ }
if (isset($record['label'])) {
$record['name'] = $record['label'];
unset($record['label']);
@@ -628,6 +631,25 @@ case "export":
jtable_respond($export, 'single');
break;
+case "gettemplatenameservers":
+ $ret = array();
+ $type = $_GET['prisec'];
+
+ foreach (user_template_list() as $template) {
+ if ($template['name'] !== $_GET['template']) continue;
+ $rc = 0;
+ foreach ($template['records'] as $record) {
+ if ($record['type'] == "NS") {
+ if (($type == 'pri' && $rc == 0) or ($type == 'sec' && $rc == 1)) {
+ echo $record['content'];
+ exit(0);
+ }
+ $rc++;
+ }
+ }
+ echo "";
+ }
+ break;
default:
jtable_respond(null, 'error', 'No such action');
break;