fix missing school year pages
Tests / PHPUnit (push) Failing after 42s

This commit is contained in:
root
2026-07-12 19:09:38 -04:00
parent e06ccc9cc0
commit 55f8027550
14 changed files with 471 additions and 113 deletions
+56 -22
View File
@@ -153,6 +153,13 @@
/* Prevent horizontal scrollbars from stray overflows */
html, body { overflow-x: hidden; }
#familyCardModal .family-card-modal-dialog {
margin-top: 1rem;
}
#familyCardModal .modal-content {
max-height: calc(100vh - 2rem);
}
</style>
</head>
@@ -237,7 +244,7 @@ html, body { overflow-x: hidden; }
<!-- Family Card Modal -->
<div class="modal fade" id="familyCardModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-xl modal-dialog-scrollable">
<div class="modal-dialog modal-xl modal-dialog-scrollable family-card-modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Family</h5>
@@ -312,33 +319,60 @@ html, body { overflow-x: hidden; }
}
window.openFamilyCard = loadFamilyCard;
document.addEventListener('click', function(e){
const link = e.target.closest('[data-family-student-id], [data-family-guardian-id], [data-family-id]');
if (!link) return;
e.preventDefault();
const sid = link.getAttribute('data-family-student-id');
const gid = link.getAttribute('data-family-guardian-id');
const fid = link.getAttribute('data-family-id');
function familyParamsFromTarget(target) {
const link = target.closest('[data-family-student-id], [data-family-guardian-id], [data-family-id], a[href]');
if (!link) return null;
let sid = link.getAttribute('data-family-student-id');
let gid = link.getAttribute('data-family-guardian-id');
let fid = link.getAttribute('data-family-id');
if (!sid && !gid && !fid && link.matches('a[href]')) {
try {
const url = new URL(link.getAttribute('href'), window.location.origin);
const familyPath = new URL('<?= site_url('family') ?>', window.location.origin).pathname.replace(/\/+$/, '');
const linkPath = url.pathname.replace(/\/+$/, '');
if (url.origin !== window.location.origin || linkPath !== familyPath) return null;
sid = url.searchParams.get('student_id');
gid = url.searchParams.get('guardian_id');
fid = url.searchParams.get('family_id');
} catch (_) {
return null;
}
}
const params = {};
if (fid) params.family_id = fid;
else if (sid) params.student_id = sid;
else if (gid) params.guardian_id = gid;
if (Object.keys(params).length) loadFamilyCard(params);
});
return Object.keys(params).length ? params : null;
}
document.addEventListener('click', function(e){
const link = e.target.closest('[data-family-student-id], [data-family-guardian-id], [data-family-id]');
if (!link) return;
function handleFamilyCardClick(e) {
const params = familyParamsFromTarget(e.target);
if (!params) return;
if (e.familyCardHandled) return;
e.familyCardHandled = true;
e.preventDefault();
const sid = link.getAttribute('data-family-student-id');
const gid = link.getAttribute('data-family-guardian-id');
const fid = link.getAttribute('data-family-id');
const params = {};
if (fid) params.family_id = fid;
else if (sid) params.student_id = sid;
else if (gid) params.guardian_id = gid;
if (Object.keys(params).length) loadFamilyCard(params);
}, true);
loadFamilyCard(params);
}
document.addEventListener('click', handleFamilyCardClick);
document.addEventListener('click', handleFamilyCardClick, true);
document.addEventListener('DOMContentLoaded', function(){
try {
const current = new URL(window.location.href);
const familyPath = new URL('<?= site_url('family') ?>', window.location.origin).pathname.replace(/\/+$/, '');
const currentPath = current.pathname.replace(/\/+$/, '');
if (currentPath !== familyPath) return;
const sid = current.searchParams.get('student_id');
const gid = current.searchParams.get('guardian_id');
const fid = current.searchParams.get('family_id');
const params = {};
if (fid) params.family_id = fid;
else if (sid) params.student_id = sid;
else if (gid) params.guardian_id = gid;
if (Object.keys(params).length) loadFamilyCard(params);
} catch (_) {}
});
})();
</script>