Преглед изворни кода

UI: DNS(add/edit) Change inputbox with a editable dropdown select

Robert Zollner пре 6 година
родитељ
комит
2899b69fff

+ 11 - 2
web/add/dns/index.php

@@ -6,6 +6,11 @@ $TAB = 'DNS';
 // Main include
 include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
 
+// List ip addresses
+exec (HESTIA_CMD."v-list-user-ips ".$user." json", $output, $return_var);
+$v_ips = json_decode(implode('', $output), true);
+unset($output);
+
 // Check POST request for dns domain
 if (!empty($_POST['ok'])) {
 
@@ -33,7 +38,7 @@ if (!empty($_POST['ok'])) {
     $v_domain = preg_replace("/^www./i", "", $_POST['v_domain']);
     $v_domain = escapeshellarg($v_domain);
     $v_domain = strtolower($v_domain);
-    $v_ip = escapeshellarg($_POST['v_ip']);
+    $v_ip = $_POST['v_ip'];
     $v_ns1 = escapeshellarg($_POST['v_ns1']);
     $v_ns2 = escapeshellarg($_POST['v_ns2']);
     $v_ns3 = escapeshellarg($_POST['v_ns3']);
@@ -45,7 +50,7 @@ if (!empty($_POST['ok'])) {
 
     // Add dns domain
     if (empty($_SESSION['error_msg'])) {
-        exec (HESTIA_CMD."v-add-dns-domain ".$user." ".$v_domain." ".$v_ip." ".$v_ns1." ".$v_ns2." ".$v_ns3." ".$v_ns4." ".$v_ns5."  ".$v_ns6."  ".$v_ns7." ".$v_ns8." no", $output, $return_var);
+        exec (HESTIA_CMD."v-add-dns-domain ".$user." ".$v_domain." ".escapeshellarg($v_ip)." ".$v_ns1." ".$v_ns2." ".$v_ns3." ".$v_ns4." ".$v_ns5."  ".$v_ns6."  ".$v_ns7." ".$v_ns8." no", $output, $return_var);
         check_return_code($return_var,$output);
         unset($output);
     }
@@ -146,6 +151,10 @@ $v_ns6 = str_replace("'", "", $v_ns6);
 $v_ns7 = str_replace("'", "", $v_ns7);
 $v_ns8 = str_replace("'", "", $v_ns8);
 
+if(empty($v_ip) && count($v_ips) > 0) {
+    $ip = array_key_first($v_ips);
+    $v_ip = (empty($v_ips[$ip]['NAT'])?$ip:$v_ips[$ip]['NAT']);
+}
 
 if (empty($_GET['domain'])) {
     // Display body for dns domain

+ 17 - 0
web/css/styles.min.css

@@ -2399,6 +2399,19 @@ label:hover {
 .vst-input.short {
   width: 200px;
 }
+.vst-input.vst-list-editor {
+  border: none;
+  box-shadow: none;
+  position: absolute;
+  margin-top:-34px;
+  margin-left: 1px;
+  display: block;
+  width: 340px;
+  height: 1rem;
+}
+.vst-input.vst-list-editor:focus {
+  background-color: white;
+}
 
 .vst-list {
   background-color: #fff;
@@ -2424,6 +2437,10 @@ label:hover {
   box-shadow: 0px 1px 4px rgba(0,0,0,0.15);
 }
 
+select.vst-list:-moz-focusring {
+  color:transparent;
+}
+
 .vst-list.long-2 {
   width: 486px;
   background-position: 465px;

+ 5 - 0
web/edit/dns/index.php

@@ -17,6 +17,11 @@ if (($_SESSION['user'] == 'admin') && (!empty($_GET['user']))) {
     $user=escapeshellarg($_GET['user']);
 }
 
+// List ip addresses
+exec (HESTIA_CMD."v-list-user-ips ".$user." json", $output, $return_var);
+$v_ips = json_decode(implode('', $output), true);
+unset($output);
+
 // List dns domain
 if ((!empty($_GET['domain'])) && (empty($_GET['record_id'])))  {
     $v_domain = escapeshellarg($_GET['domain']);

+ 10 - 1
web/templates/admin/add_dns.html

@@ -65,7 +65,16 @@
                             </tr>
                             <tr>
                                 <td>
-                                    <input type="text" size="20" class="vst-input" name="v_ip" value="<?=htmlentities(trim($v_ip, "'"))?>">
+                                    <select class="vst-list" onchange="this.nextElementSibling.value=this.value">
+                                        <option value="">clear</option>
+                                        <?php
+                                            foreach ($v_ips as $ip => $value) {
+                                                $display_ip = empty($value['NAT']) ? $ip : "{$value['NAT']}";
+                                                echo "<option value='{$display_ip}'>" . htmlentities($display_ip) . "</option>\n";
+                                            }
+                                        ?>
+                                    </select>
+                                    <input type="text" size="20" class="vst-input vst-list-editor" name="v_ip" value="<?=htmlentities(trim($v_ip, "'"))?>">
                                 </td>
                             </tr>
                             <tr>

+ 10 - 1
web/templates/admin/add_dns_rec.html

@@ -94,7 +94,16 @@
                             </tr>
                             <tr>
                                 <td>
-                                    <input type="text" size="20" class="vst-input" name="v_val" value="<?=htmlentities(trim($v_val, "'"))?>">
+                                    <select class="vst-list" onchange="this.nextElementSibling.value=this.value">
+                                        <option value="">clear</option>
+                                        <?php
+                                            foreach ($v_ips as $ip => $value) {
+                                                $display_ip = empty($value['NAT']) ? $ip : "{$value['NAT']}";
+                                                echo "<option value='{$display_ip}'>" . htmlentities($display_ip) . "</option>\n";
+                                            }
+                                        ?>
+                                    </select>
+                                    <input type="text" size="20" class="vst-input vst-list-editor" name="v_val" value="<?=htmlentities(trim($v_val, "'"))?>">
                                 </td>
                             </tr>
                             <tr>

+ 11 - 1
web/templates/admin/edit_dns.html

@@ -68,7 +68,17 @@
                             </tr>
                             <tr>
                                 <td>
-                                    <input type="text" size="20" class="vst-input" name="v_ip" value="<?=htmlentities(trim($v_ip, "'"))?>">
+                                    <select class="vst-list" onchange="this.nextElementSibling.value=this.value">
+                                        <option value="">clear</option>
+                                        <?php
+                                            foreach ($v_ips as $ip => $value) {
+                                                $display_ip = empty($value['NAT']) ? $ip : "{$value['NAT']}";
+                                                $ip_selected = ((!empty($v_ip) && ($v_ip==$ip||$v_ip==$display_ip) ))? 'selected' : '';
+                                                echo "<option value='{$display_ip}' {$ip_selected}>" . htmlentities($display_ip) . "</option>\n";
+                                            }
+                                        ?>
+                                    </select>
+                                    <input type="text" size="20" class="vst-input vst-list-editor" name="v_ip" value="<?=htmlentities(trim($v_ip, "'"))?>">
                                 </td>
                             </tr>
                             <tr>

+ 10 - 1
web/templates/admin/edit_dns_rec.html

@@ -104,7 +104,16 @@
                             </tr>
                             <tr>
                                 <td>
-                                    <input type="text" size="20" class="vst-input" name="v_val" value="<?=htmlentities(trim($v_val, "'"))?>">
+                                    <select class="vst-list" onchange="this.nextElementSibling.value=this.value">
+                                        <option value="">clear</option>
+                                        <?php
+                                            foreach ($v_ips as $ip => $value) {
+                                                $display_ip = empty($value['NAT']) ? $ip : "{$value['NAT']}";
+                                                echo "<option value='{$display_ip}'>" . htmlentities($display_ip) . "</option>\n";
+                                            }
+                                        ?>
+                                    </select>
+                                    <input type="text" size="20" class="vst-input vst-list-editor" name="v_val" value="<?=htmlentities(trim($v_val, "'"))?>">
                                 </td>
                             </tr>
                             <tr>

+ 11 - 1
web/templates/user/edit_dns.html

@@ -68,7 +68,17 @@
                             </tr>
                             <tr>
                                 <td>
-                                    <input type="text" size="20" class="vst-input" name="v_ip" value="<?=htmlentities(trim($v_ip, "'"))?>">
+                                    <select class="vst-list" onchange="this.nextElementSibling.value=this.value">
+                                        <option value="">clear</option>
+                                        <?php
+                                            foreach ($v_ips as $ip => $value) {
+                                                $display_ip = empty($value['NAT']) ? $ip : "{$value['NAT']}";
+                                                $ip_selected = ((!empty($v_ip) && ($v_ip==$ip||$v_ip==$display_ip) ))? 'selected' : '';
+                                                echo "<option value='{$display_ip}' {$ip_selected}>" . htmlentities($display_ip) . "</option>\n";
+                                            }
+                                        ?>
+                                    </select>
+                                    <input type="text" size="20" class="vst-input vst-list-editor" name="v_ip" value="<?=htmlentities(trim($v_ip, "'"))?>">
                                 </td>
                             </tr>
                             <tr>