newdesigngestionnaire/Vue/includes/scripts-footer.php
2026-02-24 13:19:09 +00:00

164 lines
6.4 KiB
PHP

<?php
// Version pour le cache
$version = date('YmdHi');
?>
<!-- ================================================= -->
<!-- CHARGEMENT SÉQUENTIEL DES SCRIPTS -->
<!-- ================================================= -->
<!-- 1. jQuery en premier (TOUJOURS en premier) -->
<script src="Bootstrap/js/jquery.min.js"></script>
<script src="Bootstrap/js/jquery-ui.js"></script>
<script src="Bootstrap/js/timer.jquery.js"></script>
<!-- 2. Bootstrap et ses dépendances -->
<script src="Bootstrap/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- 3. Plugins jQuery (Select2, etc.) -->
<script src="Bootstrap_new/js/select2.min.js"></script>
<script src="Bootstrap_new/select/js/bootstrap-select.min.js"></script>
<script src="Bootstrap_new/datatables/datatable.min.js"></script>
<!-- 4. Scripts principaux de l'application -->
<script src="Bootstrap/js/main.js"></script>
<script src="Js/html2pdf.js"></script>
<!-- 5. FONCTIONS.JS - Contient raffraichir_messagerie et autres fonctions critiques -->
<script src="Js/fonctions.js?ver=<?= $version ?>"></script>
<!-- 6. Internationalisation (dépend de fonctions.js pour certaines fonctions) -->
<?php if (est_anglophone()): ?>
<script src="Js/datepicker-eng.js"></script>
<?php else: ?>
<script src="Js/datepicker-fr.js"></script>
<?php endif; ?>
<!-- 7. Librairies tierces -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11.14.1/dist/sweetalert2.all.min.js"></script>
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
<!-- 8. Script spécifique à la société -->
<script src="<?= $_SESSION['dossierSociete'] ?>/Js/societe.js"></script>
<!-- ================================================= -->
<!-- INPUTS CACHÉS ESSENTIELS -->
<!-- ================================================= -->
<div style="display: none;">
<input type="hidden" id="vue" value="<?= $_SESSION['vue'] ?? '' ?>">
<input type="hidden" id="racineWeb" value="<?= $racineWeb ?? '/' ?>">
<input type="hidden" id="dureeSession" value="<?= $_SESSION['dureeSession'] ?? '' ?>">
<input type="hidden" id="codeLangue" value="<?= $_SESSION['lang'] ?? 'fr_FR' ?>">
<input type="hidden" id="timer" value="0">
<input type="hidden" id="msgNonLus" value="0">
</div>
<!-- ================================================= -->
<!-- DIV POUR AJAX -->
<!-- ================================================= -->
<div id="div_ajaxgabarit"></div>
<!-- ================================================= -->
<!-- SCRIPT D'INITIALISATION (APRÈS TOUS LES CHARGEMENTS) -->
<!-- ================================================= -->
<script>
// Attendre que le DOM soit complètement chargé et que toutes les fonctions soient disponibles
(function() {
// Fonction pour initialiser l'application
function initApp() {
console.log('Initialisation de l\'application...');
// Vérifier que jQuery est chargé
if (typeof jQuery === 'undefined') {
console.error('jQuery n\'est pas chargé !');
setTimeout(initApp, 100);
return;
}
// Vérifier que nos fonctions sont chargées
if (typeof raffraichir_messagerie === 'undefined') {
console.warn('raffraichir_messagerie pas encore disponible, nouvelle tentative dans 300ms...');
setTimeout(initApp, 300);
return;
}
// Une fois que tout est prêt, on initialise
$(document).ready(function() {
console.log('Tous les scripts sont chargés, initialisation...');
// Gestion du drawer de contexte
$('#showSideNav').on('click', function() {
$('#barre_laterale_d').addClass('show');
});
$('#hideSideNav').on('click', function() {
$('#barre_laterale_d').removeClass('show');
});
// Initialisation du timer pour la messagerie
if ($('#timer').length) {
try {
$('#timer').timer({
duration: '60s',
callback: function() {
console.log('Timer callback - rafraîchissement messagerie');
if (typeof raffraichir_messagerie === 'function') {
raffraichir_messagerie();
}
},
repeat: true
});
console.log('Timer initialisé avec succès');
} catch(e) {
console.error('Erreur lors de l\'initialisation du timer:', e);
}
}
// Initialisation des tooltips Bootstrap
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
tooltipTriggerList.map(function(tooltipTriggerEl) {
return new bootstrap.Tooltip(tooltipTriggerEl);
});
// Appel initial pour rafraîchir la messagerie
if (typeof raffraichir_messagerie === 'function') {
setTimeout(function() {
raffraichir_messagerie();
}, 1000); // Attendre 1 seconde avant le premier appel
}
});
}
// Démarrer l'initialisation
initApp();
})();
</script>
<!-- ================================================= -->
<!-- SCRIPT DE SECOURS SI FONCTIONS.JS N'EST PAS CHARGÉ -->
<!-- ================================================= -->
<script>
// Définition des fonctions critiques si elles n'existent pas (fallback)
window.raffraichir_messagerie = window.raffraichir_messagerie || function() {
console.log('Fallback: raffraichir_messagerie appelée');
// Faire un appel AJAX simple pour récupérer les messages
if (typeof jQuery !== 'undefined') {
$.ajax({
url: '/ajax/messagerie.php',
method: 'GET',
success: function(data) {
$('#span_notification').text(data.nbNonLus || '0');
},
error: function() {
console.error('Erreur lors du rafraîchissement de la messagerie');
}
});
}
};
window.pop_messagerie = window.pop_messagerie || function() {
console.log('Fallback: pop_messagerie appelée');
$('#btn_pop_messagerie').click();
};
</script>