95 lines
3.7 KiB
PHP
95 lines
3.7 KiB
PHP
</div> <!-- End of content-wrapper -->
|
|
|
|
<!-- Footer -->
|
|
<footer class="footer mt-auto py-3 bg-white border-top">
|
|
<div class="container-fluid">
|
|
<div class="row align-items-center">
|
|
<div class="col-md-6">
|
|
<span class="text-muted">
|
|
© <?php echo date('Y'); ?> Attendance Managament System | Programmed by John Lloyd Sumawang
|
|
</span>
|
|
</div>
|
|
<div class="col-md-6 text-md-end">
|
|
<span class="text-muted">
|
|
<i class="bi bi-server me-1"></i> Server Time: <?php echo date('h:i:s A'); ?>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
</main>
|
|
</div>
|
|
|
|
<!-- JavaScript Libraries -->
|
|
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
|
|
<script src="https://cdn.datatables.net/1.11.5/js/jquery.dataTables.min.js"></script>
|
|
<script src="https://cdn.datatables.net/1.11.5/js/dataTables.bootstrap5.min.js"></script>
|
|
|
|
<script>
|
|
// Update current time
|
|
function updateCurrentTime() {
|
|
const now = new Date();
|
|
const timeString = now.toLocaleTimeString('en-US', {
|
|
hour: '2-digit',
|
|
minute: '2-digit',
|
|
second: '2-digit',
|
|
hour12: true
|
|
});
|
|
document.getElementById('current-time').textContent = timeString;
|
|
}
|
|
|
|
setInterval(updateCurrentTime, 1000);
|
|
|
|
// Mobile sidebar toggle
|
|
document.getElementById('sidebarToggle').addEventListener('click', function() {
|
|
document.querySelector('.sidebar').classList.toggle('show');
|
|
});
|
|
|
|
// Close sidebar when clicking outside on mobile
|
|
document.addEventListener('click', function(event) {
|
|
const sidebar = document.querySelector('.sidebar');
|
|
const toggleBtn = document.getElementById('sidebarToggle');
|
|
|
|
if (window.innerWidth < 768 &&
|
|
!sidebar.contains(event.target) &&
|
|
!toggleBtn.contains(event.target) &&
|
|
sidebar.classList.contains('show')) {
|
|
sidebar.classList.remove('show');
|
|
}
|
|
});
|
|
|
|
// Initialize tooltips
|
|
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
|
|
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
|
|
return new bootstrap.Tooltip(tooltipTriggerEl);
|
|
});
|
|
|
|
// Auto-dismiss alerts after 5 seconds
|
|
setTimeout(function() {
|
|
var alerts = document.querySelectorAll('.alert:not(.alert-permanent)');
|
|
alerts.forEach(function(alert) {
|
|
var bsAlert = new bootstrap.Alert(alert);
|
|
bsAlert.close();
|
|
});
|
|
}, 5000);
|
|
|
|
// Add active class to current page in navigation
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
const currentPage = window.location.pathname.split('/').pop();
|
|
const navLinks = document.querySelectorAll('.nav-link');
|
|
|
|
navLinks.forEach(link => {
|
|
if (link.getAttribute('href') === currentPage) {
|
|
link.classList.add('active');
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
|
|
<!-- Page-specific scripts -->
|
|
<?php if (isset($page_scripts)): ?>
|
|
<?php echo $page_scripts; ?>
|
|
<?php endif; ?>
|
|
</body>
|
|
</html>
|