This commit is contained in:
KONE SOREL 2026-02-23 11:59:45 +00:00
parent f401585d74
commit ed66ff983b
6 changed files with 38 additions and 828 deletions

View File

@ -1,99 +1,70 @@
/* DESIGN SYSTEM LUXE - INTER SANTÉ 2026 */
:root {
--primary: #2C3E50;
--accent: #08C5D1;
--bg-app: #F4F7FA;
--glass-bg: rgba(255, 255, 255, 0.9);
--shadow-soft: 0 10px 30px rgba(0, 0, 0, 0.05);
--shadow-active: 0 15px 35px rgba(8, 197, 209, 0.2);
--bg-app: #F8FAFC;
--border-color: #E2E8F0;
}
body {
background-color: var(--bg-app) !important;
font-family: 'Plus Jakarta Sans', 'Segoe UI', sans-serif !important;
color: #334155;
font-family: 'Plus Jakarta Sans', sans-serif !important;
}
/* --- MAIN CARD EFFECT --- */
/* On supprime l'aspect "carte flottante" du main pour l'intégrer au fond */
#main {
margin: 90px 25px 25px 25px !important;
padding: 30px !important;
background: #ffffff !important;
border-radius: 24px !important;
box-shadow: var(--shadow-soft) !important;
margin-top: 70px !important;
padding: 20px 40px !important;
background: transparent !important; /* Fond transparent pour éviter la double couche */
border: none !important;
box-shadow: none !important;
}
/* --- TABLEAUX : L'EFFET "WAHOO" --- */
/* On transforme chaque ligne de tableau en carte individuelle */
/* --- TABLEAUX ÉPURÉS (ZÉRO SUPERPOSITION) --- */
.table {
border-collapse: separate !important;
border-spacing: 0 10px !important; /* Espacement entre les lignes */
margin-top: -10px;
background: white !important;
border-radius: 12px !important;
overflow: hidden !important;
border: 1px solid var(--border-color) !important;
box-shadow: 0 1px 3px rgba(0,0,0,0.02) !important;
}
.table thead th {
background: transparent !important;
color: #94a3b8 !important;
background: #F1F5F9 !important;
color: #64748B !important;
font-weight: 700 !important;
text-transform: uppercase;
font-size: 0.75rem;
font-weight: 700;
border: none !important;
padding: 10px 20px !important;
font-size: 0.7rem;
padding: 15px !important;
border-bottom: 1px solid var(--border-color) !important;
}
.table tbody tr {
background: #ffffff !important;
box-shadow: 0 4px 6px rgba(0,0,0,0.02) !important;
transition: all 0.3s ease !important;
cursor: pointer;
transition: background 0.2s ease !important;
border-bottom: 1px solid #F1F5F9 !important;
}
.table tbody tr:hover {
transform: translateY(-3px) scale(1.005);
box-shadow: 0 12px 20px rgba(0,0,0,0.08) !important;
z-index: 10;
background: #F8FAFC !important; /* Simple changement de couleur au survol, pas d'ombre */
}
.table td {
padding: 18px 20px !important;
padding: 12px 15px !important;
border: none !important;
vertical-align: middle;
font-size: 0.9rem;
}
/* Arrondis des lignes du tableau */
.table td:first-child { border-radius: 15px 0 0 15px !important; }
.table td:last-child { border-radius: 0 15px 15px 0 !important; }
/* --- NAVIGATION PILLS (Niveau 3) --- */
.scrollmenu {
background: #ffffff !important;
padding: 8px !important;
border-radius: 50px !important;
box-shadow: var(--shadow-soft) !important;
display: inline-flex !important;
gap: 5px;
/* --- BARRE DE CONTEXTE À DROITE (FIXE ET PLATE) --- */
.sidenav {
background: white !important;
border-left: 1px solid var(--border-color) !important;
box-shadow: none !important; /* On retire l'ombre portée */
padding-top: 85px !important;
}
.nav-pill-link {
padding: 10px 22px !important;
border-radius: 50px !important;
color: var(--primary) !important;
font-weight: 600 !important;
transition: all 0.3s ease !important;
}
.nav-pill-link.active {
background: var(--accent) !important;
color: #fff !important;
box-shadow: 0 8px 15px rgba(8, 197, 209, 0.3) !important;
}
/* --- BOUTONS --- */
.btn-info {
background: linear-gradient(135deg, #08C5D1, #06a5af) !important;
border: none !important;
border-radius: 12px !important;
font-weight: 700 !important;
box-shadow: 0 5px 15px rgba(8, 197, 209, 0.2) !important;
.context-widget {
background: #F8FAFC !important;
border: 1px solid var(--border-color) !important;
border-radius: 8px !important; /* Moins d'arrondis pour un look plus "pro" */
margin-bottom: 10px !important;
box-shadow: none !important;
}

View File

@ -1,267 +0,0 @@
<!-- ======= Context Bar ======= -->
<input type="hidden" id="numeroClient_C" name="numeroClient_C" value="<?= $this->nettoyer($_SESSION['numeroClient_C']) ?>">
<input type="hidden" id="codeGcAssureur_C" name="codeGcAssureur_C" value="<?= $this->nettoyer($_SESSION['codeGcAssureur_C']) ?>">
<!-- Context Panel -->
<div id="barre_laterale_d" class="context-panel shadow-lg">
<div class="context-header bg-primary text-white py-3 px-4 d-flex justify-content-between align-items-center">
<div class="d-flex align-items-center">
<i class="fas fa-cog fa-spin me-2"></i>
<h6 class="mb-0 fw-bold"><?= _("Panneau contexte") ?></h6>
</div>
<button class="btn btn-sm btn-light" id="hideSideNav" title="<?= _("Cacher le contexte") ?>">
<i class="fas fa-times"></i>
</button>
</div>
<div class="context-body p-3 context-scrollable">
<!-- Garant -->
<div class="context-card card border-0 shadow-sm mb-3">
<div class="card-header bg-light py-2 px-3">
<h6 class="mb-0">
<i class="fas fa-user-shield me-2 text-primary"></i>
<?= _("Garant") ?>
</h6>
</div>
<div class="card-body p-3">
<div class="d-flex align-items-center mb-2">
<div class="badge bg-primary bg-opacity-10 text-primary rounded-pill me-2 py-1 px-2">
<?= $this->nettoyer($_SESSION['codeGcAssureur_C']) ?>
</div>
<a href="javascript:afficher_garant('<?= $this->nettoyer($_SESSION['codeGcAssureur_C']) ?>');"
class="ms-auto small text-primary text-decoration-none">
<i class="fas fa-external-link-alt"></i>
</a>
</div>
<button class="btn btn-outline-primary btn-sm w-100 text-start py-2 context-button"
onclick="javascript:afficher_garant('<?= $this->nettoyer($_SESSION['codeGcAssureur_C']) ?>');"
title="<?= _("Afficher le Garant") ?>">
<div class="d-flex align-items-center">
<i class="fas fa-building me-2"></i>
<span class="text-truncate"><?= $_SESSION['nomGcAssureur_C'] ?? '' ?></span>
</div>
</button>
</div>
</div>
<!-- Souscripteur -->
<div class="context-card card border-0 shadow-sm mb-3">
<div class="card-header bg-light py-2 px-3">
<h6 class="mb-0">
<i class="fas fa-user-tie me-2 text-primary"></i>
<?= _("Souscripteur") ?>
</h6>
</div>
<div class="card-body p-3">
<div class="d-flex align-items-center mb-2">
<div class="badge bg-primary bg-opacity-10 text-primary rounded-pill me-2 py-1 px-2">
<?= $this->nettoyer($_SESSION['numeroClient_C']) ?>
</div>
<a href="javascript:afficher_client_id();"
class="ms-auto small text-primary text-decoration-none">
<i class="fas fa-external-link-alt"></i>
</a>
</div>
<button class="btn btn-outline-primary btn-sm w-100 text-start py-2 context-button"
onclick="javascript:afficher_client_id();">
<div class="d-flex align-items-center">
<i class="fas fa-user me-2"></i>
<span class="text-truncate"><?= $this->nettoyer($_SESSION['nomClient_C']) ?></span>
</div>
</button>
</div>
</div>
<!-- Police en cours -->
<div class="context-card card border-0 shadow-sm mb-3">
<div class="card-body p-3">
<button class="btn btn-primary btn-sm w-100 text-start py-2 mb-2 context-button"
onclick="javascript:afficher_police_id();"
title="<?= _("Couverture") . ": " . dateLang($_SESSION['dateEffet_C'], $_SESSION['lang']) . ' - ' . dateLang($_SESSION['dateEcheance_C'], $_SESSION['lang']) ?>">
<div class="d-flex align-items-center">
<i class="fas fa-file-contract me-2"></i>
<div class="flex-grow-1">
<div class="fw-bold small"><?= _("Police en cours") ?></div>
<div class="x-small"><?= $this->nettoyer($_SESSION['numeroPolice_C']) ?></div>
</div>
<i class="fas fa-chevron-right"></i>
</div>
</button>
<!-- Statistiques -->
<div class="stats-container bg-light rounded p-2 mb-3">
<div class="row text-center g-2">
<div class="col-4">
<div class="bg-white rounded p-2 context-stats-item">
<div class="fw-bold text-primary"><?= format_N($_SESSION['ndAdh_C']) ?></div>
<div class="x-small text-muted"><?= _("Fam.") ?></div>
</div>
</div>
<div class="col-4">
<div class="bg-white rounded p-2 context-stats-item">
<div class="fw-bold text-success"><?= format_N($_SESSION['ndDep_C']) ?></div>
<div class="x-small text-muted"><?= _("Dép.") ?></div>
</div>
</div>
<div class="col-4">
<div class="bg-white rounded p-2 context-stats-item">
<div class="fw-bold text-info"><?= format_N($_SESSION['ndActif_C']) ?></div>
<div class="x-small text-muted"><?= _("Bén.") ?></div>
</div>
</div>
</div>
</div>
<!-- Famille en cours -->
<button class="btn btn-outline-primary btn-sm w-100 text-start py-2 mb-2 context-button"
onclick="javascript:afficher_adherent_id();"
title="<?= _("Voir les membres de famille") ?>">
<div class="d-flex align-items-center">
<i class="fas fa-users me-2"></i>
<div class="flex-grow-1">
<div class="fw-bold small"><?= _("Famille") ?> <?= $this->nettoyer($_SESSION['numeroAdherent_C']) ?></div>
<div class="x-small text-truncate context-text-truncate"><?= substr($this->nettoyer($_SESSION['adherent_C']), 0, 25) ?></div>
</div>
</div>
</button>
<!-- Bénéficiaire en cours -->
<button class="btn btn-outline-primary btn-sm w-100 text-start py-2 context-button"
onclick="javascript:afficher_beneficiaire_id();"
title="<?= _("Couverture") . ": " . dateLang($_SESSION['dateEntreeBeneficiaire_C'], $_SESSION['lang']) . ' - ' . dateLang($_SESSION['dateEcheancePolice_C'], $_SESSION['lang']) ?>">
<div class="d-flex align-items-center">
<i class="fas fa-user me-2"></i>
<div class="flex-grow-1">
<div class="fw-bold small"><?= _("Bénéficiaire") ?> <?= $this->nettoyer($_SESSION['numeroBeneficiaire_C']) ?></div>
<div class="x-small text-truncate context-text-truncate"><?= substr($this->nettoyer($_SESSION['beneficiaire_C']), 0, 25) ?></div>
</div>
</div>
</button>
</div>
</div>
<!-- Photo du bénéficiaire -->
<?php if ($_SESSION['faceRegistered_C'] == "1" && $_SESSION['idBeneficiaire_C'] > "0"): ?>
<div class="context-card card border-0 shadow-sm mb-3">
<div class="card-body p-3 text-center">
<div class="photo-wrapper mb-2">
<img src="data:image/jpg;base64,<?= $imgData ?>"
class="img-fluid rounded-circle shadow-sm border border-3 border-primary context-photo"
data-bs-toggle="modal"
data-bs-target="#pop_photo"
alt="<?= _("Photo du bénéficiaire") ?>"
title="<?= _("Cliquer pour agrandir") ?>">
</div>
<div class="small text-muted"><?= _("Photo du bénéficiaire") ?></div>
</div>
</div>
<?php endif; ?>
<!-- Dernières polices ouvertes -->
<div class="context-card card border-0 shadow-sm mb-3">
<div class="card-header bg-light py-2 px-3">
<h6 class="mb-0">
<i class="fas fa-history me-2 text-primary"></i>
<?= _("Dernières polices") ?>
</h6>
</div>
<div class="card-body p-3">
<div class="list-group list-group-flush context-list">
<?php foreach ($_SESSION['contextPolice'] as $index => $contextPolice): ?>
<?php if ($index < 5): ?>
<a href="javascript:selectionner_police(<?= $contextPolice['idPolice'] ?>,'<?= $contextPolice['numeroPolice'] ?>');afficher_police_id();"
class="list-group-item list-group-item-action border-0 py-2 px-0 context-list-item">
<div class="d-flex align-items-center">
<div class="badge bg-primary bg-opacity-10 text-primary rounded-circle me-2 d-flex align-items-center justify-content-center context-badge-index">
<?= $index + 1 ?>
</div>
<div class="flex-grow-1">
<div class="small fw-medium"><?= htmlspecialchars($contextPolice['libellePolice']) ?></div>
<div class="x-small text-muted"><?= $contextPolice['numeroPolice'] ?></div>
</div>
<i class="fas fa-chevron-right text-muted"></i>
</div>
</a>
<?php endif; ?>
<?php endforeach; ?>
</div>
</div>
</div>
<!-- Actions rapides -->
<div class="context-card card border-0 shadow-sm mb-3">
<div class="card-body p-3">
<div class="row g-2">
<div class="col-6">
<button class="btn btn-outline-primary btn-sm w-100 py-2 context-action-button"
onclick="javascript:gerer_messagerie();">
<i class="fas fa-comments me-1"></i>
<span class="d-none d-md-inline"><?= _("Messages") ?></span>
</button>
</div>
<div class="col-6">
<button class="btn btn-outline-primary btn-sm w-100 py-2 context-action-button"
onclick="javascript:change_password();">
<i class="fas fa-key me-1"></i>
<span class="d-none d-md-inline"><?= est_anglophone() ? 'Password' : 'MDP' ?></span>
</button>
</div>
</div>
</div>
</div>
<!-- Mode cotation -->
<?php if ($_SESSION['modeDevis'] == "1"): ?>
<div class="context-card card border-0 shadow-sm mb-3 border-warning">
<div class="card-header bg-warning bg-opacity-10 py-2 px-3">
<h6 class="mb-0 text-warning">
<i class="fas fa-file-invoice me-2"></i>
<?= _("GESTION DES COTATIONS") ?>
</h6>
</div>
<div class="card-body p-3">
<!-- Prospect -->
<button class="btn btn-outline-warning btn-sm w-100 text-start py-2 mb-2 context-button"
onclick="javascript:afficher_client_d_id();">
<div class="d-flex align-items-center">
<i class="fas fa-user-clock me-2"></i>
<div class="flex-grow-1">
<div class="fw-bold small"><?= _("Prospect") ?></div>
<div class="x-small"><?= $this->nettoyer($_SESSION['numeroClient_d_C']) ?></div>
</div>
</div>
</button>
<div class="small text-muted mb-3 text-truncate context-text-truncate-long">
<?= substr($this->nettoyer($_SESSION['nomClient_d_C']), 0, 30) ?>
</div>
<!-- Police devis -->
<button class="btn btn-warning btn-sm w-100 text-start py-2 context-button"
onclick="javascript:afficher_police_d_id_init();">
<div class="d-flex align-items-center">
<i class="fas fa-file-invoice-dollar me-2"></i>
<div class="flex-grow-1">
<div class="fw-bold small"><?= _("Devis") ?></div>
<div class="x-small"><?= $this->nettoyer($_SESSION['numeroPolice_d_C']) ?></div>
</div>
<i class="fas fa-chevron-right"></i>
</div>
</button>
</div>
</div>
<?php endif; ?>
</div>
<div class="context-footer bg-light py-2 px-3 border-top">
<div class="d-flex justify-content-between align-items-center">
<small class="text-muted">© <?= date('Y') ?> INTER SANTE</small>
<div id="nbMessagesNonLus" class="badge bg-danger rounded-pill">
<i class="fas fa-envelope me-1"></i>
<span id="msgNonLus">0</span>
</div>
</div>
<input type="hidden" id="timer" name="timer" value="0">
</div>
</div>
<!-- End Context Bar -->

View File

@ -1,182 +0,0 @@
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no, viewport-fit=cover">
<meta name="description" content="INTER SANTÉ - Gestionnaire de santé">
<meta name="author" content="INTER SANTÉ">
<meta name="robots" content="noindex, nofollow">
<meta name="theme-color" content="#0088cf">
<!-- Pour PWA/iOS - Version corrigée -->
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="apple-mobile-web-app-title" content="INTER SANTÉ">
<base href="<?= $racineWeb ?>">
<!-- Favicon -->
<link rel="icon" href="Bootstrap_new/images/favicon.ico" type="image/x-icon">
<link rel="icon" href="Bootstrap_new/images/favicon-32x32.png" type="image/png" sizes="32x32">
<link rel="icon" href="Bootstrap_new/images/favicon-16x16.png" type="image/png" sizes="16x16">
<link rel="apple-touch-icon" href="Bootstrap_new/images/apple-touch-icon.png">
<!-- Preconnect pour améliorer les performances -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net">
<link rel="dns-prefetch" href="https://cdnjs.cloudflare.com">
<!-- Google Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Poppins:wght@400;500;600&display=swap"
rel="stylesheet"
crossorigin="anonymous">
<!-- Bootstrap 5 CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM"
crossorigin="anonymous">
<!-- Font Awesome -->
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css"
integrity="sha512-Avb2QiuDEEvB4bZJYdft2mNjVShBftLdPG8FJ0V7irTLQ8Uo0qcPxh4Plq7G5tGm0rU+1SPhVotteLpBERwTkw=="
crossorigin="anonymous"
referrerpolicy="no-referrer">
<!-- Bootstrap Icons -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.0/font/bootstrap-icons.css">
<!-- Vendor CSS -->
<link href="Bootstrap/vendor/boxicons/css/boxicons.min.css" rel="stylesheet">
<!-- Toastr CSS -->
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css"
integrity="sha512-vKMx8UnXk60zUwyUnUPM3HbQo8QfmNx7+ltw8Pm5zLusl1XIfwcxo8DbWCqMGKaWeNxWA8yrx5v3SaVpMvR3CA=="
crossorigin="anonymous"
referrerpolicy="no-referrer">
<!-- SweetAlert2 -->
<link href="https://cdn.jsdelivr.net/npm/sweetalert2@11.14.1/dist/sweetalert2.min.css"
rel="stylesheet">
<!-- Animate.css -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css">
<!-- Bootstrap Select CSS (si vous l'utilisez) -->
<?php if (isset($needBootstrapSelect) && $needBootstrapSelect): ?>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-select@1.14.0-beta3/dist/css/bootstrap-select.min.css">
<?php endif; ?>
<!-- Vendor CSS spécifiques (chargement conditionnel) -->
<?php
$current_page = $_SERVER['REQUEST_URI'] ?? '';
$needQuill = strpos($current_page, 'quill') !== false;
$needDatatables = isset($needDatatables) ? $needDatatables : false;
$needSelect2 = isset($needSelect2) ? $needSelect2 : false;
$needBootstrapSelect = isset($needBootstrapSelect) ? $needBootstrapSelect : false;
?>
<?php if ($needQuill): ?>
<link href="Bootstrap/vendor/quill/quill.snow.css" rel="stylesheet">
<?php endif; ?>
<?php if ($needDatatables): ?>
<link href="Bootstrap_new/css/datatables.min.css" rel="stylesheet">
<?php endif; ?>
<?php if ($needSelect2): ?>
<link href="Bootstrap_new/css/select2.min.css" rel="stylesheet">
<link href="Bootstrap_new/css/select2-bootstrap-5-theme.min.css" rel="stylesheet">
<?php endif; ?>
<!-- Styles personnalisés -->
<link href="Bootstrap_new/css/style_moderne.css?ver=<?= date('Y.m.d.H') ?>" rel="stylesheet">
<title><?= htmlspecialchars($_SESSION['vue'] ?? 'Dashboard') ?> - INTER SANTÉ</title>
<!-- Scripts de prévention de clic droit - Version optimisée -->
<script type="text/javascript">
// Fonction safe pour toastr
window.safeToastr = function() {
if (typeof toastr !== 'undefined') {
return toastr;
}
return {
warning: function(msg) { console.warn('TOASTR:', msg); },
error: function(msg) { console.error('TOASTR:', msg); },
success: function(msg) { console.log('TOASTR:', msg); },
info: function(msg) { console.info('TOASTR:', msg); }
};
};
var modeDev = <?= json_encode($modeDev ?? '0') ?>;
// Protection en mode production seulement
if (modeDev != "1") {
document.addEventListener('DOMContentLoaded', function() {
var toastr = window.safeToastr();
// Prévention clic droit
document.addEventListener('contextmenu', function(e) {
e.preventDefault();
toastr.warning('<?= _("Le clic droit est désactivé en mode production") ?>');
}, { passive: false });
// Prévention des raccourcis clavier
var blockedKeys = {
85: 'Ctrl+U (code source)',
123: 'F12 (outils de développement)',
73: 'Ctrl+Shift+I',
74: 'Ctrl+Shift+J',
67: 'Ctrl+Shift+C'
};
document.addEventListener('keydown', function(e) {
// Ctrl+U, Ctrl+Shift+I, etc.
if (e.ctrlKey && blockedKeys[e.keyCode]) {
e.preventDefault();
toastr.warning('<?= _("Cette fonctionnalité est désactivée") ?>: ' + blockedKeys[e.keyCode]);
return false;
}
// F12 seul
if (e.keyCode === 123) {
e.preventDefault();
toastr.warning('<?= _("Les outils de développement sont désactivés") ?>');
return false;
}
// Ctrl+Shift avec I, J, C
if (e.ctrlKey && e.shiftKey && [73, 74, 67].includes(e.keyCode)) {
e.preventDefault();
toastr.warning('<?= _("Cette fonctionnalité est désactivée") ?>');
return false;
}
}, { passive: false });
});
}
// Initialiser le panneau de contexte
window.initializeContextPanel = function() {
// Cette fonction sera appelée après le chargement de jQuery
if (typeof $ !== 'undefined') {
$(document).on('click', '#showSideNav', function(e) {
e.preventDefault();
e.stopPropagation();
$('#barre_laterale_d').addClass('active');
$(this).hide();
});
$(document).on('click', '#hideSideNav', function(e) {
e.preventDefault();
e.stopPropagation();
$('#barre_laterale_d').removeClass('active');
$('#showSideNav').show();
});
}
};
</script>
</head>

View File

@ -1,206 +0,0 @@
<body class="bg-light">
<?php
$style = "";
$test = "";
$colorTests = "";
$flag = est_anglophone() ? 'england.png' : 'france.png';
$alt = est_anglophone() ? 'English' : 'Français';
$lib = est_anglophone() ? 'En' : 'Fr';
if ($_SESSION['bdTests_C'] == "1") {
$colorTests = $_SESSION['colorTests'];
$style = "background: linear-gradient(90deg, $colorTests, lighten($colorTests, 10%)) !important;";
$test = "MODE TEST";
}
?>
<!-- ======= Header ======= -->
<header id="header" class="header fixed-top d-flex align-items-center shadow-sm" style="<?= $style ?>">
<div class="container-fluid d-flex align-items-center justify-content-between">
<!-- Logo et bouton menu -->
<div class="d-flex align-items-center">
<a class="logo d-flex align-items-center text-decoration-none me-4">
<img src="Bootstrap_new/images/new/favicon.png" alt="Logo INTER SANTÉ" class="img-fluid">
<span class="ms-2">INTER SANTE</span>
</a>
<i class="fas fa-bars toggle-sidebar-btn" onclick="toggleSidebar()" style="cursor: pointer;"></i>
</div>
<!-- Breadcrumb intégré dans le header -->
<div class="header-breadcrumb mx-4 flex-grow-1">
<nav aria-label="breadcrumb" class="mb-0">
<ol class="breadcrumb mb-0 bg-transparent p-0">
<li class="breadcrumb-item">
<a href="<?= $_SESSION['retourVue'] ?? '#' ?>"
class="text-decoration-none text-muted small d-flex align-items-center text-uppercase">
<?= $_SESSION['titreRetour'] ?? '' ?>
</a>
</li>
<li class="breadcrumb-item active text-primary fw-bold small text-uppercase"
aria-current="page">
<i class="fas fa-chevron-right mx-2 text-muted"></i>
<?= $_SESSION['descriptionVue'] ?? '' ?>
</li>
</ol>
</nav>
</div>
<!-- Navigation droite -->
<nav class="header-nav ms-auto">
<ul class="d-flex align-items-center list-unstyled mb-0">
<!-- Mode Test -->
<?php if ($test): ?>
<li class="nav-item me-3">
<a class="nav-link p-2 badge bg-warning text-dark fw-bold"
href="javascript:void(0);"
data-bs-toggle="tooltip"
title="<?= _("Mode test activé") ?>">
<i class="fas fa-vial me-1"></i> <?= $test ?>
</a>
</li>
<?php endif; ?>
<!-- Notifications -->
<li class="nav-item dropdown me-3">
<a class="nav-link position-relative p-2"
href="#"
data-bs-toggle="dropdown"
aria-expanded="false"
data-bs-toggle="tooltip"
title="<?= _("Notifications") ?>">
<i class="fas fa-bell fs-5 text-secondary"></i>
<span id="span_notification"
class="badge bg-danger badge-number">0</span>
</a>
<div class="dropdown-menu dropdown-menu-end border-0 shadow-lg p-0" style="width: 320px;">
<div class="dropdown-header bg-primary text-white py-3 px-4 rounded-top">
<h6 class="mb-0">
<i class="fas fa-bell me-2"></i>
<?= _("Notifications") ?>
<span id="notification-count" class="badge bg-light text-dark ms-2">0</span>
</h6>
</div>
<div class="dropdown-body p-0" style="max-height: 300px; overflow-y: auto;">
<div id="notification-list" class="list-group list-group-flush">
<div class="text-center py-4 text-muted">
<i class="fas fa-bell-slash fa-2x mb-2"></i>
<p class="mb-0"><?= _("Aucune notification") ?></p>
</div>
</div>
</div>
<div class="dropdown-footer bg-light py-2 px-3 text-center border-top">
<a href="javascript:pop_messagerie();" class="btn btn-sm btn-outline-primary">
<i class="fas fa-envelope me-1"></i> <?= _("Voir toutes les notifications") ?>
</a>
</div>
</div>
</li>
<!-- Société -->
<li class="nav-item me-3">
<a class="nav-link p-2 d-flex align-items-center"
href="javascript:infos_entite();"
data-bs-toggle="tooltip"
title="<?= _("Gestionnaire d'assurance santé") ?>">
<div class="me-2">
<img src="<?= $_SESSION['lienLogo'] ?>"
alt="<?= htmlspecialchars($companyDisplayName) ?>"
class="img-fluid rounded"
style="max-height: 36px;">
</div>
<div class="d-none d-md-block">
<span class="fw-bold text-dark"><?= $companyDisplayName ?></span>
</div>
</a>
</li>
<!-- Langue -->
<li class="nav-item dropdown me-3">
<a class="nav-link p-2 d-flex align-items-center"
href="#"
data-bs-toggle="dropdown"
data-bs-toggle="tooltip"
title="<?= _("Changer la langue") ?>">
<img src="Bootstrap_new/images/<?= $flag ?>"
alt="<?= $alt ?>"
width="24"
class="rounded-circle border">
<span class="d-none d-md-block ms-2 fw-medium"><?= $lib ?></span>
<i class="fas fa-chevron-down ms-1 small"></i>
</a>
<div class="dropdown-menu dropdown-menu-end border-0 shadow-sm">
<a class="dropdown-item d-flex align-items-center py-2"
href="javascript:changer_langue();">
<i class="fas fa-exchange-alt me-2 text-primary"></i>
<span><?= _("Changer de langue") ?></span>
</a>
</div>
</li>
<!-- Aide -->
<li class="nav-item me-3">
<a class="nav-link p-2"
href="Guideutilisation/"
data-bs-toggle="tooltip"
title="<?= _("Guide d'utilisation") ?>">
<i class="fas fa-question-circle fs-5 text-primary"></i>
</a>
</li>
<!-- Profil utilisateur -->
<li class="nav-item dropdown">
<a class="nav-link p-2 d-flex align-items-center"
href="#"
data-bs-toggle="dropdown"
data-bs-toggle="tooltip"
title="<?= _("Profil utilisateur") ?>">
<div class="initials-circle bg-primary text-white d-flex align-items-center justify-content-center me-2"
style="width: 36px; height: 36px; border-radius: 50%; font-weight: 600;">
<?= $_SESSION['userInitials_C'] ?>
</div>
<div class="d-none d-lg-block">
<div class="fw-medium text-dark small"><?= $_SESSION['utilisateur_C'] ?></div>
<div class="text-muted x-small"><?= $_SESSION['profil_C'] ?? '' ?></div>
</div>
<i class="fas fa-chevron-down ms-2 small"></i>
</a>
<div class="dropdown-menu dropdown-menu-end border-0 shadow-lg" style="min-width: 220px;">
<div class="dropdown-header bg-light py-3 px-4">
<div class="d-flex align-items-center">
<div class="initials-circle bg-primary text-white d-flex align-items-center justify-content-center me-3"
style="width: 40px; height: 40px; border-radius: 50%; font-size: 1rem; font-weight: 600;">
<?= $_SESSION['userInitials_C'] ?>
</div>
<div>
<div class="fw-bold"><?= $_SESSION['utilisateur_C'] ?></div>
<div class="text-muted small"><?= $_SESSION['profil_C'] ?? '' ?></div>
</div>
</div>
</div>
<div class="dropdown-divider"></div>
<a class="dropdown-item d-flex align-items-center py-2"
href="javascript:change_password();">
<i class="fas fa-user-circle me-3 text-primary"></i>
<span><?= $_SESSION['utilisateur_C'] ?></span>
</a>
<a class="dropdown-item d-flex align-items-center py-2"
href="javascript:void(0);">
<i class="fas fa-cog me-3 text-primary"></i>
<span><?= _("Paramètres") ?></span>
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item d-flex align-items-center py-2 text-danger"
href="javascript:deconnexion();">
<i class="fas fa-sign-out-alt me-3"></i>
<span><?= _("Déconnexion") ?></span>
</a>
</div>
</li>
</ul>
</nav>
</div>
</header>
<!-- End Header -->

View File

@ -15,4 +15,4 @@
<link href="<?=$racineWeb?>Bootstrap_new/css/select2.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css">
<link href="<?=$racineWeb?>Bootstrap_new/css/theme-modern.css?ver=2026.02.23.07" rel="stylesheet">
<link href="<?=$racineWeb?>Bootstrap_new/css/theme-modern.css?ver=2026.02.23.08" rel="stylesheet">

View File

@ -1,106 +0,0 @@
<!-- ======= Sidebar ======= -->
<aside id="sidebar" class="sidebar shadow-lg">
<div class="sidebar-header py-3 px-4 border-bottom">
<div class="d-flex align-items-center">
<div class="avatar-sm bg-primary bg-opacity-10 rounded-circle d-flex align-items-center justify-content-center me-3">
<i class="fas fa-user-md text-primary"></i>
</div>
<div>
<h6 class="mb-0 fw-bold"><?= _("Navigation") ?></h6>
<small class="text-muted"><?= _("Portail Gestionnaire") ?></small>
</div>
</div>
</div>
<div class="sidebar-body">
<ul class="sidebar-nav list-unstyled" id="sidebar-nav">
<?php foreach ($menus as $key0 => $menuParent): ?>
<?php
$menuChildrenLevelOne = $gabary->get_menus_by_parent_code($menuParent['vue']);
$hasChildren = sizeof($menuChildrenLevelOne) > 0;
$isActiveParent = strtolower($menuParent['libeleMenu']) == strtolower($activeLevel1);
?>
<?php if ($hasChildren): ?>
<!-- Menu avec sous-menus -->
<li class="nav-item mb-1">
<a class="nav-link d-flex align-items-center justify-content-between py-3 px-4
<?= $isActiveParent ? 'active-main' : '' ?>"
data-bs-toggle="collapse"
href="#menu-<?= $menuParent['codeMenu'] . $key0 ?>"
role="button"
aria-expanded="<?= $isActiveParent ? 'true' : 'false' ?>"
aria-controls="menu-<?= $menuParent['codeMenu'] . $key0 ?>">
<div class="d-flex align-items-center">
<div class="icon-wrapper bg-primary bg-opacity-10 rounded-circle d-flex align-items-center justify-content-center me-3"
style="width: 36px; height: 36px;">
<i class="<?= $menuParent['icone'] ?> text-primary"></i>
</div>
<span class="fw-medium"><?= $menuParent['libeleMenu'] ?></span>
</div>
<!-- Icône avec rotation CSS pure -->
<i class="fas fa-chevron-down sidebar-chevron <?= $isActiveParent ? 'sidebar-chevron-rotated' : '' ?>"></i>
</a>
<div class="collapse <?= $isActiveParent ? 'show' : '' ?>"
id="menu-<?= $menuParent['codeMenu'] . $key0 ?>">
<ul class="list-unstyled ps-4 py-2 bg-light rounded">
<?php foreach ($menuChildrenLevelOne as $key1 => $menuChild): ?>
<?php
$link_clean = explode('/', $menuChild['lienMenu'])[0];
$activeLink = $_SESSION['firstLevelMenu'] ?? '';
$isActiveChild = $link_clean == $activeLink;
?>
<li class="mb-1">
<a class="nav-link-sub d-flex align-items-center py-2 px-3 rounded
<?= $isActiveChild ? 'active-submenu bg-primary text-white' : 'text-dark' ?>"
href="<?= $menuChild['lienMenu'] ?>">
<i class="fas fa-circle me-2" style="font-size: 0.5rem;"></i>
<span><?= $menuChild['libeleMenu'] ?></span>
<?php if ($isActiveChild): ?>
<i class="fas fa-arrow-right ms-auto"></i>
<?php endif; ?>
</a>
</li>
<?php endforeach; ?>
</ul>
</div>
</li>
<?php else: ?>
<!-- Menu sans sous-menus (comme Quitter) -->
<li class="nav-item mb-1">
<a class="nav-link d-flex align-items-center justify-content-between py-3 px-4
<?= $isActiveParent ? 'active-main' : '' ?>"
href="<?= $menuParent['lienMenu'] ?>">
<div class="d-flex align-items-center">
<div class="icon-wrapper bg-primary bg-opacity-10 rounded-circle d-flex align-items-center justify-content-center me-3"
style="width: 36px; height: 36px;">
<i class="<?= $menuParent['icone'] ?> text-primary"></i>
</div>
<span class="fw-medium"><?= $menuParent['libeleMenu'] ?></span>
</div>
<!-- Flèche uniquement si le menu est actif -->
<?php if ($isActiveParent): ?>
<i class="fas fa-arrow-right ms-auto text-primary"></i>
<?php endif; ?>
</a>
</li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
</div>
<div class="sidebar-footer p-4 border-top bg-light">
<div class="d-grid">
<button class="btn btn-outline-primary d-flex align-items-center justify-content-center py-2"
onclick="javascript:window.open('Guideutilisation/', '_blank');">
<i class="fas fa-question-circle me-2"></i>
<?= _("Aide & Support") ?>
</button>
</div>
<div class="mt-3 text-center">
<small class="text-muted">v<?= $_SESSION['version_C'] ?? '1.0.4' ?></small>
</div>
</div>
</aside>
<!-- End Sidebar -->