Suppression d'un quiz - Erreur JSON

Re: Suppression d'un quiz - Erreur JSON

par Olivier Valentin,
Nombre de réponses : 0
Avatar Développeurs de plugins Avatar Moodleurs particulièrement utiles

Je pense avoir trouvé la source du problème, si cela peut aider quelqu'un par la suite...

D'après certains forums Moodle et autres, qui évoquent un problème de chaines de caractère ne passant pas dans le parse de JSON, j'ai recherché la chaine de caractères problématique, qui était "unusedcategorydeleted". Je l'ai changée dans le fichier de traduction pour n'avoir que des lettres et aucun caractère spécial (du genre "AAA"), mais cela n'a pas fait disparaitre le problème.

En revanche, je suis allé plus loin : j'ai cherché le ou les fichier(s) incluant cette chaine : elle est présente dans la bibliothèque de fonctions relatives aux questions, à savoir questionlib.php. Une fonction, "question_delete_context", permet la suppression des catégories de question selon le contexte quiz et renvoie pour chaque catégorie concernée son nom, ainsi que le message d'avertissement "Cette catégorie a été supprimée, car après la suppression du cours, les questions qui y étaient classées ne sont plus utilisées nulle part. ".

J'ai simplement mis en commentaire dans ce fichier la dernière ligne de la fonction, "return $feedbackdata;", afin qu'aucun message supplémentaire ne soit renvoyé. Et ça marche ! Le test est bien supprimé, et je n'ai plus de pop-up concernant une erreur JSON !

Cela ne veut pas dire que l'erreur n'existe plus ; mais en tout cas, la piste est la bonne : il semblerait que, dans les messages renvoyés dans la variable $feedbackdata, il y ait des caractères HTML qui ne peuvent être pris en charge pour le parsage JSON. Et a priori, ces caractères ne sont pas contenus dans la chaine "unusedcategorydeleted",  mais plutôt dans la variable $feedbackdata.  Il est donc possible que le tableau généré pour stocker tous les messages soit à l'origine du problème. Pour rappel, il s'agissait du code suivant, obtenu via la console de mon navigateur.

<table class="generaltable">
<thead>
<tr>
<th class="header c0" style="" scope="col">Catégorie</th>
<th class="header c1 lastcol" style="" scope="col">Action</th>
</tr>
</thead>
<tbody><tr class="">
<td class="cell c0" style="">top</td>
<td class="cell c1 lastcol" style="">Cette catégorie a été supprimée, car après la suppression du cours, les questions qui y étaient classées ne sont plus utilisées nulle part.</td>
</tr>
<tr class="lastrow">
<td class="cell c0" style="">Défaut pour test</td>
<td class="cell c1 lastcol" style="">Cette catégorie a été supprimée, car après la suppression du cours, les questions qui y étaient classées ne sont plus utilisées nulle part.</td>
</tr>
</tbody>
</table>
[{"error":false,"data":""}]
Moyenne des évaluations Utile (1)