From 54199bf7c8720d87113f8af36d14ef0fcd628672 Mon Sep 17 00:00:00 2001 From: Gregory Ballantine Date: Thu, 6 Oct 2022 21:11:54 -0400 Subject: [PATCH] Added a check to make sure the server doesn't exist before creating it --- public/css/wyrm.css | 12 ++++++++++++ public/js/drake.js | 17 +++++++++++++++++ src/routes.php | 8 ++++++++ views/create.twig | 6 +++--- 4 files changed, 40 insertions(+), 3 deletions(-) diff --git a/public/css/wyrm.css b/public/css/wyrm.css index 5cd8300..dab6e6c 100644 --- a/public/css/wyrm.css +++ b/public/css/wyrm.css @@ -2,6 +2,18 @@ body{ background-color: #e6e6e6; } +input[type=submit]:disabled, +button:disabled{ + background-color: darkgrey; +} +input[type=submit]:disabled:hover, +button:disabled:hover{ + background-color: darkgrey; + border: 1px solid #bbb; + color: #555; + cursor: not-allowed; +} + /* set the max-width for centered content */ .container{ max-width: 1100px; diff --git a/public/js/drake.js b/public/js/drake.js index 0fb993c..39fe46d 100644 --- a/public/js/drake.js +++ b/public/js/drake.js @@ -1,7 +1,11 @@ $(document).ready(function () { + // periodically check for server status updates $('.serverItem').each(function() { setInterval(updateServer, 5000, $(this)); }); + + // set the serverName input field to check if the server exists + $('input#serverName').on('change', checkServerExists); }); function updateServer(elem) { @@ -10,3 +14,16 @@ function updateServer(elem) { elem.children('.serverState').eq(0).text(data.state); }); } + +function checkServerExists() { + $.get('/server/' + $(this).val() + '/status', function(data, state) { + if (data.exists) { + $('input#createSubmit').prop('disabled', true); + alert('That server name is already used; please use another name!'); + } else { + if ($('input#createSubmit').prop('disabled')) { + $('input#createSubmit').prop('disabled', false); + } + } + }); +} diff --git a/src/routes.php b/src/routes.php index 3cf6c3a..f7c2332 100644 --- a/src/routes.php +++ b/src/routes.php @@ -73,9 +73,17 @@ $app->get('/server/{serverName}/status', function (Request $request, Response $r $config = $this->get('config'); $serverDir = join('/', array($config->get('server_directory'), $args['serverName'])); + // check if the server exists - if not, return a false result + if (!is_dir($serverDir)) { + $response->getBody()->write(json_encode(array('exists' => false))); + return $response + ->withHeader('Content-Type', 'application/json'); + } + // create server object and pass info back to client as JSON data $server = new Server($serverDir); $serverData = [ + 'exists' => true, 'name' => $server->getName(), 'version' => $server->getVersion(), 'state' => $server->getState() ? 'Running' : 'Stopped', diff --git a/views/create.twig b/views/create.twig index b581dd5..7b77875 100644 --- a/views/create.twig +++ b/views/create.twig @@ -16,16 +16,16 @@
- +
- +
- +