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 !