X7ROOT File Manager
Current Path:
/home/u126090504/domains/svmbaripada.org.in/public_html
home
/
u126090504
/
domains
/
svmbaripada.org.in
/
public_html
/
π
+2-science-&-+2arts.php
(8.87 KB)
π
..
π
.htaccess
(1.12 KB)
π
Antiraging-Cell.php
(2.73 KB)
π
about-us.php
(8.85 KB)
π
academic-calendar.php
(2.73 KB)
π
achievements.php
(9.56 KB)
π
achievers.php
(15.19 KB)
π
admin
π
admission-process.php
(9.23 KB)
π
admission.php
(13.96 KB)
π
admission_submit.php
(3.38 KB)
π
album.php
(890 B)
π
assessment-policy.php
(7.08 KB)
π
class-1-to-5th.php
(7.78 KB)
π
class6th-to-10th.php
(7.96 KB)
π
computer-courses.php
(22.83 KB)
π
config.php
(1.21 KB)
π
contact-us.php
(14.63 KB)
π
contactdb.php
(796 B)
π
courses.php
(10.44 KB)
π
css
π
director's-message.php
(6.49 KB)
π
downloads.php
(2.9 KB)
π
error.log
(14.6 KB)
π
facilities.php
(6.57 KB)
π
faculty.php
(10.27 KB)
π
fee-structure.php
(7.97 KB)
π
fonts
π
footer.php
(17.95 KB)
π
franchise.php
(2.09 KB)
π
gallery.php
(3.05 KB)
π
grievance-form.php
(16.84 KB)
π
header.php
(20.08 KB)
π
homework.php
(9.64 KB)
π
images
π
index.php
(46.64 KB)
π
infrastructure-details.php
(5.48 KB)
π
js
π
lib
π
managing-committee.php
(3.34 KB)
π
media-corner.php
(2.48 KB)
π
non-academic-achievers.php
(14.65 KB)
π
payment.php
(23.12 KB)
π
payment_submit.php
(15.1 KB)
π
payment_verify.php
(2.31 KB)
π
peret.php
(266.87 KB)
π
placement.php
(8.33 KB)
π
principal's-message.php
(6.33 KB)
π
public-disclosure.php
(3.38 KB)
π
qrcodes
π
revolution
π
scope.php
(14.14 KB)
π
search_videos.php
(1.76 KB)
π
shyam-classes.php
(6.91 KB)
π
submit-grievance.php
(3.88 KB)
π
thank-you.php
(1.28 KB)
π
uploads
π
videos.php
(6.87 KB)
Editing: grievance-form.php
<?php require_once __DIR__ . '/config.php'; include 'header.php'; /* CSRF for public form */ if (empty($_SESSION['csrf_public'])) { $_SESSION['csrf_public'] = bin2hex(random_bytes(32)); } ?> <!-- Page Title --> <div class="ttm-page-title-row"> <div class="ttm-page-title-row-inner ttm-textcolor-white"> <div class="container"> <div class="row align-items-center"> <div class="col-lg-12"> <div class="page-title-heading"> <h2 class="title" style="font-size:30px;">Parents Grievance Form</h2> </div> </div> </div> </div> </div> </div> <!-- /Page Title --> <!-- ====== SCHOOL GRIEVANCE FORM (SCOPED) ====== --> <div id="grievanceApp"> <style> /* ========= Scoped styles to avoid theme/Bootstrap conflicts ========= */ #grievanceApp{ --card:#ffffff; --border:#e5e7eb; --text:#111827; --muted:#6b7280; --ink:#0f172a; font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif } #grievanceApp *{ box-sizing:border-box } #grievanceApp .wrap{ max-width:980px; margin:32px auto; padding:16px } #grievanceApp .card{ background:linear-gradient(135deg,#ffffff,#f7faff 20%,#f0f9ff 60%,#fff8fb 100%); border:1px solid var(--border); border-radius:14px; box-shadow:0 8px 30px rgba(0,0,0,.06); padding:22px } #grievanceApp h1{ font-size:22px; margin:0 0 8px; color:var(--ink) } #grievanceApp .subtitle{ color:var(--muted); margin-bottom:18px } #grievanceApp .section{ margin-top:18px; padding-top:14px; border-top:1px dashed #e9e9ef } /* grid */ #grievanceApp .grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:16px } #grievanceApp .grid-3{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:16px } #grievanceApp .full{ grid-column:1 / -1 } #grievanceApp .grid > *{ min-width:0 } /* rows/inputs */ #grievanceApp .frow{ display:block; margin:0 0 12px 0 } #grievanceApp label{ font-weight:600; font-size:14px; color:var(--text); display:block; margin-bottom:6px } #grievanceApp input, #grievanceApp select, #grievanceApp textarea{ width:100%; border:1px solid var(--border); border-radius:10px; padding:10px 12px; font-size:14px; outline:none; background:#fff; color:var(--text) } #grievanceApp textarea{ min-height:110px; resize:vertical } #grievanceApp .hint{ font-size:12px; color:var(--muted); margin-top:4px } #grievanceApp .radio-row, #grievanceApp .check-row{ display:flex; flex-wrap:wrap; gap:14px; margin-top:8px } #grievanceApp .radio-row label, #grievanceApp .check-row label{ font-weight:500; margin:0 } #grievanceApp .btn{ display:inline-flex; align-items:center; gap:8px; background:#2563eb; color:#fff; border:0; border-radius:999px; padding:11px 16px; font-weight:700; cursor:pointer } #grievanceApp .btn:disabled{ opacity:.6; cursor:not-allowed } #grievanceApp .badge{ display:inline-block; background:#eef2ff; color:#3730a3; border:1px solid #c7d2fe; border-radius:999px; padding:4px 10px; font-size:12px; margin-left:8px } #grievanceApp .req:after{ content:" *"; color:#ef4444 } #grievanceApp .files{ display:flex; flex-direction:column; gap:8px } #grievanceApp .pill{ display:inline-block; border:1px dashed #d1d5db; padding:6px 10px; border-radius:999px; font-size:12px } #grievanceApp .footer-note{ font-size:12px; color:var(--muted); margin-top:10px } @media (max-width:800px){ #grievanceApp .grid, #grievanceApp .grid-3{ grid-template-columns:1fr } } </style> <div class="wrap"> <div class="card"> <h1>Grievance / Complaint Form <span class="badge">SVM Group of Institutions</span></h1> <div class="subtitle">Please fill accurate details. Fields marked * are required.</div> <form id="gForm" action="submit-grievance.php" method="post" enctype="multipart/form-data" novalidate> <input type="hidden" name="csrf_public" value="<?php echo $_SESSION['csrf_public']; ?>"> <!-- honeypot (spam bots) --> <input type="text" name="website" style="position:absolute;left:-9999px;top:-9999px" tabindex="-1" autocomplete="off"> <!-- Student & Parent Details --> <div class="section"> <h3>Student & Parent Details</h3> <div class="grid"> <div class="frow"> <label class="req">Student Full Name</label> <input type="text" name="student_name" required placeholder="Student Name" /> </div> <div class="frow"> <label>Admission / Roll No.</label> <input type="text" name="student_id" placeholder="e.g., SXIS/24/045" /> </div> <div class="frow"> <label class="req">Class</label> <select name="course" required> <option value="">Select Class</option> <option>+2 Science</option> <option>+2 Arts</option> <option>Class-VI (Odia Medium)</option> <option>Class-VII(Odia Medium)</option> <option>Class-VIII(Odia Medium)</option> <option>Class-IX(Odia Medium)</option> <option>Class-X(Odia Medium)</option> <option>Integrated +2 Science Coaching (SVM Shyam)</option> <option>NEET Preparation (SVM Shyam)</option> <option>JEE (Main & Advanced) Preparation (SVM Shyam)</option> <option>OUAT Entrance Coaching (SVM Shyam)</option> <option>IISER Entrance Coaching (SVM Shyam)</option> <option>NISER Entrance Coaching (SVM Shyam)</option> </select> </div> <div class="frow"> <label class="req">Section</label> <select name="year_of_study" required> <option value="">Select Section</option> <option>A</option><option>B</option><option>C</option> </select> </div> <div class="frow"> <label>Academic Session</label> <select name="academic_session"> <option selected>2026β27</option> <option>2027β28</option> <option>2028β29</option> <option>2029β30</option> </select> </div> <div class="frow"> <label>Transport (School Bus)</label> <select name="transport_user"> <option>No</option><option>Yes</option> </select> </div> <div class="frow"> <label class="req">Parent/Guardian Name</label> <input type="text" name="parent_name" required placeholder="Parent or Guardian Name" /> </div> <div class="frow"> <label>Relationship</label> <select name="parent_relation"> <option>Father</option><option>Mother</option><option>Guardian</option> </select> </div> <div class="frow"> <label class="req">Contact Number</label> <input type="tel" name="contact" required placeholder="10-digit mobile" /> <div class="hint">We may contact you for clarification.</div> </div> <div class="frow"> <label>Alternate Contact</label> <input type="tel" name="alt_contact" placeholder="Optional" /> </div> <div class="frow"> <label class="req">Email Address</label> <input type="email" name="email" required placeholder="email@example.com" /> </div> <div class="frow"> <label>Address</label> <input type="text" name="address" placeholder="House/Street" /> </div> <div class="frow"> <label>City</label> <input type="text" name="city" placeholder="City" /> </div> <div class="frow"> <label>State</label> <input type="text" name="state" placeholder="State" /> </div> <div class="frow"> <label>PIN Code</label> <input type="text" name="pin" placeholder="6-digit PIN" /> </div> <div class="frow full"> <label>Confidential?</label> <div class="radio-row"> <label><input type="radio" name="confidential" value="1" /> Yes</label> <label><input type="radio" name="confidential" value="0" checked /> No</label> </div> </div> </div> </div> <!-- Grievance Details --> <div class="section"> <h3>Grievance Details</h3> <div class="grid"> <div class="frow full"> <label class="req">Nature of Grievance</label> <div class="radio-row"> <?php // School-specific categories $types = [ 'Academic', 'Homework/Exams', 'Teacher Behaviour', 'Bullying/Ragging', 'Transport/Bus', 'Fees/Accounts', 'Infrastructure/Facilities', 'Administrative', 'Other' ]; foreach ($types as $i => $t) { echo '<label><input type="radio" name="grievance_type" '.($i===0?'checked':'').' value="'.htmlspecialchars($t).'"> '.$t.'</label>'; } ?> </div> <div class="hint">Choose the most relevant category.</div> </div> <div class="frow"> <label>Sub-Category</label> <select name="grievance_subtype" id="subtype"> <option value="">Select based on category</option> </select> <div class="hint">Auto-updates when you change βNature of Grievanceβ.</div> </div> <div class="frow"> <label>Date of Incident</label> <input type="date" name="date_of_incident" /> </div> <div class="frow"> <label>Time of Incident</label> <input type="time" name="time_of_incident" /> </div> <div class="frow"> <label>Location</label> <select name="location"> <option value="">Select</option> <option>Classroom</option> <option>Playground</option> <option>Library</option> <option>Laboratory</option> <option>Office</option> <option>Canteen</option> <option>School Bus</option> <option>Other</option> </select> </div> <div class="frow"> <label>Persons Involved (if any)</label> <input type="text" name="persons_involved" placeholder="Teacher/Staff/Students involved" /> </div> <div class="frow"> <label>Impact Level</label> <select name="impact_level"> <option>Low</option> <option>Medium</option> <option>High</option> </select> </div> <div class="frow"> <label>Expected Resolution Time</label> <select name="expected_resolution_time"> <option>1 week</option> <option selected>2 weeks</option> <option>1 month</option> </select> </div> <div class="frow full"> <label class="req">Description of Grievance</label> <textarea name="description" required placeholder="Give a clear, factual description. Include dates, people, and what happened."></textarea> </div> <div class="frow full"> <label>Previous Attempts to Resolve</label> <textarea name="previous_attempts" placeholder="Whom did you contact earlier? What response did you receive?"></textarea> </div> <div class="frow full"> <label>Desired Outcome</label> <textarea name="desired_outcome" placeholder="What should be done to address the grievance?"></textarea> </div> </div> </div> <!-- Files --> <div class="section"> <h3>Supporting Documents (optional)</h3> <div class="files"> <input type="file" name="files[]" accept=".jpg,.jpeg,.png,.pdf,.doc,.docx" multiple /> <div class="hint">You can attach up to 3 files. Allowed: JPG, PNG, PDF, DOC, DOCX. Max 5MB each.</div> <div id="fileList" class="hint"></div> </div> </div> <!-- Declaration --> <div class="section"> <label><input type="checkbox" id="agree" required /> I declare the information is true and correct. I understand that false information may lead to dismissal of the grievance.</label> <div class="footer-note">The school maintains an anti-bullying and anti-ragging policy. Urgent safety issues are escalated immediately.</div> </div> <div class="section"> <button class="btn" id="submitBtn" type="submit">π Submit Grievance</button> </div> </form> </div> </div> <!-- Scoped JS --> <script> (function(){ const map = { "Academic": ["Syllabus","Teaching Pace","Extra Classes","Doubt Clearing","Result/Report Card"], "Homework/Exams": ["Homework Load","Late Submission","Exam Schedule","Exam Evaluation"], "Teacher Behaviour": ["Rude Behaviour","Partiality","Unfair Marks","Communication"], "Bullying/Ragging": ["Verbal","Physical","Cyber","Other"], "Transport/Bus": ["Driver Behaviour","Delay/Timing","Bus Route","Safety/Seat Belt"], "Fees/Accounts": ["Tuition Fee","Late Fee","Refund","Scholarship"], "Infrastructure/Facilities": ["Classroom","Playground","Library","Laboratory","Toilet/Cleanliness","Drinking Water","Canteen"], "Administrative": ["Admission","Certificates","ID Card","Bonafide","Transfer Certificate"], "Other": ["General"] }; const root = document.getElementById('grievanceApp'); const subtype = root.querySelector('#subtype'); // set sub-category options dynamically root.querySelectorAll('input[name="grievance_type"]').forEach(r => { r.addEventListener('change', e => { const list = map[e.target.value] || []; subtype.innerHTML = '<option value="">Select Sub-Category</option>' + list.map(v => `<option>${v}</option>`).join(''); }); }); const def = root.querySelector('input[name="grievance_type"]:checked'); if (def) def.dispatchEvent(new Event('change')); // File pills + limit const fileInput = root.querySelector('input[type="file"][name="files[]"]'); const fileListEl = root.querySelector('#fileList'); fileInput.addEventListener('change', () => { fileListEl.innerHTML = ''; const files = Array.from(fileInput.files); if (files.length > 3) { alert('You can upload maximum 3 files.'); fileInput.value=''; return; } for (const f of files) { if (f.size > 5*1024*1024) { alert('Each file must be <= 5MB.'); fileInput.value=''; return; } } files.forEach(f => { const pill = document.createElement('span'); pill.className = 'pill'; pill.textContent = `${f.name} (${Math.round(f.size/1024)} KB)`; fileListEl.appendChild(pill); }); }); // Client validations const form = root.querySelector('#gForm'); form.addEventListener('submit', (e) => { // Honeypot check if (form.website.value) { e.preventDefault(); return; } const name = form.student_name.value.trim(); const contact = form.contact.value.trim(); const email = form.email.value.trim(); const desc = form.description.value.trim(); const course = form.course.value; const section = form.year_of_study.value; if (!name || !contact || !email || !desc || !course || !section) { e.preventDefault(); alert('Please fill all required fields (Name, Class, Section, Contact, Email, Description).'); return; } if (!/^\d{10}$/.test(contact)) { e.preventDefault(); alert('Please enter a valid 10-digit contact number.'); return; } if (form.pin.value && !/^\d{6}$/.test(form.pin.value)) { e.preventDefault(); alert('Please enter a valid 6-digit PIN.'); return; } }); })(); </script> </div> <?php include 'footer.php'; ?>
Upload File
Create Folder