Compare commits
No commits in common. "dc78e203ea11d861421c9baa3d7ecf7fcf2c8cfb" and "affe02ec044649795496ffe63bf8eb32b1a1683f" have entirely different histories.
dc78e203ea
...
affe02ec04
|
@ -30,15 +30,8 @@ function editAddress(id) {
|
||||||
.then(
|
.then(
|
||||||
response => response.text()
|
response => response.text()
|
||||||
).then(
|
).then(
|
||||||
json => {
|
html => console.log(html)
|
||||||
let jsonObject = JSON.parse(json)
|
);
|
||||||
if (jsonObject.status === 200) {
|
|
||||||
setInfo('Data successfully saved.')
|
|
||||||
} else {
|
|
||||||
setError(jsonObject.message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
document.getElementById('first_' + id).disabled = true
|
document.getElementById('first_' + id).disabled = true
|
||||||
document.getElementById('last_' + id).disabled = true
|
document.getElementById('last_' + id).disabled = true
|
||||||
|
@ -73,15 +66,8 @@ function deleteAddress(id) {
|
||||||
.then(
|
.then(
|
||||||
response => response.text()
|
response => response.text()
|
||||||
).then(
|
).then(
|
||||||
json => {
|
html => console.log(html)
|
||||||
let jsonObject = JSON.parse(json)
|
);
|
||||||
if (jsonObject.status === 200) {
|
|
||||||
setInfo('Data successfully saved.')
|
|
||||||
} else {
|
|
||||||
setError(jsonObject.message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
let row = document.getElementById('row_' + id)
|
let row = document.getElementById('row_' + id)
|
||||||
row.parentNode.removeChild(row)
|
row.parentNode.removeChild(row)
|
||||||
}
|
}
|
||||||
|
@ -146,43 +132,6 @@ function sortBy(column) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function setInfo(info) {
|
|
||||||
const infoBox = document.getElementById('info_box')
|
|
||||||
infoBox.innerHTML = info
|
|
||||||
infoBox.style.display = 'block'
|
|
||||||
infoBox.classList.add('panel_float')
|
|
||||||
setTimeout(() => {
|
|
||||||
infoBox.style.display = 'none'
|
|
||||||
}, 2500)
|
|
||||||
}
|
|
||||||
|
|
||||||
function setError(error) {
|
|
||||||
const errorBox = document.getElementById('error_box')
|
|
||||||
const errorText = document.getElementById('error_text')
|
|
||||||
const infoButton = document.getElementById('info_button')
|
|
||||||
if (errorBox.style.display === 'block') {
|
|
||||||
errorBox.style.display = 'none'
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if (infoButton != null) {
|
|
||||||
infoButton.disabled = true
|
|
||||||
}
|
|
||||||
errorText.innerHTML = error
|
|
||||||
errorBox.style.display = 'block'
|
|
||||||
errorBox.classList.add('panel_float')
|
|
||||||
}
|
|
||||||
|
|
||||||
function closeError() {
|
|
||||||
const errorBox = document.getElementById('error_box')
|
|
||||||
const infoButton = document.getElementById('info_button')
|
|
||||||
if (infoButton) {
|
|
||||||
infoButton.disabled = false
|
|
||||||
}
|
|
||||||
errorBox.style.display = 'none'
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
const table = document.getElementById('address_table') || false
|
const table = document.getElementById('address_table') || false
|
||||||
if (table) {
|
if (table) {
|
||||||
|
|
|
@ -36,92 +36,3 @@ label {
|
||||||
display: block;
|
display: block;
|
||||||
padding: 1ex;
|
padding: 1ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
.panel_float {
|
|
||||||
position: fixed;
|
|
||||||
overflow: hidden;
|
|
||||||
z-index: 2400;
|
|
||||||
opacity: 0.70;
|
|
||||||
margin: auto;
|
|
||||||
top: 110px !important;
|
|
||||||
-webkit-transition: all 0.5s ease-in-out;
|
|
||||||
-moz-transition: all 0.5s ease-in-out;
|
|
||||||
-ms-transition: all 0.5s ease-in-out;
|
|
||||||
-o-transition: all 0.5s ease-in-out;
|
|
||||||
transition: all 0.5s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
#info_box {
|
|
||||||
background-color: #3fc52a;
|
|
||||||
border: solid #cdcdcd;
|
|
||||||
border-radius: 5px;
|
|
||||||
color: #1f1f1f;
|
|
||||||
display: none;
|
|
||||||
padding: 10px;
|
|
||||||
font-weight: bold;
|
|
||||||
position: absolute;
|
|
||||||
z-index: 10;
|
|
||||||
width: 50%;
|
|
||||||
margin-left: 200px;
|
|
||||||
margin-right: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info_button {
|
|
||||||
border-radius: 5px;
|
|
||||||
border: solid #cdcdcd;
|
|
||||||
color: #1f1f1f;
|
|
||||||
padding: 8px 32px;
|
|
||||||
text-align: center;
|
|
||||||
text-decoration: none;
|
|
||||||
display: inline-block;
|
|
||||||
font-size: 16px;
|
|
||||||
margin: 4px 2px;
|
|
||||||
background-color: #3fc52a;
|
|
||||||
transition-duration: 0.4s;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
#error_box {
|
|
||||||
background-color: #e06844;
|
|
||||||
border: solid #cdcdcd;
|
|
||||||
border-radius: 5px;
|
|
||||||
color: #1f1f1f;
|
|
||||||
display: none;
|
|
||||||
padding: 10px;
|
|
||||||
font-weight: bold;
|
|
||||||
position: absolute;
|
|
||||||
z-index: 10;
|
|
||||||
width: 50%;
|
|
||||||
margin-left: 200px;
|
|
||||||
margin-right: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.error_button {
|
|
||||||
border-radius: 5px;
|
|
||||||
border: solid #cdcdcd;
|
|
||||||
color: #1f1f1f;
|
|
||||||
padding: 8px 32px;
|
|
||||||
text-align: center;
|
|
||||||
text-decoration: none;
|
|
||||||
display: inline-block;
|
|
||||||
font-size: 16px;
|
|
||||||
margin: 4px 2px;
|
|
||||||
background-color: #e06844;
|
|
||||||
transition-duration: 0.4s;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.close_button {
|
|
||||||
margin-left: 15px;
|
|
||||||
color: white;
|
|
||||||
font-weight: bold;
|
|
||||||
float: right;
|
|
||||||
font-size: 22px;
|
|
||||||
line-height: 20px;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.close_button:hover {
|
|
||||||
color: black;
|
|
||||||
}
|
|
|
@ -11,7 +11,6 @@ namespace App\Controller;
|
||||||
|
|
||||||
use App\Entity\User;
|
use App\Entity\User;
|
||||||
use App\Entity\AddressBookEntry;
|
use App\Entity\AddressBookEntry;
|
||||||
use App\Enums\StatusCode;
|
|
||||||
use App\Enums\UserAuth;
|
use App\Enums\UserAuth;
|
||||||
use App\Service\Router;
|
use App\Service\Router;
|
||||||
use App\Service\Template;
|
use App\Service\Template;
|
||||||
|
@ -72,61 +71,16 @@ class AddressBookController
|
||||||
{
|
{
|
||||||
$_POST = json_decode(json: file_get_contents(filename: "php://input"), associative: true);
|
$_POST = json_decode(json: file_get_contents(filename: "php://input"), associative: true);
|
||||||
|
|
||||||
if (empty($_POST)) {
|
$address = new AddressBookEntry(owner: $_POST['owner'], first: $_POST['first'], last: $_POST['last'], street: $_POST['street'], zip: $_POST['zip'], city: $_POST['city'], phone: $_POST['phone'], id: $_POST['id']);
|
||||||
$this->template->renderJson(results: [
|
$this->addressRepository->update(address: $address);
|
||||||
'status' => 400,
|
|
||||||
'message' => 'BAD REQUEST'
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($address = new AddressBookEntry(owner: $_POST['owner'], first: $_POST['first'], last: $_POST['last'], street: $_POST['street'], zip: $_POST['zip'], city: $_POST['city'], phone: $_POST['phone'], id: $_POST['id'])) {
|
|
||||||
if ($this->addressRepository->update(address: $address)) {
|
|
||||||
$status = 200;
|
|
||||||
$message = 'OK';
|
|
||||||
} else {
|
|
||||||
$status = 400;
|
|
||||||
$message = 'BAD_REQUEST';
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$status = 400;
|
|
||||||
$message = "BAD REQUEST";
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->template->renderJson(results: [
|
|
||||||
'status' => $status,
|
|
||||||
'message' => $message
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function deleteAddress(): void
|
public function deleteAddress(): void
|
||||||
{
|
{
|
||||||
|
echo "in del";
|
||||||
$_POST = json_decode(json: file_get_contents(filename: "php://input"), associative: true);
|
$_POST = json_decode(json: file_get_contents(filename: "php://input"), associative: true);
|
||||||
|
|
||||||
if (empty($_POST)) {
|
|
||||||
$this->template->renderJson(results: [
|
|
||||||
'status' => 400,
|
|
||||||
'message' => 'BAD REQUEST'
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($address = $this->addressRepository->findByID(id: $_POST['id'])) {
|
if ($address = $this->addressRepository->findByID(id: $_POST['id'])) {
|
||||||
if ($this->addressRepository->delete(addressBookEntry: $address)) {
|
$this->addressRepository->delete(addressBookEntry: $address);
|
||||||
$this->template->renderJson(results: [
|
|
||||||
'status' => 200,
|
|
||||||
'message' => 'OK'
|
|
||||||
]);
|
|
||||||
} else {
|
|
||||||
$this->template->renderJson(results: [
|
|
||||||
'status' => 400,
|
|
||||||
'message' => 'BAD REQUEST'
|
|
||||||
]);
|
|
||||||
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$this->template->renderJson(results: [
|
|
||||||
'status' => 400,
|
|
||||||
'message' => 'BAD REQUEST'
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -147,7 +147,9 @@ class AddressRepository
|
||||||
$statement->bindParam(param: 'zip', var: $zip);
|
$statement->bindParam(param: 'zip', var: $zip);
|
||||||
$statement->bindParam(param: 'city', var: $city);
|
$statement->bindParam(param: 'city', var: $city);
|
||||||
$statement->bindParam(param: 'phone', var: $phone);
|
$statement->bindParam(param: 'phone', var: $phone);
|
||||||
return $statement->execute();
|
$statement->execute();
|
||||||
|
|
||||||
|
return $statement->rowCount();
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
echo $e->getMessage();
|
echo $e->getMessage();
|
||||||
return false;
|
return false;
|
||||||
|
@ -165,7 +167,9 @@ class AddressRepository
|
||||||
$statement = $this->databaseConnection->getConnection()->prepare(query: $sql);
|
$statement = $this->databaseConnection->getConnection()->prepare(query: $sql);
|
||||||
$id = $addressBookEntry->getId();
|
$id = $addressBookEntry->getId();
|
||||||
$statement->bindParam(param: 'id', var: $id);
|
$statement->bindParam(param: 'id', var: $id);
|
||||||
return $statement->execute();
|
$statement->execute();
|
||||||
|
|
||||||
|
return $statement->rowCount();
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
exit($e->getMessage());
|
exit($e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,7 +137,7 @@ class UserRepository
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function update(User $user): bool
|
public function update(User $user): bool|int
|
||||||
{
|
{
|
||||||
$id = $user->getId();
|
$id = $user->getId();
|
||||||
$nick = $user->getNick();
|
$nick = $user->getNick();
|
||||||
|
@ -169,7 +169,9 @@ class UserRepository
|
||||||
$statement->bindParam(param: 'first', var: $first);
|
$statement->bindParam(param: 'first', var: $first);
|
||||||
$statement->bindParam(param: 'last', var: $last);
|
$statement->bindParam(param: 'last', var: $last);
|
||||||
$statement->bindParam(param: 'is_admin', var: $isAdmin);
|
$statement->bindParam(param: 'is_admin', var: $isAdmin);
|
||||||
return $statement->execute();
|
$statement->execute();
|
||||||
|
|
||||||
|
return $statement->rowCount();
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
echo $e->getMessage();
|
echo $e->getMessage();
|
||||||
return false;
|
return false;
|
||||||
|
@ -177,7 +179,7 @@ class UserRepository
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function delete(User $user): bool
|
public function delete(User $user): int
|
||||||
{
|
{
|
||||||
$sql = "
|
$sql = "
|
||||||
DELETE FROM " . DatabaseConnection::TABLE_USERS . "
|
DELETE FROM " . DatabaseConnection::TABLE_USERS . "
|
||||||
|
@ -187,7 +189,9 @@ class UserRepository
|
||||||
$statement = $this->databaseConnection->getConnection()->prepare(query: $sql);
|
$statement = $this->databaseConnection->getConnection()->prepare(query: $sql);
|
||||||
$id = $user->getId();
|
$id = $user->getId();
|
||||||
$statement->bindParam(param: 'id', var: $id);
|
$statement->bindParam(param: 'id', var: $id);
|
||||||
return $statement->execute();
|
$statement->execute();
|
||||||
|
|
||||||
|
return $statement->rowCount();
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
exit($e->getMessage());
|
exit($e->getMessage());
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,14 +41,4 @@ class Template
|
||||||
}
|
}
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* For AJAX calls, return json
|
|
||||||
*/
|
|
||||||
public function renderJson(array $results): never
|
|
||||||
{
|
|
||||||
http_response_code(response_code: $results['status']);
|
|
||||||
echo json_encode(value: $results);
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,10 +18,5 @@
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<a href="<?= $router->path('app_logout'); ?>">⎋ Logout</a>
|
<a href="<?= $router->path('app_logout'); ?>">⎋ Logout</a>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<br>
|
|
||||||
<div id="info_box">Info</div>
|
|
||||||
<div id="error_box">
|
|
||||||
<span class="close_button" onclick="closeError()">×</span>
|
|
||||||
<div id="error_text"></div>
|
|
||||||
</div>
|
|
||||||
<br>
|
<br>
|
||||||
|
|
|
@ -1,10 +1,6 @@
|
||||||
<?php include dirname(path: __DIR__) . '/_header.html.php'; ?>
|
<?php include dirname(path: __DIR__) . '/_header.html.php'; ?>
|
||||||
|
|
||||||
<br>
|
|
||||||
<h1>Address Book - Admin</h1>
|
<h1>Address Book - Admin</h1>
|
||||||
<a href="<?= $router->path('app_admin_users'); ?>">👱 Users</a>
|
<a href="<?= $router->path('app_admin_users'); ?>">👱 Users</a>
|
||||||
|
|
||||||
<?php include dirname(path: __DIR__) . '/_footer.html.php' ?>
|
<?php include dirname(path: __DIR__) . '/_footer.html.php' ?>
|
||||||
|
|
||||||
<button type="button" class="info_button" id="info_button" onclick="setInfo('Test Info - auto hide')">Info</button>
|
|
||||||
<button type="button" class="error_button" onclick="setError('Test Error - must be closed manually')">Error</button>
|
|
Loading…
Reference in New Issue