mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 00:46:50 +02:00
MDL-27964 lesson - Old file picker is replaced with new filepicker, currently all imported questions will be saved in /temp/questionimport/ where questionbank files are saved.
This commit is contained in:
parent
7fde489dae
commit
b89bf55f84
2 changed files with 54 additions and 23 deletions
|
@ -66,9 +66,13 @@ if ($data = $mform->get_data()) {
|
||||||
|
|
||||||
require_sesskey();
|
require_sesskey();
|
||||||
|
|
||||||
if (!$importfile = $mform->get_importfile_name()) {
|
$realfilename = $mform->get_new_filename('questionfile');
|
||||||
print_error('uploadproblem', 'moodle');
|
//TODO: Leave all imported questions in Questionimport for now.
|
||||||
}
|
$importfile = "{$CFG->dataroot}/temp/questionimport/{$realfilename}";
|
||||||
|
make_upload_directory('temp/questionimport');
|
||||||
|
if (!$result = $mform->save_file('questionfile', $importfile, true)) {
|
||||||
|
throw new moodle_exception('uploadproblem');
|
||||||
|
}
|
||||||
|
|
||||||
$formatclass = 'qformat_'.$data->format;
|
$formatclass = 'qformat_'.$data->format;
|
||||||
$formatclassfile = $CFG->dirroot.'/question/format/'.$data->format.'/format.php';
|
$formatclassfile = $CFG->dirroot.'/question/format/'.$data->format.'/format.php';
|
||||||
|
@ -102,4 +106,4 @@ if ($data = $mform->get_data()) {
|
||||||
$mform->display();
|
$mform->display();
|
||||||
}
|
}
|
||||||
|
|
||||||
echo $OUTPUT->footer();
|
echo $OUTPUT->footer();
|
|
@ -32,8 +32,8 @@ defined('MOODLE_INTERNAL') || die();
|
||||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||||
*/
|
*/
|
||||||
class lesson_import_form extends moodleform {
|
class lesson_import_form extends moodleform {
|
||||||
|
|
||||||
public function definition() {
|
public function definition() {
|
||||||
|
global $COURSE;
|
||||||
|
|
||||||
$mform = $this->_form;
|
$mform = $this->_form;
|
||||||
|
|
||||||
|
@ -48,30 +48,57 @@ class lesson_import_form extends moodleform {
|
||||||
$mform->setType('format', 'text');
|
$mform->setType('format', 'text');
|
||||||
$mform->addRule('format', null, 'required');
|
$mform->addRule('format', null, 'required');
|
||||||
|
|
||||||
$mform->addElement('file', 'newfile', get_string('upload'), array('size'=>'50'));
|
//Using filemanager as filepicker
|
||||||
$mform->addRule('newfile', null, 'required');
|
$mform->addElement('filepicker', 'questionfile', get_string('upload'));
|
||||||
|
$mform->addRule('questionfile', null, 'required', null, 'client');
|
||||||
$this->add_action_buttons(null, get_string("uploadthisfile"));
|
|
||||||
|
|
||||||
|
$this->add_action_buttons(null, get_string("import"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get_importfile_name(){
|
/**
|
||||||
if ($this->is_submitted() and $this->is_validated()) {
|
* Checks that a file has been uploaded, and that it is of a plausible type.
|
||||||
// return the temporary filename to process
|
* @param array $data the submitted data.
|
||||||
return $_FILES['newfile']['tmp_name'];
|
* @param array $errors the errors so far.
|
||||||
}else{
|
* @return array the updated errors.
|
||||||
return NULL;
|
*/
|
||||||
|
protected function validate_uploaded_file($data, $errors) {
|
||||||
|
global $CFG;
|
||||||
|
|
||||||
|
if (empty($data['questionfile'])) {
|
||||||
|
$errors['questionfile'] = get_string('required');
|
||||||
|
return $errors;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public function get_importfile_realname(){
|
$files = $this->get_draft_files('questionfile');
|
||||||
if ($this->is_submitted() and $this->is_validated()) {
|
if (count($files) < 1) {
|
||||||
// return the temporary filename to process
|
$errors['questionfile'] = get_string('required');
|
||||||
// TODO change this to use the files API properly.
|
return $errors;
|
||||||
return $_FILES['newfile']['name'];
|
|
||||||
}else{
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$formatfile = $CFG->dirroot.'/question/format/'.$data['format'].'/format.php';
|
||||||
|
if (!is_readable($formatfile)) {
|
||||||
|
throw new moodle_exception('formatnotfound', 'lesson', '', $data['format']);
|
||||||
|
}
|
||||||
|
|
||||||
|
require_once($formatfile);
|
||||||
|
|
||||||
|
$classname = 'qformat_' . $data['format'];
|
||||||
|
$qformat = new $classname();
|
||||||
|
|
||||||
|
$file = reset($files);
|
||||||
|
if ($file->get_mimetype() != $qformat->mime_type()) {
|
||||||
|
$a = new stdClass();
|
||||||
|
$a->actualtype = $file->get_mimetype();
|
||||||
|
$a->expectedtype = $qformat->mime_type();
|
||||||
|
$errors['newfile'] = get_string('importwrongfiletype', 'lesson', $a);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function validation($data, $files) {
|
||||||
|
$errors = parent::validation($data, $files);
|
||||||
|
$errors = $this->validate_uploaded_file($data, $errors);
|
||||||
|
return $errors;
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue