Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,6 @@ All located in `admin/api/`:
- **salas_search.php** - Room search/autocomplete
- **users_search.php** - User search/autocomplete
- **tempos_search.php** - Time slot search
- **version_check.php** - Version checking

## Reservation Workflow
1. User selects room(s) and time slot(s) on `/reservar`
Expand Down
171 changes: 0 additions & 171 deletions admin/api/version_check.php

This file was deleted.

97 changes: 0 additions & 97 deletions admin/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -233,102 +233,5 @@ function acaoexecutada($acao) {
}
?>

<?php if ($_SERVER['REQUEST_URI'] == "/admin/"): ?>
<!-- Version Alert Container at Bottom - Only on Dashboard -->
<div id='versionAlertContainer' style='margin-top: 20px;'></div>

<script>
// Version Checker - Checks for new commits on main branch - ONLY ON DASHBOARD
(function() {
function checkVersion() {
fetch('/admin/api/version_check.php')
.then(response => response.json())
.then(data => {
if (data.success) {
showVersionAlert(data);
} else if (data.error) {
console.warn('Version check error:', data.error);
}
})
.catch(error => {
console.error('Version check failed:', error);
});
}

function showVersionAlert(data) {
const container = document.getElementById('versionAlertContainer');
if (!container) return;

let alertHtml = '';
const cacheStatus = data.cached ? ' (cache)' : '';

if (data.commitsBehind > 0) {
// Behind - show warning
const plural = data.commitsBehind > 1 ? 'versões' : 'versão';
const aheadText = data.commitsAhead > 0 ? ` (${data.commitsAhead} commit${data.commitsAhead > 1 ? 's' : ''} à frente)` : '';

alertHtml = `
<div class="alert alert-warning text-center" role="alert">
<strong>⚠️ Está a correr uma versão desatualizada do ClassLink.</strong>
Está atrasado <strong>${data.commitsBehind}</strong> ${plural}${aheadText}.
<button type="button" class="btn btn-sm btn-outline-warning ms-3" data-bs-toggle="collapse" data-bs-target="#versionDetails">
Ver Detalhes
</button>
<div class="collapse mt-2" id="versionDetails">
<small class="d-block">
<strong>Último commit:</strong> ${escapeHtml(data.lastCommitMessage)}<br>
<strong>Autor:</strong> ${escapeHtml(data.lastCommitAuthor)}<br>
<strong>Data:</strong> ${formatDate(data.lastCommitDate)}<br>
<strong>Hash:</strong> ${data.currentCommit} → ${data.remoteCommit}
</small>
</div>
</div>
`;
} else {
// Up to date - show success
alertHtml = `
<div class="alert alert-success text-center" role="alert">
<strong>✅ Está a correr uma versão atualizada do ClassLink!</strong>
<small class="d-block mt-1 text-muted">
Última verificação: ${formatDate(data.timestamp)}${cacheStatus}
</small>
</div>
`;
}

container.innerHTML = alertHtml;
}

function escapeHtml(text) {
const div = document.createElement('div');
div.textContent = text;
return div.innerHTML;
}

function formatDate(dateString) {
if (!dateString) return 'N/A';
const date = new Date(dateString);
return date.toLocaleString('pt-PT', {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit'
});
}

// Check version on page load
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', checkVersion);
} else {
checkVersion();
}

// Check version every 15 minutes
setInterval(checkVersion, 15 * 60 * 1000);
})();
</script>
<?php endif; ?>

</body>
</html>
Loading