Manuel du développeur

Ce document décrit en quelques mots le design à la base de Moodle et comment vous pouvez contribuer à son développement.

Il est un peu succinct pour l'instant. Une meilleure documentation est prévue !

Sections de ce document :

  1. Architecture de Moodle
  2. Comment vous pouvez aider

 

1. Architecture de Moodle

Du point de vue d'un administrateur de système, Moodle a été conçu selon les critères suivants :

  1. Moodle doit fonctionner sur le plus grand nombre possible de plateformes différentes

    Le langage de programmation pour le web qui tourne sur la plupart des plateformes est PHP, en combinaison avec MySQL, et c'est l'environnement dans lequel Moodle a été développé (sur Linux, Windows et Mac OS X). Moodle utilise aussi la librairie ADOdb pour l'abstraction de la base de données, ce qui implique que Moodle peut utiliser plus de 10 marques de bases de données différentes (toutefois, il ne peut malheureusement pas encore mettre en place les tables de toutes ces bases de données. Voir ci-dessous pour plus d'informations).

  2. Moodle doit être facile à installer, à apprendre et à modifier

    Les premiers prototypees de Moodle (1999) étaient basés sur Zope, un serveur d'application web orienté objet de technologie avancée. Malheureusement, bien que cette technologie soit plutôt cool, elle avait une courbe d'apprentissage très raide et n'était pas très souple en termes d'administration de systèmes. D'un autre côté, le langage de scripts PHP est très facile d'accès, notamment si vous avez déjà programmé avec un autre langage de scripts. J'ai pris assez tôt la décision de ne pas utiliser un concept orienté objet, là encore, pour conserver la simplicité par égard pour les novices. En lieu et place, la réutilisation du code est accomplie grâce à des librairies de fonctions clairement dénommées et par une mise en page cohérente des fichiers de scripts. En outre, PHP est facile à installer (des exécutables sont disponibles pour toutes les plateformes) et si largement répandu que la plupart des services d'hébergement web l'offrent en standard.

  3. Moodle doit être facile à mettre à jour d'une version à la suivante

    Moodle connaît son propre numéro de version (ainsi que ceux de chacun des modules) et un mécanisme y a été implémenté de sorte qu'il puisse se mettre à jour tout seul (il peut par exemple renommer les tables de la base de données ou y ajouter de nouveaux champs). Si vous utilisez CVS sur Unix, vous pouvez par exemple taper la commande « cvs update -d », puis visiter la page d'accueil de votre site pour terminer la mise à jour.

  4. Moodle doit être modulaire pour pouvoir grandir facilement

    Un grand nombre de fonctionnalités de Moodle sont modulaires, notamment les thèmes, les activités, les langues de l'interface, les schémas de la base de données et les formats de cours. Cela permet à quiconque d'ajouter des fonctionnalités au code principal ou encore de distribuer des modules séparément. Voir ci-dessous pour plus d'informations à ce sujet.

  5. Moodle doit pouvoir être utilisé en association avec d'autres systèmes

    Moodle conserve tous les fichiers d'un cours dans le même dossier sur le serveur. Cela permet à un administrateur système d'offrir pour chaque enseignant n'importe quel type d'accès direct aux fichiers, comme AFP, SMB, NFS, FTP, WebDAV, etc. Les modules d'authentification permettent à Moodle d'utiliser LDAP, MAP, POP3, NNTP et d'autres bases de données comme source des données des utilisateurs. Il reste toutefois pas mal de travail à effectuer. Les fonctionnalités prévues de Moodle pour les versions à venir comprennent notamment : l'importation et l'exportation des données en format XML (y compris IMS et SCORM) et l'utilisation croissante des feuilles de style pour l'interface (permettant ainsi une meilleure incorporation dans d'autres sites web).

 

2. Comment vous pouvez aider

Comme mentionné ci-dessus, bon nombre de fonctionnalités de Moodle sont modulaires. Même si vous n'êtes pas programmeur, il y a des choses que vous pouvez modifier ou pour lesquelles vous pouvez nous aider.

Activités d'apprentissage

Ce sont les modules les plus importants. Ils sont placés dans le dossier « mod ». Il y a quelques modules installés par défaut, notamment : devoir, sondage, test, forum, consultation, wiki, etc. Chaque module est placé dans un sous-dossier propre et consiste en divers éléments obligatoires (ainsi que d'autres scripts propres à chaque module) :

Pour programmer un nouveau module d'activité, le plus simple est d'utiliser le modèle mod/newmodule_template.zip. Décompressez-le est suivez les instructions du fichier README inclus.

Il est également judicieux de poster auparavant un message sur le forum Activities modules dans le cours « Using Moodle ».

 

Thèmes

Les thèmes (ou « skins ») définissent l'aspect d'un site. Quelques thèmes simples sont fournis dans la distribution de Moodle. Vous pouvez aussi créer votre propre thème avec vos couleurs, logo, styles et graphiques préférés.

Chaque thème est placé dans un sous-dossier « theme » qui contient au moins les fichiers suivants :

Pour créer votre propre thème avec la version actuelle de Moodle :

  1. Copiez le dossier d'un des thèmes existant et donner un nouveau nom à la copie. Il est recommandé de commencer avec l'un des thèmes standard.
  2. Modifiez le fichier config.php en y insérant les réglages nécessaires à vos besoins.
  3. Modifier les fichiers CSS (voir ci-dessus) avec vos propres styles.
  4. Ouvrez header.html et footer.html pour y ajouter les nouveaux logos ou pour modifier la mise en page.

Il est à noter que les mises à jour de Moodle pourraient empêcher le fonctionnement correct d'un thème personnalisé. Vérifiez les notes de mise à jour si vous utilisez un tel thème.

Veuillez lire attentivement la description détaillée des thèmes de Moodle dans la documentation sur les thèmes Moodle.

Pour en savoir plus, participez à la discussion sur le forum Themes dans le cours « Using Moodle ». Si vous créez un joli thème susceptible d'intéresser d'autres utilisateurs, merci de poster votre fichier zip sur ce même forum.

Langues

Moodle a été conçu pour permettre son internationalisation. Chaque chaîne de caractères et chaque page de texte faisant partie de l'interface est affichée à partir d'un ensemble de fichiers de langue. Chaque langue consiste en un sous-dossier du dossier « lang ». La structure du dossier lang est la suivante :

lang/fr : dossier contenant tous les fichiers pour une langue (dans ce cas le français)

lang/fr/help : contient toutes les pages d'aide (pour l'aide contextuelle, fenêtres « popup »)

Les pages d'aide principales y sont stockées, alors que les pages d'aide spécifiques aux différents modules sont placées dans des sous-dossiers portant le nom du module.

Vous pouvez insérer un bouton d'aide dans une page au moyen de la fonction helpbutton().

Par exemple, helpbutton("text", "Cliquer ici pour obtenir de l'aide sur le texte");

et pour les modules :

helpbutton("forumtypes", "Types de forums", "forum");

Vous pouvez modifier en ligne les fichiers de langue, en utilisant les outils web d'administration « Configuration -> Langue ». Cela vous permet non seulement de créer de nouvelles langues, mais aussi de perfectionner les traductions existantes. Si vous vous attaquez à une nouvelle langue, merci de me contacter, Martin Dougiamas.

Vous pouvez aussi participer au forum Languages du cours « Using Moodle ».

Si vous entretenez les fichiers d'une langue de manière régulière, je peux vous donner un accès CVS en écriture au code source de Moodle, afin que vous puissiez ainsi directement modifier les fichiers.

Schémas de la base de données

Une fois définies la base de données et ses tables, le langage SQL intentionnellement simple utilisé par Moodle devrait fonctionner correctement avec un grand nombre de marques de bases de données.

Il peut arriver que la création automatique des nouvelles tables d'une base de données pose problème. Cette opération a lieu lors de l'installation initiale de Moodle. Parce que les diverses bases de données sont très différentes, il n'existe pas encore de moyen de faire cela indépendamment de la plateforme. Pour permettre cette automatisation dans chaque type de base de données, des schémas de base de données peuvent être créés, qui comportent les commandes SQL nécessaires pour créer pour une base de données particulière les tables qu'utilise Moodle. Ces schémas sont des fichiers dans lib/db ainsi que dans le sous-dossier db de chaque module.

Actuellement, seul MySQL et PostgreSQL sont supportés de cette manière (personne n'a encore écrit les schémas pour d'autres marques).

Moodle 1.2 utilisera une nouvelle méthode de schémas XML indépendants de la base de données, qui rendra tout cela inutile.

 

Formats de cours

Moodle offre actuellement trois formats de cours différents : hebdomadaire, thématique et informel.

Ces formats sont un peu plus dépendants du reste du code (et par conséquent moins modulaires), mais il est malgré tout assez facile d'en ajouter de nouveaux.

Si vous avez des idées de formats différents dont vous auriez l'utilité ou que vous aimeriez voir dans Moodle, prenez contact avec moi et je ferai tout mon possible pour les rendre disponibles dans de futures versions.

 

Documentation et articles

Si vous avez envie d'écrire un tutoriel, un article, une publication universitaire ou quoi que ce soit d'autre sur Moodle, ne vous en privez pas !

Publiez-le sur le web et assurez-vous de mettre des liens vers http://moodle.org/.

 

Participer à la traque des bogues

J'aimerais pour terminer vous inviter à vous inscrire sur le « bug tracker » à l'adresse http://moodle.org/bugs, afin que vous puissiez annoncer tous les bogues que vous découvrirez et peut-être participer à la discussion et à la correction des bogues.

Les « bogues » ne sont pas seulement les erreurs du code source des versions actuelles de Moodle. Ce sont aussi les nouvelles idées, les demandes de nouvelles fonctionnalités et même la critique constructive des fonctionnalités existantes. La beauté du logiciel libre est de permettre à chacun de participer d'une façon ou d'une autre et d'aider à créer une meilleur produit pour le bien de tous. Dans ce projet, votre contribution est la bienvenue !

 

Nous vous remercions d'utiliser Moodle !

Martin Dougiamas, développeur principal

Documentation Moodle

Version: $Id$