This commit is contained in:
KONE SOREL 2026-01-15 11:40:43 +00:00
parent 84bb772343
commit 6b06f8be7e
7 changed files with 410 additions and 1 deletions

View File

@ -0,0 +1,154 @@
<?php
require_once 'Framework/Controleur.php'; // OK
require_once 'Modele/Utilisateur.php';
class ControleurAjaxhabilitation extends Controleur
{
private $utilisateur;
public function __construct()
{
$this->utilisateur = new Utilisateur();
}
public function index()
{
$codeProfil = $this->requete->getParametreFormulaire("codeProfil");
$menus_accessibles = $this->utilisateur->getMenusAccessiblesProfil($codeProfil);
$menus_non_accessibles = $this->utilisateur->getMenusNonAccessiblesProfil($codeProfil);
$this->genererVueAjax(array('menus_accessibles' => $menus_accessibles, 'menus_non_accessibles' => $menus_non_accessibles));
}
public function ajouterunmenuprincipalprofilassureur()
{
$codeProfil = $this->requete->getParametreFormulaire("codeProfil");
$codeMenu = $this->requete->getParametreFormulaire("codeMenu");
$this->utilisateur->ajouterunmenuprincipalprofilassureur($codeProfil, $codeMenu);
}
public function retirerunmenuprincipalprofilassureur()
{
$codeProfil = $this->requete->getParametreFormulaire("codeProfil");
$codeMenu = $this->requete->getParametreFormulaire("codeMenu");
$this->utilisateur->retirerunmenuprincipalprofilassureur($codeProfil, $codeMenu);
}
public function ajoutertousmenuprincipalprofilassureur()
{
$codeProfil = $this->requete->getParametreFormulaire("codeProfil");
$this->utilisateur->ajoutertousmenuprincipalprofilassureur($codeProfil);
}
public function retirerousmenuprincipalprofilassureur()
{
$codeProfil = $this->requete->getParametreFormulaire("codeProfil");
$this->utilisateur->retirerousmenuprincipalprofilassureur($codeProfil);
}
public function listervuemodule()
{
$codeModule = $this->requete->getParametreFormulaire("codeModule");
$listevue = $this->utilisateur->getListeVueModule($codeModule);
$this->genererVueAjax(array('listevue' => $listevue));
}
public function afficheraccessousmenusass()
{
$codeProfil = $this->requete->getParametreFormulaire("codeProfil");
$codeModule = $this->requete->getParametreFormulaire("codeModule");
$vue = $this->requete->getParametreFormulaire("vue");
$menus_accessibles = $this->utilisateur->getSousMenusAccessiblesVue($codeProfil, $vue);
$menus_non_accessibles = $this->utilisateur->getSousMenusNonAccessiblesVue($codeProfil,$vue);
$this->genererVueAjax(array('menus_accessibles' => $menus_accessibles, 'menus_non_accessibles' => $menus_non_accessibles,
'codeModule' => $codeModule));
}
public function ajoutertoussousmenusass()
{
$codeProfil = $this->requete->getParametreFormulaire("codeProfil");
$vue = $this->requete->getParametreFormulaire("vue");
$this->utilisateur->ajoutertoussousmenusass($codeProfil, $vue);
}
public function retirertoussousmenusass()
{
$codeProfil = $this->requete->getParametreFormulaire("codeProfil");
$vue = $this->requete->getParametreFormulaire("vue");
$this->utilisateur->retirertoussousmenusass($codeProfil, $vue);
}
public function ajouterunsousmenusass()
{
$codeProfil = $this->requete->getParametreFormulaire("codeProfil");
$vue = $this->requete->getParametreFormulaire("vue");
$codeMenu = $this->requete->getParametreFormulaire("codeMenu");
$this->utilisateur->ajouterunsousmenusass($codeProfil, $vue, $codeMenu);
}
public function retirerunsousmenusass()
{
$codeProfil = $this->requete->getParametreFormulaire("codeProfil");
$vue = $this->requete->getParametreFormulaire("vue");
$codeMenu = $this->requete->getParametreFormulaire("codeMenu");
$this->utilisateur->retirerunsousmenusass($codeProfil, $vue, $codeMenu);
}
public function creerprofilass()
{
$libelle = $this->requete->getParametreFormulaire("libelle");
$libelleEng = $this->requete->getParametreFormulaire("libelleEng");
$this->utilisateur->creerprofilass($libelle, $libelleEng);
}
public function transfererdroitsprofilassureur()
{
$codeProfilSource = $this->requete->getParametreFormulaire("codeProfilSource");
$codeProfilDest = $this->requete->getParametreFormulaire("codeProfilDest");
$this->utilisateur->transfererdroitsprofilassureur($codeProfilSource, $codeProfilDest);
// $this->genererVueAjax();
}
public function batchviderprofilass()
{
$codeProfil = $this->requete->getParametreFormulaire("codeProfil");
$this->utilisateur->batchviderprofilass($codeProfil);
}
public function batchattribuerdroitsreferenceass()
{
$codeProfil = $this->requete->getParametreFormulaire("codeProfil");
$this->utilisateur->batchattribuerdroitsreferenceass($codeProfil);
}
public function ajaxlisteusersass()
{
$codeProfil = $this->requete->getParametreFormulaire("codeProfil");
$nom = $this->requete->getParametreFormulaire("nom");
$prenoms = $this->requete->getParametreFormulaire("prenoms");
$codePointVente = $this->requete->getParametreFormulaire("codePointVente");
$users = $this->utilisateur->getusersassueurfiltre($codeProfil, $nom, $prenoms, $codePointVente);
$this->genererVueAjax(array('users' => $users));
}
}

View File

@ -4764,3 +4764,46 @@ function supprimer_espace_string(p_mot)
p_mot = p_mot.replace(/ /g, "");
return p_mot;
}
function afficher_menu_principal_profil_assureur()
{
codeProfil=$("#codeProfil").val();
if (codeProfil<=" ")
{
v_msg="Veuillez sélectionner un profil!";
v_msgEng="Please select a user profile!";
alert_ebene(v_msg, v_msgEng);
$("#codeProfil").focus();
return;
}
donnees = 'codeProfil='+codeProfil;
var div_attente = $('#div_menu_profil');
div_attente.html(`
<div class="d-flex flex-column align-items-center justify-content-center" style="padding-top:80px;">
<div class="spinner-border text-primary" role="status" style="width:3rem; height:3rem;">
<span class="visually-hidden">Loading...</span>
</div>
<span class="mt-3 fs-5 fw-bold">
Veuillez patienter... / Please wait...
</span>
</div>
`);
$.ajax({
url: $("#racineWeb").val()+"Ajaxhabilitation/",
type : 'post',
data: donnees,
error: function(errorData) {
},
success: function(data) {
div_attente.html(data);
},
complete: function() {
}
});
}

View File

@ -144,4 +144,24 @@ class Utilisateur extends Modele {
$liste = $this->executerRequete($sql, array($_SESSION['codeSociete']));
return $liste->fetchAll(PDO::FETCH_ASSOC);
}
public function getMenusAccessiblesProfil($codeProfil)
{
$sql = "call sp_c_get_menus_accessibles_profil_rh(?, ?);";
$menu = $this->executerRequete($sql, array($_SESSION['codeSociete'], $codeProfil));
return $menu->fetchAll(PDO::FETCH_ASSOC);
}
public function getMenusNonAccessiblesProfil($codeProfil)
{
$sql = "call sp_c_get_menus_non_accessibles_profil_rh(?, ?);";
$menu = $this->executerRequete($sql, array($_SESSION['codeSociete'], $codeProfil));
return $menu->fetchAll(PDO::FETCH_ASSOC);
}
}

View File

@ -0,0 +1,80 @@
<div id="div_menu_profil">
<div class="row">
<div id="div_utilisateur_profil_1" class="col-6" >
<legend> <?= _("Boutons invisibles")." (".format_N(count($menus_non_accessibles)).")" ?> </legend>
<table class="table table-striped table-bordered table-hover table-condensed table-responsive" style="font-size:10pt;">
<thead>
<tr>
<th style='text-align:center'> <?= _("Désignation")?> </th>
<th style='text-align:center'> => </th>
</tr>
<tr>
<th colspan="2"> <button type="button" style="font-size:10pt;" class="form-control btn btn-primary" onclick="javascript:ajouter_tous_menu_vue_module_assureur();" > <?= _("Ajouter tous") . " ==>" ?> </button> </th>
</tr>
</thead>
<tbody>
<?php foreach ($menus_non_accessibles as $menus_non_accessible):
$codeMenu = $menus_non_accessible['codeMenu'];
if (est_anglophone())
{
$libeleMenu = $menus_non_accessible['libelleEng'];
}
else
{
$libeleMenu = $menus_non_accessible['libeleMenu'];
}
?>
<tr valign="top">
<td align='center'><?= $libeleMenu ?></td>
<td align='center'> <input type="button" value="=>" onClick="javascript:ajouter_un_menu_vue_module_assureur('<?=$codeMenu?>');" ></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<div id="div_utilisateur_profil_2" class="col-6" >
<legend> <?= _("Boutons visibles")." (".format_N(count($menus_accessibles)).")" ?> </legend>
<table class="table table-striped table-bordered table-hover table-condensed table-responsive" style="font-size:10pt;">
<thead>
<tr>
<th style='text-align:center'> <= </th>
<th style='text-align:center'> <?= _("Désignation")?> </th>
</tr>
<tr>
<th colspan="2"> <button type="button" style="font-size:10pt;" class="form-control btn btn-primary" onclick="javascript:retirer_tous_menu_vue_module_assureur();" > <?= "<== " . _("Retirer tous") ?> </button> </th>
</tr>
</thead>
<tbody>
<?php foreach ($menus_accessibles as $menus_accessible):
$codeMenu = $menus_accessible['codeMenu'];
if (est_anglophone())
{
$libeleMenu = $menus_accessible['libelleEng'];
}
else
{
$libeleMenu = $menus_accessible['libeleMenu'];
}
?>
<tr valign="top">
<td align='center'> <input type="button" value="<=" onClick="javascript:retirer_un_menu_vue_module_assureur('<?=$codeMenu?>');" ></td>
<td align='center'><?= $libeleMenu ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
</div>

View File

@ -0,0 +1 @@
OK ajouterunsousmenusass

111
Vue/Ajaxhabilitation/index.php Executable file
View File

@ -0,0 +1,111 @@
<div id="div_menu_profil" class="animate__animated animate__fadeIn">
<div class="row g-4">
<div id="div_utilisateur_profil_1" class="col-md-6">
<div class="card h-100 shadow-sm border-danger-subtle">
<div class="card-header bg-danger-subtle text-danger d-flex justify-content-between align-items-center py-3">
<h6 class="mb-0 fw-bold"><i class="fas fa-lock me-2"></i><?= _("Menus non accessibles") ?></h6>
<span class="badge bg-danger rounded-pill"><?= count($menus_non_accessibles) ?></span>
</div>
<div class="p-2 border-bottom bg-light">
<button type="button" class="btn btn-sm btn-outline-danger w-100 fw-bold shadow-xs"
onclick="javascript:ajouter_tous_menus_principal_profil_ass();">
<?= _("Tout ajouter") ?> <i class="fas fa-angle-double-right ms-1"></i>
</button>
</div>
<div class="table-responsive" style="max-height: 400px; overflow-y: auto;">
<table class="table table-hover align-middle mb-0">
<tbody class="small">
<?php foreach ($menus_non_accessibles as $m):
$codeMenu = $m['codeMenu'];
$libeleMenu = est_anglophone() ? $m['libelleEng'] : $m['libeleMenu'];
?>
<tr>
<td class="ps-3"><?= $libeleMenu ?></td>
<td class="text-end pe-3" width="50">
<button class="btn btn-sm btn-info text-white rounded-circle btn-transfer shadow-sm"
title="<?= _("Ajouter") ?>"
onClick="javascript:ajouter_un_meunu_principal_profil_ass('<?=$codeMenu?>');">
<i class="fas fa-arrow-right"></i>
</button>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
</div>
<div id="div_utilisateur_profil_2" class="col-md-6">
<div class="card h-100 shadow-sm border-success-subtle">
<div class="card-header bg-success-subtle text-success d-flex justify-content-between align-items-center py-3">
<h6 class="mb-0 fw-bold"><i class="fas fa-check-double me-2"></i><?= _("Menus accessibles") ?></h6>
<span class="badge bg-success rounded-pill"><?= count($menus_accessibles) ?></span>
</div>
<div class="p-2 border-bottom bg-light">
<button type="button" class="btn btn-sm btn-outline-success w-100 fw-bold shadow-xs"
onclick="javascript:retirer_tous_menus_principal_profil_ass();">
<i class="fas fa-angle-double-left me-1"></i> <?= _("Tout retirer") ?>
</button>
</div>
<div class="table-responsive" style="max-height: 400px; overflow-y: auto;">
<table class="table table-hover align-middle mb-0">
<tbody class="small">
<?php foreach ($menus_accessibles as $m):
$codeMenu = $m['codeMenu'];
$libeleMenu = est_anglophone() ? $m['libelleEng'] : $m['libeleMenu'];
?>
<tr>
<td class="ps-3" width="50">
<button class="btn btn-sm btn-warning text-white rounded-circle btn-transfer shadow-sm"
title="<?= _("Retirer") ?>"
onClick="javascript:retirer_un_meunu_principal_profil_ass('<?=$codeMenu?>');">
<i class="fas fa-arrow-left"></i>
</button>
</td>
<td class="text-start"><?= $libeleMenu ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<style>
/* Effets de transfert */
.btn-transfer {
width: 28px;
height: 28px;
padding: 0;
display: flex;
align-items: center;
justify-content: center;
transition: transform 0.2s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.btn-transfer:hover {
transform: scale(1.2);
}
/* Scrollbar personnalisée */
.table-responsive::-webkit-scrollbar {
width: 6px;
}
.table-responsive::-webkit-scrollbar-thumb {
background: #dee2e6;
border-radius: 10px;
}
/* Ligne de tableau au survol */
.table-hover tbody tr:hover {
background-color: #f8f9fa !important;
}
.shadow-xs { box-shadow: 0 1px 2px rgba(0,0,0,0.05); }
</style>

View File

@ -662,7 +662,7 @@ $photoAssureCrypte = $_SESSION['photoAssureCrypte'];
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<!-- Application Scripts -->
<script src="/Js/fonctions.js?ver=2026.01.15.03"></script>
<script src="/Js/fonctions.js?ver=2026.01.15.04"></script>
<script type="text/javascript">
raffraichier_gabarit();