PC
Aventure
0,0
0,0 étoiles sur 5 (selon 0 avis)
Se connecterCréer un compte`;// Style et insertionloginMessage.style.position = 'fixed';loginMessage.style.top = '50%';loginMessage.style.left = '50%';loginMessage.style.transform = 'translate(-50%, -50%)';loginMessage.style.backgroundColor = '#fff';loginMessage.style.padding = '20px';loginMessage.style.boxShadow = '0 4px 6px rgba(0, 0, 0, 0.1)';loginMessage.style.borderRadius = '10px';loginMessage.style.zIndex = '1000';document.body.appendChild(loginMessage);// Ajoute un arrière-plan semi-transparentconst overlay = document.createElement('div');overlay.className = 'login-overlay';overlay.style.position = 'fixed';overlay.style.top = '0';overlay.style.left = '0';overlay.style.width = '100%';overlay.style.height = '100%';overlay.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';overlay.style.zIndex = '999';document.body.appendChild(overlay);// Supprime le message et l'overlay lorsqu'on clique dessusoverlay.addEventListener('click', function() {document.body.removeChild(loginMessage);document.body.removeChild(overlay);});}// Vérifier si l'utilisateur est connectéif (!isUserLoggedIn) {button.addEventListener('click', function(event) {event.preventDefault();showLoginPrompt(); // Affiche une fenêtre ou redirige});return; // Arrête ici si l'utilisateur n'est pas connecté} // Obtenir l'état initial pour cette version getInitialLikeState(gameId, function(isInLike) { // Si la version est dans la collection et l'action est "collection", on veut peut-être "remove" if (isInLike && action === 'like') { button.dataset.realAction = 'remove'; } else { button.dataset.realAction = 'add'; } // Mettre à jour le texte ou l'icône du bouton en fonction de isInCollection updateLikeAppearance(button, isInLike); } ); button.addEventListener('click', function() {var realAction = this.dataset.realAction; // "add" ou "remove"toggleLikeForUser(gameId, realAction, function(success, newInLikeState) { if (success) { // Mettre à jour l'apparence du bouton avec le nouvel état updateLikeAppearance(button, newInLikeState); // Inverser l'action pour le prochain clic en ajustant 'data-realAction' button.dataset.realAction = newInLikeState ? 'remove' : 'add'; } });});});function getInitialLikeState(gameId, callback) { jQuery.ajax({ method: "POST", url: "https://lootr.fr/wp-admin/admin-ajax.php", data: { action: 'check_user_game_like', game_id: gameId }, success: function(response) { if (response.success) { // Utilisez la valeur de 'in_collection' pour décider si la version est dans la collection ou non var isInLike = response.data.in_like; callback(isInLike); // Appelez le rappel avec la valeur correcte } else { callback(false); // En cas d'échec, supposez que la version n'est pas dans la collection } }, error: function() { console.log('Erreur lors de la récupération de l\'état initial de la version.'); callback(false); } });}function updateLikeAppearance(button, isInLike) { var likeIcon = button.querySelector(".like-icon i"); var buttonText = button.querySelector("span"); if (isInLike) { likeIcon.classList.remove('fa-regular', 'fa-heart'); likeIcon.classList.add('fa-solid', 'fa-heart','fa-beat');likeIcon.style.setProperty("--fa-animation-iteration-count", "2"); buttonText.textContent = "J'aime"; button.dataset.realAction = 'remove'; } else { likeIcon.classList.remove('fa-solid', 'fa-heart','fa-beat');likeIcon.classList.add('fa-regular', 'fa-heart'); buttonText.textContent = "J'aime"; button.dataset.realAction = "add"; }}function toggleLikeForUser(gameId, action, callback) { jQuery.ajax({ url: "https://lootr.fr/wp-admin/admin-ajax.php", method: 'POST', data: { action: 'toggle_user_game_like', game_id: gameId, toggle_action: action }, success: function(response) { if (response.success) { // Le nouvel état de isInCollection dépend de l'action réalisée var newInLikeState = action === 'add'; // Appeler le callback avec succès et le nouvel état de isInLike callback(true, newInLikeState);var pointsChange = (action === 'add') ? 1 : -1;showPointsNotification(pointsChange, response.data.points); // Utiliser response.data.points pour les points totaux } else { console.error('Erreur lors de la mise à jour de la version pour l\'utilisateur.'); callback(false, null); } }, error: function() { console.error('Erreur AJAX lors de la mise à jour de la version pour l\'utilisateur.'); callback(false, null); } });}
Année de sortie: 2024
Éditeur: Zhuyuan Co., Ltd.
Développeur: Zhuyuan Co., Ltd.
`; // Ajouter le HTML de la modale au body document.body.insertAdjacentHTML('beforeend', modalHTML); // Ajouter le reste du code JS pour gérer l'interaction avec la fenêtre modale document.querySelectorAll('.toggle-version').forEach(button => { var gameInfoElement = document.querySelector(".game-info"); var gameId = gameInfoElement.getAttribute("data-game-id"); var version = button.dataset.version; var action = button.dataset.action; // "collection" ou "je_le_veux"function showLoginPrompt() {// Affiche un message convivialconst loginMessage = document.createElement('div');loginMessage.className = 'login-prompt';loginMessage.innerHTML = `
Vous devez être connecté pour posséder ce jeu.
Se connecterCréer un compte`;// Style et insertionloginMessage.style.position = 'fixed';loginMessage.style.top = '50%';loginMessage.style.left = '50%';loginMessage.style.transform = 'translate(-50%, -50%)';loginMessage.style.backgroundColor = '#fff';loginMessage.style.padding = '20px';loginMessage.style.boxShadow = '0 4px 6px rgba(0, 0, 0, 0.1)';loginMessage.style.borderRadius = '10px';loginMessage.style.zIndex = '1000';document.body.appendChild(loginMessage);// Ajoute un arrière-plan semi-transparentconst overlay = document.createElement('div');overlay.className = 'login-overlay';overlay.style.position = 'fixed';overlay.style.top = '0';overlay.style.left = '0';overlay.style.width = '100%';overlay.style.height = '100%';overlay.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';overlay.style.zIndex = '999';document.body.appendChild(overlay);// Supprime le message et l'overlay lorsqu'on clique dessusoverlay.addEventListener('click', function() {document.body.removeChild(loginMessage);document.body.removeChild(overlay);});}// Vérifier si l'utilisateur est connectéif (!isUserLoggedIn) {button.addEventListener('click', function(event) {event.preventDefault();showLoginPrompt(); // Affiche une fenêtre ou redirige});return; // Arrête ici si l'utilisateur n'est pas connecté} getInitialVersionState(gameId, version, function(isInCollection) { if (isInCollection && action === 'collection') { button.dataset.realAction = 'remove'; } else { button.dataset.realAction = 'add'; } updateCollectionAppearance(button, isInCollection); }); button.addEventListener('click', function() { var realAction = this.dataset.realAction; // "add" ou "remove" if (realAction === 'add') { openModal(gameId, version); } else { toggleVersionForUser(gameId, version, realAction, {}, function(success, newInCollectionState) { if (success) { updateCollectionAppearance(button, newInCollectionState); button.dataset.realAction = newInCollectionState ? 'remove' : 'add'; } }); } }); }); function getInitialVersionState(gameId, version, callback) { jQuery.ajax({ method: "POST", url: "https://lootr.fr/wp-admin/admin-ajax.php", data: { action: 'check_user_game_version', game_id: gameId, version: version }, success: function(response) { if (response.success) { var isInCollection = response.data.in_collection; callback(isInCollection); } else { callback(false); } }, error: function() { console.log('Erreur lors de la récupération de l\'état initial de la version.'); callback(false); } }); } function updateCollectionAppearance(button, isInCollection) { var collectionIcon = button.querySelector(".collection-icon i"); var buttonText = button.querySelector("span"); if (isInCollection) { collectionIcon.classList.remove('fa-square'); collectionIcon.classList.add('fa-check-square'); buttonText.textContent = "J'ai"; button.dataset.realAction = 'remove'; } else { collectionIcon.classList.remove('fa-check-square'); collectionIcon.classList.add('fa-square'); buttonText.textContent = "J'ai"; button.dataset.realAction = "add"; } } function toggleVersionForUser(gameId, version, action, data, callback) { jQuery.ajax({ url: "https://lootr.fr/wp-admin/admin-ajax.php", method: 'POST', data: { action: 'toggle_user_game_version', game_id: gameId, version: version, toggle_action: action, has_box: data.has_box || 0, has_notice: data.has_notice || 0, has_game: data.has_game || 0, is_new: data.is_new || 0 }, success: function(response) { console.log("Réponse complète:", response); if (response.success) { var newInCollectionState = action === 'add'; callback(true, newInCollectionState);var pointsChange = (action === 'add') ? 3 : -3;showPointsNotification(pointsChange, response.data.points); // Utiliser response.data.points pour les points totaux } else { console.error('Erreur lors de la mise à jour de la version pour l\'utilisateur.'); callback(false, null); } }, error: function() { console.error('Erreur AJAX lors de la mise à jour de la version pour l\'utilisateur.'); callback(false, null); } }); } function openModal(gameId, version) { var modal = document.getElementById("collectionModal"); modal.style.display = "block"; document.getElementById("modalAddButton").onclick = function() { var hasBox = document.getElementById("has_box").checked ? 1 : 0; var hasNotice = document.getElementById("has_notice").checked ? 1 : 0; var hasGame = document.getElementById("has_game").checked ? 1 : 0; var isNew = document.getElementById("is_new").checked ? 1 : 0; var data = { has_box: hasBox, has_notice: hasNotice, has_game: hasGame, is_new: isNew }; toggleVersionForUser(gameId, version, 'add', data, function(success, newInCollectionState) { if (success) { var button = document.querySelector(`[data-version="${version}"]`); updateCollectionAppearance(button, newInCollectionState); button.dataset.realAction = 'remove'; } }); modal.style.display = "none"; }; document.getElementById("modalCloseButton").onclick = function() { modal.style.display = "none"; }; } window.onclick = function(event) { var modal = document.getElementById("collectionModal"); if (event.target == modal) { modal.style.display = "none"; } };});