Correction script portail

This commit is contained in:
KONE SOREL 2025-12-10 15:38:20 +00:00
parent 74bc4004da
commit a47ed1b093
2 changed files with 117 additions and 172 deletions

View File

@ -16270,18 +16270,21 @@ function connexion_cookie()
var msgErreur = $("#msgErreur").val(); var msgErreur = $("#msgErreur").val();
var racineWeb = $("#racineWeb").val(); var racineWeb = $("#racineWeb").val();
// Validation des données // Désactiver temporairement l'initialisation du slider
var donnees = { window.skipSliderInit = true;
msgErreur: msgErreur || ''
};
$.ajax({ $.ajax({
url: racineWeb + "Ajaxconnexioncookie/", url: racineWeb + "Ajaxconnexioncookie/",
type: 'POST', type: 'POST',
data: donnees, data: { msgErreur: msgErreur || '' },
success: function(data) success: function(data)
{ {
$("#div_ajaxconnexion").html(data); $("#div_ajaxconnexion").html(data);
// Réactiver l'initialisation du slider après un délai
setTimeout(function() {
window.skipSliderInit = false;
}, 100);
}, },
error: function(errorData) error: function(errorData)
{ {
@ -16289,25 +16292,20 @@ function connexion_cookie()
}, },
complete: function() complete: function()
{ {
// SOLUTION: Vérifier que l'élément existe avant d'accéder à .value
var loginElement = document.getElementById("login"); var loginElement = document.getElementById("login");
var mdpElement = document.getElementById("mdp"); var mdpElement = document.getElementById("mdp");
if (loginElement && loginElement.value && loginElement.value.trim() !== "") if (loginElement && loginElement.value && loginElement.value.trim() !== "")
{ {
// Focus sur mdp si login a une valeur
if (mdpElement) { if (mdpElement) {
mdpElement.focus(); mdpElement.focus();
} }
} }
else else if (loginElement)
{ {
// Focus sur login s'il existe
if (loginElement) {
loginElement.focus(); loginElement.focus();
} }
} }
}
}); });
} }

View File

@ -527,125 +527,59 @@
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
// Slider Module - Protégé contre les exécutions multiples // Slider Module - Sécurisé
(function() { (function() {
'use strict'; 'use strict';
// Attendre que le DOM soit complètement chargé
function initSlider() {
// Vérifier si déjà initialisé // Vérifier si déjà initialisé
if (window.sliderInstance) { if (window.sliderInitialized) {
console.warn('Une instance de slider existe déjà');
return; return;
} }
// Empêche inspecter dans le navigateur // Rechercher les éléments
/* var slideImages = document.querySelectorAll('.slide-image');
if (document.addEventListener) { var next = document.querySelector('.next');
document.addEventListener('contextmenu', function (e) { var prev = document.querySelector('.prev');
e.preventDefault(); var dots = document.querySelectorAll('.dot');
}, false); var container = document.querySelector('.slide-container');
} else {
document.attachEvent('oncontextmenu', function () {
window.event.returnValue = false;
});
}
*/
// Déclaration des variables // VÉRIFICATION CRITIQUE : Si aucun élément n'existe, on arrête
var slideImages, next, prev, dots, counter, deletInterval, container; if (slideImages.length === 0) {
// Pas d'erreur en console pour ne pas polluer les logs
// Initialisation return;
function initSlider() {
slideImages = document.querySelectorAll('.slide-image');
next = document.querySelector('.next');
prev = document.querySelector('.prev');
dots = document.querySelectorAll('.dot');
container = document.querySelector('.slide-container');
counter = 0;
// Vérifier les éléments requis
if (!slideImages.length) {
console.error('Éléments du slider non trouvés');
return false;
} }
// Configurer les event listeners // Marquer comme initialisé
setupEventListeners(); window.sliderInitialized = true;
// Démarrer le slider // Variables du slider
autoSliding(); var counter = 0;
indicators(); var deletInterval;
// Stocker l'instance // Fonctions du slider
window.sliderInstance = {
next: slideNext,
prev: slidePrev,
goTo: function(index) {
if (index >= 0 && index < slideImages.length) {
slideImages[counter].style.animation = '';
counter = index;
slideImages[counter].style.animation = '';
indicators();
}
},
destroy: destroySlider
};
console.log('Slider initialisé avec ' + slideImages.length + ' images');
return true;
}
// Configurer les event listeners
function setupEventListeners() {
if (next) {
next.addEventListener('click', slideNext);
}
if (prev) {
prev.addEventListener('click', slidePrev);
}
if (container) {
container.addEventListener('mouseover', function(){
clearInterval(deletInterval);
});
container.addEventListener('mouseout', autoSliding);
}
// Event listeners pour les dots
for (var i = 0; i < dots.length; i++) {
dots[i].addEventListener('click', function() {
var imageId = parseInt(this.getAttribute('attr') || this.getAttribute('data-index'));
if (!isNaN(imageId)) {
switchImage(imageId);
}
});
}
}
// Fonctionnalités du slider
function slideNext(){ function slideNext(){
slideImages[counter].style.animation = 'next1 0.5s ease-in forwards'; slideImages[counter].style.animation = 'next1 0.5s ease-in forwards';
if(counter >= slideImages.length-1){ if(counter >= slideImages.length-1){
counter = 0; counter = 0;
} else { }
else{
counter++; counter++;
} }
slideImages[counter].style.animation = 'next2 0.5s ease-in forwards'; slideImages[counter].style.animation = 'next2 0.5s ease-in forwards';
indicators(); indicators();
} }
function slidePrev(){ function slidePrev(){
slideImages[counter].style.animation = 'prev1 0.5s ease-in forwards'; slideImages[counter].style.animation = 'prev1 0.5s ease-in forwards';
if(counter == 0){ if(counter == 0){
counter = slideImages.length-1; counter = slideImages.length-1;
} else { }
else{
counter--; counter--;
} }
slideImages[counter].style.animation = 'prev2 0.5s ease-in forwards'; slideImages[counter].style.animation = 'prev2 0.5s ease-in forwards';
indicators(); indicators();
} }
@ -661,20 +595,36 @@
for(var i = 0; i < dots.length; i++){ for(var i = 0; i < dots.length; i++){
dots[i].className = dots[i].className.replace(' active', ''); dots[i].className = dots[i].className.replace(' active', '');
} }
if (dots[counter]) { if (dots[counter]) {
dots[counter].className += ' active'; dots[counter].className += ' active';
} }
} }
// Initialisation
if (next) next.addEventListener('click', slideNext);
if (prev) prev.addEventListener('click', slidePrev);
// Event listeners pour les dots
for (var i = 0; i < dots.length; i++) {
dots[i].addEventListener('click', function() {
var imageId = parseInt(this.getAttribute('attr'));
if (!isNaN(imageId)) {
switchImage(imageId);
}
});
}
// Fonction switchImage
function switchImage(imageId){ function switchImage(imageId){
if(imageId > counter){ if(imageId > counter){
slideImages[counter].style.animation = 'next1 0.5s ease-in forwards'; slideImages[counter].style.animation = 'next1 0.5s ease-in forwards';
counter = imageId; counter = imageId;
slideImages[counter].style.animation = 'next2 0.5s ease-in forwards'; slideImages[counter].style.animation = 'next2 0.5s ease-in forwards';
} else if(imageId == counter){ }
else if(imageId == counter){
return; return;
} else { }
else{
slideImages[counter].style.animation = 'prev1 0.5s ease-in forwards'; slideImages[counter].style.animation = 'prev1 0.5s ease-in forwards';
counter = imageId; counter = imageId;
slideImages[counter].style.animation = 'prev2 0.5s ease-in forwards'; slideImages[counter].style.animation = 'prev2 0.5s ease-in forwards';
@ -682,35 +632,32 @@
indicators(); indicators();
} }
// Nettoyage // Démarrer
function destroySlider() { autoSliding();
clearInterval(deletInterval); indicators();
if (next) next.removeEventListener('click', slideNext); // Events mouseover/mouseout
if (prev) prev.removeEventListener('click', slidePrev);
if (container) { if (container) {
container.removeEventListener('mouseover', function(){}); container.addEventListener('mouseover', function(){
container.removeEventListener('mouseout', autoSliding); clearInterval(deletInterval);
});
container.addEventListener('mouseout', autoSliding);
}
} }
for (var i = 0; i < dots.length; i++) { // Démarrer au bon moment
dots[i].removeEventListener('click', function(){});
}
window.sliderInstance = null;
console.log('Slider détruit');
}
// Initialiser quand le DOM est prêt
if (document.readyState === 'loading') { if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initSlider); document.addEventListener('DOMContentLoaded', initSlider);
} else { } else {
initSlider(); // Déjà chargé, mais attendre un peu pour les contenus AJAX
setTimeout(initSlider, 100);
} }
// Exposer publiquement si nécessaire // Réexécuter après les chargements AJAX
window.initSlider = initSlider; $(document).ajaxComplete(function() {
window.destroySlider = destroySlider; setTimeout(initSlider, 50);
});
})(); })();
</script> </script>
</body> </body>