mirror of
https://codeberg.org/PostERG/xamxam.git
synced 2026-06-25 16:19:19 +02:00
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:
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user