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">
<div class="card border-0 shadow-sm mb-4">
<form id="frmrecherche" method="post" action="Recherche/index/">
<div class="card shadow-sm mb-4">
<div class="card-header bg-white py-3">
<h5 class="mb-0 text-primary fw-bold">
<i class="fas fa-search me-2"></i><?= _("Critères de recherche de l'assuré") ?>
<h5 class="card-title mb-0">
<i class="fas fa-search me-2" style="color: var(--primary-color);"></i>
<?= _("Critères de recherche de l'assuré") ?>
</h5>
</div>
<div class="card-body">
<form id="frmrecherche" name="frmrecherche" method="post" action="Recherche/index/">
<div class="row g-3">
<div class="col-md-3">
<label class="form-label small fw-bold"><?= _("Numéro Bénéficiaire") ?></label>
<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 class="row g-3">
<div class="col-md-3">
<label class="form-label"><?= _("Numéro Bénéficiaire") ?></label>
<input type="text" class="form-control" id="numeroBeneficiaire" name="numeroBeneficiaire" autofocus>
</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>
<?php if (is_array($derniernumerobeneficiaires) && $derniernumerobeneficiaires['nouveau'] > 0): ?>
<div class="alert alert-warning border-0 shadow-sm d-flex align-items-center" role="alert">
<i class="fa-solid fa-triangle-exclamation fs-4 me-3 text-danger"></i>
<div>
<strong><?= _("Alerte de remplacement") ?> :</strong>
<?= _("Carte") ?> <span class="badge bg-danger"><?= $derniernumerobeneficiaires['ancien'] ?></span>
<?= _("remplacée par") ?> <span class="badge bg-success"><?= $derniernumerobeneficiaires['nouveau'] ?></span>.
</div>
<?php if (isset($derniernumerobeneficiaires) && $derniernumerobeneficiaires['nouveau'] > 0): ?>
<div class="alert alert-warning alert-dismissible fade show" role="alert">
<i class="fas fa-exclamation-triangle me-2"></i>
<?= _("Cette carte") ?> => <?= $derniernumerobeneficiaires['ancien'] ?>
<?= _("a été déclarée perdue et remplacée par") ?> => <?= $derniernumerobeneficiaires['nouveau'] ?>.
<?= _("Veuillez ne pas le communiquer sans autorisation.") ?>
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>
<div class="card border-0 shadow-sm">
<div class="card-header bg-white d-flex justify-content-between align-items-center py-3">
<h5 class="mb-0 fw-bold"><?= _("Résultats de la recherche") ?></h5>
<span class="badge bg-info"><?= count($beneficiaires) ?> <?= _("trouvés") ?></span>
</div>
<div class="d-flex justify-content-between align-items-center mb-3">
<h5 class="mb-0"><?= _("Résultats de la recherche") ?></h5>
<?php if (isset($beneficiaires) && count($beneficiaires) > 0): ?>
<span class="badge bg-primary"><?= count($beneficiaires) ?> <?= _("résultat(s)") ?></span>
<?php endif; ?>
</div>
<?php if (isset($beneficiaires) && count($beneficiaires) > 0): ?>
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<thead class="table-light">
<tr class="small text-uppercase text-muted">
<th><?= _("Bénéficiaire") ?></th>
<th><?= _("Identité") ?></th>
<th><?= _("Parenté") ?></th>
<th class="text-center"><?= _("Infos") ?></th>
<table class="table table-hover align-middle datatable">
<thead>
<tr>
<th><?= _("Numéro Bénéficiaire") ?></th>
<th><?= _("Numéro Famille") ?></th>
<th><?= _("Nom") ?></th>
<th><?= _("Prénoms") ?></th>
<th><?= _("Lien") ?></th>
<th><?= _("Naissance") ?></th>
<th><?= _("Genre") ?></th>
<th><?= _("Tél") ?></th>
<th><?= _("Souscripteur") ?></th>
<th class="text-center"><?= _("État") ?></th>
<th><?= _("Etat") ?></th>
<th></th>
</tr>
</thead>
<tbody>
<?php foreach ($beneficiaires as $beneficiaire): ?>
<tr class="cursor-pointer" onclick="..." style="cursor: pointer;">
<?php foreach ($beneficiaires as $beneficiaire):
$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>
<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
$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>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
</div>
<?php else: ?>
<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
require_once 'gabarit_queries.php';
$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;
<?php
require_once 'gabarit_queries.php';
$gabary = new Gabary();
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);
$modeDev = $_SESSION['modeDev_C'];
$imgData = $_SESSION['photoAssureCrypte'];
$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['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>
@ -38,17 +38,16 @@
<?php include('includes/header.php'); ?>
<?php include('includes/sidebar.php'); ?>
<main id="main">
<main id="main" class="main">
<?php include('includes/main-navigation.php'); ?>
<div class="page-content">
<?php $contenu ?>
<?= $contenu ?>
</div>
</main>
<?php include('includes/barre-contexte.php'); ?>
<?php include('includes/modals.php'); ?>
<?php include('includes/scripts-footer.php'); ?>
</body>
</html>

View File

@ -1,41 +1,123 @@
<div id="barre_laterale_d" class="sidenav-context">
<div class="context-inner">
<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>
<i class="bi bi-x-circle-fill fs-5 text-muted cursor-pointer" id="hideSideNav"></i>
<input type="hidden" id="numeroClient_C" value="<?= $this->nettoyer($_SESSION['numeroClient_C']) ?>">
<input type="hidden" id="codeGcAssureur_C" value="<?= $this->nettoyer($_SESSION['codeGcAssureur_C']) ?>">
<button class="btn-context-toggle" id="showSideNav" title="<?= _("Afficher contexte") ?>">
<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 class="context-group mb-4">
<label class="context-label"><?= _("Garant") ?></label>
<div class="context-value-box">
<i class="bi bi-shield-check text-primary me-2"></i>
<span class="fw-bold"><?= $this->nettoyer($_SESSION['nomGcAssureur_C']) ?></span>
<!-- Souscripteur -->
<div class="context-card">
<div class="context-card-title">
<i class="fas fa-user-tie"></i> <?= _("Souscripteur") ?>
<a href="javascript:afficher_client_id();" class="float-end">#<?= $_SESSION['numeroClient_C'] ?></a>
</div>
<button class="btn btn-outline-primary w-100" onclick="afficher_client_id()">
<?= $_SESSION['nomClient_C'] ?>
</button>
</div>
<?php if(!empty($_SESSION['numeroClient_C'])): ?>
<div class="context-group mb-4 assured-card" onclick="afficher_client_id();">
<label class="context-label text-info"><?= _("Assuré en cours") ?></label>
<div class="d-flex align-items-center mt-2">
<div class="photo-wrapper">
<img src="<?= $_SESSION['photoAssureCrypte'] ?>" class="rounded-circle shadow-sm">
</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>
<!-- Police -->
<div class="context-card">
<button class="btn btn-primary w-100" onclick="afficher_police_id()">
<i class="fa fa-file-text me-2"></i> <?= _("Police") ?> : <?= $_SESSION['numeroPolice_C'] ?>
<br><small><?= dateLang($_SESSION['dateEffet_C'], $_SESSION['lang']) ?> - <?= dateLang($_SESSION['dateEcheance_C'], $_SESSION['lang']) ?></small>
</button>
</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 if(!empty($_SESSION['numeroPolice_C'])): ?>
<div class="context-group" onclick="afficher_police_id_init();">
<label class="context-label"><?= _("Police Active") ?></label>
<div class="context-value-box border-dashed">
<i class="bi bi-file-earmark-text text-secondary me-2"></i>
<span class="fw-semibold small text-secondary"><?= $this->nettoyer($_SESSION['numeroPolice_C']) ?></span>
<!-- Dernières polices -->
<div class="context-card">
<div class="context-card-title"><i class="bi bi-clock-history"></i> <?= _("Dernières polices") ?></div>
<div class="list-group list-group-flush">
<?php foreach ($_SESSION['contextPolice'] ?? [] as $contextPolice): ?>
<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>
<!-- 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; ?>
</div>
<div class="context-panel-footer">
<span class="small text-muted" id="nbMessagesNonLus"><?= _("0 message(s) non lu(s)") ?></span>
</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 name="viewport" content="width=device-width, initial-scale=1.0">
<title><?= $companyDisplayName ?></title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<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">
<link href="<?= $url ?>Bootstrap/vendor/bootstrap-icons/bootstrap-icons.css" rel="stylesheet">
<link href="<?= $url ?>Bootstrap/vendor/boxicons/css/boxicons.min.css" rel="stylesheet">
<link href="<?= $url ?>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">
<!-- Fonts modernes et légères -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:opsz@14..32&display=swap" rel="stylesheet">
<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">
<div class="d-flex align-items-center justify-content-between header-logo-zone">
<a class="logo d-flex align-items-center text-decoration-none">
<img src="<?= $url ?>Bootstrap_new/images/new/favicon.png" alt="Logo" height="30">
<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
$style = "";
$test = "";
$colorTests = "";
<?php if($_SESSION['bdTests_C'] == "1"): ?>
<div class="mode-test-indicator shadow-sm">
<span class="pulse"></span> <?= _("ENVIRONNEMENT DE TEST") ?>
$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-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>
<?php endif; ?>
<nav class="header-nav ms-auto pe-4">
<ul class="d-flex align-items-center list-unstyled mb-0">
<li class="nav-item me-3">
<button id="showSideNav" class="btn btn-context-trigger">
<i class="bi bi-person-vcard me-2"></i><?= _("Dossier") ?>
</button>
</li>
<li class="nav-item dropdown">
<a class="nav-link nav-profile d-flex align-items-center" href="#" data-bs-toggle="dropdown">
<div class="initials-circle"><?= $_SESSION['userInitials_C'] ?></div>
<!-- Actions et profil -->
<div class="d-flex align-items-center gap-3">
<!-- Mode test -->
<?php if ($_SESSION['bdTests_C'] == "1"): ?>
<span class="badge bg-warning text-dark px-3 py-2"><?= $test ?></span>
<?php endif; ?>
<!-- Notifications -->
<div class="dropdown">
<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>
<ul class="dropdown-menu dropdown-menu-end border-0 shadow-lg rounded-3">
<li class="dropdown-header fw-bold"><?= $_SESSION['utilisateur_C']; ?></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 class="dropdown-menu dropdown-menu-end p-2" style="min-width: 300px;">
<li class="text-center text-muted small p-3"><?= _("Aucune notification") ?></li>
</ul>
</li>
</ul>
</nav>
</div>
<!-- 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>

View File

@ -1,29 +1,12 @@
<?php if(isset($menusvue) && count($menusvue) > 0): ?>
<div class="main-nav-toolbar mb-4">
<div class="d-flex align-items-center">
<nav class="nav-breadcrumb me-4">
<span class="text-muted small"><?= $activeLevel1 ?></span>
<i class="bi bi-chevron-right mx-2 text-silver"></i>
<span class="fw-bold"><?= $activeLevel2 ?></span>
<?php if (isset($menusvue) && count($menusvue) > 0): ?>
<div class="nav-scroller bg-white shadow-sm mb-3">
<nav class="nav nav-underline container">
<?php foreach ($menusvue as $menu): ?>
<a class="nav-link <?= (strpos($_SERVER['REQUEST_URI'], $menu['lienMenu']) !== false) ? 'active' : '' ?>"
href="<?= $menu['lienMenu'] ?>">
<?= $menu['libeleMenu'] ?>
</a>
<?php endforeach; ?>
</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>
<?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>
<?php endif; ?>

View File

@ -1,33 +1,53 @@
<div class="modal fade" id="popmessagerie" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-lg">
<div class="modal-content border-0 shadow-2xl rounded-4">
<div class="modal-header border-0 bg-light-primary py-3 px-4">
<h5 class="modal-title fw-800 text-primary">
<i class="bi bi-chat-left-text-fill me-2"></i><?= _("Messages non lus") ?>
</h5>
<button type="button" class="btn-close shadow-none" data-bs-dismiss="modal" aria-label="Close"></button>
<!-- Modal Messages non lus -->
<div class="modal fade" id="popmessagerie" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header bg-primary text-white">
<h5 class="modal-title"><?= _("Messages non lus") ?></h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body p-4">
<div id="div_messagerie" class="min-h-200">
</div>
</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 class="modal-body" id="div_messagerie"></div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal"><?= _("Fermer") ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="pop_photo" tabindex="-1" role="dialog">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content border-0 bg-transparent">
<div class="modal-body p-0 text-center">
<div id="div_pop_photo" class="photo-frame shadow-2xl">
</div>
<button type="button" class="btn btn-white btn-sm rounded-pill mt-3 shadow" data-bs-dismiss="modal">
<i class="bi bi-x-lg me-1"></i> <?= _("Fermer") ?>
</button>
<!-- Modal Alerte nouveau message -->
<div class="modal fade" id="popderniermessagerie" tabindex="-1">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header bg-warning">
<h5 class="modal-title"><?= _("Alerte Réception Message...") ?></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<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>
<!-- 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>
<script src="<?= $racineWeb ?>Bootstrap/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- Vendor JS -->
<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>
<script src="<?= $racineWeb ?>Bootstrap/vendor/chart.js/chart.umd.js"></script>
<script src="<?= $racineWeb ?>Bootstrap/vendor/simple-datatables/simple-datatables.js"></script>
<script src="<?= $racineWeb ?>Bootstrap/js/timer.jquery.js"></script>
<script src="<?= $racineWeb ?>Bootstrap_new/js/select2.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<!-- DataTables, Select2, etc. -->
<script src="Bootstrap_new/datatables/datatable.min.js"></script>
<script src="Bootstrap_new/js/select2.min.js"></script>
<script src="Bootstrap_new/select/js/bootstrap-select.min.js"></script>
<script src="<?= $racineWeb . $_SESSION['dossierSociete'].'/Js/societe.js' ?>"></script>
<script src="<?= $racineWeb ?>Bootstrap/js/main.js"></script>
<!-- Chart.js -->
<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() {
// Initialisation du rafraîchissement global
if (typeof raffraichier_gabarit === "function") {
raffraichier_gabarit();
}
// Masquer le panneau de contexte au chargement
$("#barre_laterale_d").hide();
// Timer de messagerie (60s)
$('#timer').timer({
duration: '60s',
callback: function() {
if (typeof raffraichier_messagerie === "function") raffraichier_messagerie();
},
repeat: true
});
// Initialisation des selects
$('.select2').select2({ theme: 'bootstrap-5' });
$('.selectpicker').selectpicker();
// Gestion fluide de la sidebar de contexte
$("#showSideNav").on("click", function() {
$("#barre_laterale_d").addClass('active');
$("body").addClass('context-open');
});
// Rafraîchir le gabarit
if (typeof raffraichir_gabarit === 'function') raffraichir_gabarit();
});
$("#hideSideNav").on("click", function() {
$("#barre_laterale_d").removeClass('active');
$("body").removeClass('context-open');
});
// Auto-close sur mobile si clic en dehors
$(document).mouseup(function(e) {
var container = $("#barre_laterale_d");
if (!container.is(e.target) && container.has(e.target).length === 0 && container.hasClass('active')) {
container.removeClass('active');
}
});
// Timer pour les messages
$('#timer').timer({
duration: '60s',
callback: function() {
if (typeof raffraichir_messagerie === 'function') raffraichir_messagerie();
},
repeat: true
});
// 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>

View File

@ -1,45 +1,41 @@
<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">
<?php foreach ($menus as $key0 => $menuParent):
$menuChildren = $gabary->get_menus_by_parent_code($menuParent['vue']);
$hasChildren = (count($menuChildren) > 0);
$targetId = "menu-" . $menuParent['codeMenu'] . $key0;
$isActive = (strtolower($menuParent['libeleMenu']) == strtolower($activeLevel1));
<?php foreach ($menus as $key0 => $menuParent):
$menuChildrenLevelOne = $gabary->get_menus_by_parent_code($menuParent['vue']);
?>
<li class="nav-item">
<?php if ($hasChildren): ?>
<a class="nav-link <?= $isActive ? '' : 'collapsed' ?>"
data-bs-target="#<?= $targetId ?>"
data-bs-toggle="collapse" href="#">
<?php if (sizeof($menuChildrenLevelOne) > 0): ?>
<li class="nav-item">
<a class="nav-link <?= (strtolower($menuParent['libeleMenu']) == strtolower($activeLevel1)) ? '' : 'collapsed' ?>"
data-bs-target="#menu-<?= $menuParent['codeMenu'] . $key0 ?>"
data-bs-toggle="collapse"
href="#">
<i class="<?= $menuParent['icone'] ?>"></i>
<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>
<ul id="<?= $targetId ?>"
class="nav-content collapse <?= $isActive ? 'show' : '' ?>"
<ul id="menu-<?= $menuParent['codeMenu'] . $key0 ?>"
class="nav-content collapse <?= (strtolower($menuParent['libeleMenu']) == strtolower($activeLevel1)) ? 'show' : '' ?>"
data-bs-parent="#sidebar-nav">
<?php foreach ($menuChildren as $menuChild):
$isSubActive = (explode('/', $menuChild['lienMenu'])[0] == $_SESSION['firstLevelMenu']);
<?php foreach ($menuChildrenLevelOne as $menuChild):
$link_clean = explode('/', $menuChild['lienMenu'])[0];
?>
<li>
<a href="<?= $menuChild['lienMenu'] ?>" class="<?= $isSubActive ? 'active' : '' ?>">
<i class="bi bi-dot"></i>
<span><?= $menuChild['libeleMenu'] ?></span>
<a href="<?= $menuChild['lienMenu'] ?>"
class="<?= ($link_clean == $activeLink) ? 'active' : '' ?>">
<?= $menuChild['libeleMenu'] ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<?php else: ?>
<a class="nav-link <?= $isActive ? '' : 'collapsed' ?>" href="<?= $menuParent['lienMenu'] ?>">
</li>
<?php else: ?>
<li class="nav-item">
<a class="nav-link" href="<?= $menuParent['lienMenu'] ?>">
<i class="<?= $menuParent['icone'] ?>"></i>
<span><?= $menuParent['libeleMenu'] ?></span>
</a>
<?php endif; ?>
</li>
</li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
</aside>