feat : tri par titre et date dans /admin/articles (v1.6.9)

En-têtes "Titre" et "Date" cliquables, indicateur ↑/↓, paramètres sort/dir
préservés lors du filtrage. Tri appliqué après filtres côté PHP.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-15 21:14:22 +02:00
parent fa00f61ee0
commit 04a7713286
4 changed files with 59 additions and 5 deletions
+17 -2
View File
@@ -2333,7 +2333,6 @@ switch ($action) {
$me = currentUserEmail() ?? '';
$allArticles = array_values(array_filter($allArticles, fn ($a) => ($a['author'] ?? '') === $me));
}
usort($allArticles, fn ($a, $b) => strcmp($b['updated_at'] ?? '', $a['updated_at'] ?? ''));
$adminData['filter_authors'] = array_values(array_unique(array_filter(array_column($allArticles, 'author'))));
$adminData['filter_categories'] = array_values(array_unique(array_filter(array_column($allArticles, 'category'))));
@@ -2362,7 +2361,23 @@ switch ($action) {
$allArticles = array_values(array_filter($allArticles, fn ($a) => $a['published'] && strtotime((string)($a['published_at'] ?? '')) > $nowTs));
}
$adminData['articles'] = $allArticles;
$sortBy = in_array($_GET['sort'] ?? '', ['title', 'published', 'updated']) ? $_GET['sort'] : 'updated';
$sortDir = ($_GET['dir'] ?? '') === 'asc' ? 'asc' : 'desc';
usort($allArticles, function ($a, $b) use ($sortBy, $sortDir) {
$cmp = match ($sortBy) {
'title' => strcmp($a['title'] ?? '', $b['title'] ?? ''),
'published' => strcmp(
$a['published_at'] ?? $a['created_at'] ?? '',
$b['published_at'] ?? $b['created_at'] ?? ''
),
default => strcmp($a['updated_at'] ?? '', $b['updated_at'] ?? ''),
};
return $sortDir === 'asc' ? $cmp : -$cmp;
});
$adminData['articles'] = $allArticles;
$adminData['sort_by'] = $sortBy;
$adminData['sort_dir'] = $sortDir;
}
if ($tab === 'roles') {