From 3089a2644988c278723658edd9653b5b1f290435 Mon Sep 17 00:00:00 2001 From: overplayed <47672088+overplayed@users.noreply.github.com> Date: Sat, 15 Mar 2025 22:24:56 -0400 Subject: [PATCH] Completed questionnaire form with all sections and validation logic --- assets/css/styles.css | 29 +++ assets/js/main.js | 31 ++- board-member.php | 35 +++ forms/questionnaire.html | 497 +++++++++++++++++++++++++++++++++++---- load-responses.php | 21 +- 5 files changed, 571 insertions(+), 42 deletions(-) create mode 100644 board-member.php diff --git a/assets/css/styles.css b/assets/css/styles.css index e69de29..e38895a 100644 --- a/assets/css/styles.css +++ b/assets/css/styles.css @@ -0,0 +1,29 @@ +body { + font-family: Arial, sans-serif; + background-color: #f8f9fa; +} + +.container { + max-width: 800px; + background: white; + padding: 20px; + border-radius: 8px; + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); +} + +h3 { + color: #253f8a; +} + +.btn-primary { + background-color: #253f8a; + border: none; +} + +.btn-primary:hover { + background-color: #1a2d6d; +} + +.alert { + display: none; +} diff --git a/assets/js/main.js b/assets/js/main.js index 49a7540..dca5c5e 100644 --- a/assets/js/main.js +++ b/assets/js/main.js @@ -115,5 +115,34 @@ document.addEventListener("DOMContentLoaded", function () { localStorage.setItem("assessmentData", JSON.stringify(formData)); }); - prepopulateForm(); + fetch("../load-responses.php?token=" + new URLSearchParams(window.location.search).get("token")) + .then(response => response.json()) + .then(data => { + if (data.error) { + document.getElementById("auth-message").style.display = "block"; + } else { + document.getElementById("assessment-form").style.display = "block"; + if (data.is_board_member == 1) { + document.getElementById("board-member-section").style.display = "block"; + document.getElementById("board-member-image").src = data.board_member_image; + } + // Fetch board member data +fetch("../board-member.php") +.then(response => response.json()) +.then(data => { + if (data.is_board_member) { + document.getElementById("board-member-questions").style.display = "block"; + } +}) +.catch(error => console.error("Failed to load board member data:", error)); + +prepopulateForm(); + + } + }) + .catch(error => { + console.error("Failed to validate token:", error); + document.getElementById("auth-message").style.display = "block"; + }); + }); diff --git a/board-member.php b/board-member.php new file mode 100644 index 0000000..46042e1 --- /dev/null +++ b/board-member.php @@ -0,0 +1,35 @@ + "Unauthorized access."]); + exit; +} + +// Check if the user is a board member +$userId = $_SESSION['user_id']; +$stmt = $conn->prepare("SELECT is_board_member FROM users WHERE id = ?"); +$stmt->bind_param("i", $userId); +$stmt->execute(); +$result = $stmt->get_result(); +$user = $result->fetch_assoc(); +$isBoardMember = $user['is_board_member'] ?? 0; + +$response = ["is_board_member" => $isBoardMember]; + +if ($isBoardMember) { + // Fetch board member image + $stmt = $conn->prepare("SELECT image_url FROM board_members WHERE user_id = ?"); + $stmt->bind_param("i", $userId); + $stmt->execute(); + $result = $stmt->get_result(); + $boardMember = $result->fetch_assoc(); + $response["board_member_image"] = $boardMember['image_url'] ?? "../assets/img/ccah-logo.png"; +} + +echo json_encode($response); +?> diff --git a/forms/questionnaire.html b/forms/questionnaire.html index b391c83..bcfa9e7 100644 --- a/forms/questionnaire.html +++ b/forms/questionnaire.html @@ -25,116 +25,533 @@
+

General Information

+ +
- +
- + +
- +
- + +
- + + +
+ + +
+
- +
- +
- +
- +
-
- + + + + + + + + + +
- +
+ + +

Board Member Specific Questions

+ + +
+ +
+ + +
+
+ + +
+ +
+ + +
+ + +
+ + +
+ +
+ + +
+
+ + +
+ +
+ + +
+ + +
+ +

Email & Collaboration

- +
+ +
+ +
+ + +
+
+ + +
+
+ + + + + +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ + +
+ +

File Storage & Access

+ + +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ +

Security & Access

+
- - + +
+ + +
+
+ + +
-
diff --git a/load-responses.php b/load-responses.php index 888848f..8b33855 100644 --- a/load-responses.php +++ b/load-responses.php @@ -36,13 +36,32 @@ if (!$user) { exit; } // Check if token is expired -if (strtotime($user['token_expires_at']) < time()) { +if ($user['expired'] == 1) { http_response_code(403); echo json_encode(["error" => "Authentication token has expired."]); exit; } $userId = $user['id']; +$isBoardMember = $user['is_board_member']; + +// Fetch board member profile image (if applicable) +$boardMemberImage = "img/ccah-logo.png"; // Default image +if ($isBoardMember == 1) { + $stmt = $conn->prepare("SELECT image_url FROM board_members WHERE user_id = ?"); + $stmt->bind_param("i", $userId); + $stmt->execute(); + $result = $stmt->get_result(); + if ($result->num_rows > 0) { + $boardMember = $result->fetch_assoc(); + $boardMemberImage = $boardMember['image_url'] ?: "img/ccah-logo.png"; + } +} + +// Add board membership and image to the response +$response['is_board_member'] = $isBoardMember; +$response['board_member_image'] = $boardMemberImage; + // Fetch saved responses