79 lines
4.8 KiB
PHP
79 lines
4.8 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
function render_admin_nav(string $activePage, string $user): void
|
|
{
|
|
$isActive = static fn(string $page): string => $activePage === $page ? 'active' : '';
|
|
?>
|
|
<link rel="stylesheet" href="assets/navigation.css">
|
|
<div class="topbar admin-topbar">
|
|
<div class="brand"><span class="dot"></span>NetMonster Admin</div>
|
|
<button class="nav-toggle" type="button" aria-expanded="false" aria-controls="adminNavigation">
|
|
<span class="sr-only">Ouvrir le menu</span><span></span><span></span><span></span>
|
|
</button>
|
|
<nav id="adminNavigation" class="admin-navigation">
|
|
<a href="index.php" class="<?= $isActive('index.php') ?>">Accueil</a>
|
|
<div class="nav-dropdown">
|
|
<button type="button" class="nav-dropdown-toggle" aria-expanded="false">Données <span aria-hidden="true">▾</span></button>
|
|
<div class="nav-dropdown-menu">
|
|
<a href="search_site.php" class="<?= $isActive('search_site.php') ?>">Recherche antenne</a>
|
|
<a href="data_quality.php" class="<?= $isActive('data_quality.php') ?>">Contrôle qualité</a>
|
|
<a href="duplicates.php" class="<?= $isActive('duplicates.php') ?>">Doublons & collisions</a>
|
|
<a href="edit_site.php" class="<?= $isActive('edit_site.php') ?>Édition de site</a>
|
|
<a href="operator_sites.php" class="<?= $isActive('operator_sites.php') ?>">Antennes par opérateur</a>
|
|
</div>
|
|
</div>
|
|
<div class="nav-dropdown">
|
|
<button type="button" class="nav-dropdown-toggle" aria-expanded="false">Import & validation <span aria-hidden="true">▾</span></button>
|
|
<div class="nav-dropdown-menu">
|
|
<a href="import_ntm.php" class="<?= $isActive('import_ntm.php') ?>">Importer un fichier .ntm</a>
|
|
<a href="cellmapper_import.php" class="<?= $isActive('cellmapper_import.php') ?>">Import CellMapper</a>
|
|
<a href="manual_add.php" class="<?= $isActive('manual_add.php') ?>">Ajout manuel</a>
|
|
<a href="review.php" class="<?= $isActive('review.php') ?>">Validation des données</a>
|
|
<a href="import_history.php" class="<?= $isActive('import_history.php') ?>">Historique des imports</a>
|
|
</div>
|
|
</div>
|
|
<div class="nav-dropdown">
|
|
<button type="button" class="nav-dropdown-toggle" aria-expanded="false">Configuration <span aria-hidden="true">▾</span></button>
|
|
<div class="nav-dropdown-menu">
|
|
<a href="countries_settings.php" class="<?= $isActive('countries_settings.php') ?>">Pays & opérateurs</a>
|
|
<a href="map_layers.php" class="<?= $isActive('map_layers.php') ?>">Couches cartographiques</a>
|
|
<a href="export.php" class="<?= $isActive('export.php') ?>">Export</a>
|
|
</div>
|
|
</div>
|
|
<div class="nav-dropdown">
|
|
<button type="button" class="nav-dropdown-toggle" aria-expanded="false">Suivi & sécurité <span aria-hidden="true">▾</span></button>
|
|
<div class="nav-dropdown-menu">
|
|
<a href="statistics.php" class="<?= $isActive('statistics.php') ?>">Statistiques</a>
|
|
<a href="audit_log.php" class="<?= $isActive('audit_log.php') ?>">Journal d'audit</a>
|
|
<a href="backup.php" class="<?= $isActive('backup.php') ?>">Sauvegardes</a>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
<div class="user">Connecté : <?= htmlspecialchars($user, ENT_QUOTES, 'UTF-8') ?></div>
|
|
</div>
|
|
<script>
|
|
(() => {
|
|
const toggle = document.querySelector('.nav-toggle');
|
|
const navigation = document.getElementById('adminNavigation');
|
|
if (!toggle || !navigation) return;
|
|
toggle.addEventListener('click', () => {
|
|
const open = navigation.classList.toggle('is-open');
|
|
toggle.setAttribute('aria-expanded', open ? 'true' : 'false');
|
|
});
|
|
document.querySelectorAll('.nav-dropdown-toggle').forEach((button) => {
|
|
button.addEventListener('click', () => {
|
|
const dropdown = button.closest('.nav-dropdown');
|
|
const open = dropdown.classList.toggle('is-open');
|
|
button.setAttribute('aria-expanded', open ? 'true' : 'false');
|
|
});
|
|
});
|
|
document.addEventListener('click', (event) => {
|
|
if (!(event.target instanceof Element) || event.target.closest('.nav-dropdown')) return;
|
|
document.querySelectorAll('.nav-dropdown.is-open').forEach((dropdown) => dropdown.classList.remove('is-open'));
|
|
});
|
|
})();
|
|
</script>
|
|
<?php
|
|
}
|