diff --git a/app/controllers/BookController.php b/app/controllers/BookController.php index 567aafeafbd8b06193889e8c2266c6e4ab5bb0dc..18fed20ec3cf83b45790c57ca4da456ea3f3173c 100644 --- a/app/controllers/BookController.php +++ b/app/controllers/BookController.php @@ -93,7 +93,8 @@ class BookController extends Controller implements ControllerInterface{ $title, $year, $summary, $price, $duration, $lang, $uploadedAudio, $uploadedImage, $authors, $genres ); - + + header("Location: /book/", true, 301); exit; default: diff --git a/app/models/BookModel.php b/app/models/BookModel.php index bc23ae44b4e5c9b8c9bca1e78385cd85ed522b7c..2d03df59c8bfd9560b27d196d9fa102857cbf88b 100644 --- a/app/models/BookModel.php +++ b/app/models/BookModel.php @@ -25,8 +25,6 @@ class BookModel { $this->db->execute($stmt); $bookId = $this->db->insertId(); - echo $bookId; - $stmt->close(); if ($bookId) { diff --git a/app/pages/admin/AddAuthorPage.php b/app/pages/admin/AddAuthorPage.php index 4d14fc1efeab927419ddc4480f1487c96ecc9835..63b8692594aa573b55ad0d1d16c4a8cae734a1a0 100644 --- a/app/pages/admin/AddAuthorPage.php +++ b/app/pages/admin/AddAuthorPage.php @@ -10,6 +10,7 @@ <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/template/globals.css"> <!-- Navbar CSS --> <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/template/navbar.css"> + <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/template/popup.css"> <!-- Page-specific CSS --> <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/admin/crud-page.css"> <title>Add Author</title> @@ -18,22 +19,62 @@ <body> <!-- Navigation bar --> <?php include(dirname(__DIR__) . '../../components/Navbar.php') ?> - <div class="content"> - <h2>Add Author Page</h2> - <form - class="form-box center-contents" - action="/author/add" method="POST" enctype="multipart/form-data" - > - <div class="form-content flex-column"> <label class="form-label" for="author-name">Author Name:</label> - <input class="form-field" type="text" id="author-name" name="author-name" required> - - <label class="form-label" for="author-age">Author Age:</label> - <input class="form-field" type="text" id="author-age" name="author-age" required> - - <input type="submit" class="button green-button" value="Add"> + <section> + <!-- Pop Up --> + <span class="overlay"></span> + + <div class="modal-box"> + <h2>Add Author</h2> + <h3>Are you sure want to add this Author?</h3> + + <div class="buttons"> + <button class="cancel-btn">Cancel</button> + <button id="addAuthorBtn" class="confirm-btn">Add</button> </div> - </form> - </div> + </div> + <div class="content"> + <h2>Add Author Page</h2> + <form + id="addAuthorForm" + class="form-box center-contents" + > + <div class="form-content flex-column"> <label class="form-label" for="author-name">Author Name:</label> + <input class="form-field" type="text" id="author-name" name="author-name" required> + + <label class="form-label" for="author-age">Author Age:</label> + <input class="form-field" type="number" id="author-age" name="author-age" required> + + <input type="button" class="show-modal button green-button" value="Add"> + </div> + </form> + </div> + </section> </body> +<script> + const section = document.querySelector("section"), + overlay = document.querySelector(".overlay"), + showBtn = document.querySelector(".show-modal"), + closeBtn = document.querySelector(".cancel-btn"), + editUser = document.getElementById("addAuthorBtn"); + + editUser.addEventListener("click", function (event) { + event.preventDefault(); + const form = document.getElementById("addAuthorForm"); + form.action="/author/add/" + form.method = "POST"; + form.enctype = "multipart/form-data"; + form.submit(); + }); + + showBtn.addEventListener("click", ()=>section.classList.add("active")); + + overlay.addEventListener("click", () => + section.classList.remove("active") + ); + + closeBtn.addEventListener("click", () => + section.classList.remove("active") + ); +</script> </html> \ No newline at end of file diff --git a/app/pages/admin/AddBookPage.php b/app/pages/admin/AddBookPage.php index 463fbfd4440b1c939a44d638a97a551d2b8570b0..b9455411d080346d79f1d9ff85072008a1ca6422 100644 --- a/app/pages/admin/AddBookPage.php +++ b/app/pages/admin/AddBookPage.php @@ -9,6 +9,7 @@ <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/template/globals.css"> <!-- Navbar CSS --> <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/template/navbar.css"> + <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/template/popup.css"> <!-- Page-specific CSS --> <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/admin/crud-page.css"> <title>Add Book</title> @@ -16,43 +17,95 @@ <body> <!-- Navigation bar --> <?php include(dirname(__DIR__) . '../../components/Navbar.php') ?> - <div class="content"> - <br><br><br> - <h2>Add Book Page</h2> - <form - class="form-box center-contents" - action="/book/add" method="POST" enctype="multipart/form-data" - > - <div class="form-content flex-column"> - <label class="form-label" for="title">Title:</label> - <input class="form-field" type="text" id="title" name="title" required> - - <label class="form-label" for="year">Year Published:</label> - <input class="form-field" type="number" id="year" name="year" required> - - <label class="form-label" for="summary">Summary:</label> - <textarea - class="text-area" type="text" id="summary" name="summary" - rows="5" cols="50" required - > </textarea> - - <label class="form-label" for="authors[]">Authors:</label> - <input class="form-field" type="number" id="author" name="authors[]" required> - - <label class="form-label" for="genres[]">Genres:</label> - <input class="form-field" type="number" id="genre" name="genres[]" required> - - <label class="form-label" for="price">Price:</label> - <input class="form-field" type="number" id="price" name="price" required> - - <label class="file-upload form-label" for="cover">Book Cover:</label> - <input type="file" id="image" name="cover" accept="image/png, image/jpeg" required> - - <label class="file-upload form-label" for="audio">Audio:</label> - <input type="file" id="audio" name="audio" accept="audio/mpeg" required> - <button type="submit" class="button green-button">Add</button> + <section> + <!-- Pop Up --> + <span class="overlay"></span> + + <div class="modal-box"> + <h2>Add Book</h2> + <h3>Are you sure want to add this book?</h3> + + <div class="buttons"> + <button class="cancel-btn">Cancel</button> + <button id="addBookBtn" class="confirm-btn">Add</button> + </div> + </div> + <div class="content"> + <br><br><br> + <h2>Add Book Page</h2> + <form + id="addBookForm" + class="form-box center-contents" + > + <div class="form-content flex-column"> + <label class="form-label" for="title">Title:</label> + <input class="form-field" type="text" id="title" name="title" required> + + <label class="form-label" for="year">Year Published:</label> + <input class="form-field" type="number" id="year" name="year" required> + + <label class="form-label" for="summary">Summary:</label> + <textarea + class="text-area" type="text" id="summary" name="summary" + rows="5" cols="50" required + > </textarea> + + <label class="form-label" for="authors[]">Authors:</label> + <input class="form-field" type="number" id="author" name="authors[]" required> + + <label class="form-label" for="genres[]">Genres:</label> + <input class="form-field" type="number" id="genre" name="genres[]" required> + + <label class="form-label" for="price">Price:</label> + <input class="form-field" type="number" id="price" name="price" required> + + <label class="file-upload form-label" for="cover">Book Cover:</label> + <input type="file" id="image" name="cover" accept="image/png, image/jpeg" required> + + <label class="file-upload form-label" for="audio">Audio:</label> + <input type="file" id="audio" name="audio" accept="audio/mpeg" required> + <input type="button" class="show-modal button green-button" value="Add"> + </div> + </form> </div> - </form> - </div> + </section> </body> +<script> + const section = document.querySelector("section"), + overlay = document.querySelector(".overlay"), + showBtn = document.querySelector(".show-modal"), + closeBtn = document.querySelector(".cancel-btn"), + addBookBtn = document.getElementById("addBookBtn"); + + function showModal() { + const inputFields = document.querySelectorAll('.form-field'); + + // Check if any input field is empty + const isEmpty = Array.from(inputFields).some(field => field.value.trim() === ''); + + if (!isEmpty) { + section.classList.add("active"); + } else { + alert("Please fill in all the required fields."); + showBtn.removeEventListener("click", showModal); + } + } + addBookBtn.addEventListener("click", function () { + const form = document.getElementById("addBookForm"); + form.action = "/book/add"; + form.method = "POST"; + form.enctype = "multipart/form-data"; + form.submit(); + }); + + showBtn.addEventListener("click", showModal); + + overlay.addEventListener("click", () => + section.classList.remove("active") + ); + + closeBtn.addEventListener("click", () => + section.classList.remove("active") + ); +</script> </html> diff --git a/app/pages/admin/AddGenrePage.php b/app/pages/admin/AddGenrePage.php index 7f59dc7cc92c00a9ce7b6754b3b79cb7f6218c07..f948f108258caa9d83b862c3e79795128101f540 100644 --- a/app/pages/admin/AddGenrePage.php +++ b/app/pages/admin/AddGenrePage.php @@ -36,6 +36,7 @@ <div class="content"> <h2>Add Genre Page</h2> <form + id="addGenreForm" class="form-box center-contents" > <div class="form-content flex-column"> @@ -68,7 +69,7 @@ } } addGenreBtn.addEventListener("click", function () { - const form = document.querySelector('form'); + const form = document.getElementById("addGenreForm"); form.action = "/genre/add"; form.method = "POST"; form.enctype = "multipart/form-data"; diff --git a/app/pages/admin/UpdateSpecificAuthorPage.php b/app/pages/admin/UpdateSpecificAuthorPage.php index 9a01ec34c93f80aa8242eed8c71f1e8ff766a30f..b41d3c1c641eb81d80ec414e1d7980333f8d43de 100644 --- a/app/pages/admin/UpdateSpecificAuthorPage.php +++ b/app/pages/admin/UpdateSpecificAuthorPage.php @@ -10,6 +10,7 @@ <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/template/globals.css"> <!-- Navbar CSS --> <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/template/navbar.css"> + <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/template/popup.css"> <!-- Page-specific CSS --> <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/admin/list.css"> <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/admin/crud-page.css"> @@ -19,38 +20,79 @@ <body> <!-- Navigation bar --> <?php include(dirname(__DIR__) . '../../components/Navbar.php') ?> - <div class="wrapper-small"> - <div class="pad-40"> - <h1>Update Author Page</h1> - <form - action="/author/update/<? echo $this->data['author_id']?>" method="POST" enctype="multipart/form-data" - > - <p class="form-label">Author ID : <? - echo $this->data['author_id']; - ?></p> - <p class="form-label">Previous Name : <? - echo $this->data['full_name']; - ?></p> - <p class="form-label">Previous Age : <? - echo $this->data['age']; - ?></p> - - <br> - <label class="form-label" for="full_name">New Author Name:</label><br> - <input class="form-field" type="text" id="full_name" name="full_name" required> - - <br><br> - - <label class="form-label" for="age">New Author Age:</label><br> - <input class="form-field" type="number" id="age" name="age" required> - - <br><br> - - <input type="submit" class="button green-button" value="Update"> - - </form> + <section> + <!-- Pop Up --> + <span class="overlay"></span> + + <div class="modal-box"> + <h2>Edit Author</h2> + <h3>Are you sure want to edit this Author?</h3> + + <div class="buttons"> + <button class="cancel-btn">Cancel</button> + <button id="editAuthorBtn" class="confirm-btn">Edit</button> + </div> </div> - </div> + <div class="wrapper-small"> + <div class="pad-40"> + <h1>Update Author Page</h1> + <form + id="editAuthorForm" + action="/author/update/<? echo $this->data['author_id']?>" method="POST" enctype="multipart/form-data" + > + <p class="form-label">Author ID : <? + echo $this->data['author_id']; + ?></p> + <p class="form-label">Previous Name : <? + echo $this->data['full_name']; + ?></p> + <p class="form-label">Previous Age : <? + echo $this->data['age']; + ?></p> + + <br> + <label class="form-label" for="full_name">New Author Name:</label><br> + <input class="form-field" type="text" id="full_name" name="full_name" required> + + <br><br> + + <label class="form-label" for="age">New Author Age:</label><br> + <input class="form-field" type="number" id="age" name="age" required> + + <br><br> + + <input type="button" class="show-modal button green-button" value="Update"> + + </form> + </div> + </div> + </section> </body> +<script> + const section = document.querySelector("section"), + overlay = document.querySelector(".overlay"), + showBtn = document.querySelector(".show-modal"), + closeBtn = document.querySelector(".cancel-btn"), + editAuthor = document.getElementById("editAuthorBtn"); + + editAuthor.addEventListener("click", function (event) { + event.preventDefault(); + const form = document.getElementById("editAuthorForm"); + form.action="/author/update/<? echo $this->data['author_id']?>" + form.method = "POST"; + form.enctype = "multipart/form-data"; + form.submit(); + }); + + showBtn.addEventListener("click", ()=>section.classList.add("active")); + + overlay.addEventListener("click", () => + section.classList.remove("active") + ); + + closeBtn.addEventListener("click", () => + section.classList.remove("active") + ); +</script> </html> \ No newline at end of file diff --git a/app/pages/admin/UpdateSpecificGenrePage.php b/app/pages/admin/UpdateSpecificGenrePage.php index deeeec1a87cd4e1221e8ae001aad349db29edbd7..c736ae5bb40d786b650614af6d4a7a8b10ea5597 100644 --- a/app/pages/admin/UpdateSpecificGenrePage.php +++ b/app/pages/admin/UpdateSpecificGenrePage.php @@ -10,39 +10,80 @@ <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/template/globals.css"> <!-- Navbar CSS --> <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/template/navbar.css"> + <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/template/popup.css"> <!-- Page-specific CSS --> <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/admin/list.css"> <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/admin/crud-page.css"> - <title>Update User : <? echo $this->data['genre_id'];?></title> + <title>Update Genre : <? echo $this->data['genre_id'];?></title> </head> <body> <!-- Navigation bar --> <?php include(dirname(__DIR__) . '../../components/Navbar.php') ?> - <div class="wrapper-small"> - <div class="pad-40"> - <h1>Update Genre Page</h1> - <form - action="/genre/update/<? echo $this->data['genre_id']?>" method="POST" enctype="multipart/form-data" - > - <p class="form-label">Genre ID : <? - echo $this->data['genre_id']; - ?></p> - <p class="form-label">Previous Genre Name : <? - echo $this->data['name']; - ?></p> - - <br> - <label class="form-label" for="name">New Genre Name:</label><br> - <input class="form-field" type="text" id="name" name="name" required> - - <br><br> - - <input type="submit" class="button green-button" value="Update"> - - </form> + <section> + <!-- Pop Up --> + <span class="overlay"></span> + + <div class="modal-box"> + <h2>Edit Genre</h2> + <h3>Are you sure want to edit this Genre?</h3> + + <div class="buttons"> + <button class="cancel-btn">Cancel</button> + <button id="editGenreBtn" class="confirm-btn">Edit</button> + </div> + </div> + <div class="wrapper-small"> + <div class="pad-40"> + <h1>Update Genre Page</h1> + <form + id="editGenreForm" + action="/genre/update/<? echo $this->data['genre_id']?>" method="POST" enctype="multipart/form-data" + > + <p class="form-label">Genre ID : <? + echo $this->data['genre_id']; + ?></p> + <p class="form-label">Previous Genre Name : <? + echo $this->data['name']; + ?></p> + + <br> + <label class="form-label" for="name">New Genre Name:</label><br> + <input class="form-field" type="text" id="name" name="name" required> + + <br><br> + + <input type="button" class="show-modal button green-button" value="Update"> + + </form> + </div> </div> - </div> + </section> </body> +<script> + const section = document.querySelector("section"), + overlay = document.querySelector(".overlay"), + showBtn = document.querySelector(".show-modal"), + closeBtn = document.querySelector(".cancel-btn"), + editGenre = document.getElementById("editGenreBtn"); + + editGenre.addEventListener("click", function (event) { + event.preventDefault(); + const form = document.getElementById("editGenreForm"); + form.action="/genre/update/<? echo $this->data['genre_id']?>" + form.method = "POST"; + form.enctype = "multipart/form-data"; + form.submit(); + }); + + showBtn.addEventListener("click", ()=>section.classList.add("active")); + + overlay.addEventListener("click", () => + section.classList.remove("active") + ); + closeBtn.addEventListener("click", () => + section.classList.remove("active") + ); +</script> </html> \ No newline at end of file diff --git a/app/pages/admin/UpdateSpecificUserPage.php b/app/pages/admin/UpdateSpecificUserPage.php index cc7d427777f3cfc9473097346cab229f06bbfab5..f07853cae7382eac997caed069539a240f0e738e 100644 --- a/app/pages/admin/UpdateSpecificUserPage.php +++ b/app/pages/admin/UpdateSpecificUserPage.php @@ -1,6 +1,5 @@ <!DOCTYPE html> <html> - <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> @@ -10,6 +9,7 @@ <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/template/globals.css"> <!-- Navbar CSS --> <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/template/navbar.css"> + <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/template/popup.css"> <!-- Page-specific CSS --> <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/admin/list.css"> <title>Update User : <? echo $this->data['username'];?></title> @@ -18,30 +18,69 @@ <body> <!-- Navigation bar --> <?php include(dirname(__DIR__) . '../../components/Navbar.php') ?> - <div class="wrapper-small"> - <div class="pad-40"> - <h1>Update User Page</h1> - <div class="centered"> - <form - class="center-contents" - action="/user/update/<? echo $this->data['username']?>" method="POST" enctype="multipart/form-data" - > - <p class="form-label">Username : <? - echo $this->data['username']; - ?></p> - - <label class="form-label" for="role">User Role:</label> - <select class="select" id="role" name="role" value="<? echo $this->data['role'];?>"> - <option value="customer">Customer</option> - <option value="admin">Admin</option> - </select> - - <input type="submit" class="button green-button" value="Update"> - - </form> + <section> + <!-- Pop Up --> + <span class="overlay"></span> + + <div class="modal-box"> + <h2>Edit User</h2> + <h3>Are you sure want to edit this User?</h3> + + <div class="buttons"> + <button class="cancel-btn">Cancel</button> + <button id="editUserBtn" class="confirm-btn">Edit</button> </div> </div> - </div> + <div class="wrapper-small"> + <div class="pad-40"> + <h1>Update User Page</h1> + <div class="centered"> + <form + class="center-contents" id="editUserForm" + action="/user/update/<? echo $this->data['username']?>" method="POST" enctype="multipart/form-data" + > + <p class="form-label">Username : <? + echo $this->data['username']; + ?></p> + + <label class="form-label" for="role">User Role:</label> + <select class="select" id="role" name="role" value="<? echo $this->data['role'];?>"> + <option value="customer">Customer</option> + <option value="admin">Admin</option> + </select> + + <input type="button" class="show-modal button green-button" value="Update"> + + </form> + </div> + </div> + </div> + </section> </body> +<script> + const section = document.querySelector("section"), + overlay = document.querySelector(".overlay"), + showBtn = document.querySelector(".show-modal"), + closeBtn = document.querySelector(".cancel-btn"), + editUser = document.getElementById("editUserBtn"); + + editUser.addEventListener("click", function (event) { + event.preventDefault(); + const form = document.getElementById("editUserForm"); + form.action="/user/update/<? echo $this->data['username']?>" + form.method = "POST"; + form.enctype = "multipart/form-data"; + form.submit(); + }); + + showBtn.addEventListener("click", ()=>section.classList.add("active")); + + overlay.addEventListener("click", () => + section.classList.remove("active") + ); + closeBtn.addEventListener("click", () => + section.classList.remove("active") + ); +</script> </html> \ No newline at end of file