From 7d76d6efa5df21b9c30d6a942cdfe918303f3460 Mon Sep 17 00:00:00 2001 From: Tykayn Date: Mon, 8 Sep 2025 21:08:15 +0200 Subject: [PATCH] up archived proposals --- .../admin/wiki_archived_proposals.html.twig | 2 +- wiki_compare/CHANGES_TOP_VOTERS.md | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 wiki_compare/CHANGES_TOP_VOTERS.md diff --git a/templates/admin/wiki_archived_proposals.html.twig b/templates/admin/wiki_archived_proposals.html.twig index ffa4c7f..31d427a 100644 --- a/templates/admin/wiki_archived_proposals.html.twig +++ b/templates/admin/wiki_archived_proposals.html.twig @@ -309,7 +309,7 @@ - {% for voter in statistics.top_voters %} + {% for voter in statistics.top_voters|default([]) %} {{ loop.index }} diff --git a/wiki_compare/CHANGES_TOP_VOTERS.md b/wiki_compare/CHANGES_TOP_VOTERS.md new file mode 100644 index 0000000..9f76f35 --- /dev/null +++ b/wiki_compare/CHANGES_TOP_VOTERS.md @@ -0,0 +1,52 @@ +# Correction de l'erreur avec `statistics.top_voters` dans wiki_archived_proposals.html.twig + +## Description du problème + +Le template `admin/wiki_archived_proposals.html.twig` présentait une erreur lors de l'accès à la clé `top_voters` qui n'existait pas dans le tableau `statistics`. L'erreur était la suivante : + +``` +Key "top_voters" for sequence/mapping with keys "0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99" does not exist in admin/wiki_archived_proposals.html.twig at line 312. +``` + +Cette erreur se produisait lorsque le template tentait d'itérer sur `statistics.top_voters` à la ligne 312, mais cette clé n'existait pas dans le tableau `statistics` passé par le contrôleur. + +## Vérification du contrôleur + +Après avoir examiné la méthode `archivedProposals` dans `WikiController.php`, j'ai constaté que le contrôleur charge les données depuis un fichier JSON et passe la variable `statistics` au template : + +```php +// Extract statistics object +$statistics = $this->extractJsonArrayByKey($jsonFile, 'statistics', $maxItems); + +// ... + +return $this->render('admin/wiki_archived_proposals.html.twig', [ + 'proposals' => $proposals, + 'statistics' => $statistics, + 'last_updated' => $lastUpdated, + 'limit' => $limit +]); +``` + +Cependant, le contrôleur ne vérifie pas explicitement si la clé `top_voters` existe dans le tableau `statistics`. + +## Modification apportée + +J'ai ajouté une valeur par défaut pour `statistics.top_voters` dans le template en utilisant le filtre `default` de Twig : + +```twig +{% for voter in statistics.top_voters|default([]) %} +``` + +Cette modification permet d'utiliser un tableau vide comme valeur par défaut si `statistics.top_voters` n'existe pas, ce qui évite l'erreur et fait que la boucle ne s'exécute pas dans ce cas. + +## Avantages de cette modification + +1. **Robustesse** : Le template est maintenant plus robuste et peut gérer les cas où la clé `top_voters` n'existe pas dans le tableau `statistics`. +2. **Prévention des erreurs** : L'erreur liée à l'accès à une clé inexistante est évitée. +3. **Expérience utilisateur améliorée** : Les utilisateurs ne verront plus d'erreurs, mais simplement une section vide lorsque les données des votants ne sont pas disponibles. +4. **Maintenance simplifiée** : Cette approche est plus maintenable que de modifier le contrôleur, car elle gère le problème au niveau du template sans nécessiter de changements dans la logique du contrôleur. + +## Remarque + +Cette modification suit la même approche que celle utilisée pour corriger les problèmes similaires avec d'autres clés dans le même template, comme `total_votes`, `avg_votes_per_proposal`, etc. C'est une pratique courante dans les templates Twig d'utiliser le filtre `default` pour gérer les cas où des variables ou des clés peuvent ne pas exister. \ No newline at end of file