Files
2026-05-16 13:44:12 -04:00

74 lines
3.2 KiB
PHP
Executable File

<?= $this->extend('layout/main_layout') ?>
<?= $this->section('content') ?>
<div class="container-xxl py-5">
<div class="container">
<div class="d-flex align-items-center gap-3 mb-3">
<strong>Legend:</strong>
<span class="d-inline-flex align-items-center"><span style="display:inline-block;width:12px;height:12px;border-radius:3px;background:#3788d8;border:1px solid rgba(0,0,0,.2);margin-right:6px"></span>General Event</span>
<span class="d-inline-flex align-items-center"><span style="display:inline-block;width:12px;height:12px;border-radius:3px;background:#28a745;border:1px solid rgba(0,0,0,.2);margin-right:6px"></span>Teacher-only Event</span>
<span class="d-inline-flex align-items-center"><span style="display:inline-block;width:12px;height:12px;border-radius:3px;background:#ffc107;border:1px solid rgba(0,0,0,.2);margin-right:6px"></span>No School Day</span>
</div>
<div class="main-content">
<div id="calendar-container">
<div id="calendar"></div>
</div>
</div>
</div>
<?= $this->endSection() ?>
<?= $this->section('scripts') ?>
<script>
document.addEventListener('DOMContentLoaded', function() {
const calendarEl = document.getElementById('calendar');
const isMobile = window.innerWidth <= 576;
const calendar = new FullCalendar.Calendar(calendarEl, {
initialView: isMobile ? 'listWeek' : 'dayGridMonth',
height: 'auto',
contentHeight: 'auto',
expandRows: true,
events: <?= json_encode($events) ?>,
eventDidMount: function(info) {
if (info.event.extendedProps.description) {
$(info.el).tooltip({
title: info.event.extendedProps.description,
placement: 'top',
trigger: 'hover',
container: 'body'
});
}
},
eventContent: function(arg) {
const event = arg.event;
const bg = event.extendedProps.backgroundColor || '#3788d8';
return {
html: `
<div style="
background-color: ${bg};
padding: 4px;
border-radius: 4px;
color: #fff;
font-size: 0.8rem;
text-align: center;">
${event.title}
</div>`
};
},
windowResize: function(view) {
if (window.innerWidth <= 576 && calendar.view.type !== 'listWeek') {
calendar.changeView('listWeek');
} else if (window.innerWidth > 576 && calendar.view.type !== 'dayGridMonth') {
calendar.changeView('dayGridMonth');
}
calendar.updateSize();
}
});
calendar.render();
window.calendar = calendar;
});
</script>
<?= $this->endSection() ?>