gf
This commit is contained in:
parent
ebedac25d9
commit
5538f3b182
|
|
@ -1,117 +1,23 @@
|
|||
/* --- Structure Globale --- */
|
||||
:root {
|
||||
--primary-color: #0088cf;
|
||||
--bg-workspace: #f6f9ff;
|
||||
--sidebar-width: 280px;
|
||||
--card-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
|
||||
--sidebar-bg: #2c3e50; /* Couleur sombre pro pour trancher avec le contenu */
|
||||
--header-height: 60px;
|
||||
--sidebar-bg: #2c3e50;
|
||||
--main-bg: #f6f9ff;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: var(--bg-workspace) !important;
|
||||
font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
|
||||
background-color: var(--main-bg);
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
}
|
||||
|
||||
/* Modernisation des inputs */
|
||||
.form-control, .form-select {
|
||||
border-radius: 8px;
|
||||
border: 1px solid #dee2e6;
|
||||
padding: 0.6rem 0.75rem;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.form-control:focus {
|
||||
border-color: var(--primary-color);
|
||||
box-shadow: 0 0 0 0.25rem rgba(0, 136, 207, 0.1);
|
||||
}
|
||||
|
||||
/* Suppression du look "Tableau de bord 2010" pour les fieldsets */
|
||||
fieldset {
|
||||
background: #fff;
|
||||
border-radius: 12px;
|
||||
padding: 1.5rem;
|
||||
box-shadow: var(--card-shadow);
|
||||
border: none;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
legend {
|
||||
float: none;
|
||||
width: auto;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 700;
|
||||
color: var(--primary-color);
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
/* Style des cartes pour remplacer les fieldsets */
|
||||
.card-modern {
|
||||
background: #ffffff;
|
||||
border: none;
|
||||
border-radius: 10px;
|
||||
box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
/* On épure le scrollbar pour le côté moderne */
|
||||
::-webkit-scrollbar {
|
||||
width: 6px;
|
||||
}
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: #ccc;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
background-color: #2c3e50 !important; /* Couleur pro */
|
||||
padding-top: 20px;
|
||||
}
|
||||
.sidebar-nav .nav-link {
|
||||
background: transparent;
|
||||
color: #ecf0f1;
|
||||
font-weight: 500;
|
||||
transition: 0.3s;
|
||||
}
|
||||
.sidebar-nav .nav-link:hover, .sidebar-nav .nav-link.active-main {
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
color: var(--primary-color);
|
||||
border-left: 4px solid var(--primary-color);
|
||||
}
|
||||
.sidebar-nav .nav-content a {
|
||||
padding-left: 45px;
|
||||
font-size: 0.9rem;
|
||||
color: #bdc3c7;
|
||||
}
|
||||
|
||||
.nav-scroller {
|
||||
scrollbar-width: none; /* Cache la barre de scroll sur Firefox */
|
||||
}
|
||||
.nav-scroller::-webkit-scrollbar {
|
||||
display: none; /* Cache la barre de scroll sur Chrome/Safari */
|
||||
}
|
||||
|
||||
/* Espacement du Main */
|
||||
#main {
|
||||
margin-top: 60px; /* Hauteur du header */
|
||||
padding: 20px 0;
|
||||
min-height: calc(100vh - 60px);
|
||||
background-color: #f6f9ff;
|
||||
transition: all 0.3s;
|
||||
min-height: calc(100vh - 60px);
|
||||
}
|
||||
|
||||
/* Style du fil d'ariane */
|
||||
.breadcrumb-item + .breadcrumb-item::before {
|
||||
content: "\f105" !important; /* Symbole FontAwesome > */
|
||||
font-family: "Font Awesome 5 Free";
|
||||
font-weight: 900;
|
||||
padding-right: 12px;
|
||||
color: #adb5bd;
|
||||
}
|
||||
|
||||
/* Onglets fluides */
|
||||
.nav-scroller {
|
||||
white-space: nowrap;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
/* --- Fil d'Ariane & Onglets --- */
|
||||
.breadcrumb-container .breadcrumb {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.sub-nav-link {
|
||||
|
|
@ -123,28 +29,13 @@ legend {
|
|||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.sub-nav-link:hover {
|
||||
color: #0088cf;
|
||||
.sub-nav-link:hover, .active-tab {
|
||||
color: var(--primary-color) !important;
|
||||
border-bottom: 3px solid var(--primary-color) !important;
|
||||
background: rgba(0, 136, 207, 0.05);
|
||||
}
|
||||
|
||||
.active-tab {
|
||||
color: #0088cf !important;
|
||||
border-bottom: 3px solid #0088cf !important;
|
||||
background: rgba(0, 136, 207, 0.08);
|
||||
}
|
||||
|
||||
/* Animation douce lors du changement de page */
|
||||
#contenu {
|
||||
animation: fadeIn 0.4s ease-in-out;
|
||||
}
|
||||
|
||||
@keyframes fadeIn {
|
||||
from { opacity: 0; transform: translateY(10px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
/* Bouton flottant Chatbot */
|
||||
/* --- Chatbot & Contexte (Droite) --- */
|
||||
.chatbot-trigger {
|
||||
position: fixed;
|
||||
bottom: 30px;
|
||||
|
|
@ -152,7 +43,7 @@ legend {
|
|||
width: 60px;
|
||||
height: 60px;
|
||||
border-radius: 50%;
|
||||
background: #0088cf;
|
||||
background: var(--primary-color);
|
||||
color: white;
|
||||
border: none;
|
||||
z-index: 1060;
|
||||
|
|
@ -162,15 +53,21 @@ legend {
|
|||
font-size: 24px;
|
||||
}
|
||||
|
||||
.badge-msg-count {
|
||||
.pulse {
|
||||
position: absolute;
|
||||
top: -5px;
|
||||
right: -5px;
|
||||
font-size: 0.7rem;
|
||||
border: 2px solid white;
|
||||
width: 100%; height: 100%;
|
||||
border-radius: 50%;
|
||||
background: var(--primary-color);
|
||||
opacity: 0.6;
|
||||
animation: pulse-animation 2s infinite;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
@keyframes pulse-animation {
|
||||
0% { transform: scale(1); opacity: 0.6; }
|
||||
100% { transform: scale(1.6); opacity: 0; }
|
||||
}
|
||||
|
||||
/* Sidebar Contextuelle */
|
||||
.context-sidebar {
|
||||
position: fixed;
|
||||
top: 60px;
|
||||
|
|
@ -182,49 +79,24 @@ legend {
|
|||
transition: all 0.4s cubic-bezier(0.05, 0.74, 0.2, 0.99);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
border-left: 1px solid #e0e6ed;
|
||||
}
|
||||
|
||||
.context-sidebar.active {
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.context-header {
|
||||
padding: 15px;
|
||||
background: white;
|
||||
}
|
||||
.context-sidebar.active { right: 0; }
|
||||
|
||||
.section-label {
|
||||
font-size: 10px;
|
||||
font-weight: 800;
|
||||
color: #8e9db5;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.5px;
|
||||
margin-bottom: 5px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.info-card {
|
||||
transition: transform 0.2s;
|
||||
}
|
||||
|
||||
.info-card:hover {
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
.stats-grid {
|
||||
font-size: 9px;
|
||||
letter-spacing: -0.2px;
|
||||
}
|
||||
|
||||
.btn-close-context {
|
||||
border: none;
|
||||
background: transparent;
|
||||
color: #adb5bd;
|
||||
font-size: 1.5rem;
|
||||
transition: 0.2s;
|
||||
}
|
||||
|
||||
.btn-close-context:hover {
|
||||
color: #0088cf;
|
||||
transform: translateX(3px);
|
||||
/* --- Sidebar Gauche --- */
|
||||
.sidebar {
|
||||
width: 250px;
|
||||
background-color: var(--sidebar-bg);
|
||||
min-height: 100vh;
|
||||
}
|
||||
.toggle-sidebar .sidebar { margin-left: -250px; }
|
||||
142
Vue/contexte.php
142
Vue/contexte.php
|
|
@ -1,125 +1,49 @@
|
|||
<input type="text" class="sr-only" id="numeroClient_C" name="numeroClient_C" value="<?= $this->nettoyer($_SESSION['numeroClient_C']) ?>">
|
||||
<input type="text" class="sr-only" id="codeGcAssureur_C" NAME="codeGcAssureur_C" value="<?= $this->nettoyer($_SESSION['codeGcAssureur_C']) ?>">
|
||||
|
||||
<button class="chatbot-trigger shadow-lg" id="showSideNav" title="<?= _("Afficher contexte")?>">
|
||||
<button class="chatbot-trigger shadow-lg" id="showSideNav">
|
||||
<div class="pulse"></div>
|
||||
<i class="fa-solid fa-id-card"></i>
|
||||
<span class="badge rounded-pill bg-danger badge-msg-count" id="badge_notif_msg">0</span>
|
||||
<span class="badge rounded-pill bg-danger badge-msg-count" id="badge_notif_msg" style="display:none">0</span>
|
||||
</button>
|
||||
|
||||
<div id="barre_laterale_d" class="context-sidebar shadow-lg">
|
||||
<div class="context-header d-flex align-items-center justify-content-between border-bottom">
|
||||
<div class="d-flex align-items-center text-primary">
|
||||
<i class="fa fa-cog fa-spin me-2"></i>
|
||||
<span class="fw-bold small text-uppercase"><?= _("Gestion du Contexte") ?></span>
|
||||
</div>
|
||||
<button class="btn-close-context" id="hideSideNav">
|
||||
<i class="fa-solid fa-angle-double-right"></i>
|
||||
</button>
|
||||
<div class="context-header d-flex align-items-center justify-content-between p-3 border-bottom bg-white">
|
||||
<span class="fw-bold text-primary small"><i class="fa fa-cog fa-spin me-2"></i>CONTEXTE</span>
|
||||
<button class="btn-close-context border-0 bg-transparent" id="hideSideNav"><i class="fa-solid fa-angle-double-right fs-4"></i></button>
|
||||
</div>
|
||||
|
||||
<div class="context-body p-3">
|
||||
<div class="context-section mb-3">
|
||||
<label class="section-label"><?= _("Garant & Souscripteur") ?></label>
|
||||
<div class="info-card p-2 border-start border-primary border-4 shadow-sm bg-white rounded">
|
||||
<div class="mb-2">
|
||||
<div class="d-flex justify-content-between align-items-start">
|
||||
<small class="text-muted"><i class="fas fa-user-shield me-1"></i> <?= _("Garant") ?></small>
|
||||
<a href="javascript:afficher_garant('<?=$this->nettoyer($_SESSION['codeGcAssureur_C']);?>');" class="badge bg-light text-primary text-decoration-none border"><?= $this->nettoyer($_SESSION['codeGcAssureur_C']) ?></a>
|
||||
</div>
|
||||
<button class="btn btn-sm btn-light w-100 text-truncate fw-bold mt-1 text-start" onclick="javascript:afficher_garant('<?=$this->nettoyer($_SESSION['codeGcAssureur_C']);?>');">
|
||||
<?= $_SESSION['nomGcAssureur_C'] ?: "N/A" ?>
|
||||
</button>
|
||||
</div>
|
||||
<div>
|
||||
<div class="d-flex justify-content-between align-items-start">
|
||||
<small class="text-muted"><i class="fas fa-user-tie me-1"></i> <?= _("Souscripteur") ?></small>
|
||||
<a href="javascript:afficher_client_id();" class="badge bg-light text-primary text-decoration-none border"><?= $this->nettoyer($_SESSION['numeroClient_C']) ?></a>
|
||||
</div>
|
||||
<button class="btn btn-sm btn-light w-100 text-truncate fw-bold mt-1 text-start" onclick="javascript:afficher_client_id();">
|
||||
<?= $this->nettoyer($_SESSION['nomClient_C']) ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="context-section mb-3">
|
||||
<label class="section-label"><?= _("Détails Police") ?></label>
|
||||
<button class="btn btn-primary btn-sm w-100 mb-2 shadow-sm" id="numeroPolice_C" name="numeroPolice_C" onclick="javascript:afficher_police_id();" title="<?= _("Couverture").": ".dateLang($_SESSION['dateEffet_C'], $_SESSION['lang']).' - '.dateLang($_SESSION['dateEcheance_C'], $_SESSION['lang'])?>">
|
||||
<i class="fa fa-file-text me-1"></i> <?= _("Police")." : ".$this->nettoyer($_SESSION['numeroPolice_C']) ?>
|
||||
<div class="context-body p-3 overflow-auto">
|
||||
<label class="section-label"><?= _("Garant & Souscripteur") ?></label>
|
||||
<div class="card border-0 shadow-sm p-2 mb-3">
|
||||
<button class="btn btn-sm btn-light text-start mb-1" onclick="javascript:afficher_garant('<?=$this->nettoyer($_SESSION['codeGcAssureur_C']);?>');">
|
||||
<i class="fas fa-user-shield me-2"></i><?= $_SESSION['nomGcAssureur_C'] ?>
|
||||
</button>
|
||||
<button class="btn btn-sm btn-light text-start" onclick="javascript:afficher_client_id();">
|
||||
<i class="fas fa-user-tie me-2"></i><?= $this->nettoyer($_SESSION['nomClient_C']) ?>
|
||||
</button>
|
||||
<div class="stats-grid text-center small fw-bold text-white py-1 bg-secondary rounded shadow-sm">
|
||||
<?= _("Fam.")." [".format_N($_SESSION['ndAdh_C'])."] | ". _("Dép.")." [".format_N($_SESSION['ndDep_C'])."] | ". _("Bén.")." [".format_N($_SESSION['ndActif_C'])."]" ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="context-section mb-3">
|
||||
<label class="section-label"><?= _("Famille & Bénéficiaire") ?></label>
|
||||
<div class="info-card p-2 shadow-sm bg-white rounded border-top border-info border-3">
|
||||
<div class="photo-container text-center mb-2">
|
||||
<?php if ($_SESSION['faceRegistered_C']=="1" && $_SESSION['idBeneficiaire_C'] > "0"): ?>
|
||||
<img src="data:image/jpg;base64,<?=$imgData?>" class="img-fluid rounded-circle border border-3 border-light shadow-sm" style="width: 80px; height: 80px; object-fit: cover;" data-bs-toggle="modal" data-bs-target="#pop_photo">
|
||||
<?php else: ?>
|
||||
<div class="bg-light rounded-circle mx-auto d-flex align-items-center justify-content-center border" style="width: 60px; height: 60px;">
|
||||
<i class="fa fa-user fa-2x text-muted opacity-25"></i>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<button class="btn btn-outline-info btn-sm w-100 mb-1 text-truncate" onclick="javascript:afficher_adherent_id();" title="<?= $this->nettoyer($_SESSION['adherent_C']) ?>">
|
||||
<i class="fa-solid fa-users"></i> <?= $this->nettoyer($_SESSION['numeroAdherent_C']) ?>
|
||||
</button>
|
||||
<button class="btn btn-info btn-sm w-100 text-truncate text-white fw-bold" onclick="javascript:afficher_beneficiaire_id();" title="<?= $this->nettoyer($_SESSION['beneficiaire_C']) ?>">
|
||||
<i class="fa-solid fa-user"></i> <?= $this->nettoyer($_SESSION['numeroBeneficiaire_C']) ?>
|
||||
</button>
|
||||
</div>
|
||||
<label class="section-label"><?= _("Contrat") ?></label>
|
||||
<button class="btn btn-primary btn-sm w-100 mb-3" onclick="javascript:afficher_police_id();">
|
||||
<i class="fa fa-file-text me-2"></i><?= $this->nettoyer($_SESSION['numeroPolice_C']) ?>
|
||||
</button>
|
||||
|
||||
<label class="section-label"><?= _("Bénéficiaire") ?></label>
|
||||
<div class="card border-0 shadow-sm p-3 text-center mb-3">
|
||||
<?php if ($_SESSION['faceRegistered_C']=="1" && $_SESSION['idBeneficiaire_C'] > "0"): ?>
|
||||
<img src="data:image/jpg;base64,<?=$imgData?>" class="rounded-circle mx-auto mb-2 border" style="width: 70px; height: 70px; object-fit: cover;" data-bs-toggle="modal" data-bs-target="#pop_photo">
|
||||
<?php endif; ?>
|
||||
<div class="fw-bold small"><?= $this->nettoyer($_SESSION['beneficiaire_C']) ?></div>
|
||||
<div class="text-muted small mb-2">ID: <?= $this->nettoyer($_SESSION['numeroBeneficiaire_C']) ?></div>
|
||||
<button class="btn btn-info btn-sm w-100 text-white" onclick="javascript:afficher_beneficiaire_id();">Profil complet</button>
|
||||
</div>
|
||||
|
||||
<div class="context-section mb-3">
|
||||
<div class="card border-0 shadow-sm bg-light">
|
||||
<div class="card-body p-2">
|
||||
<h6 class="small fw-bold text-primary mb-2"><i class="bi bi-clock-history me-1"></i><?= _("Dernières polices") ?></h6>
|
||||
<ul class="list-unstyled mb-2" style="max-height: 100px; overflow-y: auto;">
|
||||
<?php foreach ($_SESSION['contextPolice'] as $contextPolice): ?>
|
||||
<li class="small mb-1 border-bottom pb-1">
|
||||
<a href="javascript:selectionner_police(<?= $contextPolice['idPolice'] ?>,'<?= $contextPolice['numeroPolice'] ?>');afficher_police_id();" class="text-decoration-none text-dark d-block text-truncate">
|
||||
<i class="fa fa-history fa-xs text-muted"></i> <?= htmlspecialchars($contextPolice['libellePolice']) ?>
|
||||
</a>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
<button class="btn btn-outline-primary btn-sm w-100 shadow-sm" onclick="javascript:gerer_messagerie();">
|
||||
<?= _("Gérer Messages") ?> <i class="fa fa-comments"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="text-center py-2 border-top">
|
||||
<a href="javascript:change_password();" class="text-decoration-none group">
|
||||
<div class="p-2 bg-white rounded-circle shadow-sm d-inline-flex border mb-1">
|
||||
<img src="Bootstrap_new/images/pwd.png" style="width:20px;">
|
||||
</div>
|
||||
<div class="small fw-bold text-secondary"><?= _("Sécurité") ?></div>
|
||||
<button class="btn btn-outline-primary btn-sm w-100 mb-2" onclick="javascript:gerer_messagerie();">
|
||||
<?= _("Messages") ?> <i class="fa fa-comments ms-1"></i>
|
||||
</button>
|
||||
<div class="text-center mt-3">
|
||||
<a href="javascript:change_password();" class="text-decoration-none">
|
||||
<img src="Bootstrap_new/images/pwd.png" style="width:25px;" class="mb-1"><br>
|
||||
<span class="small text-muted">Sécurité</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<?php if ($_SESSION['modeDevis']=="1"): ?>
|
||||
<div class="mt-3 p-2 rounded" style="background-color: #ff00ff20; border: 1px dashed #ff00ff;">
|
||||
<div class="text-center fw-bold small mb-2" style="color: #ff00ff;"><?= _("MODE COTATION") ?></div>
|
||||
<button class="btn btn-sm w-100 mb-1 text-white" style="background-color: #ff00ff;" onclick="javascript:afficher_client_d_id();">
|
||||
<i class="fa fa-user-times"></i> <?= $this->nettoyer($_SESSION['numeroClient_d_C']) ?>
|
||||
</button>
|
||||
<button class="btn btn-sm btn-outline-dark w-100 text-truncate small" onclick="javascript:afficher_police_d_id_init();">
|
||||
<i class="fa fa-file-text"></i> <?= $this->nettoyer($_SESSION['numeroPolice_d_C']) ?>
|
||||
</button>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
<footer class="p-2 bg-light mt-auto border-top">
|
||||
<div id="nbMessagesNonLus">
|
||||
<input class='sr-only timer' id="timer" name="timer" type="button" value="0">
|
||||
<input class="sr-only" type="text" id="msgNonLus" name="msgNonLus" value="0">
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
|
@ -23,75 +23,67 @@
|
|||
$modeDev = $_SESSION['modeDev_C'];
|
||||
|
||||
$imgData = $_SESSION['photoAssureCrypte'];
|
||||
//
|
||||
|
||||
?>
|
||||
|
||||
<!doctype html>
|
||||
<html lang="fr">
|
||||
|
||||
<?php require_once 'head.php'; ?>
|
||||
<body class="d-flex flex-column min-vh-100 bg-light">
|
||||
|
||||
<body class="d-flex flex-column min-vh-100">
|
||||
|
||||
<?php include 'header.php'; ?>
|
||||
|
||||
<div class="d-flex flex-grow-1" style="margin-top: 60px;">
|
||||
<?php include 'sidebar.php'; ?>
|
||||
|
||||
<main id="main" class="main">
|
||||
<input class="sr-only" type="text" id="vue" name="vue" value="<?= isset($_SESSION['vue']) ? $_SESSION['vue'] : ""; ?>">
|
||||
<input class="sr-only" type="text" id="racineWeb" name="racineWeb" value="<?= $racineWeb ?>">
|
||||
<input class="sr-only" type="text" id="dureeSession" name="dureeSession" value="<?= $_SESSION['dureeSession'] ?>">
|
||||
<input class="sr-only" type="text" id="is_connecte" name="is_connecte" value="<?= $_SESSION['is_connecte'] ?>">
|
||||
|
||||
<div id="div_entite" class="sr-only"></div>
|
||||
<div class="container-fluid p-0">
|
||||
<main id="main" class="main flex-grow-1 p-0">
|
||||
<input class="sr-only" type="text" id="vue" value="<?= $_SESSION['vue'] ?? "" ?>">
|
||||
<input class="sr-only" type="text" id="racineWeb" value="<?= $racineWeb ?>">
|
||||
<input class="sr-only" type="text" id="dureeSession" value="<?= $_SESSION['dureeSession'] ?>">
|
||||
|
||||
<div class="container-fluid p-3">
|
||||
<?php
|
||||
$infovue = $gabary->getInfosVue($_SESSION['vue']);
|
||||
$descriptionVue = est_anglophone() ? $infovue['DescriptionEng'] : $infovue['Description'];
|
||||
$titreRetour = est_anglophone() ? $infovue['titreRetourEng'] : $infovue['titreRetour'];
|
||||
$retourVue = $infovue['lienRetour'];
|
||||
?>
|
||||
|
||||
<div class="breadcrumb-container mb-4 px-3">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb bg-white shadow-sm rounded-pill py-2 px-4 border-0">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="<?= $retourVue; ?>" class="text-decoration-none text-muted small">
|
||||
<i class="fa fa-chevron-left me-1"></i> <?= $titreRetour ?>
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active text-primary fw-bold small text-uppercase" aria-current="page">
|
||||
<?= $descriptionVue ?>
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
<nav aria-label="breadcrumb" class="mb-4 px-2">
|
||||
<ol class="breadcrumb bg-white shadow-sm rounded-pill py-2 px-4 border-0">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="<?= $retourVue; ?>" class="text-decoration-none text-muted small">
|
||||
<i class="fa fa-chevron-left me-1"></i> <?= $titreRetour ?>
|
||||
</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active text-primary fw-bold small text-uppercase" aria-current="page">
|
||||
<?= $descriptionVue ?>
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
||||
<?php if (sizeof($menusvue) > 0): ?>
|
||||
<div class="tabs-container mb-4 px-3">
|
||||
<div class="card border-0 shadow-sm rounded-3 overflow-hidden">
|
||||
<div class="card-body p-0">
|
||||
<div class="d-flex overflow-auto nav-scroller">
|
||||
<?php foreach ($menusvue as $menu):
|
||||
$isSubActive = (basename($_SERVER['REQUEST_URI']) == basename($menu['lienMenu']));
|
||||
$activeClass = $isSubActive ? 'active-tab' : '';
|
||||
?>
|
||||
<a class="sub-nav-link p-3 <?= $activeClass ?>"
|
||||
title="<?= $menu['descriptionMenu']; ?>"
|
||||
href="<?= $menu['lienMenu']; ?>">
|
||||
<?= $menu['libeleMenu'] ?>
|
||||
</a>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<div class="tabs-container mb-4 px-2">
|
||||
<div class="card border-0 shadow-sm rounded-3">
|
||||
<div class="d-flex overflow-auto nav-scroller">
|
||||
<?php foreach ($menusvue as $menu):
|
||||
$activeClass = (basename($_SERVER['REQUEST_URI']) == basename($menu['lienMenu'])) ? 'active-tab' : '';
|
||||
?>
|
||||
<a class="sub-nav-link p-3 <?= $activeClass ?>" href="<?= $menu['lienMenu']; ?>">
|
||||
<?= $menu['libeleMenu'] ?>
|
||||
</a>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<section class="section main-dashboard px-3">
|
||||
<section class="section main-dashboard px-2">
|
||||
<div id="contenu" class="animate__animated animate__fadeIn">
|
||||
<div id="div_test_gabarit"></div>
|
||||
<?= $contenu ?>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</main>
|
||||
|
|
@ -175,12 +167,10 @@
|
|||
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
// 1. GESTION DU SIDEBAR GAUCHE (MENU)
|
||||
$('.toggle-sidebar-btn').on('click', function() {
|
||||
$('body').toggleClass('toggle-sidebar');
|
||||
});
|
||||
|
||||
// 2. GESTION DE L'ASSISTANT CONTEXTUEL (CHATBOT - DROITE)
|
||||
$("#showSideNav").click(function() {
|
||||
$("#barre_laterale_d").addClass("active");
|
||||
$(this).fadeOut(200);
|
||||
|
|
@ -191,28 +181,17 @@
|
|||
$("#showSideNav").fadeIn(200);
|
||||
});
|
||||
|
||||
// 3. SYNCHRONISATION DU BADGE DE MESSAGERIE
|
||||
function syncBadge() {
|
||||
var count = $("#msgNonLus").val();
|
||||
if(count > 0) {
|
||||
$("#badge_notif_msg").text(count).fadeIn();
|
||||
} else {
|
||||
$("#badge_notif_msg").hide();
|
||||
}
|
||||
if(count > 0) { $("#badge_notif_msg").text(count).show(); }
|
||||
else { $("#badge_notif_msg").hide(); }
|
||||
}
|
||||
// Mise à jour du badge toutes les 2 secondes
|
||||
setInterval(syncBadge, 2000);
|
||||
|
||||
// 4. INITIALISATION MÉTIER & TIMERS EXISTANTS
|
||||
// Charge les données initiales du gabarit
|
||||
raffraichier_gabarit();
|
||||
|
||||
// Timer de rafraîchissement de la messagerie (toutes les 60s)
|
||||
$('#timer').timer({
|
||||
duration: '60s',
|
||||
callback: function() {
|
||||
raffraichier_messagerie();
|
||||
},
|
||||
callback: function() { raffraichier_messagerie(); },
|
||||
repeat: true
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
<link href="Bootstrap_new/css/select2.min.css" rel="stylesheet">
|
||||
<link href="https://cdn.jsdelivr.net/npm/sweetalert2@11/dist/sweetalert2.min.css" rel="stylesheet">
|
||||
<link rel="stylesheet" href="Bootstrap_new/datatables/datatable.min.css" crossorigin="anonymous">
|
||||
<link href="Bootstrap_new/css/style_moderne.css?ver=2026.02.02.00" rel="stylesheet">
|
||||
<link href="Bootstrap_new/css/style_moderne.css?ver=2026.02.02.02" rel="stylesheet">
|
||||
|
||||
<!-- Libraries -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||
|
|
|
|||
|
|
@ -8,31 +8,28 @@
|
|||
}
|
||||
$flag = (est_anglophone()) ? 'england.png' : 'france.png';
|
||||
?>
|
||||
<header id="header" class="header fixed-top d-flex align-items-center shadow-sm" style="background: #fff; border-bottom: 1px solid #e0e0e0;">
|
||||
<div class="d-flex align-items-center justify-content-between px-3" style="width: 280px;">
|
||||
<header id="header" class="header fixed-top d-flex align-items-center bg-white shadow-sm" style="<?= $style ?>">
|
||||
<div class="d-flex align-items-center justify-content-between px-3">
|
||||
<a class="logo d-flex align-items-center text-decoration-none">
|
||||
<img src="Bootstrap_new/images/new/favicon.png" alt="" style="max-height: 35px;">
|
||||
<span class="d-none d-lg-block ms-2 fw-bold" style="color: var(--primary-color); letter-spacing: 1px;">INTER SANTÉ</span>
|
||||
<img src="Bootstrap_new/images/new/favicon.png" alt="Logo" style="max-height: 35px;"/>
|
||||
<span class="d-none d-lg-block ms-2 fw-bold text-primary">INTER SANTE</span>
|
||||
</a>
|
||||
<i class="bi bi-list toggle-sidebar-btn fs-4 cursor-pointer"></i>
|
||||
<i class="bi bi-list toggle-sidebar-btn fs-3 ms-4 cursor-pointer" style="cursor:pointer"></i>
|
||||
</div>
|
||||
|
||||
<nav class="header-nav ms-auto px-4">
|
||||
<nav class="header-nav ms-auto px-3">
|
||||
<ul class="d-flex align-items-center list-unstyled mb-0">
|
||||
<li class="nav-item dropdown pe-3">
|
||||
<a class="nav-link" href="#" data-bs-toggle="dropdown">
|
||||
<img src="Bootstrap_new/images/<?= $flag ?>" alt="<?= $alt ?>" width="20">
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-menu-end shadow border-0">
|
||||
<li><a class="dropdown-item" href="javascript:change_langue();"><i class="fa fa-exchange me-2"></i><?= _("Switch to English") ?></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link nav-profile d-flex align-items-center" href="#" data-bs-toggle="dropdown">
|
||||
<div class="rounded-circle d-flex align-items-center justify-content-center bg-primary text-white shadow-sm" style="width: 35px; height: 35px; font-size: 0.8rem; font-weight: bold;">
|
||||
<?= $_SESSION['userInitials_C']; ?>
|
||||
<a class="nav-link nav-profile d-flex align-items-center pe-0" href="#" data-bs-toggle="dropdown">
|
||||
<div class="bg-primary text-white rounded-circle d-flex align-items-center justify-content-center fw-bold" style="width: 35px; height: 35px;">
|
||||
<?php echo $_SESSION['userInitials_C']; ?>
|
||||
</div>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-arrow">
|
||||
<li class="dropdown-header"><h6><?= $_SESSION['utilisateur_C']; ?></h6></li>
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
<li><a class="dropdown-item d-flex align-items-center" href="javascript:change_password();"><i class="bi bi-gear"></i><span>Paramètres</span></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
|
|
|||
|
|
@ -1,40 +1,27 @@
|
|||
<aside id="sidebar" class="sidebar shadow">
|
||||
<ul class="sidebar-nav" id="sidebar-nav">
|
||||
<?php foreach ($menus as $key0 => $menuParent):
|
||||
$menuChildrenLevelOne = $gabary->get_menus_by_parent_code($menuParent['vue']);
|
||||
$hasChildren = (sizeof($menuChildrenLevelOne) > 0);
|
||||
$parentTarget = "menu-" . $menuParent['codeMenu'] . $key0;
|
||||
$isActiveParent = (strtolower($menuParent['libeleMenu']) == strtolower($activeLevel1));
|
||||
<aside id="sidebar" class="sidebar shadow-sm">
|
||||
<ul class="sidebar-nav p-2" id="sidebar-nav">
|
||||
<?php foreach ($menus as $key0 => $menuParent):
|
||||
$menuChildren = $gabary->get_menus_by_parent_code($menuParent['vue']);
|
||||
$hasChild = (sizeof($menuChildren) > 0);
|
||||
?>
|
||||
<li class="nav-item">
|
||||
<?php if ($hasChildren): ?>
|
||||
<a class="nav-link <?= $isActiveParent ? '' : 'collapsed' ?>"
|
||||
data-bs-target="#<?= $parentTarget ?>"
|
||||
data-bs-toggle="collapse" href="#">
|
||||
<i class="<?= $menuParent['icone']; ?> shadow-sm"></i>
|
||||
<span><?= $menuParent['libeleMenu'] ?></span>
|
||||
<i class="bi bi-chevron-down ms-auto"></i>
|
||||
</a>
|
||||
<ul id="<?= $parentTarget ?>"
|
||||
class="nav-content collapse <?= $isActiveParent ? 'show' : '' ?>"
|
||||
data-bs-parent="#sidebar-nav">
|
||||
<?php foreach ($menuChildrenLevelOne as $menuChild):
|
||||
$link_clean = explode('/', $menuChild['lienMenu'])[0];
|
||||
?>
|
||||
<li class="nav-item mb-1">
|
||||
<a class="nav-link <?= $hasChild ? 'collapsed' : '' ?> d-flex align-items-center text-white"
|
||||
<?= $hasChild ? 'data-bs-target="#menu'.$key0.'" data-bs-toggle="collapse"' : '' ?>
|
||||
href="<?= $hasChild ? '#' : $menuParent['lienMenu'] ?>">
|
||||
<i class="<?= $menuParent['icone']; ?> me-2"></i>
|
||||
<span><?= $menuParent['libeleMenu'] ?></span>
|
||||
<?php if($hasChild): ?><i class="bi bi-chevron-down ms-auto small"></i><?php endif; ?>
|
||||
</a>
|
||||
<?php if($hasChild): ?>
|
||||
<ul id="menu<?= $key0 ?>" class="nav-content collapse list-unstyled ps-4 py-1" data-bs-parent="#sidebar-nav">
|
||||
<?php foreach ($menuChildren as $menuChild): ?>
|
||||
<li>
|
||||
<a href="<?= $menuChild['lienMenu']; ?>"
|
||||
class="<?= ($link_clean == $activeLink) ? 'active' : ''; ?>">
|
||||
<i class="bi bi-circle"></i>
|
||||
<span><?= $menuChild['libeleMenu']; ?></span>
|
||||
<a href="<?= $menuChild['lienMenu']; ?>" class="text-white-50 text-decoration-none small d-block py-1">
|
||||
<i class="bi bi-circle me-2" style="font-size: 8px;"></i><?= $menuChild['libeleMenu']; ?>
|
||||
</a>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
<?php else: ?>
|
||||
<a class="nav-link <?= $isActiveParent ? '' : 'collapsed' ?>" href="<?= $menuParent['lienMenu']; ?>">
|
||||
<i class="<?= $menuParent['icone']; ?>"></i>
|
||||
<span><?= $menuParent['libeleMenu'] ?></span>
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user