Attention : vous consultez actuellement la documentation dédiée aux versions 2.x de Moodle. La documentation pour les versions 3.x de Moodle est consultable ici : Eléments de cours : concevoir des nouveaux types d'éléments et celle pour Moodle 4.x est consultable là : Eléments de cours : concevoir des nouveaux types d'éléments.

Eléments de cours : concevoir des nouveaux types d'éléments

De MoodleDocs
Aller à :navigation, rechercher

Un type d'élément est un "sous-plugin" qui réside dans le répertoire "type" de la distribution du module Customlabels (/mod/customlabel/type).

Il repose sur une classe de base customlabel_type. Un nouveau type doit être une extension de cette classe.

Un type est un composant qui définit un micro-modèle de données. Cette description sera automatiquement utilisée par le formulaire de "nouvelle instance" d'Elément de Cours pour compléter le formulaire avec les champs appropriés du sous-type. Ce micro-modèle définit des variables qui seront alors disponibles pour alimenter un "template" (ou modèle de contenu), défini dans les fichiers de langue. Chaque type peut donc fournir une traduction multilingue de sa représentation, et le contenu des variables texte du modèle peuvent contenir des balises de contenu multilingue.

Le template peut contenir n'importe quelle séquence de HTML avec des "emplacements" pour le données.

Par exemple :

  $string['template'] = '
      <table><tr><th><%%title%%></th></tr><tr><td><%%value%%></td></tr></table>
  ';

est un template élémentaire qui produit une table avec un titre et une cellule unique, introduisant deux variables 'title' et 'value' issues de la définition du micro-modèle.

Des templates plus riches permettent de jouer avec du HTML, du Javascript et des définitions de style pour un contenu au comportement plus complexe.

Constitution du plugin

Le répertoire contenant le nouveau type doit contenir :

  • Un fichier customlabel.class.php, définissant une classe :
  class customlabel_type_NEWTYPE extends customlbel_type {
  }
  • Un fichier de style customlabel.css pour le formatage graphique "par défaut" du type
  • Un fichier de version aux normes des plugins de Moodle :
  $plugin = new SdClass();
  $plugin->version = 'xxxxxxxxxxx';
  $plugin->component = 'customlabeltype_NEWTYPE';
  • Un répertoire de langue (obligatoirement la langue anglaise en 'en', puis la langue française dans un sous-répertoire 'fr'
  • Un répertoire "db" et un fichier access.php pour la déclaration des deux capacités principales ('view' et 'addinstance') pour le type.

Construction du micro-modèle de données

La construction du micro-modèle de données se fait dans le constructeur de la classe du type, qui doit définir deux membre 'standard" d'un sous-type d'élément de cours :

  $this->type = 'NEWTYPE';
  $this->fields = array();

Le micro-modèle consiste à ajouter à la définition des champs des descripteurs des données à gérer dans le template. La définition d'un champ élémentaire ressemble au modèle suivant :

  $field = new StdClass();
  $field->name = 'NEWFIELD';
  $field->type = 'FIELD_TYPE';
  $field->attr1 = ATTR_VALUE;
  ...
  $this->fields['NEWFIELD'] = $field;

Les attributs (attr1, attr2) et leurs valeurs possibles dépendent en général du type de données.

Clefs minimales de langue

Les fichiers de langue doivent avoir au minimum les clefs suivantes :

  $string['NEWTYPE:view'] = 'Can view the NEWTYPE';
  $string['NEWTYPE:addinstance'] = 'Can add an instance of NEWTYPE';
  $string['pluginname'] = 'New Type';
  $string['typename'] = 'New type name';
  $string['configtypename'] = 'Explanations of type';
  $string['template'] = 'HMTL CONTENT WITH PLACEHOLDERS';

Les autres chaines dépendent de la structure interne du micro-modèle de données.