Val
This commit is contained in:
parent
a08b919fb8
commit
345abc8dfa
228
Vue/gabarit.php
228
Vue/gabarit.php
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user