fix : externaliser tous les scripts inline (CSP script-src 'self')
Tous les <script> inline et event handlers inline bloqués par la CSP sont déplacés vers des fichiers JS statiques servis par 'self' : - density-fouc.js : anti-FOUC densité (chargé en <head>) - density.js : widget L/M/S - trending-home.js : AJAX "Meilleures audiences" (RSS XML) - admin-stats.js : groupes AS + pages trending (RSS XML) - admin.js : bookAddArticle + bulk-delete (onclick/onchange → listeners) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -45,4 +45,28 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Suppression groupée avec confirmation (remplace onclick inline)
|
||||
var bulkDeleteBtn = document.getElementById('bulk-delete-btn');
|
||||
if (bulkDeleteBtn) {
|
||||
bulkDeleteBtn.addEventListener('click', function (e) {
|
||||
var checked = document.querySelectorAll('.bulk-check:checked').length;
|
||||
if (checked === 0) { e.preventDefault(); return; }
|
||||
var msg = bulkDeleteBtn.getAttribute('data-confirm-bulk') || 'Confirmer ?';
|
||||
if (!window.confirm(msg)) { e.preventDefault(); }
|
||||
});
|
||||
}
|
||||
|
||||
// Ajout d'un article à un livre (remplace onchange="bookAddArticle(this)")
|
||||
var bookArticleSel = document.getElementById('book-article-select');
|
||||
if (bookArticleSel) {
|
||||
bookArticleSel.addEventListener('change', function () {
|
||||
var slug = bookArticleSel.value;
|
||||
if (!slug) { return; }
|
||||
var ta = document.getElementById('book-articles-ta');
|
||||
var lines = ta.value.split('\n').map(function (s) { return s.trim(); }).filter(Boolean);
|
||||
if (lines.indexOf(slug) === -1) { lines.push(slug); ta.value = lines.join('\n'); }
|
||||
bookArticleSel.value = '';
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user