diff --git a/templates/index.html b/templates/index.html index f9d589c..f99cf02 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,57 +1,65 @@ <!DOCTYPE html> <html lang="en"> <head> - <meta charset="UTF-8"> - <title>Request an account on {{ homeserver }}</title> - <link rel="icon" href="/static/favicon.ico"> - <link rel="stylesheet" href="/static/styles.css"> -<script> - function updateClock() { - const now = new Date(); - const utcHours = String(now.getUTCHours()).padStart(2, '0'); - const utcMinutes = String(now.getUTCMinutes()).padStart(2, '0'); - const utcSeconds = String(now.getUTCSeconds()).padStart(2, '0'); - document.getElementById("clock").innerText = - `${utcHours}:${utcMinutes}:${utcSeconds}`; - } - - // Wait for DOM to be ready before starting the clock - document.addEventListener('DOMContentLoaded', function() { - updateClock(); - setInterval(updateClock, 1000); - }); -</script> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>Request an account</title> + <link rel="stylesheet" href="/static/styles.css"> </head> <body> - <div class="main-container"> - <div class="logo-container"> - <img src="/static/logo.png" alt="{{ homeserver }} logo" class="logo"> - </div> - - <header> - <h1>Request an account on {{ homeserver }}</h1> - </header> - - <div id="clock" class="clock">--:--:--</div> - - <div class="status-message"> - {{ message }} + <div class="card"> + <div class="logo-container"> + <img src="/static/logo.png" alt="Logo" class="logo"> + </div> + + <div id="registration-form"> + <form action="/register" method="post"> + <input type="text" name="requested_username" placeholder="Requested Username" required> + <input type="email" name="email" placeholder="Valid Email Address" required> + <button type="submit">Request Registration Token</button> + </form> + </div> + + <div id="registration-closed" class="registration-closed" style="display: none;"> + Registration is currently closed + </div> + + <p class="info-text"> + A registration token will be emailed to you.<br> + Token resets in: <span id="countdown" class="countdown">--:--:--</span> + </p> </div> - {% if registration_closed %} - <!-- Registration is closed --> - {% else %} - <form action="/register" method="post"> - <input type="text" name="requested_username" placeholder="Requested Username" required> - <input type="email" name="email" placeholder="Valid Email Address" required> - <input type="submit" value="Submit"> - </form> - {% endif %} - - <div class="footer-spacer"></div> - <footer> - <p>Matrix Homeserver: {{ homeserver }}</p> - </footer> - </div> + <script> + function updateCountdown() { + const now = new Date(); + const tomorrow = new Date(); + tomorrow.setUTCHours(24, 0, 0, 0); + + // Registration closes 15 minutes before midnight UTC + const registrationCloseTime = new Date(tomorrow); + registrationCloseTime.setUTCMinutes(-15); + + const timeUntilClose = registrationCloseTime - now; + const isRegistrationOpen = timeUntilClose > 0; + + // Update UI based on registration status + document.getElementById('registration-form').style.display = + isRegistrationOpen ? 'block' : 'none'; + document.getElementById('registration-closed').style.display = + isRegistrationOpen ? 'none' : 'block'; + + // Format time remaining + const hours = String(Math.floor(timeUntilClose / (1000 * 60 * 60))).padStart(2, '0'); + const minutes = String(Math.floor((timeUntilClose % (1000 * 60 * 60)) / (1000 * 60))).padStart(2, '0'); + const seconds = String(Math.floor((timeUntilClose % (1000 * 60)) / 1000)).padStart(2, '0'); + + document.getElementById('countdown').textContent = `${hours}:${minutes}:${seconds}`; + } + + // Update immediately and then every second + updateCountdown(); + setInterval(updateCountdown, 1000); + </script> </body> -</html> +</html> \ No newline at end of file