développer un plugin adapté à vos besoins

Transcription

développer un plugin adapté à vos besoins
DÉVELOPPER UN PLUGIN
ADAPTÉ À VOS BESOINS
GILLES-PHILIPPE LEBLANC
ANALYSTE EN INFORMATIQUE
SOMMAIRE
Introduction
Création d’un plugin
Structure d’un plugin
Démonstration d’un plugin
Maintenance d’un plugin
Futurs développement
Conclusion
PRÉSENTATEUR
GILLES-PHILIPPE LEBLANC
Analyste informatique
gilles-philippe.leblanc@umontréal.ca
Gilles-Philippe Leblanc est analyste informatique pour
l'université de Montréal et possède une forte expertise
en intégration web et multimédia. Il travaille depuis
2011 sur le projet StudiUM, une implémentation de
Moodle 2.x.
MOODLE À L’UNIVERSITÉ DE MONTRÉAL
NOTRE INSTANCE DE MOODLE : STUDIUM
Statistiques - Automne 2015
2733
COURS OUVERTS
40 944
ÉTUDIANTS
2 341
PROFESSEURS
10
PLUGINS
PERSONNALISÉS CRÉÉS
QU'EST QU'UN PLUGIN MOODLE
Le M dans Moodle signifie modulaire. Le moyen le plus simple et le plus
maintainable pour ajouter de nouvelles fonctionnalités à Moodle est en
écrivant un de ces types de plugin. Si aucun des types standardisés
correspond à vos besoins, vous pouvez utiliser le type «local».
Source : https://docs.moodle.org/dev/Plugin_types
POURQUOI CRÉER UN PLUGIN
○
○
Besoin d’une fonctionnalité inexistante
●
Ni dans le core
●
Ni dans les plugins existants dans la communauté
Façon de faire plus facile à maintenir
DÉVELOPPER UN PLUGIN ADAPTÉ À VOS BESOINS
Introduction
Création d’un plugin
Structure d’un plugin
Démonstration d’un plugin
Maintenance d’un plugin
Futurs développement
Conclusion
ANALYSE DES BESOINS
○
○
Est-ce vraiment utile ?
●
Bien comprendre le besoin
●
Analyse coûts / bénéfices
●
Alternatives à un problème (autre que le développement)
Est-ce qu’un plugin existe déjà ?
●
Consulter la liste des plugins : https://moodle.org/plugins/
CHOISIR LE TYPE DE PLUGIN
○
Blocs
○
Activités
○
Thèmes
○
Filtres
○
Importation / Exportation de notes
○
Plugins locaux
○
Outils d’administration
Exemples sur : https://docs.moodle.org/dev/Plugin_types
COPIE DU CODE À PARTIR D’UN GABARIT
○
Un bon gabarit de départ
○
Comprendre comment un plugin fonctionne
Source : https://github.com/moodlehq/moodle-mod_newmodule
BONNES PRATIQUES DE DÉVELOPPEMENT
○
Choisir le bon nom
●
Pour le plugin
●
Pour les méthodes ou noms des classes
Sources :
https://docs.moodle.org/dev/Plugin_types#Naming_conventions
https://docs.moodle.org/dev/Frankenstyle
STYLE DE CODAGE
○
Documentation sur les conventions de Moodle :
●
https://docs.moodle.org/dev/Coding
■
○
https://docs.moodle.org/dev/Coding_style
Plugins permettant de valider le code :
●
Code checker (Format du code)
●
Moodle PHPdoc check (Format des commentaires)
CONNAÎTRE LES API DE MOODLE
API
Utiliser pour
Access
Rôle et permission de l’usager courant
Data manipulation
Accès la base de donnée
File
Gestion des fichiers déposés dans Moodle
Form
Fonctionnement des formulaires
Logging
Journalisation de tous les événements de Moodle
Navigation
Pour modifier le menu de navigation à gauche
Page
Tout ce qui permet de construire une page
Output
Gère l'affichage du contenu
String
Pour la gestion des chaînes de langue
HTML writer
Pour générer du html dans le PHP. Utile dans les renderers
Liste complète : https://docs.moodle.org/dev/Core_APIs
TESTS DANS MOODLE
○
Type de tests
●
Tests unitaires (PhpUnit)
●
Tests d’acceptation (Behat)
○
Fortement recommandé pour tous les plugins
○
Permet de faciliter la maintenance et assurer la qualité
DÉVELOPPER UN PLUGIN ADAPTÉ À VOS BESOINS
Introduction
Création d’un plugin
Structure d’un plugin
Démonstration d’un plugin
Maintenance d’un plugin
Futurs développement
Conclusion
ÉLÉMENTS COMMUNS POUR TOUS LES PLUGINS
Répertoire / Fichiers
Utiliser pour
pix/icon.svg
L'icône de votre plugin
classes/
Classes chargées automatiquement de votre plugin
cli/
Pour appeler votre plugin en ligne de commande
amd/
Pour déposer les modules javascripts (depuis v2.9)
templates/
Pour déposer des fichiers templates au format mustache (depuis v2.9)
version.php
meta-données concernant le plugin
settings.php
Permet de définir des paramètres administrateur
lib.php
L'interface entre le plugin et le core de moodle. Utiliser au minimum.
thirdpartylibs.xml
Toutes les dépendances de votre plugin face à des librairies tierces.
README
Informations utiles de votre plugin (ex. pour GitHub)
CHANGES
Utilisé pour pré-remplir les notes de mise à jour.
ÉLÉMENTS COMMUNS POUR TOUS LES PLUGINS (SUITE)
Répertoire / Fichiers
Utiliser pour
lang/en/plugintype_pluginname.php
Chaînes de langue en anglais pour le plugin
lang/fr/plugintype_pluginname.php
Chaînes de langue en français pour le plugin (si non partagé)
tests/montest_test.php
Pour déposer les tests unitaires PHPUnit. Un fichier par classe
tests/behat/plugin_montest.feature
Pour déposer les tests d’acceptation Behat. Un fichier par « feature ».
db/install.xml
Structure des bases de données requises pour le plugin. Utiliser l'éditeur XMLDB pour le générer
db/upgrade.php
Actions à effectuer lors d'une mise à jour.
db/access.php
Les permissions du plugin. (important pour les blocs)
db/install.php, db/uninstall.php
Actions à effectuer lors de l'installation ou de la désinstallation, avant la suppression de la BD.
db/events.php
Définition des écouteurs d'événements du plugin.
db/messages.php
Pour que votre plugin puisse envoyer des messages
db/services.php
Pour déclarer des services web
Source : https://docs.moodle.org/dev/Plugin_files
COMMENT GÉRER LES LANGUES DE VOTRE PLUGIN
○
Toujours en anglais par défaut dans le plugin :
●
○
Si autre langue (ex. français) et aucun partage dans la communauté :
●
○
blocks/monbloc/lang/en/block_monblock.php
blocks/monbloc/lang/fr/block_monblock.php
Si partage dans la communauté :
●
Déposer dans AMOS (Automated Manipulation Of Strings)
Sources :
https://lang.moodle.org/
https://docs.moodle.org/dev/AMOS_manual
ÉLÉMENTS COMMUNS POUR TOUS LES PLUGINS (SUITE)
En plus des fichiers communs à tous les plugins, il y a :
Répertoire / Fichiers
Utiliser pour
bloc_monblock.php
définition et configuration du bloc.
edit_form.php
Pour la définition du formulaire contenant les paramètres de ce bloc.
Sources :
https://docs.moodle.org/dev/Blocks
https://docs.moodle.org/dev/Blocks_Advanced
DÉVELOPPER UN PLUGIN ADAPTÉ À VOS BESOINS
Introduction
Création d’un plugin
Structure d’un plugin
Démonstration d’un plugin
Maintenance d’un plugin
Futurs développement
Conclusion
DÉMONSTRATION D’UN PLUGIN
○
Création d’un plugin à partir d’un gabarit de démontration :
●
○
https://github.com/moodlehq/moodle-mod_newmodule
Corrections minimales pour le faire fonctionner
PLUGINS DÉVELOPPÉS À L’UNIVERSITÉ DE MONTRÉAL
○
Bloc - Bibliothèques
●
○
Bloc - Accès rapide
●
○
Basé sur le bloc "Vue d'ensemble des cours", permet d'afficher les cours triés par trimestres
Inscription - Système externe
●
○
S’affiche dans tous les cours fermés et permet rapidement de rendre son cours visible.
Bloc - Vue d'ensemble des cours par trimestre
●
○
Pour rechercher des livres et de donner des informations sur le site des bibliothèques de l'UdeM.
Méthode d'inscription permettant d'inscrire les usagers de la formation continue
Local - Pages personnalisées - Attention, pas de déconnexion CAS
●
Indique que le fait de cliquer sur le bouton déconnexion en étant connecté avec le mode d'authentification CAS ne te
déconnecte pas vraiment.
PLUGINS DÉVELOPPÉS À L’UNIVERSITÉ DE MONTRÉAL (SUITE)
○
Local - Services Web
●
○
Local - Syllabus collector
●
○
Permet d'exporter les notes au format de notes du système Synchro de l'UdeM.
Importation de notes - Excel
●
○
Permet de moissonner les plans de cours et les envoyer aux archives et aux bibliothèques
Exportation de notes - Synchro
●
○
Permet d'envoyer la liste des cours pour un usager donné dans son portail de l'UdeM
Permet d'importer des notes directement à partir d'un fichier Excel.
Thèmes - Clean UdeM
●
Utilisé pour l'instance Moodle StudiUM de l'UdeM
DÉVELOPPER UN PLUGIN ADAPTÉ À VOS BESOINS
Introduction
Création d’un plugin
Structure d’un plugin
Démonstration d’un plugin
Maintenance d’un plugin
Futurs développement
Conclusion
ÉTAPES À CHAQUE NOUVELLE VERSION
○
Consulter la liste des nouveautés concernant la librairie de Moodle :
●
https://github.com/moodle/moodle/blob/master/lib/upgrade.txt
○
Consulter les changements appliqués au plugin de référence et les réappliquer
○
Tour de piste du plugin
●
Permet de découvrir des anomalies graphiques ou fonctionnelles
●
Au besoin, les noter afin de les corriger (Possible dans GitHub)
ARCHIVER LE PLUGIN AVEC GIT
○
Permet de conserver un historique
○
Avec GitHub, permet de bénificier du travail collaboratif
Source : https://github.com/
DÉVELOPPER UN PLUGIN ADAPTÉ À VOS BESOINS
Introduction
Création d’un plugin
Structure d’un plugin
Démonstration d’un plugin
Maintenance d’un plugin
Futurs développement
Conclusion
FUTUR DÉVELOPPEMENT POUR LES PLUGINS
○
Element library - utilisation de Mustache
○
Module Javascript (AMD)
○
Compilateur Grunt
Sources :
https://docs.moodle.org/dev/Element_Library
https://docs.moodle.org/dev/Grunt
DÉVELOPPER UN PLUGIN ADAPTÉ À VOS BESOINS
Introduction
Création d’un plugin
Structure d’un plugin
Démonstration d’un plugin
Maintenance d’un plugin
Futurs développement
Conclusion
CONCLUSION
○
Valider le besoin
○
Choisir son type de plugin
○
Respecter les standards
○
Tester votre plugin
○
Rester informé
QUESTIONS ?
MERCI !