Valide
This commit is contained in:
parent
1befd492ce
commit
455cc66b79
|
|
@ -187,6 +187,11 @@ class NavigationManager {
|
||||||
|
|
||||||
// Configuration des comportements
|
// Configuration des comportements
|
||||||
this.setupActiveMenu();
|
this.setupActiveMenu();
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
this.validateAndFixMenuConsistency();
|
||||||
|
}, 300);
|
||||||
|
|
||||||
this.setupMenuBehavior();
|
this.setupMenuBehavior();
|
||||||
this.setupKeyboardNavigation();
|
this.setupKeyboardNavigation();
|
||||||
|
|
||||||
|
|
@ -490,6 +495,54 @@ class ContextPanelManager {
|
||||||
this.isInitialized = false;
|
this.isInitialized = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Vérifie et corrige la cohérence menu/page
|
||||||
|
*/
|
||||||
|
validateAndFixMenuConsistency() {
|
||||||
|
const configParentId = window.appConfig?.activeParentId;
|
||||||
|
const activeLink = window.appConfig?.activeLink;
|
||||||
|
|
||||||
|
if (!configParentId || !activeLink) return;
|
||||||
|
|
||||||
|
const configMenuId = `submenu${configParentId}`;
|
||||||
|
const configMenu = document.getElementById(configMenuId);
|
||||||
|
|
||||||
|
// Vérification 1: Le menu configuré existe-t-il?
|
||||||
|
if (!configMenu) {
|
||||||
|
console.warn(`[Navigation] Menu configuré ${configMenuId} non trouvé, auto-détection...`);
|
||||||
|
this.autoDetectActiveMenu();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Vérification 2: Le menu contient-il un lien vers la page active?
|
||||||
|
const hasActiveLink = configMenu.querySelector(`a[href*="${activeLink}"]`);
|
||||||
|
if (!hasActiveLink) {
|
||||||
|
console.warn(`[Navigation] Menu ${configMenuId} ne contient pas ${activeLink}, recherche alternative...`);
|
||||||
|
|
||||||
|
// Chercher dans tous les menus
|
||||||
|
document.querySelectorAll('.nav-submenu').forEach(menu => {
|
||||||
|
if (menu.querySelector(`a[href*="${activeLink}"]`)) {
|
||||||
|
const correctMenuId = menu.id;
|
||||||
|
console.log(`[Navigation] ${activeLink} trouvé dans ${correctMenuId}`);
|
||||||
|
|
||||||
|
// Mettre à jour la config
|
||||||
|
this.activeMenuId = correctMenuId;
|
||||||
|
if (window.appConfig) {
|
||||||
|
const menuNum = correctMenuId.replace('submenu', '');
|
||||||
|
window.appConfig.activeParentId = menuNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Appliquer
|
||||||
|
setTimeout(() => {
|
||||||
|
this.openMenu(correctMenuId);
|
||||||
|
this.currentOpenMenu = correctMenuId;
|
||||||
|
}, 100);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialiser le panel contextuel
|
* Initialiser le panel contextuel
|
||||||
* @public - Méthode appelée par UXManager
|
* @public - Méthode appelée par UXManager
|
||||||
|
|
|
||||||
|
|
@ -10,44 +10,57 @@ $_SESSION['firstLevelMenu'] = $activeLink;
|
||||||
$companyDisplayName = htmlspecialchars($_SESSION['nomSociete'], ENT_QUOTES);
|
$companyDisplayName = htmlspecialchars($_SESSION['nomSociete'], ENT_QUOTES);
|
||||||
$imgData = $_SESSION['photoAssureCrypte'] ?? '';
|
$imgData = $_SESSION['photoAssureCrypte'] ?? '';
|
||||||
|
|
||||||
// Détection automatique des menus actifs - VERSION CORRIGÉE
|
// ============================================
|
||||||
$activeParentId = null;
|
// FONCTION DE DÉTECTION - À METTRE EN HAUT DU FICHIER
|
||||||
$activeChildId = null;
|
// ============================================
|
||||||
|
|
||||||
foreach ($menus as $key0 => $menuParent) {
|
/**
|
||||||
$menuChildrenLevelOne = $gabary->get_menus_by_parent_code($menuParent['vue']);
|
* Détecte le menu actif de manière fiable
|
||||||
|
* @param string $activeLink Lien de la page active (ex: "Accueil")
|
||||||
|
* @param array $menus Liste des menus parents
|
||||||
|
* @param object $gabary Instance Gabary pour récupérer les enfants
|
||||||
|
* @return array ['parent' => string, 'child' => string|null]
|
||||||
|
*/
|
||||||
|
function detectActiveMenu($activeLink, $menus, $gabary) {
|
||||||
|
// LOG SIMPLIFIÉE ET FIABLE :
|
||||||
|
|
||||||
// 1. Vérifier si c'est un lien DIRECT (comme "Accueil")
|
// 1. ACCUEIL = TOUJOURS menu 0 (priorité absolue)
|
||||||
if (empty($menuChildrenLevelOne)) {
|
if ($activeLink == 'Accueil') {
|
||||||
// Menu sans enfants = lien direct
|
return ['parent' => '0', 'child' => null];
|
||||||
$parentLink = explode('/', $menuParent['lienMenu'])[0] ?? '';
|
|
||||||
if (!empty($parentLink) && $parentLink == $activeLink) {
|
|
||||||
$activeParentId = $key0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// 2. Vérifier les SOUS-MENUS (enfants)
|
|
||||||
else {
|
// 2. Recherche dans les autres menus
|
||||||
foreach ($menuChildrenLevelOne as $key1 => $menuChild) {
|
foreach ($menus as $key0 => $menuParent) {
|
||||||
|
$menuChildren = $gabary->get_menus_by_parent_code($menuParent['vue']);
|
||||||
|
|
||||||
|
// Vérifier chaque enfant
|
||||||
|
foreach ($menuChildren as $key1 => $menuChild) {
|
||||||
$childLink = explode('/', $menuChild['lienMenu'])[0] ?? '';
|
$childLink = explode('/', $menuChild['lienMenu'])[0] ?? '';
|
||||||
if ($childLink == $activeLink) {
|
if ($childLink == $activeLink) {
|
||||||
$activeParentId = $key0;
|
return ['parent' => (string)$key0, 'child' => (string)$key1];
|
||||||
$activeChildId = $key1;
|
|
||||||
break 2;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 3. Fallback : premier menu
|
||||||
|
return ['parent' => '0', 'child' => null];
|
||||||
}
|
}
|
||||||
|
|
||||||
// CORRECTION IMPORTANTE : Si c'est "Accueil" et pas trouvé, c'est menu 0
|
// ============================================
|
||||||
if ($activeParentId === null && $activeLink == 'Accueil') {
|
// UTILISATION - REMPLACE VOTRE CODE ACTUEL
|
||||||
$activeParentId = 0;
|
// ============================================
|
||||||
}
|
|
||||||
|
|
||||||
// Toujours avoir une valeur
|
$menuData = detectActiveMenu($activeLink, $menus, $gabary);
|
||||||
if ($activeParentId === null) {
|
$activeParentId = $menuData['parent'];
|
||||||
$activeParentId = 0;
|
$activeChildId = $menuData['child'];
|
||||||
}
|
|
||||||
|
// Pour le débogage
|
||||||
|
echo "<script>";
|
||||||
|
echo "console.log('DÉTECTION MENU:');";
|
||||||
|
echo "console.log(' Page: \"{$activeLink}\"');";
|
||||||
|
echo "console.log(' Parent: {$activeParentId}');";
|
||||||
|
echo "console.log(' Enfant: " . ($activeChildId ?? 'null') . "');";
|
||||||
|
echo "</script>";
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<!-- DIAGNOSTIC - À ajouter juste avant la sidebar -->
|
<!-- DIAGNOSTIC - À ajouter juste avant la sidebar -->
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user