recreate project

This commit is contained in:
root
2026-02-10 22:11:06 -05:00
commit 663c0cdbda
10149 changed files with 1379710 additions and 0 deletions
+341
View File
@@ -0,0 +1,341 @@
<div class="student-form border rounded p-3 mb-4 bg-light position-relative">
<button type="button" class="btn-close position-absolute end-0 top-0 m-2 js-remove-student" aria-label="Close"></button>
<h5 class="mb-3 text-primary">Student Information</h5>
<div class="col-md-12 mb-3">
<label class="form-label fw-bold mb-2 d-block">
Was your child enrolled in Al Rahma Sunday School last year? <span class="text-danger">*</span>
</label>
<div class="d-flex align-items-center flex-wrap gap-3">
<div class="form-check ps-3">
<input class="form-check-input" type="radio" name="last_year_0" value="yes" data-base-name="last_year" required autocomplete="off">
<label class="form-check-label">Yes</label>
</div>
<div class="form-check ps-3">
<input class="form-check-input" type="radio" name="last_year_0" value="no" data-base-name="last_year" required autocomplete="off">
<label class="form-check-label">No</label>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label class="form-label">First Name <span class="text-danger">*</span></label>
<input
type="text"
class="form-control"
name="studentFirstName[]"
placeholder="First Name"
maxlength="30"
required
data-base-name="studentFirstName"
title="Only letters, spaces, or dashes (230 chars)">
</div>
<div class="col-md-6 mb-3">
<label class="form-label">Last Name <span class="text-danger">*</span></label>
<input
type="text"
class="form-control"
name="studentLastName[]"
placeholder="Last Name"
maxlength="30"
required
data-base-name="studentLastName"
title="Only letters, spaces, or dashes (230 chars)">
</div>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label class="form-label">Date of Birth <span class="text-danger">*</span></label>
<input type="date" class="form-control dob-input" name="dob[]" required data-base-name="dob">
<small class="text-danger age-error d-none">Student must be between 5 and 18 years old.</small>
</div>
<div class="col-6 mb-3">
<label class="form-label grade-label">Last Year Grade <span class="text-danger">*</span></label>
<select class="form-select dynamic-grade grade-select"
name="registration_grade[]"
required data-base-name="registration_grade"
disabled>
<option value="">Select Grade</option>
</select>
</div>
</div>
<div class="row">
<div class="col-md-6 mb-3">
<label class="form-label">Gender <span class="text-danger">*</span></label>
<select class="form-select" name="gender[]" required data-base-name="gender">
<option value="">Select Gender</option>
<option value="Male">Male</option>
<option value="Female">Female</option>
</select>
</div>
<div class="col-md-6 mb-3">
<label class="form-label">Photo Consent <span class="text-danger">*</span></label>
<select class="form-select" name="photo_consent[]" required data-base-name="photo_consent">
<option value="">Select Answer</option>
<option value="Yes">Yes</option>
<option value="No">No</option>
</select>
<small>
<a href="#" class="text-nowrap" data-bs-toggle="modal" data-bs-target="#picturePolicyModal">
Read Photo Consent Agreement
</a>
</small>
</div>
</div>
<!-- NEW SECTION -->
<div class="row">
<!-- Medical Conditions -->
<div class="col-md-6 mb-3">
<label class="form-label">Medical Conditions (Select all that apply from the 33 items below) <span class="text-danger">*</span></label>
<div class="border rounded p-2 bg-white ps-3" style="max-height: 200px; overflow-y: auto;">
<?php
$medicalOptions = [
"None",
"ADHD (Attention-Deficit/Hyperactivity Disorder)",
"Anxiety or Emotional Disorders",
"Asthma",
"Autism Spectrum Disorder (ASD)",
"Behavioral or Conduct Disorders",
"Blindness / Vision Impairment",
"Celiac Disease (Gluten Intolerance)",
"Cerebral Palsy",
"Cystic Fibrosis",
"Depression",
"Diabetes (Type 1 or Type 2)",
"Down Syndrome",
"Dyslexia or Learning Disabilities",
"Eating Disorders",
"Eczema / Severe Skin Conditions",
"Epilepsy / Seizure Disorders",
"Hearing Impairments / Deafness",
"Heart Conditions (congenital or acquired)",
"Hemophilia / Bleeding Disorders",
"Kidney Disease",
"Migraines / Chronic Headaches",
"Obsessive-Compulsive Disorder (OCD)",
"Physical Disabilities / Mobility Impairments",
"PTSD (Post-Traumatic Stress Disorder)",
"Sickle Cell Anemia",
"Speech and Language Disorders",
"Thyroid Disorders",
"Tourette Syndrome",
"Traumatic Brain Injury (TBI)",
"Rheumatic diseases",
"Ulcerative Colitis / Crohns Disease",
"Other"
];
foreach ($medicalOptions as $opt): ?>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="medical_conditions[][]" value="<?= esc($opt) ?>" data-base-name="medical_conditions">
<label class="form-check-label ms-1"><?= esc($opt) ?></label>
</div>
<?php endforeach; ?>
</div>
<input type="text" class="form-control mt-2 d-none medical-condition-other" name="medical_condition_other[]" placeholder="Please specify if 'Other' selected">
</div>
<!-- Allergies -->
<div class="col-md-6 mb-3">
<label class="form-label">Allergies (Select all that apply from the 24 items below) <span class="text-danger">*</span></label>
<div class="border rounded p-2 bg-white ps-3" style="max-height: 200px; overflow-y: auto; overflow-x: hidden;">
<?php
$allergyOptions = [
"None",
"Animal Dander (cats, dogs, etc.)",
"Antibiotics",
"Bee stings",
"Cockroach",
"Corn",
"Dust Mites",
"Egg",
"Fire ant stings",
"Fish",
"Fragrances / Perfumes",
"Latex",
"Milk / Dairy",
"Mold",
"Mosquito bites",
"Peanut",
"Pollen (grass, tree, weed)",
"Sesame",
"Shellfish (shrimp, crab, lobster, etc.)",
"Soy",
"Tree Nuts (almond, cashew, walnut, etc.)",
"Wasp stings",
"Wheat / Gluten",
"Other"
];
foreach ($allergyOptions as $opt): ?>
<div class="form-check">
<input class="form-check-input" type="checkbox" name="allergies[][]" value="<?= esc($opt) ?>" data-base-name="allergies">
<label class="form-check-label ms-1"><?= esc($opt) ?></label>
</div>
<?php endforeach; ?>
</div>
<input type="text" class="form-control mt-2 d-none allergy-other" name="allergy_other[]" placeholder="Please specify if 'Other' selected">
</div>
</div>
</div>
<script>
const gradeOptions = {
public: [{
value: "NA",
text: "Not enrolled in public school"
},
{
value: "KG",
text: "Pre-K / Kindergarten"
},
{
value: "1",
text: "Grade 1"
}, {
value: "2",
text: "Grade 2"
},
{
value: "3",
text: "Grade 3"
}, {
value: "4",
text: "Grade 4"
},
{
value: "5",
text: "Grade 5"
}, {
value: "6",
text: "Grade 6"
},
{
value: "7",
text: "Grade 7"
}, {
value: "8",
text: "Grade 8"
},
{
value: "9",
text: "Grade 9"
}, {
value: "10",
text: "Grade 10"
},
{
value: "11",
text: "Grade 11"
}, {
value: "12",
text: "Grade 12"
}
],
alrahma: [{
value: "KG",
text: "Pre-K / Kindergarten"
},
{
value: "1",
text: "Grade 1"
}, {
value: "2",
text: "Grade 2"
},
{
value: "3",
text: "Grade 3"
}, {
value: "4",
text: "Grade 4"
},
{
value: "5",
text: "Grade 5"
}, {
value: "6",
text: "Grade 6"
},
{
value: "7",
text: "Grade 7"
}, {
value: "8",
text: "Grade 8"
},
{
value: "9",
text: "Grade 9"
}, {
value: "10",
text: "Youth"
}
]
};
function resetGradeSelect(gradeSelect, gradeLabel) {
if (!gradeSelect || !gradeLabel) return;
gradeSelect.innerHTML = '<option value="">Select Grade</option>';
gradeSelect.value = '';
gradeSelect.disabled = true; // keep disabled until a radio is chosen
gradeLabel.innerHTML = 'Last Year Grade <span class="text-danger">*</span>';
}
function populateSelect(gradeSelect, options) {
gradeSelect.innerHTML = '<option value="">Select Grade</option>';
options.forEach(o => {
const opt = document.createElement('option');
opt.value = o.value;
opt.textContent = o.text;
gradeSelect.appendChild(opt);
});
}
function updateGradeOptions(studentForm, type) {
const gradeSelect = studentForm.querySelector('.grade-select');
const gradeLabel = studentForm.querySelector('.grade-label');
if (!gradeSelect || !gradeLabel) return;
gradeSelect.disabled = false; // enable now that a choice was made
gradeSelect.value = ''; // clear any stale selection
if (type === 'yes') {
gradeLabel.innerHTML = 'Al Rahma School Last Year Grade <span class="text-danger">*</span>';
populateSelect(gradeSelect, gradeOptions.alrahma);
} else if (type === 'no') {
gradeLabel.innerHTML = 'Public School Last Year Grade <span class="text-danger">*</span>';
populateSelect(gradeSelect, gradeOptions.public);
} else {
resetGradeSelect(gradeSelect, gradeLabel);
}
}
// Event: when a radio is chosen, update this form's select
document.addEventListener('change', function(e) {
if (e.target.matches('input[type="radio"][data-base-name="last_year"]')) {
const form = e.target.closest('.student-form');
if (form && e.target.checked) {
updateGradeOptions(form, e.target.value);
}
}
});
// On load: enforce disabled unless a radio is already checked (server repopulation)
(function initStudentForms() {
const forms = document.querySelectorAll('.student-form');
forms.forEach(form => {
const gradeSelect = form.querySelector('.grade-select');
const gradeLabel = form.querySelector('.grade-label');
// Start disabled (HTML already has disabled, but enforce from JS too)
resetGradeSelect(gradeSelect, gradeLabel);
// If a radio is already checked (e.g., after validation error), enable/populate accordingly
const checked = form.querySelector('input[type="radio"][data-base-name="last_year"]:checked');
if (checked) {
updateGradeOptions(form, checked.value);
}
});
})();
</script>