Un nouveau Module

Un nouveau Module

par Rochdi ABID,
Nombre de réponses : 15
Bonjour,

Je suis un nouveau utilisateur de moodle dans le cadre de mon PFE.

Je suis chargé de developper un module d'auto-évaluation.

Bref, y a t-il quelqu'un qui peut me guider comment developper un module d'une maniére générale.

Merci d'avance.
Moyenne des évaluations  -
En réponse à Rochdi ABID

Re: Un nouveau Module

par Joseph Rézeau,
Avatar Développeurs Avatar Développeurs de plugins Avatar Moodleurs particulièrement utiles Avatar Testeurs Avatar Traducteurs
Bonjour,
C'est quoi un PFE?
C'est quoi un module d'auto-évaluation?
Joseph
En réponse à Joseph Rézeau

Re: Un nouveau Module

par Valery Fremaux,
Projet de Fin d'Etudes, je présume. C'est comme chez nous.
En réponse à Valery Fremaux

Re: Un nouveau Module

par Rochdi ABID,
Oui c ca PFE = Projet de Fin d'étude
Module d'Auto-évaluation c'est un module qui permet au apprenant d'évaluer ses propre connaissance.

Salem

En réponse à Rochdi ABID

Re: Un nouveau Module

par Rochdi ABID,
Bonjour,

Je veut avoir un petit module qui ne fait rien, le plus simple que possible pour que je puisse demarrer mon travail.

Je suis sûr de votre aide.

Merci d'avance.

Cdt,
Rochdi

En réponse à Rochdi ABID

Re: Un nouveau Module

par Rochdi ABID,
Bonjour,

J'ai enfin réussi à installer ce module et à comprendre et modifier son code.

comment peut-je attribuer des autorisations au utilisateurs ?? et est ce que je peut donner à tel user le droit à executer tel function ???

qlq chose qui concerne capability je pense !!!!

Merci d'avance

Librement votre,
Rochdi ABID
En réponse à Rochdi ABID

Re: Un nouveau Module

par Rochdi ABID,
Bonjour,

Je suis dans la phase de développement de mon petit outil d'auto-évaluation.

J'ai besoin d'une base de donnée des question avec différents types (vrais/faux, numérique, ....)

NB: J'utilise dans mon module les questions qui existe dans le module "question" qui existe déjà par défaut.

Cordialement,
Rochdi ABID
En réponse à Rochdi ABID

Re: Un nouveau Module

par Rochdi ABID,
Bonjour,

Je suis en train de développer mon nouveau module et je suis face à un petit problème: j'arrive pas à trouver le fichier dans le quel je doit définir les insertions dans la base de donnée lors de la validation de la page :
/moodle/course/modedit.php?add=selfeval&type=&course=6&section=4&return=0


Merci pour votre aide.

Librement votre
Rochdi ABID
En réponse à Rochdi ABID

Re: Un nouveau Module

par Valery Fremaux,

L'ajout d'une instance de module se fait dans le noyau de Moodle, grâce à un "callback" sur le formulaire mod.html présent dans le répertoire de module.

Le schéma de l'entité principale du module et les champs de formulaires de ce paramètre doivent correspondre.

Depuis la version 1.8, Moodle promeut une nouvelle version de ce mécanisme, abandonnant l'écriture du formulaire en HTML et produisant un fichier mod_form.php qui définit ce même formulaire à partir de l'API de fomulaires de Moodle.

De nombreux modules n'utilisent pas encore cette API, qui demande un certain effort d'apprentissage, et comme tout principe d'encapsulation, produit ses rigidités. L'avantage par contre, en est un code de formulaire produit plus sécurisé et uniforme.

Les fonctions <module>_add_instance et <module>_update_instance dans la librairie de base du module terminent le travail.

En réponse à Valery Fremaux

Re: Un nouveau Module

par Rochdi ABID,
Bonjour,

Merci Valery pour votre réponse.

Dans mon cas, j'utilise la version 1.8 et j'ai modifier le fichier mod_form.php et j'ai arrivé à avoir ce que je veut comme formulaire.

Le code du fichier mod_form.php est le suivant:



<?php

require_once ('moodleform_mod.php');

class mod_selfeval_mod_form extends moodleform_mod {

function definition() {

global $COURSE;
$mform =& $this->_form;

$mform->addElement('header', 'general', get_string('general', 'form'));
$mform->addElement('text', 'name', get_string('selfevalname', 'selfeval'), array('size'=>'64'));
$mform->setType('name', PARAM_TEXT);
$mform->addRule('name', null, 'required', null, 'client');
 
$mform->addElement('htmleditor', 'intro', get_string('selfevalintro', 'selfeval'));
$mform->setType('intro', PARAM_RAW);
$mform->addRule('intro', get_string('required'), 'required', null, 'client');
$mform->setHelpButton('intro', array('writing', 'richtext'), false, 'editorhelpbutton');
$mform->addElement('text', 'nbmaxquestion', get_string('nbmaxquestion', 'selfeval'), array('size'=>'32'));
$mform->setType('nbmaxquestion', PARAM_INT);
$mform->addRule('nbmaxquestion', null, 'required', null, 'client');
 
 
 
$mform->addElement('text', 'weithingselfeval', get_string('weithingselfeval', 'selfeval'), array('size'=>'32'));
$mform->setType('weithingselfeval', PARAM_INT);
$mform->addRule('weithingselfeval', null, 'required', null, 'client');
 
 
 
$mform->addElement('text', 'successweithing', get_string('successweithing', 'selfeval'), array('size'=>'32'));
$mform->setType('successweithing', PARAM_INT);
$mform->addRule('successweithing', null, 'required', null, 'client');
 
 
 
$mform->addElement('text', 'duration', get_string('duration', 'selfeval'), array('size'=>'32'));
$mform->setType('duration', PARAM_INT);
$mform->addRule('duration', null, 'required', null, 'client');
 
 

//-------------------------------------------------------------------------------
/// Adding the rest of selfeval settings, spreeading all them into this fieldset
/// or adding more fieldsets ('header' elements) if needed for better logic
// $mform->addElement('static', 'label1', 'selfevalsetting1', 'Your selfeval fields go here. Replace me!');

 
$mform->addElement('header', 'selfevalfieldset', get_string('selfevalfieldset', 'selfeval'));
 
 
 
$req = mysql_query("SELECT * from mdl_lesson where course = $COURSE->id ");
if ( mysql_num_rows ($req) )
{
$mform->addElement('static', 'label2', 'Liste des le&ccedil;ons', 'Pond&eacute;rations des le&ccedil;ons');
 
while ( $resultat = mysql_fetch_array( $req ))
{
$mform->addElement('text', 'lesson'.$resultat["id"], $resultat["name"], array('size'=>'32'));
$mform->setType('lesson'.$resultat["id"], PARAM_INT);
$mform->addRule('lesson'.$resultat["id"], null, 'numeric' , null, 'client');
}
}
else
{
$mform->addElement('static', 'label2', '', 'Il n\'y &agrave; pas de le&ccedil;on dans ce cours.');
}


//-------------------------------------------------------------------------------
// add standard elements, common to all modules
$this->standard_coursemodule_elements();
//-------------------------------------------------------------------------------
// add standard buttons, common to all modules
$this->add_action_buttons();

}
}

?>


Voulez vous me clarifier l'utilisation des fonctions selfeval_add_instance et selfeval_update_instance.

Merci d'avance.

Librement,
Rochdi ABID
En réponse à Rochdi ABID

Re: Un nouveau Module

par Valery Fremaux,

Ces deux fonctions permettent de retravailler les paramètres issus du formulaire et de procéder à l'insertion (ou la mise à jour) de l'instance dans la base. Elles reçoivent toutes deux une référence sur un objet $instance qui contient tout ce qui a été récolté dans mod_form.php. Ce sont donc les fonctions effectives qui enregistrent les données, et qui sont des callbacks de l'infrastructure de gestion du module.

Voici un exemple de add_instance qui en fait très peu :

function scheduler_add_instance($scheduler) {

    $scheduler->timemodified = time();
    $id = insert_record('scheduler', $scheduler);
    return $id;
}

La seule action de cette version est de rajouter le champ timemodified, ce que le formulaire d'édition des paramètres du module ne prenait pas en charge. D'autres font beaucou plus de vérifications, par exemple si des plages de dates doivent être définies, ou si des valeurs données à certains paramètres sont incompatibles.