diff --git a/enhance.php b/enhance.php
index bb18018..6c9721b 100644
--- a/enhance.php
+++ b/enhance.php
@@ -160,7 +160,7 @@ public function manageEditRow($module_row, array &$vars)
*/
public function addModuleRow(array &$vars)
{
- $meta_fields = ['server_label', 'hostname', 'org_id', 'api_token'];
+ $meta_fields = ['server_label', 'hostname', 'org_id', 'api_token', 'name_servers'];
$encrypted_fields = [];
// Set unset checkboxes
@@ -206,7 +206,7 @@ public function addModuleRow(array &$vars)
*/
public function editModuleRow($module_row, array &$vars)
{
- $meta_fields = ['server_label','hostname','org_id','api_token'];
+ $meta_fields = ['server_label','hostname','org_id','api_token','name_servers'];
$encrypted_fields = [];
$this->Input->setRules($this->getRowRules($vars));
@@ -272,6 +272,16 @@ private function getRowRules(&$vars)
],
'message' => Language::_('Enhance.!error.api_token.valid', true)
]
+ ],
+ 'name_servers' => [
+ 'count' => [
+ 'rule' => [[$this, 'validateNameServerCount']],
+ 'message' => Language::_('Enhance.!error.name_servers.count', true)
+ ],
+ 'format' => [
+ 'rule' => [[$this, 'validateNameServers']],
+ 'message' => Language::_('Enhance.!error.name_servers.format', true)
+ ]
]
];
@@ -290,6 +300,36 @@ public function validateHostName($host_name)
return $validator->isDomain($host_name) || $validator->isIp($host_name);
}
+ /**
+ * Validates that at least 2 name servers are set in the given array of name servers.
+ *
+ * @param array $name_servers An array of name servers
+ * @return bool True if the array count is >= 2, false otherwise
+ */
+ public function validateNameServerCount($name_servers)
+ {
+ return is_array($name_servers) && count($name_servers) >= 2;
+ }
+
+ /**
+ * Validates that the given name servers are formatted correctly.
+ *
+ * @param array $name_servers An array of name servers
+ * @return bool True if every name server is formatted correctly, false otherwise
+ */
+ public function validateNameServers($name_servers)
+ {
+ if (is_array($name_servers)) {
+ foreach ($name_servers as $name_server) {
+ if (!$this->validateHostName($name_server)) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+
/**
* Validates the API connection
*
diff --git a/language/en_us/enhance.php b/language/en_us/enhance.php
index 23f0a79..1e1f1cf 100644
--- a/language/en_us/enhance.php
+++ b/language/en_us/enhance.php
@@ -47,11 +47,23 @@
// Add row
$lang['Enhance.add_row.box_title'] = 'Enhance - Add Server';
$lang['Enhance.add_row.add_btn'] = 'Add Server';
+$lang['Enhance.add_row.name_servers_title'] = 'Name Servers';
+$lang['Enhance.add_row.name_server_btn'] = 'Add Additional Name Server';
+$lang['Enhance.add_row.name_server_col'] = 'Name Server';
+$lang['Enhance.add_row.name_server_host_col'] = 'Hostname';
+$lang['Enhance.add_row.name_server'] = 'Name server %1$s'; // %1$s is the name server number (e.g. 3)
+$lang['Enhance.add_row.remove_name_server'] = 'Remove';
// Edit row
$lang['Enhance.edit_row.box_title'] = 'Enhance - Edit Server';
$lang['Enhance.edit_row.edit_btn'] = 'Update Server';
+$lang['Enhance.edit_row.name_servers_title'] = 'Name Servers';
+$lang['Enhance.edit_row.name_server_btn'] = 'Add Additional Name Server';
+$lang['Enhance.edit_row.name_server_col'] = 'Name Server';
+$lang['Enhance.edit_row.name_server_host_col'] = 'Hostname';
+$lang['Enhance.edit_row.name_server'] = 'Name server %1$s'; // %1$s is the name server number (e.g. 3)
+$lang['Enhance.edit_row.remove_name_server'] = 'Remove';
// Row meta
@@ -67,6 +79,8 @@
$lang['Enhance.!error.org_id.empty'] = 'Please enter an organization ID.';
$lang['Enhance.!error.api_token.empty'] = 'Please enter an API token.';
$lang['Enhance.!error.api_token.valid'] = 'Unable to connect to the Enhance server. Please verify your API credentials.';
+$lang['Enhance.!error.name_servers.count'] = 'You must define at least 2 name servers.';
+$lang['Enhance.!error.name_servers.format'] = 'One or more of the name servers entered are invalid.';
$lang['Enhance.!error.module_row.missing'] = 'An internal error occurred. The module row is unavailable.';
$lang['Enhance.!error.domain.format'] = 'Please enter a valid domain name.';
$lang['Enhance.!error.username.format'] = 'The username may contain only letters, numbers, dashes, and underscores and must be between 3 and 16 characters in length.';
diff --git a/views/default/add_row.pdt b/views/default/add_row.pdt
index 05e1789..eb22cd4 100644
--- a/views/default/add_row.pdt
+++ b/views/default/add_row.pdt
@@ -53,6 +53,41 @@ $this->Widget->create($this->_('Enhance.add_row.box_title', true));
]); ?>
+