« mod/customlabel/development » : différence entre les versions
Aucun résumé des modifications |
|||
Ligne 48 : | Ligne 48 : | ||
$this->type = 'worktodo'; | $this->type = 'worktodo'; | ||
$this->fields = array(); | $this->fields = array(); | ||
$field = new Stdclass; | $field = new Stdclass; | ||
$field->name = 'worktodo'; | $field->name = 'worktodo'; | ||
Ligne 54 : | Ligne 54 : | ||
$field->rows = 20; | $field->rows = 20; | ||
$this->fields['worktodo'] = $field; | $this->fields['worktodo'] = $field; | ||
$field = new Stdclass; | $field = new Stdclass; | ||
$field->name = 'estimatedworktime'; | $field->name = 'estimatedworktime'; |
Version du 21 avril 2012 à 10:43
Ce composant est extensible et permet d'ajouter facilement des nouveaux "grains" de contenus préformattés.
Les grains préformatés nouveaux, s'ils permettent d'enrichir les micro-modèles de contenus et favoriser une bonne écriture des contenus de cours, ne seront pas transportable sur une plate-forme qui ne dispose pas de ces sous-modèles (à moins de fournir les sous-types à installer sur la plate-forme d'arrivée).
Les fonctions centrales permettant la prise en charge du sous-type sont mutualisées dans le "noyau" du module Customlabels. La mise en oeuvre d'un sous-type est simple et réduite au strict nécessaire :
- Description d'un micro-modèle de données (champs d'information élémentaires de l'étiquette)
- Description des gabarits de sortie (templates HTML)
- Fichiers de langue et de labels affichables
- Feuille de style par défaut du sous-composant
Cela se traduit dans l'arborescence suivante :
customlabel -> type -> NEWTYPE -* customlabel.class.php -* customlabel.css -> lang -> en_utf8 -> customabel.php -> template.tpl -> fr_utf8 -> customlabel.php -> template.tpl
La classe customlabel_type_NEWTYPE
Chaque nouveau type de contenu est représenté par une classe définissant :
- la liste des champs du micro-modèle interne
- une fonction éventuelle pre_process() modifiant les valeurs du micro-modèle à des fins particulières (construction d'URLs, récupération de données externes au micro-modèle) AVANT que le rendu du gabarit ne soit calculé.
- une fonction éventuelle post_process() permettant d'effectuer certaines opérations APRES que le rendu du gabarit ait été calculé.
- une fonction éventuelle pre_update() permettant d'effectuer certaines opérations AVANT que les modifications de la valeur su champ par l'auteur soit enregistrée.
- une fonction éventuelle post_update() permettant d'effectuer certaines opérations APRES que les modifications de la valeur su champ par l'auteur soit enregistrée.
- une fonction éventuelle on_delete() permettant d'effectuer certaines opérations lorsque l'instance de label est supprimée du cours.
La définition des champs
Elle se fait par remodelage du constructeur de la classe.
Voici un exemple d'un type ajoutant deux champs en plus du champ "nom de l'instance" qui est intégré dans le modèle par défaut :
function __construct($data){ parent::__construct($data); $this->type = 'worktodo'; $this->fields = array();
$field = new Stdclass;
$field->name = 'worktodo'; $field->type = 'textarea'; $field->rows = 20; $this->fields['worktodo'] = $field;
$field = new Stdclass;
$field->name = 'estimatedworktime'; $field->type = 'textfield'; $field->size = 10; $this->fields['estimatedworktime'] = $field; }