Plugin local : un outil pour aider les enseignants

Plugin local : un outil pour aider les enseignants

par Sébastien Checchi,
Nombre de réponses : 12

Bonjour,

Je voudrais créer un plugin local qui affiche un petit outil en bas à droite de chaque page. Cet outil devrait être toujours disponible pour les enseignants et servirait à les aider à utiliser Moodle. Lorsqu'on clique sur l'outil, un menu apparait et propose différents documents. Lorsqu'on choisit un document (PDF, vidéo, etc), il devrait s'insérer dans la page en cours.

Le plugin ne fait qu'afficher l'outil pour l'instant, il n'y a pas encore d'accès à la base de données.

XAMPP package :

  • Windows 10
  • Moodle 4.0dev
  • Theme : Boost
  • PHP 7.3.11
  • MariaDB 10.4.8

Voilà à quoi ressemble l'outil, c'est la petite bulle verte avec son menue déployé :

Apparence plugin aide

Une idée par où je devrais commencer ? Une API REST pour afficher les données sans recharger la page ? merci.

Moyenne des évaluations  -
En réponse à Sébastien Checchi

Re: Plugin local : un outil pour aider les enseignants

par Rémi Lefeuvre,
Salut Sébastien,

Si tu souhaites charger des contenus froids (de la documentation par exemple) dans un écran modale en AJAX, une simple page PHP commençant par define('AJAX_SCRIPT', true); et un peu de JavaScript suffisent. Tu peux chercher ce morceau de code dans Moodle pour trouver des exemples.

Si au contraire tu veux réaliser des tâches dynamiques complexes, tu peux utiliser les Web services Moodle :
https://docs.moodle.org/3x/fr/Services_Web
https://docs.moodle.org/dev/Web_services

Tu pourras étendre les fonctions natives en créant ton propre Web service dans ton plugin local :
 - exemple d'extension des Web services dans un plugin local (déclaration seulement) : https://git.backbone.education/elea/mooring/-/blob/master/db/services.php
 - exemple d'extension des Web services dans un plugin local (le code) : https://git.backbone.education/elea/mooring/-/blob/master/externallib.php
 - appeler un Web service en JS depuis Moodle (ton cas) : https://docs.moodle.org/dev/AJAX

Bonne journée,
Rémi
Moyenne des évaluations Utile (2)
En réponse à Rémi Lefeuvre

Re: Plugin local : un outil pour aider les enseignants

par Sébastien Checchi,
Merci Rémi, ça fait plaisir d'avoir un peu d'aide.

On doit pouvoir afficher les documents et en ajouter si besoin, de façon dynamique. Il reste à voir comment intégrer ça à la page en cours.

Je regarde ça en détails, merci.
En réponse à Sébastien Checchi

Re: Plugin local : un outil pour aider les enseignants

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

Bonjour,

Je vous conseille aussi de consulter la documentation pour développeurs (en anglais), pour tout de suite commencer avec les bonnes pratiques de codage dans Moodle.

C'est ici: https://docs.moodle.org/dev

Voyez notamment https://docs.moodle.org/dev/Plugin_types.

Moyenne des évaluations Utile (3)
En réponse à Nicolas Martignoni

Re: Plugin local : un outil pour aider les enseignants

par Bruno Malaval,
Bonjour,

Autre ressource intéressante, vu dans la newsletter Moodle de novembre
Un Mooc , inscription libre et gratuite, sans limite de temps (en anglais)

Take your first steps into Moodle Plugin Development


https://moodle.com/news/learn-moodle-plugin-development/

Bruno
Moyenne des évaluations Utile (4)
En réponse à Sébastien Checchi

Re: Plugin local : un outil pour aider les enseignants

par Sébastien Checchi,
Salut,

J'ai commencé mon service Web très simple qui doit me renvoyer un enregistrement de la base de données. Je l'ai testé avec une requête AJAX et j'ai comme réponse une erreur "Le service web n'est pas disponible (il n'existe pas ou n'est pas activé)." Pourtant, il est bien activé et j'ai bien un rôle qui m'autorise à utiliser les API REST.

Mon plugin ici : https://github.com/Dahak78/aide

Je sais que ce n'est qu'un début mais vous pensez que je suis sur la bonne voie ? merci.
En réponse à Sébastien Checchi

Re: Plugin local : un outil pour aider les enseignants

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

Bonjour,

J'ai jeté un coup d'œil rapide à la forme (pas au code, ni aux fonctionnalités). Il me semble que le Coding Style n'est pas respecté, ce qui est essentiel pour l'adoption d'un plugin. C'est un peu contraignant, mais indispensable quand on travaille dans un projet international avec des milliers de développeurs.

Je suggère de corriger (plus c'est fait tôt dans le dev, plus c'est facile!). Notamment (je cite du doc ci-dessus): 

  • Use an indent of 4 spaces with no tab characters
  • Filenames should : be whole english words
  • Function names should be simple English lowercase words, and start with the Frankenstyle prefix and plugin name to avoid conflicts between plugins.
  • etc.

En réponse à Nicolas Martignoni

Re: Plugin local : un outil pour aider les enseignants

par Rémi Lefeuvre,
Salut Sébastien,

En plus des remarques de Nicolas :
* éviter autant que possible de forger à la main des requêtes SQL complètes et donc préférer les fonctions les plus simples incluses dans "moodle_database.php" (elles assurent le nettoyage des paramètres) ; dans ton cas on écrira : $DB->get_record('local_aide_docs', [ 'id' => 1 ], '*', MUST_EXIST);
* ton service doit avoir une valeur pour "requiredcapability", capacité dont doit disposer l'utilisateur utilisé pour la connexion au Web service via l'un de ses rôles

Pour ton problème :
* l'utilisateur du Web service dispose-t-il bien des capacités suivantes via l'un de ses rôles ? 'webservice/rest:use' (et 'moodle/webservice:createtoken' pour celle-ci j'ai un doute dans ton cas mais mieux vaut la mettre)
* dans "config.php" ; $CFG->enablewebservices' = 1; et $CFG->webserviceprotocols = 'rest';

Bonne soirée,
Rémi
En réponse à Rémi Lefeuvre

Re: Plugin local : un outil pour aider les enseignants

par Sébastien Checchi,
Merci, j'applique les modifs.

Pour l'instant le plugin ne s'affiche que pour l'administrateur. Même en ajoutant les enseignants dans la capacité associée à l'affichage du plugin, le plugin ne s'affiche pas pour eux. On dirait que c'est un problème de contexte mais même en changeant le contexte, le plugin ne s'affiche pas. Une idée là-dessus ?
En réponse à Sébastien Checchi

Re: Plugin local : un outil pour aider les enseignants

par Rémi Lefeuvre,
Salut Sébastien,

Le problème vient sans doute du fait que tu testes la capacité pour le contexte système alors que les enseignants ne doivent disposer de la capacité que dans le contexte de cours.

Bonne journée,
Rémi
En réponse à Sébastien Checchi

Re: Plugin local : un outil pour aider les enseignants

par Sébastien Mehr,

Bonjour Sébastien,

juste une question par rapport à ton idée, est-ce que ton plugin ne pourrait-il pas prendre la forme d'un bloc ?

  • C'est facilement contextualisable
  • On peut l'afficher partout ou non selon la configuration
On peut très bien imaginer par exemple que ce bloc soit disponible pour tous les cours de ta plateforme. Pour gérer les documents à l'intérieur, cela pourrait s'effectuer en tant qu'administrateur dans la configuration du bloc.

Voir la documentation introductive en français : https://docs.moodle.org/3x/fr/D%C3%A9velopper_un_bloc
Et un guide de développement pas à pas : https://docs.moodle.org/dev/Blocks


Moyenne des évaluations Utile (1)
En réponse à Sébastien Mehr

Re: Plugin local : un outil pour aider les enseignants

par Luiggi Sansonetti,
Avatar Développeurs de plugins Avatar Documentation writers Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Titulaires du Moodle Course Creator Certificate Avatar Traducteurs
Salut

Moi au tout début, je pensais à utiliser la visite guidée (car souvent sous-utilisées à tort)

Mais je n'ai pas encore fouillé la possibilité de choisir entre différentes depuis un contexte...
A mes heures perdues sans doute 🤣