update policy
Deploy to Shared Hosting / Shared hosting deploy (push) Failing after 2m2s
Tests / PHPUnit (push) Failing after 1m19s

This commit is contained in:
root
2026-08-24 22:06:13 -04:00
parent 608aca79b8
commit 9036fcb1f5
7 changed files with 86 additions and 15 deletions
@@ -19,6 +19,17 @@
</div>
</a>
</div>
<!-- School Policies -->
<div class="col-auto">
<a href="<?= base_url('policy/school_policy') ?>"
target="_blank"
rel="noopener noreferrer"
class="d-inline-block text-decoration-none">
<div class="circle-box bg-success position-relative" role="button" aria-label="Open School Policies">
<h4 class="fw-bold mb-0">School Policies</h4>
</div>
</a>
</div>
<!-- Notifications -->
<div class="col-auto">
<div class="circle-box bg-primary position-relative">
+8 -2
View File
@@ -70,11 +70,17 @@
.enrollment-policy-frame {
border: 1px solid #dee2e6;
border-radius: 8px;
height: min(54vh, 520px);
min-height: 320px;
height: clamp(520px, 72vh, 900px);
width: 100%;
}
@media (max-width: 767.98px) {
.enrollment-policy-frame {
height: 72vh;
min-height: 480px;
}
}
.enrollment-withdraw-control {
align-items: center;
display: inline-flex;
+14
View File
@@ -331,6 +331,13 @@ switch ($role) {
'label' => 'Financial Aid',
'title' => 'Request a tuition reduction for review by school administration.',
],
[
'href' => base_url('policy/school_policy'),
'icon' => 'bi-journal-text',
'label' => 'Policies',
'title' => 'Review current school policies and procedures.',
'attrs' => 'target="_blank" rel="noopener noreferrer"',
],
[
'href' => base_url('/parent/attendance'),
'icon' => 'bi-calendar-check',
@@ -468,6 +475,13 @@ switch ($role) {
'label' => 'Exam Drafts',
'title' => 'Submit or review draft exams that need administrator approval.',
],
[
'href' => base_url('policy/school_policy'),
'icon' => 'bi-journal-text',
'label' => 'Policies',
'title' => 'Review current school policies and procedures.',
'attrs' => 'target="_blank" rel="noopener noreferrer"',
],
[
'href' => base_url('inventory/books/distribute'),
'icon' => 'bi-book',
+2 -2
View File
@@ -26,7 +26,7 @@ $title = $content['title'] ?? 'School Policies';
<div class="school-name">Al Rahma Sunday School</div>
</div>
<div class="header-info">
<i class="fas fa-calendar-alt"></i> Last updated: 08-01-2026
<i class="fas fa-calendar-alt"></i> Last updated: 08-24-2026
</div>
</div>
</header>
@@ -83,7 +83,7 @@ $title = $content['title'] ?? 'School Policies';
<div class="policy-header">
<h1><?= esc($title) ?></h1>
<p class="last-updated">Effective from: 08-01-2026</p>
<p class="last-updated">Effective from: 08-24-2026</p>
</div>
<?php
+8 -7
View File
@@ -34,7 +34,7 @@ return [
'title' => 'Registration',
'body' => $p(
'The school offers a solid curriculum of Islamic Studies and Quran/Arabic through 10 progressive grades, after which the students will join a 2-year rotation youth program <u>with a minimum age rule of at least 16</u>. <strong><u>Starting this year, to be eligible to get into 1st grade, your child needs to be at least 6 years old by September 1st, 2026. Younger students will have the possibility to be enrolled in Kindergarten class if they are at least 5 years old by December 31st, 2026.</u></strong>',
'Registration this year will open <strong><u>from 08/01/2026 to 10/05/2026</u></strong>. We highly encourage parents to enroll their children early so they will not miss out on early classes during the year. <strong><u>By 10/05/2026 at midnight</u></strong>, registration will have closed and parents will not be allowed to register their kids except if the said parents just recently moved to the area from a faraway town/city/state.',
'Registration this year will open <strong><u>from 08/25/2026 to 10/05/2026</u></strong>. We highly encourage parents to enroll their children early so they will not miss out on early classes during the year. <strong><u>By 10/05/2026 at midnight</u></strong>, registration will have closed and parents will not be allowed to register their kids except if the said parents just recently moved to the area from a faraway town/city/state.',
'The school will make every effort to broadcast the opening of the registration campaign through all means available at the time (school email list, ISGL WhatsApp group, website, social media, ...). <strong><u>All new parents have to create accounts in the official school website <a href="https://alrahmaisgl.org" target="_blank" rel="noopener noreferrer" style="color: #007BFF; text-decoration: underline;">alrahmaisgl.org</a> to be able to register their kids and enroll them in classes.</u></strong> Returning parents will also have to re-enroll their kids in classes through their parent portal. In case the system blocks online re-enrollment for any reason, please feel free to contact the school administration. During the first 2-3 weeks of school, there will be dedicated school staff at the front desk who will help with in-person payments, just walk in and ask for an admin to help you.',
'For new online registrations, please make sure your contact information is correct and up to date especially the phone numbers and emails section because that would be our only way to get in contact with you regarding school matters. Also, please make sure to fill out the known allergies section accurately so that we ensure your kids are never presented with food they could be allergic to. For returning parents, you will be prompted to update your phone number and physical address if that information ever changed.',
'<strong><u>We only accept students with ages between 5 and 18.</u></strong> For younger students, they must be <strong><u>at least 6 years old by September 1st, 2026</u></strong> to be admitted, there will be no exceptions. <strong><u>Students that are 5 years old by December 31st, 2026 can enroll in our Kindergarten class.</u></strong> Students outside of the range described above are considered too young or too old for the activities offered by the school and will not be eligible to enroll with us. Please do not register your kids if they do not meet the criteria described above.',
@@ -47,7 +47,8 @@ return [
'All parents will be asked to <u>pay tuition for the year on first day of school</u> or come to an agreement with the administration about an interest-free installment plan where <u>payments are made at the beginning of each month starting October 1st</u>. All installment payments must be completed before March 1st with a maximum number of 5 payments or less. Accepted methods of payments are cash and checks. Debit/credit card is an option for those paying tuition in full on day one. Installment plans are ineligible for debit/credit card payments and will only be granted for those parents who did not have a carry-over balance from previous years. Tuition covers school expenses related to operations, purchase of books/supplies/materials, organizing events for students, etc... The school is committed to offer high quality services while maintaining low cost of operations so that tuition is affordable by majority of parents. Annual tuition for this school year is as follows:',
'<u>Kindergarten & Grades 1-10 & Youth</u>: <strong>$380</strong> per child + <strong>$280</strong> per additional child',
'Examples:'
) . '<table border="1" cellspacing="0" cellpadding="8" style="border-collapse: collapse; text-align: center; width: 100%;"><thead><tr><th></th><th>Example 1</th><th>Example 2</th><th>Example 3</th></tr></thead><tbody><tr><td>Number of kids enrolled</td><td>1</td><td>2</td><td>3</td></tr><tr><td>Total Tuition</td><td><strong>$380</strong></td><td><strong>$380 + $280 = $660</strong></td><td><strong>$380 + 2x$280 = $940</strong></td></tr></tbody></table>',
) . '<table border="1" cellspacing="0" cellpadding="8" style="border-collapse: collapse; text-align: center; width: 100%;"><thead><tr><th></th><th>Example 1</th><th>Example 2</th><th>Example 3</th></tr></thead><tbody><tr><td>Number of kids enrolled</td><td>1</td><td>2</td><td>3</td></tr><tr><td>Total Tuition</td><td><strong>$380</strong></td><td><strong>$380 + $280 = $660</strong></td><td><strong>$380 + 2x$280 = $940</strong></td></tr></tbody></table>'
. $p('Parents who need financial aid for the current year can submit a formal request through their parent portal under “Financial Aid” tab.'),
],
],
],
@@ -66,7 +67,7 @@ return [
'title' => 'Withdrawals/Refunds',
'body' => $p(
'Parents can formally initiate a withdrawal request from school through their parent portal. Withdrawal requests are only available after enrollment is complete and must be completed online. The administration reviews the withdrawal request soon after and the affected students are removed from their assigned classes after the withdrawal is approved. The students get to keep all books they received previously from the school, and a new online invoice is generated.',
'Refunds are pro-rated. All weeks preceding the formal withdrawal request count as attended by the student. The refund covers all school weeks after the request but subtracts any book costs incurred. Any balance left off will be settled promptly; the parent will be asked to pay the remaining balance if they end up owing money, or the school will issue a check with the final refund amount if the school ends up owing money.',
'Refunds are pro-rated. All weeks preceding the formal withdrawal request count as attended by the student. The refund covers all school weeks after the request but subtracts any book costs incurred. Any balance left off will be settled promptly; the parent will be asked to pay the remaining balance if they end up owing money, or the school will issue a check with the final refund amount if the school ends up owing money. No refund will be issued to parents whose kids(s) has/have been expelled from the school, refunds are for voluntary withdrawals only.',
'Note that initiating a withdrawal is a serious decision and non-reversible. Once the withdrawal is complete, re-enrollment for the current year will not be possible. Future enrollments in subsequent years might be denied as well depending on the case.'
),
],
@@ -74,8 +75,8 @@ return [
'title' => 'Attendance',
'body' => $p('Students are expected to attend all classes each Sunday. Each absence interferes with your childs ability to benefit from his/her class. In case of absence, parents are asked to inform the school administration <strong><u>ahead of Sunday session</u></strong> through the parent portal, call, text (regular & WhatsApp) or email to explain the reason for the absence. Failure to comply has the following progressive consequences:')
. '<ol type="a"><li>If unnotified, teachers will ask students for the reason for their absence when they meet up the following Sunday. Any assignments missed should be made up by students within the time frame given by the teacher.</li><li><strong>Two consecutive absences</strong> or <strong>two absences in any three-week streak</strong> <u>without prior notice</u> will trigger a phone call and email from the administration to follow up with parents.</li><li><strong>Three consecutive absences</strong> or <strong>three absences in any four-week streak</strong> <u>without prior notice</u> will trigger a final warning call, text and email.</li><li><strong>Four consecutive absences</strong> or <strong>four absences in any five-week streak</strong> <u>without prior notice</u> will result in student permanent removal from the school.</li></ol>'
. $p('<strong>This is how you justify an absence/late arrival:</strong>', '<u>When?</u> Contact us before classes start on Sunday, preferably at least 24 hours before', '<u>How?</u> Notify us by one of these 5 methods:')
. $ul(['Report the absence/late in your parent portal at <a href="https://alrahmaisgl.org" target="_blank" rel="noopener noreferrer" style="color: #007BFF; text-decoration: underline;">alrahmaisgl.org</a> <strong>[RECOMMENDED]</strong>', 'Send an email to <a href="mailto:alrahma.isgl@gmail.com" style="color: #007BFF; text-decoration: underline;">alrahma.isgl@gmail.com</a>', 'Call 978-364-0219. Leave a voicemail if no one picks up.', 'Text 978-364-0219', 'Leave a WhatsApp message in your student grade group'])
. $p('<strong>This is how you report an absence/late arrival:</strong>', '<u>When?</u> Contact us before classes start on Sunday, preferably at least 24 hours before', '<u>How?</u> Notify us by one of these 3 methods:')
. $ul(['Report the absence/late in your parent portal at <a href="https://alrahmaisgl.org" target="_blank" rel="noopener noreferrer" style="color: #007BFF; text-decoration: underline;">alrahmaisgl.org</a> <strong>[RECOMMENDED]</strong>', 'Send an email to <a href="mailto:alrahma.isgl@gmail.com" style="color: #007BFF; text-decoration: underline;">alrahma.isgl@gmail.com</a>', 'Call 978-364-0219. Leave a voicemail if no one picks up.', 'Text 978-364-0219 <strong>[DEPRECATED]</strong>', 'Leave a WhatsApp message in your student grade group <strong>[DEPRECATED]</strong>'])
. $p('<u>What?</u> We need to know:')
. $ul(['Student full name (first name + last name)', 'Student grade', 'Date and duration of absence/late', 'Reason for absence/late'])
. $p(
@@ -172,8 +173,8 @@ return [
'heading' => 'PROGRESSIVE DISCIPLINARY ACTIONS',
'subsections' => [
['title' => '1. Minor Infractions', 'body' => $p('Examples: Tardiness, incomplete homework, minor disruptions in class.', 'Actions:') . $ul(['Verbal Warning: Teacher addresses the issue directly with the student.', 'Written Warning: A note is sent home, and parents are informed.', 'Loss of Privileges: Temporary loss of privileges, such as recess or extracurricular activities.'])],
['title' => '2. Moderate Infractions', 'body' => $p('Examples: Repeated minor infractions, disrespectful behavior, dress code violations, unauthorized use of telephones or other electronic devices during class.', 'Actions:') . $ul(['Confiscation: The teacher may confiscate the phone or device for the remainder of the day.', 'Parent-Teacher Conference: A meeting is arranged to discuss the students behavior and possible solutions.', 'Behavioral Contract: The student may be placed on a behavioral contract outlining expected behavior and consequences for further infractions.', 'Detention: The student may be required to stay after school or during recess to complete missed work or reflect on their behavior.'])],
['title' => '3. Serious Infractions', 'body' => $p('Examples: Bullying, cheating, theft, physical aggression or any behavior that compromises the safety of others.', 'Actions:') . $ul(['In-School Suspension: The student is removed from regular classes but remains in school.', 'Out-of-School Suspension: Temporary suspension from school, requiring a meeting with parents before the student is allowed to return.', 'Counseling: Mandatory counseling sessions to address underlying issues.'])],
['title' => '2. Moderate Infractions', 'body' => $p('Examples: Repeated minor infractions, disrespectful behavior, dress code violations, use of telephones or other electronic devices during class.', 'Actions:') . $ul(['Confiscation: The teacher may confiscate the phone or device for the remainder of the day.', 'Parent-Teacher Conference: A meeting is arranged to discuss the students behavior and possible solutions.', 'Behavioral Contract: The student may be placed on a behavioral contract outlining expected behavior and consequences for further infractions.', 'Detention: The student may be required to stay after school or during recess to complete missed work or reflect on their behavior.'])],
['title' => '3. Serious Infractions', 'body' => $p('Examples: Bullying, cheating, physical aggression, theft, vandalism of school property, or any behavior that compromises the safety of others.', 'Actions:') . $ul(['In-School Suspension: The student is removed from regular classes but remains in school.', 'Out-of-School Suspension: Temporary suspension from school, requiring a meeting with parents before the student is allowed to return.', 'Counseling: Mandatory counseling sessions to address underlying issues.', 'Financial Restitution: Payment required for theft, destruction or vandalism of school property to cover repair or replacement costs.'])],
['title' => '4. Extreme Infractions', 'body' => $p('Examples: Possession of weapons, illegal substances, severe physical violence.', 'Actions:') . $ul(['Long-Term Suspension: Extended suspension, possibly leading to expulsion depending on the severity of the infraction.', 'Expulsion: Permanent removal from the school. This is considered a last resort and is only implemented after a thorough review by the school administration.'])],
],
],
+7
View File
@@ -52,6 +52,13 @@
</a>
</li>
<li class="nav-item mx-lg-2 my-1">
<a class="nav-link text-white" href="<?= base_url('policy/school_policy'); ?>" target="_blank" rel="noopener noreferrer"
data-bs-toggle="tooltip" data-bs-placement="bottom" title="Open school policies">
<i class="bi bi-journal-text"></i> Policies
</a>
</li>
<li class="nav-item mx-lg-2 my-1">
<a class="nav-link text-white" href="<?= base_url('teacher/progress/submit'); ?>" data-bs-toggle="tooltip"
data-bs-placement="bottom" title="Submit weekly progress">
+36 -4
View File
@@ -1,5 +1,37 @@
<?= $this->extend('layout/register_layout') ?>
<?= $this->section('content') ?>
<style>
.policy-modal-dialog {
max-width: min(96vw, 1400px);
}
.policy-modal-content {
height: min(90vh, 980px);
}
.policy-modal-body {
min-height: 0;
padding: 0;
}
.policy-modal-frame {
border: 0;
display: block;
height: 100%;
width: 100%;
}
@media (max-width: 767.98px) {
.policy-modal-dialog {
margin: .5rem;
max-width: calc(100vw - 1rem);
}
.policy-modal-content {
height: calc(100vh - 1rem);
}
}
</style>
<div class="registration-form container mt-5 mb-5">
<?php $errors = session()->getFlashdata('errors') ?? []; ?>
<?php $captcha_error = session()->getFlashdata('captcha_error') ?? ''; ?>
@@ -297,14 +329,14 @@
<!-- Policy Modal -->
<div class="modal fade" id="policyModal" tabindex="-1" aria-labelledby="policyModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-dialog modal-dialog-scrollable policy-modal-dialog">
<div class="modal-content policy-modal-content">
<div class="modal-header">
<h5 class="modal-title text-success" id="policyModalLabel">School Policies</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<iframe src="<?= base_url('policy/school_policy') ?>" width="100%" height="400" frameborder="0"></iframe>
<div class="modal-body policy-modal-body">
<iframe src="<?= base_url('policy/school_policy') ?>" class="policy-modal-frame" title="School Policies"></iframe>
</div>
</div>
</div>