AutorÃa | Ultima modificación | Ver Log |
<?php// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>./*** Defines the editing form for the shortanswer question type.** @package qtype* @subpackage shortanswer* @copyright 2007 Jamie Pratt* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/defined('MOODLE_INTERNAL') || die();/*** Short answer question editing form definition.** @copyright 2007 Jamie Pratt* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/class qtype_shortanswer_edit_form extends question_edit_form {protected function definition_inner($mform) {$menu = [get_string('caseno', 'qtype_shortanswer'),get_string('caseyes', 'qtype_shortanswer')];$mform->addElement('select', 'usecase',get_string('casesensitive', 'qtype_shortanswer'), $menu);$mform->setDefault('usecase', $this->get_default_value('usecase', $menu[0]));$mform->addElement('static', 'answersinstruct',get_string('correctanswers', 'qtype_shortanswer'),get_string('filloutoneanswer', 'qtype_shortanswer'));$mform->closeHeaderBefore('answersinstruct');$this->add_per_answer_fields($mform, get_string('answerno', 'qtype_shortanswer', '{no}'),question_bank::fraction_options());$this->add_interactive_settings();}protected function get_more_choices_string() {return get_string('addmoreanswerblanks', 'qtype_shortanswer');}protected function data_preprocessing($question) {$question = parent::data_preprocessing($question);$question = $this->data_preprocessing_answers($question);$question = $this->data_preprocessing_hints($question);return $question;}public function validation($data, $files) {$errors = parent::validation($data, $files);$answers = $data['answer'];$answercount = 0;$maxgrade = false;foreach ($answers as $key => $answer) {$trimmedanswer = trim($answer);if ($trimmedanswer !== '') {$answercount++;if ($data['fraction'][$key] == 1) {$maxgrade = true;}} else if ($data['fraction'][$key] != 0 ||!html_is_blank($data['feedback'][$key]['text'])) {$errors["answeroptions[{$key}]"] = get_string('answermustbegiven', 'qtype_shortanswer');$answercount++;}}if ($answercount==0) {$errors['answeroptions[0]'] = get_string('notenoughanswers', 'qtype_shortanswer', 1);}if ($maxgrade == false) {$errors['answeroptions[0]'] = get_string('fractionsnomax', 'question');}return $errors;}public function qtype() {return 'shortanswer';}}