Bonjour,
le phénomène de la popup undefined est bien connu des intégrateurs techniques Moodle. Les causes en sont multiples mais en général :
- Non persistante :
- Altération du cache de scripts moodle : Moodle cache ses scripts javascript et ses feuilles de style dans un cache sur le serveur. Si au moment de générer ce cache une erreur se produit (là encore multiples causes) alors des fonction de la page peuvent être altérées => Vider les caches est souvent une solution
- Altération du cache local du navigateur : à peu près les mêmes effets si un script ou une css tronquée se coince dans le cache local.
- Persistante :
- Collision de librairies Javascript dans des plugins : Moodle est en train de muter progressivement vers une généralisation de l'AMD (une méthode pour écrire les javascripts et éviter qu'ils se marchent dessus les uns les autres). Il y a actuellement encore un mélange de :
- anciennes pratiques YUI
- nouvelles pratiques AMD
- pratiques non standard
- Mauvaise réponse d'un script ajax : Les popups de moodle (très souvent) font appel à des requêtes secondaires en ajax pour alimenter le contenu d'un bloc ou d'une popup. L'ajax peut être cassé (bug du script ajax) ou recevoir des paramètres insuffisants (du à une des causes précédentes)
Une façon de savoir se qui se passe :
1 - Avec les outils du développeur dans le navigateur ; ouvrir la vue "Console". S'assurer que les erreurs Javacript sont affichées. Examine pour voir s'il n'y a pas une grosse erreur Javascript qui casse tout ou partie du fonctionnement de la page. (lignes en rouge).
2 - Avec les outils développeur du navigateur, ouvrir la vue "Réseau" ou "Network" des outils d'inspection. Filtrer la vue réseau sur "XHR" (les requêtes ajax). Lancer l'action qui ouvre la popup et regarder apparaître la requête dans la liste. Si le statut de cette requête est 500 ou 404, c'est pas bon (elle doit toujours être à 200). Vous pouvez cliquer sur la ligne de requête et voir le contenu de l'onglet "Réponse" à droite pour voir ce qui revient de la requête AJAX.