Index page: remove Mots-clés button, move export to bulk selection, fix ZipArchive error, move DB export to paramètres, sticky thead

- Remove 'Mots-clés' button from toolbar (redundant with admin sidebar tags)
- Replace export dialog with 'Exporter CSV' + 'Exporter fichiers' buttons in bulk selection bar
- Export dispatcher now accepts ?ids=1,2,3 for per-selection export
- All ExportController/Database methods accept optional thesisIds array
- Graceful error message when ZipArchive extension is missing on server
- Move DB export (SQLite download) to paramètres → Maintenance section
- Sticky table column headers (position: sticky, top: 0, z-index: 5) for index page table
This commit is contained in:
Pontoporeia
2026-05-19 19:05:28 +02:00
parent b484943128
commit 678f9fc804
8 changed files with 148 additions and 86 deletions

View File

@@ -21,6 +21,18 @@ $doCsv = !empty($_GET['csv']);
$doFiles = !empty($_GET['files']);
$doDb = !empty($_GET['db']);
// Optional: filter by selected thesis IDs (bulk selection export)
$idsRaw = $_GET['ids'] ?? '';
$selectedIds = [];
if ($idsRaw !== '') {
foreach (explode(',', $idsRaw) as $id) {
$id = (int) trim($id);
if ($id > 0) {
$selectedIds[] = $id;
}
}
}
if (!$doCsv && !$doFiles && !$doDb) {
$doCsv = true;
}
@@ -40,7 +52,7 @@ if ($doCsv) {
$out = fopen('php://output', 'w');
fputcsv($out, ExportController::CSV_HEADERS, ',', '"', '');
$rows = $controller->exportAllTheses();
$rows = $controller->exportAllTheses($selectedIds);
foreach ($rows as $csvLine) {
fputcsv($out, $csvLine, ',', '"', '');
}
@@ -53,10 +65,14 @@ if ($doCsv) {
}
if ($doFiles) {
if (!class_exists('ZipArchive')) {
http_response_code(500);
exit('Module PHP <code>zip</code> non installé sur le serveur. Contactez l\'administrateur système (<code>apt install php8.4-zip</code>).');
}
try {
$zipPath = $controller->createExportZip();
$zipPath = $controller->createExportZip($selectedIds);
$fileSize = filesize($zipPath);
$fileCount = count($controller->getAllThesisFiles());
$fileCount = count($controller->getAllThesisFiles($selectedIds));
AdminLogger::make()->logFilesExport($fileCount, (int)$fileSize);