Actualiser test.html
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
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
This commit is contained in:
@@ -39,11 +39,13 @@
|
||||
|
||||
async function loadData() {
|
||||
try {
|
||||
// Chargement des données
|
||||
const [transRes, prodsRes] = await Promise.all([
|
||||
fetch('translations/fr.json').then(r => r.json()),
|
||||
fetch('api/index.php?action=products_list').then(r => r.json())
|
||||
]);
|
||||
categories = transRes.categories || {};
|
||||
// Vérification de la structure des données
|
||||
fullProductList = prodsRes.inventory || prodsRes.products || prodsRes;
|
||||
|
||||
const catSel = document.getElementById('cat-mass');
|
||||
@@ -91,33 +93,29 @@
|
||||
let errorCount = 0;
|
||||
|
||||
for (const checkbox of checkedBoxes) {
|
||||
let p = fullProductList[checkbox.dataset.index];
|
||||
|
||||
let formData = new FormData();
|
||||
for (let key in p) {
|
||||
formData.append(key, p[key]);
|
||||
}
|
||||
formData.set('category', newCat);
|
||||
let p = { ...fullProductList[checkbox.dataset.index] };
|
||||
p.category = newCat;
|
||||
|
||||
try {
|
||||
// Ajout de credentials: 'include' pour envoyer tes cookies de connexion
|
||||
// Ajout de X-Requested-With pour simuler une requête AJAX authentique
|
||||
// On force les headers pour simuler une requête de l'interface officielle
|
||||
// credentials: 'include' envoie les cookies de session
|
||||
let res = await fetch('api/index.php?action=product_save', {
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
credentials: 'include',
|
||||
headers: {
|
||||
'X-Requested-With': 'XMLHttpRequest'
|
||||
}
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'X-Requested-With': 'XMLHttpRequest'
|
||||
},
|
||||
body: JSON.stringify(p),
|
||||
credentials: 'include'
|
||||
});
|
||||
|
||||
if (res.ok) {
|
||||
successCount++;
|
||||
} else {
|
||||
console.error("Erreur serveur sur " + p.name, res.status);
|
||||
console.error("Erreur serveur sur " + p.name + ":", res.status);
|
||||
errorCount++;
|
||||
}
|
||||
await new Promise(r => setTimeout(r, 300));
|
||||
await new Promise(r => setTimeout(r, 400)); // Pause pour ne pas saturer
|
||||
} catch (e) {
|
||||
console.error("Erreur réseau sur " + p.name, e);
|
||||
errorCount++;
|
||||
@@ -127,8 +125,7 @@
|
||||
await loadData();
|
||||
btn.disabled = false;
|
||||
btn.textContent = "APPLIQUER AUX COCHÉS";
|
||||
|
||||
alert(`Traitement terminé :\n- Succès : ${successCount}\n- Erreurs : ${errorCount}`);
|
||||
alert(`Terminé :\nSuccès : ${successCount}\nErreurs : ${errorCount}`);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
Reference in New Issue
Block a user