This commit is contained in:
KONE SOREL 2026-02-23 14:12:14 +00:00
parent 70590f051a
commit 091f74499e
9 changed files with 492 additions and 295 deletions

View File

@ -1,107 +1,122 @@
<div class="container-fluid py-4"> <form id="frmrecherche" method="post" action="Recherche/index/">
<div class="card border-0 shadow-sm mb-4"> <div class="card shadow-sm mb-4">
<div class="card-header bg-white py-3"> <div class="card-header bg-white py-3">
<h5 class="mb-0 text-primary fw-bold"> <h5 class="card-title mb-0">
<i class="fas fa-search me-2"></i><?= _("Critères de recherche de l'assuré") ?> <i class="fas fa-search me-2" style="color: var(--primary-color);"></i>
<?= _("Critères de recherche de l'assuré") ?>
</h5> </h5>
</div> </div>
<div class="card-body"> <div class="card-body">
<form id="frmrecherche" name="frmrecherche" method="post" action="Recherche/index/"> <div class="row g-3">
<div class="row g-3"> <div class="col-md-3">
<div class="col-md-3"> <label class="form-label"><?= _("Numéro Bénéficiaire") ?></label>
<label class="form-label small fw-bold"><?= _("Numéro Bénéficiaire") ?></label> <input type="text" class="form-control" id="numeroBeneficiaire" name="numeroBeneficiaire" autofocus>
<input class="form-control" type="text" id="numeroBeneficiaire" name="numeroBeneficiaire" autofocus>
</div>
<div class="col-md-3">
<label class="form-label small fw-bold"><?= _("Numéro Famille") ?></label>
<input class="form-control" type="text" id="numeroAdherent" name="numeroAdherent">
</div>
<div class="col-md-3">
<label class="form-label small fw-bold"><?= _("Nom") ?></label>
<input class="form-control" type="text" id="nomBeneficiaire" name="nomBeneficiaire">
</div>
<div class="col-md-3">
<label class="form-label small fw-bold"><?= _("Prénoms") ?></label>
<input class="form-control" type="text" id="prenomsBeneficiaire" name="prenomsBeneficiaire">
</div>
<div class="col-md-3">
<label class="form-label small fw-bold">Tel</label>
<div class="input-group">
<span class="input-group-text bg-light"><i class="fa fa-phone fa-xs"></i></span>
<input class="form-control" type="text" id="telephonePortable" name="telephonePortable">
</div>
</div>
<div class="col-md-3">
<label class="form-label small fw-bold">E-mail</label>
<input class="form-control" type="email" id="email" name="email">
</div>
<div class="col-md-6 d-flex align-items-end justify-content-end">
<button type="submit" class="btn btn-primary px-4 shadow-sm">
<i class="fa fa-search me-2"></i> <?= _("Rechercher") ?>
</button>
</div>
</div> </div>
</form> <div class="col-md-3">
<label class="form-label"><?= _("Numéro Famille") ?></label>
<input type="text" class="form-control" id="numeroAdherent" name="numeroAdherent">
</div>
<div class="col-md-3">
<label class="form-label"><?= _("Nom") ?></label>
<input type="text" class="form-control" id="nomBeneficiaire" name="nomBeneficiaire">
</div>
<div class="col-md-3">
<label class="form-label"><?= _("Prénoms") ?></label>
<input type="text" class="form-control" id="prenomsBeneficiaire" name="prenomsBeneficiaire">
</div>
<div class="col-md-3">
<label class="form-label"><?= _("Tél.") ?></label>
<input type="text" class="form-control" id="telephonePortable" name="telephonePortable">
</div>
<div class="col-md-3">
<label class="form-label">E-mail</label>
<input type="email" class="form-control" id="email" name="email">
</div>
<div class="col-md-12 text-end">
<button type="submit" class="btn btn-primary px-5">
<i class="fas fa-search me-2"></i><?= _("Rechercher") ?>
</button>
</div>
</div>
</div> </div>
</div> </div>
<?php if (is_array($derniernumerobeneficiaires) && $derniernumerobeneficiaires['nouveau'] > 0): ?> <?php if (isset($derniernumerobeneficiaires) && $derniernumerobeneficiaires['nouveau'] > 0): ?>
<div class="alert alert-warning border-0 shadow-sm d-flex align-items-center" role="alert"> <div class="alert alert-warning alert-dismissible fade show" role="alert">
<i class="fa-solid fa-triangle-exclamation fs-4 me-3 text-danger"></i> <i class="fas fa-exclamation-triangle me-2"></i>
<div> <?= _("Cette carte") ?> => <?= $derniernumerobeneficiaires['ancien'] ?>
<strong><?= _("Alerte de remplacement") ?> :</strong> <?= _("a été déclarée perdue et remplacée par") ?> => <?= $derniernumerobeneficiaires['nouveau'] ?>.
<?= _("Carte") ?> <span class="badge bg-danger"><?= $derniernumerobeneficiaires['ancien'] ?></span> <?= _("Veuillez ne pas le communiquer sans autorisation.") ?>
<?= _("remplacée par") ?> <span class="badge bg-success"><?= $derniernumerobeneficiaires['nouveau'] ?></span>. <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
</div> </div>
<?php endif; ?> <?php endif; ?>
<div class="card border-0 shadow-sm"> <div class="d-flex justify-content-between align-items-center mb-3">
<div class="card-header bg-white d-flex justify-content-between align-items-center py-3"> <h5 class="mb-0"><?= _("Résultats de la recherche") ?></h5>
<h5 class="mb-0 fw-bold"><?= _("Résultats de la recherche") ?></h5> <?php if (isset($beneficiaires) && count($beneficiaires) > 0): ?>
<span class="badge bg-info"><?= count($beneficiaires) ?> <?= _("trouvés") ?></span> <span class="badge bg-primary"><?= count($beneficiaires) ?> <?= _("résultat(s)") ?></span>
</div> <?php endif; ?>
</div>
<?php if (isset($beneficiaires) && count($beneficiaires) > 0): ?>
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-hover align-middle mb-0"> <table class="table table-hover align-middle datatable">
<thead class="table-light"> <thead>
<tr class="small text-uppercase text-muted"> <tr>
<th><?= _("Bénéficiaire") ?></th> <th><?= _("Numéro Bénéficiaire") ?></th>
<th><?= _("Identité") ?></th> <th><?= _("Numéro Famille") ?></th>
<th><?= _("Parenté") ?></th> <th><?= _("Nom") ?></th>
<th class="text-center"><?= _("Infos") ?></th> <th><?= _("Prénoms") ?></th>
<th><?= _("Lien") ?></th>
<th><?= _("Naissance") ?></th>
<th><?= _("Genre") ?></th>
<th><?= _("Tél") ?></th>
<th><?= _("Souscripteur") ?></th> <th><?= _("Souscripteur") ?></th>
<th class="text-center"><?= _("État") ?></th> <th><?= _("Etat") ?></th>
<th></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<?php foreach ($beneficiaires as $beneficiaire): ?> <?php foreach ($beneficiaires as $beneficiaire):
<tr class="cursor-pointer" onclick="..." style="cursor: pointer;"> $idBeneficiaire = $this->nettoyer($beneficiaire['id']);
$numeroBeneficiaire = $this->nettoyer($beneficiaire['numeroBeneficiaire']);
?>
<tr onclick="selectionner_beneficiaire(<?= $idBeneficiaire ?>,'<?= $numeroBeneficiaire ?>');afficher_beneficiaire_id();" style="cursor: pointer;">
<td><span class="badge bg-light text-dark"><?= $numeroBeneficiaire ?></span></td>
<td><?= $this->nettoyer($beneficiaire['numeroAdherent']) ?></td>
<td><strong><?= $this->nettoyer($beneficiaire['nomBeneficiaire']) ?></strong></td>
<td><?= $this->nettoyer($beneficiaire['prenomsBeneficiaire']) ?></td>
<td><?= $this->nettoyer($beneficiaire['codeLienParente']) ?></td>
<td><?= dateLang($this->nettoyer($beneficiaire['dateNaissance'])) ?></td>
<td><?= $this->nettoyer($beneficiaire['sexe']) ?></td>
<td><?= $this->nettoyer($beneficiaire['telephonePortable']) ?></td>
<td><?= $this->nettoyer($beneficiaire['nomClient']) ?></td>
<td> <td>
<span class="fw-bold text-primary">#<?= $beneficiaire['numeroBeneficiaire'] ?></span><br>
<small class="text-muted">Fam: <?= $beneficiaire['numeroAdherent'] ?></small>
</td>
<td>
<div class="fw-bold"><?= strtoupper($beneficiaire['nomBeneficiaire']) ?></div>
<div class="small"><?= $beneficiaire['prenomsBeneficiaire'] ?></div>
</td>
<td><span class="badge bg-light text-dark border"><?= $beneficiaire['codeLienParente'] ?></span></td>
<td class="small text-center">
<?= $beneficiaire['sexe'] ?> | <?= dateLang($beneficiaire['dateNaissance']) ?><br>
<i class="fa fa-phone text-muted me-1"></i><?= $beneficiaire['telephonePortable'] ?>
</td>
<td class="small fw-bold"><?= $beneficiaire['nomClient'] ?></td>
<td class="text-center">
<?php <?php
$statusClass = ($beneficiaire['codeEtatBeneficiaire'] == 'ACTIF') ? 'bg-success' : 'bg-secondary'; $etat = $this->nettoyer($beneficiaire['codeEtatBeneficiaire']);
$badgeClass = match($etat) {
'ACT' => 'bg-success',
'SUS' => 'bg-warning',
'RAD' => 'bg-danger',
default => 'bg-secondary'
};
?> ?>
<span class="badge rounded-pill <?= $statusClass ?>"><?= $beneficiaire['codeEtatBeneficiaire'] ?></span> <span class="badge <?= $badgeClass ?>"><?= $etat ?></span>
</td>
<td>
<button class="btn btn-sm btn-outline-primary" onclick="event.stopPropagation();afficher_beneficiaire(<?= $idBeneficiaire ?>)">
<i class="fas fa-eye"></i>
</button>
</td> </td>
</tr> </tr>
<?php endforeach; ?> <?php endforeach; ?>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> <?php else: ?>
</div> <div class="text-center py-5 text-muted">
<i class="fas fa-search fa-3x mb-3"></i>
<p><?= _("Aucun résultat trouvé") ?></p>
</div>
<?php endif; ?>
</form>

View File

@ -1,30 +1,30 @@
<?php <?php
require_once 'gabarit_queries.php'; require_once 'gabarit_queries.php';
$gabary = new Gabary(); $gabary = new Gabary();
$_SESSION['firstLevelMenu']='';
$current_url = $_SERVER['REQUEST_URI'];
$elements = explode("/", $current_url);
$activeLink = $elements[1];
$fullPath = $gabary->get_full_path($activeLink);
$fullPath = explode("\ ", $fullPath);
$activeLevel1 = $activeLink;
$activeLevel2 = sizeof($fullPath)>1?$fullPath[1]:'';
$activeLevel3 =sizeof($fullPath)>2?$fullPath[2]:'';
$activeLevel4 = sizeof($fullPath)>3?$fullPath[3]:'';
$activeLevel5 = sizeof($fullPath)>4?$fullPath[4]:'';
$_SESSION['firstLevelMenu']=$activeLink;
const MAX_COMPANY_NAME_LENGTH = 20; $_SESSION['firstLevelMenu'] = '';
$current_url = $_SERVER['REQUEST_URI'];
$elements = explode("/", $current_url);
$activeLink = $elements[1];
$fullPath = $gabary->get_full_path($activeLink);
$fullPath = explode("\ ", $fullPath);
$companyDisplayName = htmlspecialchars($_SESSION['nomSociete'], ENT_QUOTES); $activeLevel1 = $activeLink;
$modeDev = $_SESSION['modeDev_C']; $activeLevel2 = sizeof($fullPath) > 1 ? $fullPath[1] : '';
$activeLevel3 = sizeof($fullPath) > 2 ? $fullPath[2] : '';
$imgData = $_SESSION['photoAssureCrypte']; $activeLevel4 = sizeof($fullPath) > 3 ? $fullPath[3] : '';
$activeLevel5 = sizeof($fullPath) > 4 ? $fullPath[4] : '';
$_SESSION['bdTests_C'] = "0"; $_SESSION['firstLevelMenu'] = $activeLink;
const MAX_COMPANY_NAME_LENGTH = 20;
$companyDisplayName = htmlspecialchars($_SESSION['nomSociete'], ENT_QUOTES);
$modeDev = $_SESSION['modeDev_C'];
$imgData = $_SESSION['photoAssureCrypte'];
// Pour l'exemple, on désactive le mode test, mais vous pouvez le laisser dynamique
$_SESSION['bdTests_C'] = "0";
?> ?>
<!doctype html> <!doctype html>
@ -38,17 +38,16 @@
<?php include('includes/header.php'); ?> <?php include('includes/header.php'); ?>
<?php include('includes/sidebar.php'); ?> <?php include('includes/sidebar.php'); ?>
<main id="main"> <main id="main" class="main">
<?php include('includes/main-navigation.php'); ?> <?php include('includes/main-navigation.php'); ?>
<div class="page-content"> <div class="page-content">
<?php $contenu ?> <?= $contenu ?>
</div> </div>
</main> </main>
<?php include('includes/barre-contexte.php'); ?> <?php include('includes/barre-contexte.php'); ?>
<?php include('includes/modals.php'); ?> <?php include('includes/modals.php'); ?>
<?php include('includes/scripts-footer.php'); ?> <?php include('includes/scripts-footer.php'); ?>
</body> </body>
</html> </html>

View File

@ -1,41 +1,123 @@
<div id="barre_laterale_d" class="sidenav-context"> <input type="hidden" id="numeroClient_C" value="<?= $this->nettoyer($_SESSION['numeroClient_C']) ?>">
<div class="context-inner"> <input type="hidden" id="codeGcAssureur_C" value="<?= $this->nettoyer($_SESSION['codeGcAssureur_C']) ?>">
<div class="d-flex justify-content-between align-items-center mb-4">
<h6 class="fw-800 text-uppercase mb-0 text-muted small tracking-widest"><?= _("Contexte Actif") ?></h6> <button class="btn-context-toggle" id="showSideNav" title="<?= _("Afficher contexte") ?>">
<i class="bi bi-x-circle-fill fs-5 text-muted cursor-pointer" id="hideSideNav"></i> <i class="fa-solid fa-angles-left"></i>
<i class="fa fa-cog fa-spin"></i>
</button>
<div id="barre_laterale_d" class="context-panel">
<div class="context-panel-header">
<button class="btn-close-context" id="hideSideNav">
<i class="fa fa-cog fa-spin me-2"></i>
<i class="fa-solid fa-angles-right"></i>
</button>
</div>
<div class="context-panel-body">
<!-- Garant -->
<div class="context-card">
<div class="context-card-title">
<i class="fas fa-user-shield"></i> <?= _("Garant") ?>
<a href="javascript:afficher_garant('<?= $this->nettoyer($_SESSION['codeGcAssureur_C']) ?>');" class="float-end">#<?= $_SESSION['codeGcAssureur_C'] ?></a>
</div>
<button class="btn btn-outline-primary w-100" onclick="afficher_garant('<?= $_SESSION['codeGcAssureur_C'] ?>')">
<?= $_SESSION['nomGcAssureur_C'] ?? '' ?>
</button>
</div> </div>
<div class="context-group mb-4"> <!-- Souscripteur -->
<label class="context-label"><?= _("Garant") ?></label> <div class="context-card">
<div class="context-value-box"> <div class="context-card-title">
<i class="bi bi-shield-check text-primary me-2"></i> <i class="fas fa-user-tie"></i> <?= _("Souscripteur") ?>
<span class="fw-bold"><?= $this->nettoyer($_SESSION['nomGcAssureur_C']) ?></span> <a href="javascript:afficher_client_id();" class="float-end">#<?= $_SESSION['numeroClient_C'] ?></a>
</div> </div>
<button class="btn btn-outline-primary w-100" onclick="afficher_client_id()">
<?= $_SESSION['nomClient_C'] ?>
</button>
</div> </div>
<?php if(!empty($_SESSION['numeroClient_C'])): ?> <!-- Police -->
<div class="context-group mb-4 assured-card" onclick="afficher_client_id();"> <div class="context-card">
<label class="context-label text-info"><?= _("Assuré en cours") ?></label> <button class="btn btn-primary w-100" onclick="afficher_police_id()">
<div class="d-flex align-items-center mt-2"> <i class="fa fa-file-text me-2"></i> <?= _("Police") ?> : <?= $_SESSION['numeroPolice_C'] ?>
<div class="photo-wrapper"> <br><small><?= dateLang($_SESSION['dateEffet_C'], $_SESSION['lang']) ?> - <?= dateLang($_SESSION['dateEcheance_C'], $_SESSION['lang']) ?></small>
<img src="<?= $_SESSION['photoAssureCrypte'] ?>" class="rounded-circle shadow-sm"> </button>
</div>
<div class="ms-3 overflow-hidden">
<div class="fw-bold text-dark text-truncate small"><?= $this->nettoyer($_SESSION['nomClient_C']) ?></div>
<div class="badge-id"><?= $_SESSION['numeroClient_C'] ?></div>
</div>
</div>
</div> </div>
<!-- Stats -->
<div class="context-card text-center">
<span class="badge bg-info"><?= _("Fam.") ?> <?= format_N($_SESSION['ndAdh_C']) ?></span>
<span class="badge bg-secondary"><?= _("Dép.") ?> <?= format_N($_SESSION['ndDep_C']) ?></span>
<span class="badge bg-success"><?= _("Bén.") ?> <?= format_N($_SESSION['ndActif_C']) ?></span>
</div>
<!-- Famille / Adhérent -->
<div class="context-card">
<button class="btn btn-outline-secondary w-100" onclick="afficher_adherent_id()">
<i class="fa-solid fa-users me-2"></i> <?= _("Famille") ?> : <?= $_SESSION['numeroAdherent_C'] ?>
</button>
<div class="mt-1 text-muted small"><?= substr($_SESSION['adherent_C'] ?? '', 0, 25) ?></div>
</div>
<!-- Bénéficiaire -->
<div class="context-card">
<button class="btn btn-outline-secondary w-100" onclick="afficher_beneficiaire_id()">
<i class="fa-solid fa-user me-2"></i> <?= _("Bénéficiaire") ?> : <?= $_SESSION['numeroBeneficiaire_C'] ?>
</button>
<div class="mt-1 text-muted small"><?= substr($_SESSION['beneficiaire_C'] ?? '', 0, 25) ?></div>
<small class="d-block text-muted"><?= dateLang($_SESSION['dateEntreeBeneficiaire_C'], $_SESSION['lang']) ?> - <?= dateLang($_SESSION['dateEcheancePolice_C'], $_SESSION['lang']) ?></small>
</div>
<!-- Photo -->
<?php if ($_SESSION['faceRegistered_C'] == "1" && $_SESSION['idBeneficiaire_C'] > "0"): ?>
<div class="context-card text-center">
<img src="data:image/jpg;base64,<?= $imgData ?>" class="img-fluid rounded border" style="max-width: 150px;" data-bs-toggle="modal" data-bs-target="#pop_photo" alt="Photo">
</div>
<?php endif; ?> <?php endif; ?>
<?php if(!empty($_SESSION['numeroPolice_C'])): ?> <!-- Dernières polices -->
<div class="context-group" onclick="afficher_police_id_init();"> <div class="context-card">
<label class="context-label"><?= _("Police Active") ?></label> <div class="context-card-title"><i class="bi bi-clock-history"></i> <?= _("Dernières polices") ?></div>
<div class="context-value-box border-dashed"> <div class="list-group list-group-flush">
<i class="bi bi-file-earmark-text text-secondary me-2"></i> <?php foreach ($_SESSION['contextPolice'] ?? [] as $contextPolice): ?>
<span class="fw-semibold small text-secondary"><?= $this->nettoyer($_SESSION['numeroPolice_C']) ?></span> <a href="javascript:selectionner_police(<?= $contextPolice['idPolice'] ?>,'<?= $contextPolice['numeroPolice'] ?>');afficher_police_id();"
class="list-group-item list-group-item-action p-2 small">
<?= htmlspecialchars($contextPolice['libellePolice']) ?>
</a>
<?php endforeach; ?>
</div> </div>
</div> </div>
<!-- Gestion messages -->
<button class="btn btn-success w-100 mt-2" onclick="gerer_messagerie()">
<i class="fa fa-comments me-2"></i> <?= _("Gérer Messages") ?>
</button>
<!-- Mot de passe -->
<div class="context-card text-center">
<a href="javascript:change_password();" class="d-inline-block p-3 bg-light rounded-circle shadow-sm">
<img src="Bootstrap_new/images/pwd.png" alt="Changer mot de passe" style="width: 30px;">
</a>
<div class="mt-1 small"><?= _("Changer mot de passe") ?></div>
</div>
<!-- Mode cotation -->
<?php if ($_SESSION['modeDevis'] == "1"): ?>
<div class="alert alert-warning text-center fw-bold p-2 mt-2"><?= _("GESTION DES COTATIONS") ?></div>
<div class="context-card">
<button class="btn btn-outline-warning w-100" onclick="afficher_client_d_id()">
<i class="fa fa-user-times"></i> <?= _("Prospect") ?> : <?= $_SESSION['numeroClient_d_C'] ?>
</button>
<div class="mt-1 small"><?= substr($_SESSION['nomClient_d_C'] ?? '', 0, 25) ?></div>
</div>
<button class="btn btn-outline-warning w-100 mt-2" onclick="afficher_police_d_id_init()">
<i class="fa fa-file-text"></i> <?= $_SESSION['numeroPolice_d_C'] ?>
</button>
<?php endif; ?> <?php endif; ?>
</div> </div>
<div class="context-panel-footer">
<span class="small text-muted" id="nbMessagesNonLus"><?= _("0 message(s) non lu(s)") ?></span>
</div>
</div> </div>

View File

@ -1,16 +1,38 @@
<meta charset="UTF-8"/> <?php
// Constantes pour la version des fichiers (cache busting)
define('CSS_VERSION', '2026.02.23.15');
define('JS_VERSION', '2026.02.23.15');
?>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title><?= $companyDisplayName ?></title>
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet"> <base href="<?= $racineWeb ?>">
<?php $url = $racineWeb; ?> <!-- Favicon -->
<link rel="icon" href="Bootstrap_new/images/favicon.ico">
<link href="<?= $url ?>Bootstrap/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet"> <!-- Fonts modernes et légères -->
<link href="<?= $url ?>Bootstrap/vendor/bootstrap-icons/bootstrap-icons.css" rel="stylesheet"> <link rel="preconnect" href="https://fonts.googleapis.com">
<link href="<?= $url ?>Bootstrap/vendor/boxicons/css/boxicons.min.css" rel="stylesheet"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="<?= $url ?>Bootstrap_new/css/select2.min.css" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Inter:opsz@14..32&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css">
<link href="<?= $url ?>Bootstrap_new/css/theme-modern.css?ver=2026.02.23.11" rel="stylesheet"> <!-- Vendor CSS Files (Bootstrap Icons, FontAwesome, etc.) -->
<link href="Bootstrap/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="Bootstrap/vendor/bootstrap-icons/bootstrap-icons.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">
<link href="Bootstrap/vendor/remixicon/remixicon.css" rel="stylesheet">
<!-- Libraries CSS -->
<link href="Bootstrap_new/css/datatables.min.css" rel="stylesheet">
<link href="Bootstrap_new/css/select2.min.css" rel="stylesheet">
<link href="Bootstrap_new/select/css/bootstrap-select.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/sweetalert2@11.14.1/dist/sweetalert2.min.css" rel="stylesheet">
<link href="Bootstrap/vendor/quill/quill.snow.css" rel="stylesheet">
<!-- Custom CSS (avec versioning) -->
<link href="Bootstrap/css/style.css?ver=<?= CSS_VERSION ?>" rel="stylesheet">
<link href="Bootstrap_new/css/custom.css?ver=<?= CSS_VERSION ?>" rel="stylesheet">
<link href="Bootstrap_new/css/theme-modern.css?ver=<?= CSS_VERSION ?>" rel="stylesheet">
<title><?= $_SESSION['vue'] ?? 'INTER SANTE' ?></title>

View File

@ -1,35 +1,97 @@
<header id="header" class="header fixed-top d-flex align-items-center"> <?php
<div class="d-flex align-items-center justify-content-between header-logo-zone"> $style = "";
<a class="logo d-flex align-items-center text-decoration-none"> $test = "";
<img src="<?= $url ?>Bootstrap_new/images/new/favicon.png" alt="Logo" height="30"> $colorTests = "";
<span class="d-none d-lg-block ms-2 fw-bold text-dark tracking-tight">INTER SANTE</span>
</a>
<i class="bi bi-list toggle-sidebar-btn fs-4 ms-3"></i>
</div>
<?php if($_SESSION['bdTests_C'] == "1"): ?> $flag = (est_anglophone()) ? 'england.png' : 'france.png';
<div class="mode-test-indicator shadow-sm"> $alt = (est_anglophone()) ? 'English' : 'Français';
<span class="pulse"></span> <?= _("ENVIRONNEMENT DE TEST") ?> $lib = (est_anglophone()) ? 'En' : 'Fr';
if ($_SESSION['bdTests_C'] == "1") {
$colorTests = $_SESSION['colorTests'];
$style = "background-color: $colorTests;";
$test = "MODE TEST";
}
?>
<header id="header" class="header fixed-top d-flex align-items-center" style="<?= $style ?>">
<div class="d-flex align-items-center justify-content-between w-100">
<!-- Logo et toggle -->
<div class="d-flex align-items-center">
<i class="bi bi-list toggle-sidebar-btn me-3"></i>
<a href="#" class="logo d-flex align-items-center">
<img src="Bootstrap_new/images/new/favicon.png" alt="Logo Inter santé" height="40">
<span class="d-none d-lg-block fw-bold ms-2">INTER SANTE</span>
</a>
</div> </div>
<?php endif; ?>
<nav class="header-nav ms-auto pe-4"> <!-- Actions et profil -->
<ul class="d-flex align-items-center list-unstyled mb-0"> <div class="d-flex align-items-center gap-3">
<li class="nav-item me-3"> <!-- Mode test -->
<button id="showSideNav" class="btn btn-context-trigger"> <?php if ($_SESSION['bdTests_C'] == "1"): ?>
<i class="bi bi-person-vcard me-2"></i><?= _("Dossier") ?> <span class="badge bg-warning text-dark px-3 py-2"><?= $test ?></span>
</button> <?php endif; ?>
</li>
<li class="nav-item dropdown"> <!-- Notifications -->
<a class="nav-link nav-profile d-flex align-items-center" href="#" data-bs-toggle="dropdown"> <div class="dropdown">
<div class="initials-circle"><?= $_SESSION['userInitials_C'] ?></div> <a class="position-relative" href="#" data-bs-toggle="dropdown" aria-expanded="false">
<i class="bi bi-bell fs-5"></i>
<span id="span_notification" class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger">0</span>
</a> </a>
<ul class="dropdown-menu dropdown-menu-end border-0 shadow-lg rounded-3"> <ul class="dropdown-menu dropdown-menu-end p-2" style="min-width: 300px;">
<li class="dropdown-header fw-bold"><?= $_SESSION['utilisateur_C']; ?></li> <li class="text-center text-muted small p-3"><?= _("Aucune notification") ?></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item py-2" href="deconnexion.php"><i class="bi bi-box-arrow-right me-2"></i><?= _("Déconnexion") ?></a></li>
</ul> </ul>
</li> </div>
</ul>
</nav> <!-- Logo société -->
<div class="d-flex align-items-center gap-2">
<img src="<?= $_SESSION['lienLogo'] ?>" alt="Logo" style="height: 40px;">
<span class="fw-semibold d-none d-lg-inline"><?= $companyDisplayName ?></span>
</div>
<!-- Langue -->
<div class="dropdown">
<a href="#" data-bs-toggle="dropdown" class="d-flex align-items-center gap-2">
<img src="Bootstrap_new/images/<?= $flag ?>" alt="<?= $alt ?>" width="24" class="rounded">
<span class="d-none d-md-inline"><?= $lib ?></span>
</a>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item" href="javascript:changer_langue();">
<i class="fa fa-exchange me-2"></i> <?= _("Changer de langue") ?>
</a>
</li>
</ul>
</div>
<!-- Aide -->
<a href="Guideutilisation/" class="d-flex align-items-center" title="<?= _("Guide d'utilisation") ?>">
<i class="bi bi-question-circle-fill fs-5"></i>
</a>
<!-- Profil utilisateur -->
<div class="dropdown">
<a href="#" data-bs-toggle="dropdown" class="d-flex align-items-center gap-2">
<span class="initials rounded-circle bg-primary text-white d-flex align-items-center justify-content-center" style="width: 35px; height: 35px;">
<?= $_SESSION['userInitials_C'] ?>
</span>
</a>
<ul class="dropdown-menu dropdown-menu-end">
<li>
<a class="dropdown-item" href="javascript:change_password();">
<i class="fa fa-user-circle me-2"></i> <?= $_SESSION['utilisateur_C'] ?>
</a>
</li>
<li>
<hr class="dropdown-divider">
</li>
<li>
<a class="dropdown-item text-danger" href="#">
<i class="bi bi-box-arrow-right me-2"></i> <?= _("Déconnexion") ?>
</a>
</li>
</ul>
</div>
</div>
</div>
</header> </header>

View File

@ -1,29 +1,12 @@
<?php if(isset($menusvue) && count($menusvue) > 0): ?> <?php if (isset($menusvue) && count($menusvue) > 0): ?>
<div class="main-nav-toolbar mb-4"> <div class="nav-scroller bg-white shadow-sm mb-3">
<div class="d-flex align-items-center"> <nav class="nav nav-underline container">
<nav class="nav-breadcrumb me-4"> <?php foreach ($menusvue as $menu): ?>
<span class="text-muted small"><?= $activeLevel1 ?></span> <a class="nav-link <?= (strpos($_SERVER['REQUEST_URI'], $menu['lienMenu']) !== false) ? 'active' : '' ?>"
<i class="bi bi-chevron-right mx-2 text-silver"></i> href="<?= $menu['lienMenu'] ?>">
<span class="fw-bold"><?= $activeLevel2 ?></span> <?= $menu['libeleMenu'] ?>
</a>
<?php endforeach; ?>
</nav> </nav>
<div class="nav-pills-wrapper">
<div class="nav-pills-scroll">
<?php foreach ($menusvue as $menu):
$isActive = (basename($menu['lienMenu']) == basename($_SERVER['REQUEST_URI']));
?>
<a href="<?= $menu['lienMenu'] ?>" class="nav-pill-item <?= $isActive ? 'active' : '' ?>">
<?= $menu['libeleMenu'] ?>
</a>
<?php endforeach; ?>
</div>
</div>
</div> </div>
</div> <?php endif; ?>
<?php endif; ?>
<div class="d-none">
<input type="text" id="vue" value="<?= $_SESSION['vue'] ?? '' ?>">
<input type="text" id="racineWeb" value="<?= $racineWeb ?>">
<input type="text" id="dureeSession" value="<?= $_SESSION['dureeSession'] ?>">
</div>

View File

@ -1,33 +1,53 @@
<div class="modal fade" id="popmessagerie" tabindex="-1" role="dialog" aria-hidden="true"> <!-- Modal Messages non lus -->
<div class="modal-dialog modal-dialog-centered modal-lg"> <div class="modal fade" id="popmessagerie" tabindex="-1">
<div class="modal-content border-0 shadow-2xl rounded-4"> <div class="modal-dialog modal-lg">
<div class="modal-header border-0 bg-light-primary py-3 px-4"> <div class="modal-content">
<h5 class="modal-title fw-800 text-primary"> <div class="modal-header bg-primary text-white">
<i class="bi bi-chat-left-text-fill me-2"></i><?= _("Messages non lus") ?> <h5 class="modal-title"><?= _("Messages non lus") ?></h5>
</h5> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
<button type="button" class="btn-close shadow-none" data-bs-dismiss="modal" aria-label="Close"></button>
</div> </div>
<div class="modal-body p-4"> <div class="modal-body" id="div_messagerie"></div>
<div id="div_messagerie" class="min-h-200"> <div class="modal-footer">
</div> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal"><?= _("Fermer") ?></button>
</div>
<div class="modal-footer border-0 p-3">
<button type="button" class="btn btn-secondary rounded-pill px-4 fw-bold" data-bs-dismiss="modal"><?= _("Fermer") ?></button>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="modal fade" id="pop_photo" tabindex="-1" role="dialog"> <!-- Modal Alerte nouveau message -->
<div class="modal-dialog modal-dialog-centered"> <div class="modal fade" id="popderniermessagerie" tabindex="-1">
<div class="modal-content border-0 bg-transparent"> <div class="modal-dialog modal-lg">
<div class="modal-body p-0 text-center"> <div class="modal-content">
<div id="div_pop_photo" class="photo-frame shadow-2xl"> <div class="modal-header bg-warning">
</div> <h5 class="modal-title"><?= _("Alerte Réception Message...") ?></h5>
<button type="button" class="btn btn-white btn-sm rounded-pill mt-3 shadow" data-bs-dismiss="modal"> <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
<i class="bi bi-x-lg me-1"></i> <?= _("Fermer") ?> </div>
</button> <div class="modal-body" id="div_dernier_messagerie"></div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal"><?= _("Fermer") ?></button>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- Modal Photo -->
<div class="modal fade" id="pop_photo" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header bg-primary text-white">
<h5 class="modal-title"><?= _("Photo") ?></h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body text-center">
<img src="data:image/jpg;base64,<?= $imgData ?>" class="img-fluid" style="max-width: 450px;">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal"><?= _("Fermer") ?></button>
</div>
</div>
</div>
</div>
<!-- Boutons cachés pour déclencher les modales (nécessaires pour le JS existant) -->
<button id="btn_pop_messagerie" class="d-none" data-bs-toggle="modal" data-bs-target="#popmessagerie"></button>
<button id="btn_pop_dernier_messagerie" class="d-none" data-bs-toggle="modal" data-bs-target="#popderniermessagerie"></button>

View File

@ -1,49 +1,67 @@
<script src="<?= $racineWeb ?>Bootstrap/js/jquery.min.js"></script> <!-- Vendor JS -->
<script src="<?= $racineWeb ?>Bootstrap/vendor/bootstrap/js/bootstrap.bundle.min.js"></script> <script src="Bootstrap/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<script src="Bootstrap/js/jquery.min.js"></script>
<script src="Bootstrap/js/jquery-ui.js"></script>
<script src="Bootstrap/js/timer.jquery.js"></script>
<script src="<?= $racineWeb ?>Bootstrap/vendor/apexcharts/apexcharts.min.js"></script> <!-- DataTables, Select2, etc. -->
<script src="<?= $racineWeb ?>Bootstrap/vendor/chart.js/chart.umd.js"></script> <script src="Bootstrap_new/datatables/datatable.min.js"></script>
<script src="<?= $racineWeb ?>Bootstrap/vendor/simple-datatables/simple-datatables.js"></script> <script src="Bootstrap_new/js/select2.min.js"></script>
<script src="<?= $racineWeb ?>Bootstrap/js/timer.jquery.js"></script> <script src="Bootstrap_new/select/js/bootstrap-select.min.js"></script>
<script src="<?= $racineWeb ?>Bootstrap_new/js/select2.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script src="<?= $racineWeb . $_SESSION['dossierSociete'].'/Js/societe.js' ?>"></script> <!-- Chart.js -->
<script src="<?= $racineWeb ?>Bootstrap/js/main.js"></script> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script type="text/javascript"> <!-- SweetAlert2 -->
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.14.1/dist/sweetalert2.all.min.js"></script>
<!-- Toastr -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js"></script>
<!-- Fonctions métier centralisées -->
<script src="Js/fonctions.js?ver=<?= JS_VERSION ?>"></script>
<script src="<?= $_SESSION['dossierSociete'] ?>/Js/societe.js?ver=<?= JS_VERSION ?>"></script>
<!-- Datepicker selon langue -->
<?php if (est_anglophone()): ?>
<script src="Js/datepicker-eng.js?ver=<?= JS_VERSION ?>"></script>
<?php else: ?>
<script src="Js/datepicker-fr.js?ver=<?= JS_VERSION ?>"></script>
<?php endif; ?>
<script src="Js/html2pdf.js?ver=<?= JS_VERSION ?>"></script>
<!-- Template Main JS -->
<script src="Bootstrap/js/main.js?ver=<?= JS_VERSION ?>"></script>
<!-- Initialisations et rafraîchissements -->
<script>
$(document).ready(function() { $(document).ready(function() {
// Initialisation du rafraîchissement global // Masquer le panneau de contexte au chargement
if (typeof raffraichier_gabarit === "function") { $("#barre_laterale_d").hide();
raffraichier_gabarit();
}
// Timer de messagerie (60s) // Initialisation des selects
$('#timer').timer({ $('.select2').select2({ theme: 'bootstrap-5' });
duration: '60s', $('.selectpicker').selectpicker();
callback: function() {
if (typeof raffraichier_messagerie === "function") raffraichier_messagerie();
},
repeat: true
});
// Gestion fluide de la sidebar de contexte // Rafraîchir le gabarit
$("#showSideNav").on("click", function() { if (typeof raffraichir_gabarit === 'function') raffraichir_gabarit();
$("#barre_laterale_d").addClass('active'); });
$("body").addClass('context-open');
});
$("#hideSideNav").on("click", function() { // Timer pour les messages
$("#barre_laterale_d").removeClass('active'); $('#timer').timer({
$("body").removeClass('context-open'); duration: '60s',
}); callback: function() {
if (typeof raffraichir_messagerie === 'function') raffraichir_messagerie();
// Auto-close sur mobile si clic en dehors },
$(document).mouseup(function(e) { repeat: true
var container = $("#barre_laterale_d"); });
if (!container.is(e.target) && container.has(e.target).length === 0 && container.hasClass('active')) {
container.removeClass('active'); // Toggle du panneau de contexte
} $("#hideSideNav").on("click", function() {
}); $("#barre_laterale_d").hide('slide', { direction: 'right' }, 300);
});
$("#showSideNav").on("click", function() {
$("#barre_laterale_d").show('slide', { direction: 'right' }, 300);
}); });
</script> </script>

View File

@ -1,45 +1,41 @@
<aside id="sidebar" class="sidebar"> <aside id="sidebar" class="sidebar">
<div class="sidebar-header d-flex align-items-center justify-content-center py-4 d-lg-none">
<img src="<?= $racineWeb ?>Bootstrap_new/images/new/favicon.png" alt="Logo" height="30">
</div>
<ul class="sidebar-nav" id="sidebar-nav"> <ul class="sidebar-nav" id="sidebar-nav">
<?php foreach ($menus as $key0 => $menuParent): <?php foreach ($menus as $key0 => $menuParent):
$menuChildren = $gabary->get_menus_by_parent_code($menuParent['vue']); $menuChildrenLevelOne = $gabary->get_menus_by_parent_code($menuParent['vue']);
$hasChildren = (count($menuChildren) > 0);
$targetId = "menu-" . $menuParent['codeMenu'] . $key0;
$isActive = (strtolower($menuParent['libeleMenu']) == strtolower($activeLevel1));
?> ?>
<li class="nav-item"> <?php if (sizeof($menuChildrenLevelOne) > 0): ?>
<?php if ($hasChildren): ?> <li class="nav-item">
<a class="nav-link <?= $isActive ? '' : 'collapsed' ?>" <a class="nav-link <?= (strtolower($menuParent['libeleMenu']) == strtolower($activeLevel1)) ? '' : 'collapsed' ?>"
data-bs-target="#<?= $targetId ?>" data-bs-target="#menu-<?= $menuParent['codeMenu'] . $key0 ?>"
data-bs-toggle="collapse" href="#"> data-bs-toggle="collapse"
href="#">
<i class="<?= $menuParent['icone'] ?>"></i> <i class="<?= $menuParent['icone'] ?>"></i>
<span><?= $menuParent['libeleMenu'] ?></span> <span><?= $menuParent['libeleMenu'] ?></span>
<i class="bi bi-chevron-down ms-auto fs-xs"></i> <i class="bi bi-chevron-down ms-auto"></i>
</a> </a>
<ul id="<?= $targetId ?>" <ul id="menu-<?= $menuParent['codeMenu'] . $key0 ?>"
class="nav-content collapse <?= $isActive ? 'show' : '' ?>" class="nav-content collapse <?= (strtolower($menuParent['libeleMenu']) == strtolower($activeLevel1)) ? 'show' : '' ?>"
data-bs-parent="#sidebar-nav"> data-bs-parent="#sidebar-nav">
<?php foreach ($menuChildren as $menuChild): <?php foreach ($menuChildrenLevelOne as $menuChild):
$isSubActive = (explode('/', $menuChild['lienMenu'])[0] == $_SESSION['firstLevelMenu']); $link_clean = explode('/', $menuChild['lienMenu'])[0];
?> ?>
<li> <li>
<a href="<?= $menuChild['lienMenu'] ?>" class="<?= $isSubActive ? 'active' : '' ?>"> <a href="<?= $menuChild['lienMenu'] ?>"
<i class="bi bi-dot"></i> class="<?= ($link_clean == $activeLink) ? 'active' : '' ?>">
<span><?= $menuChild['libeleMenu'] ?></span> <?= $menuChild['libeleMenu'] ?>
</a> </a>
</li> </li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
<?php else: ?> </li>
<a class="nav-link <?= $isActive ? '' : 'collapsed' ?>" href="<?= $menuParent['lienMenu'] ?>"> <?php else: ?>
<li class="nav-item">
<a class="nav-link" href="<?= $menuParent['lienMenu'] ?>">
<i class="<?= $menuParent['icone'] ?>"></i> <i class="<?= $menuParent['icone'] ?>"></i>
<span><?= $menuParent['libeleMenu'] ?></span> <span><?= $menuParent['libeleMenu'] ?></span>
</a> </a>
<?php endif; ?> </li>
</li> <?php endif; ?>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
</aside> </aside>