vfremaux / moodle-mod_customlabel

High semantic elements for course content. Are used as course labels but wth preformatted information model and rendering.
4 stars 4 forks source link

codingerror Erreur de programmation détectée. #10

Open MathieuDomingo opened 4 years ago

MathieuDomingo commented 4 years ago

Salut Valéry,

Contexte : Moodle 3.5, thème Boost ou Adaptable. Je ne sais pas trop pourquoi, mais autant cela semble fonctionner sans soucis en étant avec un compte admin, autant cela ne fonctionne globalement pas avec un compte enseignant :-/

J'ai vu qu'il y a eu dans /var/www/html/moodle/mod/customlabel/lib.php un ajout d'un try catch >=3.5 mais il n'a pas l'air de fonctionner.

Exemple : Mettre un Texte à tiroir, puis passer en mode édition. Si l'on essaye de cacher ou supprimer l’élément par exemple, on obtient une première erreur : _Erreur de programmation détectée. Ceci doit être corrigé par un programmeur : $PAGE->context was not set. You may have forgotten to call require_login() or $PAGE->setcontext()

Du coup dans le fichier /var/www/html/moodle/mod/customlabel/lib.php, dans ce if : if ((($PAGE->pagetype != 'course-modedit') && !AJAX_SCRIPT) || $gettingmoduleupdate ) { j'ai essayé de rajouter un if pour faire un traitement particulier pour les cas qui ne fonctionne pas lorsque l'on essaye de cacher/supprimer : if($customlabel->labelclass=="collapsedtext" && $PAGE->pagetype=="lib-ajax-service") { $PAGE->set_context($context); //$instance->preprocess_data(); }

Cela permet de faire fonctionner le supprimer. Pour le cacher/afficher cela "fonctionne" mais on perd l'affichage du contenu vu que l'on ne génère plus la variable $content. (Je n'ai pas pris le temps de tester les 30 types de label pour voir lesquels sont affectés et si cela suffit à les faire vaguement fonctionner)

Si on essaye d'ajouter la suite du traitement pour générer la variable $content (en mettant le preprocess_data par exemple) j'obtiens ensuite cette erreur : Erreur de programmation détectée. Ceci doit être corrigé par un programmeur : The theme has already been set up for this page ready for output. Therefore, you can no longer change the theme, or anything that might affect what the current theme is, for example, the course.

Cela m'a l'air lié à toutes les utilisations de la variable globale $OUTPUT, le soucis étant que je n'ai pas trop d'idée sur comment on peut corriger ça :-/

Et je ne sais plus comment, mais j'ai vu à un moment dans les logs une erreur de paramètre dans le fichier : /var/www/html/moodle/mod/customlabel/type/collapsedtext/ajax/service.php A priori il faut remplacer la ligne 71 : $instance = $DB->get_record('customlabel', array('id' => $cm->instanceid)); par $instance = $DB->get_record('customlabel', array('id' => $cm->instance));

XdevMP3n5P commented 4 years ago

Bonjour Valéry, je rencontre les mêmes problèmes que Mathieu. Tout fonctionne sans problème en admin, mais l'utilisation du plugin en tant qu'enseignant éditeur pose problème en modification et/ou suppression. Voiçi un retour de debbug que j'ai obtenu (Moodle 3.5.10+ build: 20200214 / Fordsonv.3.5 release 3 update 16 build: 2018111600 / Elément de cours 3.5.0 build: 2018120600) Error code: generalexceptionmessage