8fda93044d
CI / PHP Syntax Check (push) Has been cancelled
CI / JavaScript Lint (push) Has been cancelled
CI / Docker Build Test (push) Has been cancelled
CI / Validate Translation Files (push) Has been cancelled
CI / Auto-merge develop → main (push) Has been cancelled
CI / Create GitHub Release (push) Has been cancelled
49 lines
2.1 KiB
HTML
49 lines
2.1 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>EverShelf - Réconciliation (Session Hijack)</title>
|
|
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
|
<style>
|
|
body { font-family: sans-serif; background: #222; color: #eee; padding: 20px; }
|
|
.card { background: #444; padding: 20px; border-radius: 8px; margin-bottom: 20px; }
|
|
button { padding: 8px 15px; background: #1976d2; color: white; border: none; border-radius: 5px; cursor: pointer; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="card">
|
|
<h3>Modification en masse (Mode Bypass)</h3>
|
|
<button id="save-btn" onclick="runBypass()">DÉMARRER LA RÉCONCILIATION</button>
|
|
</div>
|
|
<script>
|
|
async function runBypass() {
|
|
// Cette fonction utilise la fonction de sauvegarde du site officiel
|
|
// au lieu de faire un 'fetch' qui est bloqué par le serveur.
|
|
const btn = document.getElementById('save-btn');
|
|
btn.disabled = true;
|
|
|
|
// On récupère les éléments de la page originale EverShelf
|
|
// Tu dois ouvrir ton interface officielle dans un onglet,
|
|
// et exécuter ce script via la console F12 de CET onglet.
|
|
|
|
const selected = document.querySelectorAll('input.prod-check:checked');
|
|
const targetCat = document.getElementById('cat-mass').value;
|
|
|
|
for (let item of selected) {
|
|
// Ici, on appelle la fonction interne du site.
|
|
// Recherche dans le code source du site officiel une fonction nommée 'saveProduct', 'updateProduct', ou 'ajax'
|
|
try {
|
|
// EXEMPLE : si ton site a une fonction 'saveProduct'
|
|
await saveProduct(item.dataset.index, { category: targetCat });
|
|
console.log("Succès");
|
|
} catch (e) {
|
|
console.error("Erreur d'injection : ", e);
|
|
}
|
|
await new Promise(r => setTimeout(r, 500));
|
|
}
|
|
alert("Processus terminé.");
|
|
btn.disabled = false;
|
|
}
|
|
</script>
|
|
</body>
|
|
</html> |