Correction script portail
This commit is contained in:
parent
74bc4004da
commit
a47ed1b093
|
|
@ -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,23 +16292,18 @@ 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
|
loginElement.focus();
|
||||||
if (loginElement) {
|
|
||||||
loginElement.focus();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
267
Vue/portail.php
267
Vue/portail.php
|
|
@ -527,83 +527,116 @@
|
||||||
</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';
|
||||||
|
|
||||||
// Vérifier si déjà initialisé
|
// Attendre que le DOM soit complètement chargé
|
||||||
if (window.sliderInstance) {
|
|
||||||
console.warn('Une instance de slider existe déjà');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Empêche inspecter dans le navigateur
|
|
||||||
/*
|
|
||||||
if (document.addEventListener) {
|
|
||||||
document.addEventListener('contextmenu', function (e) {
|
|
||||||
e.preventDefault();
|
|
||||||
}, false);
|
|
||||||
} else {
|
|
||||||
document.attachEvent('oncontextmenu', function () {
|
|
||||||
window.event.returnValue = false;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Déclaration des variables
|
|
||||||
var slideImages, next, prev, dots, counter, deletInterval, container;
|
|
||||||
|
|
||||||
// Initialisation
|
|
||||||
function initSlider() {
|
function initSlider() {
|
||||||
slideImages = document.querySelectorAll('.slide-image');
|
// Vérifier si déjà initialisé
|
||||||
next = document.querySelector('.next');
|
if (window.sliderInitialized) {
|
||||||
prev = document.querySelector('.prev');
|
return;
|
||||||
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
|
// Rechercher les éléments
|
||||||
setupEventListeners();
|
var slideImages = document.querySelectorAll('.slide-image');
|
||||||
|
var next = document.querySelector('.next');
|
||||||
|
var prev = document.querySelector('.prev');
|
||||||
|
var dots = document.querySelectorAll('.dot');
|
||||||
|
var container = document.querySelector('.slide-container');
|
||||||
|
|
||||||
// Démarrer le slider
|
// VÉRIFICATION CRITIQUE : Si aucun élément n'existe, on arrête
|
||||||
|
if (slideImages.length === 0) {
|
||||||
|
// Pas d'erreur en console pour ne pas polluer les logs
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Marquer comme initialisé
|
||||||
|
window.sliderInitialized = true;
|
||||||
|
|
||||||
|
// Variables du slider
|
||||||
|
var counter = 0;
|
||||||
|
var deletInterval;
|
||||||
|
|
||||||
|
// Fonctions du slider
|
||||||
|
function slideNext(){
|
||||||
|
slideImages[counter].style.animation = 'next1 0.5s ease-in forwards';
|
||||||
|
|
||||||
|
if(counter >= slideImages.length-1){
|
||||||
|
counter = 0;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
counter++;
|
||||||
|
}
|
||||||
|
slideImages[counter].style.animation = 'next2 0.5s ease-in forwards';
|
||||||
|
indicators();
|
||||||
|
}
|
||||||
|
|
||||||
|
function slidePrev(){
|
||||||
|
slideImages[counter].style.animation = 'prev1 0.5s ease-in forwards';
|
||||||
|
if(counter == 0){
|
||||||
|
counter = slideImages.length-1;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
counter--;
|
||||||
|
}
|
||||||
|
slideImages[counter].style.animation = 'prev2 0.5s ease-in forwards';
|
||||||
|
indicators();
|
||||||
|
}
|
||||||
|
|
||||||
|
function autoSliding(){
|
||||||
|
clearInterval(deletInterval);
|
||||||
|
deletInterval = setInterval(function() {
|
||||||
|
slideNext();
|
||||||
|
}, 3000);
|
||||||
|
}
|
||||||
|
|
||||||
|
function indicators(){
|
||||||
|
for(var i = 0; i < dots.length; i++){
|
||||||
|
dots[i].className = dots[i].className.replace(' active', '');
|
||||||
|
}
|
||||||
|
if (dots[counter]) {
|
||||||
|
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){
|
||||||
|
if(imageId > counter){
|
||||||
|
slideImages[counter].style.animation = 'next1 0.5s ease-in forwards';
|
||||||
|
counter = imageId;
|
||||||
|
slideImages[counter].style.animation = 'next2 0.5s ease-in forwards';
|
||||||
|
}
|
||||||
|
else if(imageId == counter){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
slideImages[counter].style.animation = 'prev1 0.5s ease-in forwards';
|
||||||
|
counter = imageId;
|
||||||
|
slideImages[counter].style.animation = 'prev2 0.5s ease-in forwards';
|
||||||
|
}
|
||||||
|
indicators();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Démarrer
|
||||||
autoSliding();
|
autoSliding();
|
||||||
indicators();
|
indicators();
|
||||||
|
|
||||||
// Stocker l'instance
|
// Events mouseover/mouseout
|
||||||
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) {
|
if (container) {
|
||||||
container.addEventListener('mouseover', function(){
|
container.addEventListener('mouseover', function(){
|
||||||
clearInterval(deletInterval);
|
clearInterval(deletInterval);
|
||||||
|
|
@ -611,106 +644,20 @@
|
||||||
|
|
||||||
container.addEventListener('mouseout', autoSliding);
|
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
|
// Démarrer au bon moment
|
||||||
function slideNext(){
|
|
||||||
slideImages[counter].style.animation = 'next1 0.5s ease-in forwards';
|
|
||||||
|
|
||||||
if(counter >= slideImages.length-1){
|
|
||||||
counter = 0;
|
|
||||||
} else {
|
|
||||||
counter++;
|
|
||||||
}
|
|
||||||
|
|
||||||
slideImages[counter].style.animation = 'next2 0.5s ease-in forwards';
|
|
||||||
indicators();
|
|
||||||
}
|
|
||||||
|
|
||||||
function slidePrev(){
|
|
||||||
slideImages[counter].style.animation = 'prev1 0.5s ease-in forwards';
|
|
||||||
|
|
||||||
if(counter == 0){
|
|
||||||
counter = slideImages.length-1;
|
|
||||||
} else {
|
|
||||||
counter--;
|
|
||||||
}
|
|
||||||
|
|
||||||
slideImages[counter].style.animation = 'prev2 0.5s ease-in forwards';
|
|
||||||
indicators();
|
|
||||||
}
|
|
||||||
|
|
||||||
function autoSliding(){
|
|
||||||
clearInterval(deletInterval);
|
|
||||||
deletInterval = setInterval(function() {
|
|
||||||
slideNext();
|
|
||||||
}, 3000);
|
|
||||||
}
|
|
||||||
|
|
||||||
function indicators(){
|
|
||||||
for(var i = 0; i < dots.length; i++){
|
|
||||||
dots[i].className = dots[i].className.replace(' active', '');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dots[counter]) {
|
|
||||||
dots[counter].className += ' active';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function switchImage(imageId){
|
|
||||||
if(imageId > counter){
|
|
||||||
slideImages[counter].style.animation = 'next1 0.5s ease-in forwards';
|
|
||||||
counter = imageId;
|
|
||||||
slideImages[counter].style.animation = 'next2 0.5s ease-in forwards';
|
|
||||||
} else if(imageId == counter){
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
slideImages[counter].style.animation = 'prev1 0.5s ease-in forwards';
|
|
||||||
counter = imageId;
|
|
||||||
slideImages[counter].style.animation = 'prev2 0.5s ease-in forwards';
|
|
||||||
}
|
|
||||||
indicators();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Nettoyage
|
|
||||||
function destroySlider() {
|
|
||||||
clearInterval(deletInterval);
|
|
||||||
|
|
||||||
if (next) next.removeEventListener('click', slideNext);
|
|
||||||
if (prev) prev.removeEventListener('click', slidePrev);
|
|
||||||
if (container) {
|
|
||||||
container.removeEventListener('mouseover', function(){});
|
|
||||||
container.removeEventListener('mouseout', autoSliding);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var i = 0; i < dots.length; i++) {
|
|
||||||
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>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user