--- /dev/null
+<?php
+/**
+ * Defines the editing form for the missingtype question type.
+ *
+ * @copyright © 2007 Jamie Pratt
+ * @author Jamie Pratt me@jamiep.org
+ * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
+ * @package questions
+ */
+
+/**
+ * missingtype editing form definition.
+ */
+class question_edit_missingtype_form extends question_edit_form {
+ /**
+ * Add question-type specific form fields.
+ *
+ * @param object $mform the form being built.
+ */
+ function definition_inner(&$mform) {
+ $creategrades = get_grade_options();
+ $gradeoptions = $creategrades->gradeoptionsfull;
+ $repeated = array();
+ $repeated[] =& $mform->createElement('header', 'choicehdr', get_string('choiceno', 'qtype_multichoice', '{no}'));
+ $repeated[] =& $mform->createElement('text', 'answer', get_string('answer', 'quiz'));
+ $repeated[] =& $mform->createElement('select', 'fraction', get_string('grade'), $gradeoptions);
+ $repeated[] =& $mform->createElement('htmleditor', 'feedback', get_string('feedback', 'quiz'));
+
+ if (isset($this->question->options)){
+ $countanswers = count($this->question->options->answers);
+ } else {
+ $countanswers = 0;
+ }
+ $repeatsatstart = (QUESTION_NUMANS_START > ($countanswers + QUESTION_NUMANS_ADD))?
+ QUESTION_NUMANS_START : ($countanswers + QUESTION_NUMANS_ADD);
+ $repeatedoptions = array();
+ $repeatedoptions['answer']['type'] = PARAM_NOTAGS;//text with no multilang support
+ $repeatedoptions['fraction']['default'] = 0;
+ $this->repeat_elements($repeated, $repeatsatstart, $repeatedoptions, 'noanswers', 'addanswers', QUESTION_NUMANS_ADD, get_string('addmorechoiceblanks', 'qtype_multichoice'));
+ }
+
+ function set_data($question) {
+ if (isset($question->options)){
+ $answers = $question->options->answers;
+ if (count($answers)) {
+ $key = 0;
+ foreach ($answers as $answer){
+ $default_values['answer['.$key.']'] = $answer->answer;
+ $default_values['fraction['.$key.']'] = $answer->fraction;
+ $default_values['feedback['.$key.']'] = $answer->feedback;
+ $key++;
+ }
+ }
+ $question = (object)((array)$question + $default_values);
+ }
+ parent::set_data($question);
+ }
+
+ function qtype() {
+ return 'missingtype';
+ }
+
+ function validation($data){
+ $errors = array();
+ $answers = $data['answer'];
+ $answercount = 0;
+
+ $totalfraction = 0;
+ $maxfraction = -1;
+
+ foreach ($answers as $key => $answer){
+ //check no of choices
+ $trimmedanswer = trim($answer);
+ if (!empty($trimmedanswer)){
+ $answercount++;
+ }
+ //check grades
+ if ($answer != '') {
+ if ($data['fraction'][$key] > 0) {
+ $totalfraction += $data['fraction'][$key];
+ }
+ if ($data['fraction'][$key] > $maxfraction) {
+ $maxfraction = $data['fraction'][$key];
+ }
+ }
+ }
+
+ if ($answercount==0){
+ $errors['answer[0]'] = get_string('notenoughanswers', 'qtype_multichoice', 1);
+ }
+
+
+ $totalfraction = round($totalfraction, 2);
+ if ($totalfraction != 1) {
+ $totalfraction = $totalfraction * 100;
+ $errors['fraction[0]'] = get_string('errfractionsaddwrong', 'qtype_multichoice', $totalfraction);
+ }
+
+ return $errors;
+ }
+}
+?>
\ No newline at end of file
+++ /dev/null
-<?php
-$QTYPES[$question->qtype]->print_question_form_start($question, array(), $course, $usehtmleditor);
-
-for ($i=1; $i<=count($answers); $i++) {
- if (!isset($answers[$i-1]->fraction)) {
- $answers[$i-1]->answer = '';
- $answers[$i-1]->fraction = 0;
- $answers[$i-1]->feedback = '';
- }
-?>
-
- <tr valign="top">
- <td align="right"><b><?php echo get_string("choice", "quiz")." $i"; ?>:</b></td>
- <td align="left">
- <input type="text" name="answer[]" size="50" value="<?php p($answers[$i-1]->answer) ?>" alt="<?php echo get_string("choice", "quiz")." $i"; ?>"/>
- <?php
- print_string("grade");
- echo ": ";
- choose_from_menu($gradeoptionsfull, "fraction[]", $answers[$i-1]->fraction, "");
- ?>
- <br />
- </td>
- </tr>
-
- <tr valign="top">
- <td align="right"><b><?php print_string("feedback", "quiz") ?>:</b></td>
- <td align="left">
- <textarea name="feedback[]" rows="2" cols="50"><?php p($answers[$i-1]->feedback) ?></textarea>
- </td>
- </tr>
-
- <tr valign="top">
- <td colspan="2"> </td>
- </tr>
-
-<?php
-} /// End of loop, printing answers
-
-$QTYPES['missingtype']->print_replacement_options($question, $course, $contextquiz);
-$QTYPES['missingtype']->print_question_form_end($question);
-?>
+++ /dev/null
-<?php // $Id$
-
- if (!empty($options->answers)) {
- $answersraw = get_records_list('question_answers', 'id', $options->answers);
-
- }
-
- $answers = array();
- if (!empty($answersraw)) {
- foreach ($answersraw as $answer) {
- $answers[] = $answer; // insert answers into slots
- }
- }
-
- $yesnooptions = array();
- $yesnooptions[0] = get_string('no');
- $yesnooptions[1] = get_string('yes');
-
- print_heading(get_string('warningmissingtype', 'quiz'));
- require("$CFG->dirroot/question/type/missingtype/editquestion.html");
-
-?>