This commit is contained in:
KONE SOREL 2025-12-22 12:02:03 +00:00
parent a08b919fb8
commit 345abc8dfa

View File

@ -149,8 +149,8 @@ console.groupEnd();
// Variables globales
window.appConfig = {
activeParentId: '<?= $activeParentId ?>',
activeChildId: '<?= $activeChildId ?>',
activeParentId: '<?= $activeParentId ?? "0" ?>',
activeChildId: '<?= $activeChildId ?? "0" ?>',
activeLink: '<?= $activeLink ?>',
racineWeb: '<?= $racineWeb ?>',
baseUrl: '<?= $racineWeb ?>',
@ -162,6 +162,10 @@ console.groupEnd();
cssOverride: true
};
// Vérification
console.log('PHP: activeParentId =', '<?= $activeParentId ?>');
console.log('PHP: activeLink =', '<?= $activeLink ?>');
// CORRECTION FORCÉE IMMÉDIATE
if (window.appConfig.activeLink === 'Accueil') {
console.warn('🔧 Correction: Accueil forcé en menu 0 (était: ' + window.appConfig.activeParentId + ')');
@ -338,6 +342,10 @@ console.groupEnd();
<div class="nav-section">
<?php foreach ($menus as $key0 => $menuParent):
$menuChildrenLevelOne = $gabary->get_menus_by_parent_code($menuParent['vue']);
// DEBUG: Afficher l'info
echo "<!-- Menu {$key0}: {$menuParent['libeleMenu']} - Enfants: " . count($menuChildrenLevelOne) . " -->\n";
$isParentActive = $activeParentId === $key0;
$hasActiveChild = false;
@ -611,164 +619,76 @@ console.groupEnd();
<!-- Service Worker Registration -->
<script src="/Js/sw-register.js?ver=2025.12.22.00"></script>
<!-- AJOUTEZ APRÈS LES INCLUDES DE SCRIPTS -->
<script>
// ATTENTION : Ce script doit venir APRÈS l'inclusion de ux-manager.js
window.appNavigation = null; // Initialisation
document.addEventListener('DOMContentLoaded', function() {
// Attendre que UXManager soit initialisé
setTimeout(function() {
if (window.appUX && window.appUX.navigation) {
window.appNavigation = window.appUX.navigation;
console.log('[App] Navigation disponible via window.appNavigation');
} else {
console.error('[App] NavigationManager non disponible');
}
}, 500);
});
</script>
<script>
// Test du système de menus - VERSION ROBUSTE
document.addEventListener('DOMContentLoaded', function() {
// Attendre un peu que tout soit chargé
setTimeout(function() {
testMenuSystem();
}, 300);
});
function testMenuSystem() {
console.group('=== TEST SYSTÈME DE MENUS ===');
// Méthode 1: Via appUX
if (window.appUX && window.appUX.navigation) {
console.log('✓ NavigationManager disponible via appUX');
executeMenuTest(window.appUX.navigation);
}
// Méthode 2: Via appNavigation global
else if (window.appNavigation && typeof window.appNavigation.closeAllExceptActive === 'function') {
console.log('✓ NavigationManager disponible via appNavigation');
executeMenuTest(window.appNavigation);
}
// Méthode 3: Via uxManager
else if (window.uxManager) {
console.log('✓ uxManager disponible');
executeMenuTest(window.uxManager);
}
else {
console.error('✗ Aucun gestionnaire de navigation disponible');
manualMenuFix();
}
console.groupEnd();
}
function executeMenuTest(navManager) {
// Vérifier l'état initial
const activeParentId = window.appConfig?.activeParentId;
const activeMenuId = activeParentId !== null && activeParentId !== '' ?
`submenu${activeParentId}` : null;
console.log('Menu actif configuré:', activeMenuId);
console.log('Page active:', window.appConfig?.activeLink);
// Compter les menus ouverts
const openMenus = document.querySelectorAll('.nav-submenu.show');
console.log('Menus initialement ouverts:', openMenus.length);
openMenus.forEach(menu => {
console.log(' -', menu.id);
});
// Vérifier que seul le menu actif est ouvert
if (openMenus.length > 1) {
console.warn('⚠️ Plusieurs menus sont ouverts!');
console.warn('Seul le menu', activeMenuId, 'devrait être ouvert.');
// CORRECTION URGENTE - FORCE LE BON MENU
document.addEventListener('DOMContentLoaded', function() {
console.log('🔄 Application de la correction urgente...');
// Utiliser la méthode disponible
if (navManager.closeAllExceptActive) {
console.log('Correction via closeAllExceptActive...');
navManager.closeAllExceptActive();
} else if (navManager.closeAllMenus) {
console.log('Correction via closeAllMenus...');
navManager.closeAllMenus();
}
// Vérifier le résultat
setTimeout(() => {
const openAfter = document.querySelectorAll('.nav-submenu.show').length;
console.log('Menus ouverts après correction:', openAfter);
// Attendre que NavigationManager soit prêt
setTimeout(function() {
// 1. Vérifier l'état actuel
const openMenus = document.querySelectorAll('.nav-submenu.show');
console.log('État initial: ', openMenus.length, 'menu(s) ouvert(s)');
if (openAfter <= 1) {
console.log('✅ Correction réussie!');
} else {
console.warn('⚠️ Correction incomplète, forcer la fermeture...');
manualMenuFix();
// 2. Si submenu1 est ouvert mais on est sur Accueil
if (window.appConfig?.activeLink === 'Accueil') {
const wrongMenu = document.getElementById('submenu1');
const correctMenu = document.getElementById('submenu0');
if (wrongMenu?.classList.contains('show')) {
console.log('❌ Problème: submenu1 ouvert pour Accueil');
// FORCER LA CORRECTION
if (window.appUX?.navigation) {
console.log('🔧 Correction via NavigationManager...');
// Fermer tous les menus
window.appUX.navigation.closeAllMenus();
// Ouvrir submenu0
setTimeout(() => {
window.appUX.navigation.openMenuById('submenu0');
console.log('✅ Correction appliquée: submenu0 ouvert');
}, 200);
}
// Fallback manuel
else {
console.log('🔧 Correction manuelle...');
// Fermer submenu1
wrongMenu.classList.remove('show');
const wrongLink = document.querySelector('[href="#submenu1"]');
if (wrongLink) {
wrongLink.setAttribute('aria-expanded', 'false');
wrongLink.classList.remove('active');
}
// Ouvrir submenu0
setTimeout(() => {
if (correctMenu) {
correctMenu.classList.add('show');
const correctLink = document.querySelector('[href="#submenu0"]');
if (correctLink) {
correctLink.setAttribute('aria-expanded', 'true');
correctLink.classList.add('active');
}
}
}, 100);
}
}
}
}, 200);
} else {
console.log('✅ État correct des menus');
}
}
function manualMenuFix() {
console.log('🔧 Application du correctif manuel...');
const activeParentId = window.appConfig?.activeParentId;
const activeMenuId = activeParentId !== null && activeParentId !== '' ?
`submenu${activeParentId}` : null;
// 1. Fermer TOUS les menus
document.querySelectorAll('.nav-submenu').forEach(menu => {
menu.classList.remove('show');
menu.style.display = 'none';
const link = document.querySelector(`[href="#${menu.id}"]`);
if (link) {
link.setAttribute('aria-expanded', 'false');
link.classList.remove('active');
const arrow = link.querySelector('.nav-arrow');
if (arrow) arrow.style.transform = 'rotate(0deg)';
}
});
// 2. Ouvrir SEULEMENT le menu actif
if (activeMenuId) {
setTimeout(() => {
const menu = document.getElementById(activeMenuId);
const link = document.querySelector(`[href="#${activeMenuId}"]`);
if (menu && link) {
menu.classList.add('show');
menu.style.display = 'block';
link.setAttribute('aria-expanded', 'true');
link.classList.add('active');
// Vérification finale
setTimeout(() => {
const finalState = document.querySelectorAll('.nav-submenu.show');
console.log('État final: ', finalState.length, 'menu(s) ouvert(s)');
const arrow = link.querySelector('.nav-arrow');
if (arrow) arrow.style.transform = 'rotate(90deg)';
console.log('✅ Menu actif ouvert:', activeMenuId);
}
}, 100);
}
// 3. Vérification finale
setTimeout(() => {
const openCount = document.querySelectorAll('.nav-submenu.show').length;
console.log('📊 Résultat final:', openCount, 'menu(s) ouvert(s)');
if (openCount === 1 || (openCount === 0 && !activeMenuId)) {
console.log('✅ Système de menus corrigé avec succès!');
} else {
console.error('❌ Échec de la correction manuelle');
}
}, 300);
}
// Exposer la fonction de test globalement
window.testMenuSystem = testMenuSystem;
window.manualMenuFix = manualMenuFix;
if (finalState.length === 1 && finalState[0].id === 'submenu0') {
console.log('🎉 SUCCÈS: Accueil dans submenu0!');
}
}, 500);
}, 1000); // Attendre 1s que tout soit initialisé
});
</script>
</body>
</html>