Quel type de plugin ? Menu déroulant des catégories

Quel type de plugin ? Menu déroulant des catégories

par Mathieu Domingo,
Nombre de réponses : 0

Bonjour,

j'ai codé une petite "modification" du menu déroulant des catégories.  (Fichier : course/edit_form.php )

En gros, au lieu d'avoir un seul select qui contient toute l'arborescence de toutes les catégories (menu déroulant beaucoup trop long, ligne assez longue) , j'ai éclaté l'arbre en plein de select d'un seul niveau de catégorie. Je les fais ensuite apparaître/disparaître grâce à du javascript.

J'ai crée un nouveau fichier php (course/edit_form_md.php) et un javascript (course/edit_form_md.js), ce qui me permet de limiter autant que possible les modifications du code d'origine de moodle (1 require_once et 1 appel à ma fonction qui rajoute les selects au formulaire, à 2 endroits)


Je me dis que cela pourrait être une fonctionnalité pratique que je pourrai essayer de partager, mais je ne comprends pas trop comment je peux faire pour transformer ça en "plugin" (globalement ça revient juste à rajouter des selects dans le formulaire).
Je ne vois pas non plus comment faire pour ne pas avoir à modifier le fichier de base de moodle (edit_form.php)

J'ai trouvé la liste ici : https://docs.moodle.org/dev/Plugin_types mais je ne vois pas de quoi cela peut se rapprocher :s


Est ce qu'il y a une "bonne pratique" spécifique à moodle pour insérer du code javascript  ou appelé une fonction javascript ?
Je demande car j'ai fais un
$mform->addElement('html', '<script type="text/javascript" src="edit_form_md.js"></script>');
ce qui inclus le code javascript dans le formulaire (au moment ou il y en a besoin donc ça me semble pas si mal), fichier qui contient ma fonction javascript, et qui contient aussi l'appelle direct à la fonction à la fin du fichier (ça me semble pas vraiment propre..)


Vu que je ne sais pas si mes explications sont très clair sans code ni si cela attendra le stade de plugin, j'ai également crée un gist pour partager le code : https://gist.github.com/MathieuDomingo/7471697b4f558233d7ee150dcf9a8194


Edit : Je viens de voir que j'ai laissé le "if(isset($_GET["md_test"]))" dans le code, soit vous l'enlevez soit vous le laissez et il faudra rajouter un &md_test à la fin de l'adresse (lors de la création d'un cours ou de la modification des paramètres d'un cours) pour voir mes selects, sinon ça reste sur le traitement de base.


Bonne journée,
Mathieu
Moyenne des évaluations  -