Developpement d'un plugin

Developpement d'un plugin

par Adrien LEVEQUE,
Nombre de réponses : 4

Bonjour,

Actuellement en stage et donc débutant sur Moodle, j'aurais une petite question pour savoir comment crée mon plugin.

Je m'explique,  j'ai crée un nouveau bloc donc pas de soucis pour le mettre sous forme d'un plugin car c'est du code qui ne touche pas déja à du code Moodle existant.

Mais par contre, j'ai du modifier (rajouter des lignes) dans un fichier de Moodle existant "edit_question_form.php et "questiontypebase.php" car je devais rajouter des onglets pour tous les types de question lors de la création d'une question (comme "générique" et "tags" qui sont tout le temps présent).

Ma question est donc comment mettre cette modification sous forme de plugin ? (sans rajouter ses modifications à la main?) si c'est possible ?


je vous remercie d'avance.

Adrien LEVEQUE


Moyenne des évaluations  -
En réponse à Adrien LEVEQUE

Re: Developpement d'un plugin

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour Adrien,

En recherchant sur ce forum (voire celui sur les aspects techniques), vous constaterez que vous n'êtes pas le premier à faire une demande concernant un stage... pas le premier à dire que vous débutez sur Moodle... et pas le premier à vouloir faire quelque chose, ne pas y arriver et appeler à l'aide. Et très certainement pas le dernier grand sourire

Le problème pour nous est de vous guider sans pour autant vous donner la solution (le stage étant fait pour ça). Mais pour vous guider au mieux, car nous sommes tous ici animés de plein de bons intentions, nous devons savoir où vous souhaitez précisément vous rendre. Votre description n'est pas assez détaillée. A commencer par la version de Moodle sur laquelle vous travaillez !

Je crois vaguement comprendre votre problématique et je me risquerai à vous dire qu'une extension de class pourrait répondre à votre problème mais pas sûr...

Expliquez nous plus clairement votre demande, en vous appuyant sur des exemples, des captures d'écran,... et peut-être pourrons nous reprendre le guidage. En gros, il faut passer plus de temps à nous exposer votre situation que nous à la comprendre et à vous répondre clin d’œil Faites vous du "mal" et la communauté ne pourra qu'être sensible à vos efforts !

Bonne continuation,
Patrick

Moyenne des évaluations Utile (1)
En réponse à Patrick Lemaire

Re: Developpement d'un plugin

par Adrien LEVEQUE,

Bonjour Patrick,

Tout d'abord merci de votre réponse.

Je tiens à préciser que je fais un stage optionnel (non payé et non noté) en laboratoire, le but de se stage est de découvrir l’atmosphère du travail en laboratoire et d'aider certain de mes professeurs aux développements de plu-gin sur Moodle car l'Université devrait passer sous Moodle lors de la prochaine rentrée.

Il n'est pas simple d'explicité clairement ses problèmes, je vais essayer d'expliciter un peu mon sujet.

En bref, je dois relier des questions à des concepts. J'ai donc crée un plugin de type block dans lequel ils ont une interface pour rentrer/modifier/supprimer des concepts et des types de liaisons ainsi qu'une page de visualation sommaire en javascript.

Maintenant, je voudrais que lors de la création d'une question, le professeur puisse sélectionner à quel concept celle-ci appartient. Et ceux-ci pour tous les types de questions (pas seulement pour un type de question que j'ai du créer).

J'ai donc du modifier un fichier existant de Moodle que se trouve dans question/type/edit_question_form.php. Dans la fonction "definition", j'ai rajouter quelques lignes de types :

        $mform->addElement('header', 'adrien',  get_string('adrien', 'question'));
        $mform->setExpanded('adrien'); 
        $select=$mform->addElement('select','nomduconcept',"Liste des concepts",$name_concept);


Tout marche parfaitement comme je le souhaite. Mais je ne vois pas comment rajouter ses lignes sous formes de plugin à installer par un non informaticien (que l'admin ne rajoute pas en brut ses lignes de codes lors de la création de Moodle)

Je vais de suite me renseigner sur les extensions de classes.

Bien cordialement.
LEVEQUE Adrien

ps: j'ai une version 3.0.3 et une autre en 2.7.2 et cela doit dans l’idéal fonctionner sur toutes les versions



Annexe Screenshot_2016-06-29 .png
En réponse à Adrien LEVEQUE

Re: Developpement d'un plugin

par Patrick Lemaire,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs

Bonjour Adrien,

Votre stage vous permettra aussi de faire la découverte (si ce n'est déjà fait) d'une communauté telle que celle de Moodle clin d’œil

Vous dites, je cite : « je dois relier des questions à des concepts ». Votre approche a été de développer un bloc, probablement parce que c'est le plugin le plus "facile" et rapide à créer mais je ne suis pas convaincu que cette forme convienne pour servir votre objectif... Je pense aussi que vous cherchez à ajouter un attribut nouveau à toutes les questions, de tout type, et cela pourra difficilement se faire sans modifier profondément le code de Moodle. En gros, je ne suis pas sûr que cela soit faisable sous la forme de plugin puisque ce n'est pas une fonctionnalité "parallèle" que vous cherchez à ajouter en plus de celle existante.

Par contre, je vous suggère de vous appuyer sur les Tags qui existent déjà dans tous (?) les types de questions Moodle et qui sont largement inexploitée ! Votre plugin pourrait utiliser ce champs pour « relier des questions à des concepts », les concepts devenant alors des tags. En ouvrant la voie vers une fonctionnalité utile à la communauté, certains pourraient même vous prêter assistance. Prenez l'exemple de ce récent fil de discussion : [Moodle BenchMark] ! Aucune garantie cependant...
Les interfaces de saisie sont déjà présentes dans Moodle, donc pas la peine d'en implémenter de nouvelles... reste à vous occuper de la partie "lien" entre concepts/tags et questions. Là, je n'ai pas bien compris votre but (trie, statistique ?).

Bon courage ! Et à bientôt,
Patrick

Moyenne des évaluations Utile (1)
En réponse à Adrien LEVEQUE

Re: Developpement d'un plugin

par Valery Fremaux,
Avatar Développeurs de plugins

La réponse est (dans un premier temps) :

Tu ne peux pas : Il existe dans moodle un ensemble d'écrans qui sont pilotés par des points d'entrée qui sont dans le "core" et qui ne prévoient pas ou peu de "hooking" pré-défini.

C'est une réflexion constante des équipes du "core" et on a pu voir au fil du temps qu'ils ne ménagent pas leurs efforts pour rendre de plus en plus de parties surchargeables.

Les techniques qui le permettent liées au classes comme le citait Patrick est en effet la surcharge de classes. Mais celle-ci ne sert à rien s'il n'y a pas un principe de "factory" derrière qui permet de faire remplacer la classe original par sa classe suchargée. Ce n'est pas le cas ici malheureusement.

La seule solution plausible ici est un peu compliquée :

Il faut partir du point d'entrée dans Moodle, (l'URL invoquée qui utilise ce formulaire), la détourner par un "customscript" (chercher dans http://dev.moodle.org de quoi il s'agit), modifier le script d'entrée pour utiliser la classe de formulaire modifiée qui contient tes lignes supplémentaires, en invoquant cette librairie plutôt que la librairie originale. (on ne peut par les cutomscripts, surcharger directement une librairie).

La limite de la technique est que les fichiers détournés ne se mettent pas à jour et peuvent masquer des mises à jour des fichiers orignaux.