bonjour lorsque j'ai mis require(dirname(__FILE__).'/../../config.php'); require_once($CFG->libdir.'/outputcomponents.php'); require_once($CFG->libdir . '/form/button.php'); require_once($CFG->dirroot.'/mod/memory/lib.php'); require_once($CFG->dirroot.'/mod/memory/locallib.php'); require_once($CFG->dirroot.'/lib/filelib.php'); require_once($CFG->dirroot . '/mod/memory/mod_form.php'); //------------------------------------------------------------------ $id = optional_param('id', 0, PARAM_INT); // course_module ID $m = optional_param('m', 0, PARAM_INT); // memory instance ID //--------------------------------------------------------------------------- if ($id) { //Given an id of a course module, finds the coursemodule description $cm = get_coursemodule_from_id('memory', $id, 0, false, MUST_EXIST); $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST); $memoire = $DB->get_record('memory', array('id' => $cm->instance), '*', MUST_EXIST);} //--------------------------------------------------------------------------------------- elseif ($m) { $memoire = $DB->get_record('memory', array('id' => $m), '*', MUST_EXIST); $course = $DB->get_record('course', array('id' => $memoire->course), '*', MUST_EXIST); $cm = get_coursemodule_from_instance('memory', $memoire->id, $course->id, false, MUST_EXIST);} //---------------------------------------------------------------------------------------------- else { error('You must specify a course_module ID or an instance ID'); } //----------------------------------------------------------------------------------- //verifie si l'utilisateur est conecté avant d'acceder au cours ou à des activités require_course_login($course, true, $cm); $context = context_module::instance( $cm->id); require_capability('mod/memory:view', $context); add_to_log($course->id, 'memory', 'view', 'view.php?id='.$cm->id, $memoire->name, $cm->id); //-------------------------------------------------------------------------------------------- //------------------ Print the page header----------------------------------------------------- $PAGE->set_url('/mod/memory/view.php', array('id' => $cm->id)); $PAGE->set_title(format_string($memoire->name)); $PAGE->set_heading(format_string($course->fullname)); $PAGE->set_context($context);//Set the main context to which this page belongs //---------------------------------files----------------------------------// $entry=new stdclass(); $entry->id=null; $memoryform=new mod_memory_mod_form(); if($data=$memoryform->get_data()){ $filemanageritemid = required_param('files', PARAM_INT); var_dump($filemanageritemid); file_save_draft_area_files($filemanageritemid, $context->id, 'mod_memory', 'diplom', 0); } //----------------------------------------------------------------- //------------------------------------------------------------ require_capability('mod/memory:view', $context); $memory = new memory($context,$cm,$course); //---------------------------table------------------------ $teacher=get_string('Tuteur','memory'); $student=get_string('Student','memory'); $titre=get_string('Headersubject','memory'); $tut=$memory->get_user_activity_by_role($cm,'tuteur',$course->id); $std=$memory->get_user_activity_by_role($cm,'student',$course->id); //----------------------Html------------------------------------------------ $table = new html_table(); $table->attributes['class']='generaltable mod_index'; $table->head = array($student,$titre,$teacher); $table->align = array('left','center', 'center'); //-------------------------- Output starts here----------------------------------------- echo $OUTPUT->header(); //$icon=get_string('modulename',$cm->modname); //----------------------button view all-------------------------------------- $table->data[] = array($std->firstname.' '.$std->lastname,$memory->show_name(),$tut->firstname.' '.$tut->lastname); $table->data[]=array(get_string('content','memory'), $memory->show_intro(),'' ); echo html_writer::table($table); //if ($memoire->intro) { // Conditions to show the intro can change to look for own settings or whatever // echo $OUTPUT->box(format_module_intro('memoire', $memoire, $cm->id), 'generalbox mod_introbox', 'memoireintro'); //} if(has_capability('mod/memory:viewallmemory', $context)){ echo html_writer::link(new moodle_url('/mod/memory/index.php', array('id' => $course->id)),get_string('viewallmemory','memory'),array('class'=>'title1')); } // Finish the page echo $OUTPUT->footer(); } il me donne l'erreur suivant
euh.....
là je veux bien faire des efforts... mais c'est un peu illisible...
n tout cas ça veut dire ce que ca veut dire :
un required_param('files') ne voit pas arriver le paramètre "files" du formulaire....
voici les deux files joints mod_form.php et view.php
mon but est d'afficher le fichier dans la page view.php
c'esrt important de savoir qu'est qu'il bloque pour avancer
Quelques remarques hors pb des fichiers :
$tut=$memory->get_user_activity_by_role($cm,'tuteur',$course->id);
$std=$memory->get_user_activity_by_role($cm,'student',$course->id);
Ceci supposerait un fonctionnement basé sur les rôles. Ceci est à revoir. Il vaut mieux tester et caler ses "fonctions utilisateur" sur des capacités et non des rôles :
has_capability(....)
get_users_by_capability(....) pour trouver les utilisateurs avec une capacité. On peut avroi des "rôles propres au module" (exemple : module tracker), mais il ne doivent pas s'appuyer sur les rôles de mdl_role (si on clone un role étudiant pour une raison ou une autre, ces étudiants clonés ne seront plus captés par une stratégie basée sur les rôles).
mod_memory_mod_form :
function mod_memory_mod_form($current,$section,$cm,$course){
$this->course=$course;
parent::moodleform_mod($current,$section,$cm,$course);
}
constructeur inutile : vous avez déjà $COURSE pour vous donner la référence au cours, donc pas besoin de passer un $course au formulaire...
donc dans la suite : $this->course->maxbytes => $COURSE->maxbytes
mod_memory_form_mod mal construit :
set_data() se retrouve en plein milieu de la défintion de definition()
Ce sont deux méthodes différentes.
$this->standard_coursemodule_elements();
et
$this->add_action_buttons();
se retrouvent mal placées....
en fait, c'est surtout set_data qui se retrouve être une fonction locale interne d définition() ce qui sert à rien.
utilisez print_object() plutot que var_dump() pour examiner vos données.
Je sais que c'est dur au début, mais essayez de nettoyer votre code : en faisant plein d'essais dans tous les sens, on risque de laisser trainer plein de poussière partout et le code devient confus, avec plein de choses qui servent à rien...
dans l'hypothèse du "mod_form".... cela peut vous aider à voir plus clair.
Je vois que vous utilisez un moodleform_mod :
ce type de formulaire est réservé exclusivement aux paramètres d'initialisation du module (paramètres de création d'instance ou de mise à jour). Vous ne contrôllez pas l'appel à ce formulaire (appel qui est fait par le noyau de Moodle) comme vous essayez de le faire dans view.php
Vous devez utiliser un moodleform simple dans tous les autres cas. (édition de données à l'intérieur de votre module, à l'exception du formulaire spécial mod_form.php
Si c'est ce que vous voulez vraiment faire ( ajouter un fichier dans le formulaire de paramètre du module), alors il n'y a qu'un endroit pour correctement récupérer ces fichiers et les enregistrer dans le bon filearea :
mod/memory/lib.php § add_instance($memory) et resp. update_instance($memory)
qui sont les callbacks où le noyau vient vous donner ce qu'il a récupéré dans mod_form.php.
comme vous voyez, vous n'êtes pas encore sortis de l'eau.
La mise en oeuvre d'un module complet est aujourd'hui estimée à environ 1 mois de travail pour un développeur relativement expérimenté... pour un module "normal" (3 à 5 tables de données, toutes fonctionnalités standard supportées).
bonjour c'est vrai c'est difficile de commencer à developper dans moodle,mais je veux essayer dur pour reussir, et merci pour votre conseils qui va m'aiderai bcp
mon fichier s'affiche avec deux icons:
$output='';
$filename = $file->get_filename();
$mimetype = $file->get_mimetype();
$iconimage = $OUTPUT->pix_icon(file_file_icon($file), get_mimetype_description($file), 'moodle', array('class' => 'icon'));
$path = file_encode_url($CFG->wwwroot.'/pluginfile.php', '/'.$context->id.'/mod_memory/diplom/0/'.$filename);
$output .= $iconimage;
$output .= "<a href=\"$path\">".s($filename)."</a>";}
}
return $output;
pour les deux icons
- à droite c'est vrai avec un link qui marche parfaitement
- à gauche ,je remarque que c'est encore un fichier mais un fichier qui ne trouve pas
donc le probleme ,il affiche un icon du fichier qui le trouve pas ,qu'est qu'il peut causer ces probleme?
comparez les deux URL et regardez votre fonction memory_pluginfile()
j'ai comparé les URL ils ont tous les meme
- http://localhost/moodle/pluginfile.php/120/mod_memory/diplom/0/."></a>
- http://localhost/moodle/pluginfile.php/120/mod_memory/diplom/0/parcoursprofessionnelle.pdf">parcours professionnelle.pdf</a>
- http://localhost/moodle/pluginfile.php/120/mod_memory/diplom/0/lmalika.pdf">lmalika.pdf</a>
dans pluginfile(parametres) {
....................
array_shift($args);
$relativepath = implode('/', $args);
$fullpath = "/$context->id/mod_memory/diplom/0/$relativepath";
...............
send_stored_file($file, 0, 0, true);
}
le premier fichier s'affiche tout seul
probleme resolu
j'ai oublié de mettre le '/';
merci
malika younes = miriam chabi chabi ?
non,pourquoi vous dites ca?
... parce que dans cette discussion que vous avez lancée, miriam chabi chabi intervient pour dire "probleme resolu j'ai oublié de mettre le '/';".
Du coup on ne sait plus très bien qui est qui, c'est tout.
Joseph
Bonjour,
C'est vrai que ce qui peut être parfois nécessaire sur certains forums se révèle un peu agaçant ici par le fait que beaucoup avancent masqués... contrairement à la plupart des Moodleurs habituels.
C'est d'ailleurs tellement plus pratique de disposer des vrais noms et des vrais visages (n'est-ce pas Joseph ?...) pour se reconnaître lors des Moodlemoots...
Daniel
Ce sont peut être simplement les deux binomes du même projet. Il est courant en école d'ingénieur de faire des projets par binome ou trinome....
C'est peut être simplement le cas...
Nos étudiants ont simplement parfois un peu de mal à discerner la différence entre un forum privé et dédié, et des discussions exposées à une communauté large et attentive