AJAX Domain availability checker

This commit is contained in:
Al Beano 2017-07-17 13:25:35 +01:00
parent c56ab7dfec
commit cecd088b0a
4 changed files with 55 additions and 3 deletions

View File

@ -6,6 +6,7 @@ use Dancer2::Plugin::Database;
use cyberman::Domains;
use cyberman::Auth;
use cyberman::Helper;
use cyberman::API;
# Index route, hook and helper functions for authentication

27
lib/cyberman/API.pm Normal file
View File

@ -0,0 +1,27 @@
package cyberman::API;
use Dancer2 appname => "cyberman";
use Dancer2::Plugin::Database;
get '/api/check_availability' => sub {
# No auth req'd
# returns 'y' or 'n'
if (!param("name")) {
return "n";
}
my $result = database->quick_select(
"domain",
{
"name" => param("name"),
}
);
if ($result) {
return "n";
} else {
return "y";
}
};
true;

23
public/js/domain_check.js Normal file
View File

@ -0,0 +1,23 @@
function updateAvailability() {
if (this.responseText === "y") {
document.getElementById("avail").innerHTML = "Available!";
} else {
document.getElementById("avail").innerHTML = "Not available";
}
}
function checkAvailability() {
var name = document.getElementById("name").value;
if (name === "") {
document.getElementById("avail").innerHTML = "";
return
}
document.getElementById("avail").innerHTML = "Checking availability...";
var req = new XMLHttpRequest();
req.addEventListener("load", updateAvailability);
req.open("GET", "/api/check_availability?name="+encodeURIComponent(name));
req.send();
}

View File

@ -21,16 +21,17 @@
</center>
<% END %>
<%# TODO: a nice AJAX availability checker %>
<div class="body">
Please choose a domain to register:
<br /><br />
<form method="POST" class="login">
<input type="text" name="name">.cyb
<input type="text" name="name" id="name" onkeyup="checkAvailability()">.cyb
<button action="submit" style="margin-left:20px">Register domain</button>
</form>
<span id="avail"></span>
<br />
<a href="../domains" class="bracketButton">[&nbsp;go&nbsp;back&nbsp;]</a>
</div>
<script type="text/javascript" src="/js/domain_check.js"></script>