Implement toggle in main controller.

This commit is contained in:
2019-03-04 13:55:58 +01:00
parent 24bddd64d1
commit 89f4a17432
4 changed files with 66 additions and 32 deletions

View File

@@ -1,7 +1,22 @@
<?php
require_once '../vendor/autoload.php';
if (\FooBar\Configuration::loadConfig()->isOpen()) {
$config = \FooBar\Configuration::loadConfig();
if (isset($_POST['auth_check'])) {
if (!$config->isAuthorized()) {
http_response_code(403);
}
} elseif (isset($_POST['toggle']) && $config->isAuthorized()) {
$file = $config->stateFile();
if ($config->isOpen()) {
unlink($file);
} else {
touch($file);
}
}
if ($config->isOpen()) {
require '../templates/open.html';
} else {
require '../templates/closed.html';

View File

@@ -1,31 +0,0 @@
<?php
require_once '../vendor/autoload.php';
$configuration = \FooBar\Configuration::loadConfig();
if (isset($_POST['toggle']) && $configuration->isAuthorized()) {
$file = $configuration->stateFile();
if ($configuration->isOpen()) {
unlink($file);
} else {
touch($file);
}
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>Verander de status van de foobar</title>
</head>
<body>
<h1>De foobar is nu
<?php
echo $configuration->isOpen() ? ' ' : ' niet ';
?>
open.</h1>
<form method="post">
<input type="submit" name="toggle" value="Verander dit">
</form>
</body>
</html>

View File

@@ -1,3 +1,10 @@
* {
font-family: verdana, sans-serif;
}
#toggle-button {
z-index: 2;
position: absolute;
top: 0;
left: 0;
}

View File

@@ -7,4 +7,47 @@ window.addEventListener('load', function () {
} else {
startClosedAnimation();
}
doIfAuthorized(showToggleButton);
});
function showToggleButton() {
console.log('Should show toggle button.');
const template = `
<div id="toggle-button">
<form method="post">
<button name="toggle">Verander dit</button>
</form>
</div>`;
const div = document.createElement('div');
div.innerHTML = template.trim();
const content = div.firstChild;
div.removeChild(content);
document.body.appendChild(content);
console.log(content);
}
/**
* Run the specified callback if the user is authorized
*
* @param callback
*/
function doIfAuthorized(callback) {
const request = new XMLHttpRequest();
request.open('POST', window.location); // Post to self should work
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.onreadystatechange = function () {
switch (request.readyState) {
case XMLHttpRequest.DONE:
if (request.status === 200) {
callback();
}
break;
default:
// Wait for completion.
break;
}
};
request.send('auth_check=1');
}