http://www.gnu.org/copyleft/gpl.html";
$string['grade'] = "Grade";
+$string['grades'] = "Grades";
$string['guestskey'] = "Allow guests who have the key";
$string['guestsno'] = "Do not allow guests in";
$string['guestsnotallowed'] = "Sorry, '\$a' does not allow guests to enter.";
$string['feedback'] = "Feedback";
$string['filloutoneanswer'] = "You must fill out at least one possible answer. Answers left blank will not be used.";
$string['fillouttwochoices'] = "You must fill out at least two choices. Choices left blank will not be used.";
-$string['grade'] = "Grade";
$string['gradeaverage'] = "Average grade";
$string['gradehighest'] = "Highest grade";
$string['grademethod'] = "Grading method";
-$string['imageaddress'] = "Image URL address";
+$string['imagedisplay'] = "Image to display";
$string['introduction'] = "Introduction";
$string['marks'] = "Marks";
$string['multichoice'] = "Multiple Choice";
$string['savegrades'] = "Save grades";
$string['savemyanswers'] = "Save my answers";
$string['savequiz'] = "Save this whole quiz";
+$string['score'] = "Raw score";
$string['select'] = "Select";
$string['selectcategoryabove'] = "Select a category above";
$string['shortanswer'] = "Short Answer";
$string['show'] = "Show";
$string['showfeedback'] = "After answering, show feedback?";
$string['showcorrectanswer'] = "After answering, show correct answers?";
+$string['time'] = "Time";
$string['true'] = "True";
$string['truefalse'] = "True/False";
$string['viewallanswers'] = "View \$a completed quizzes";
error("Sorry! Could not calculate your best grade!");
}
- print_heading(get_string("grade", "quiz").": $result->grade/$quiz->grade ($result->sumgrades / $quiz->sumgrades = $result->percentage %)");
+ $strgrade = get_string("grade");
+ $strscore = get_string("score", "quiz");
+
+ print_heading("$strscore: $result->sumgrades/$quiz->sumgrades ($result->percentage %)");
+ print_heading("$strgrade: $result->grade/$quiz->grade");
print_continue("view.php?id=$cm->id");
# http://www.phpmyadmin.net/ (download page)
#
# Host: localhost
-# Generation Time: Oct 13, 2002 at 03:11 PM
+# Generation Time: Oct 15, 2002 at 08:22 PM
# Server version: 3.23.49
# PHP Version: 4.2.3
# Database : `moodle`
`id` int(10) unsigned NOT NULL auto_increment,
`question` int(10) unsigned NOT NULL default '0',
`answer` varchar(255) NOT NULL default '',
- `fraction` float NOT NULL default '0',
+ `fraction` varchar(10) NOT NULL default '0.0',
`feedback` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
-
) TYPE=MyISAM COMMENT='Answers, with a fractional grade (0-1) and feedback';
# --------------------------------------------------------
`quiz` int(10) unsigned NOT NULL default '0',
`user` int(10) unsigned NOT NULL default '0',
`attempt` smallint(6) NOT NULL default '0',
- `sumgrades` float NOT NULL default '0',
+ `sumgrades` int(10) NOT NULL default '0',
`timemodified` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM COMMENT='Stores various attempts on a quiz';
`id` int(10) unsigned NOT NULL auto_increment,
`quiz` int(10) unsigned NOT NULL default '0',
`user` int(10) unsigned NOT NULL default '0',
- `grade` float NOT NULL default '0',
+ `grade` int(10) NOT NULL default '0',
`timemodified` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM COMMENT='Final quiz grade (may be best of several attempts)';
`id` int(10) NOT NULL auto_increment,
`category` int(10) NOT NULL default '0',
`name` varchar(255) NOT NULL default '',
- `question` text NOT NULL,
+ `questiontext` text NOT NULL,
`image` varchar(255) NOT NULL default '',
`type` smallint(6) NOT NULL default '0',
PRIMARY KEY (`id`)
`attempt` int(10) unsigned NOT NULL default '0',
`question` int(10) unsigned NOT NULL default '0',
`answer` varchar(255) NOT NULL default '',
- `grade` float NOT NULL default '0',
+ `grade` int(10) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM COMMENT='Stores user responses to a quiz, and percentage grades';
# --------------------------------------------------------
CREATE TABLE `quiz_shortanswer` (
`id` int(10) unsigned NOT NULL auto_increment,
`question` int(10) unsigned NOT NULL default '0',
- `answer` int(10) NOT NULL default '0',
- `case` tinyint(4) NOT NULL default '0',
+ `answers` varchar(255) NOT NULL default '',
+ `usecase` tinyint(2) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `question` (`question`)
) TYPE=MyISAM COMMENT='Options for short answer questions';
$modform->questions = implode(",", $questions);
}
- if ($grade) { /// The grades have been updated, so update our internal list
+ if ($setgrades) { /// The grades have been updated, so update our internal list
$rawgrades = $HTTP_POST_VARS;
+ unset($modform->grades);
foreach ($rawgrades as $key => $value) { // Parse input for question -> grades
if (substr($key, 0, 1) == "q") {
$key = substr($key,1);
$strname = get_string("name");
$strweek = get_string("week");
$strtopic = get_string("topic");
+ $strgrades = get_string("grades");
if ($course->format == "weeks") {
- $table->head = array ($strweek, $strname);
+ $table->head = array ($strweek, $strname, $strgrades);
$table->align = array ("CENTER", "LEFT");
+ $table->width = array (10, "*", 10);
} else if ($course->format == "topics") {
- $table->head = array ($strtopic, $strname);
+ $table->head = array ($strtopic, $strname, $strgrades);
$table->align = array ("CENTER", "LEFT", "LEFT", "LEFT");
+ $table->width = array (10, "*", 10);
} else {
- $table->head = array ($strname);
- $table->align = array ("LEFT", "LEFT", "LEFT");
+ $table->head = array ($strname, $strgrades);
+ $table->align = array ("LEFT", "LEFT");
+ $table->width = array ("*", 10);
}
foreach ($quizzes as $quiz) {
define("SHORTANSWER", "1");
define("TRUEFALSE", "2");
define("MULTICHOICE", "3");
-$QUIZ_QUESTION_TYPE = array ( SHORTANSWER => get_string("shortanswer", "quiz"),
+$QUIZ_QUESTION_TYPE = array ( MULTICHOICE => get_string("multichoice", "quiz"),
TRUEFALSE => get_string("truefalse", "quiz"),
- MULTICHOICE => get_string("multichoice", "quiz"));
+ SHORTANSWER => get_string("shortanswer", "quiz") );
// The grades for every question in this quiz are stored in an array
if ($quiz->grades) {
foreach ($quiz->grades as $question => $grade) {
- $questiongrade->quiz = $quiz->id;
- $questiongrade->question = $question;
- $questiongrade->grade = $grade;
- if (!insert_record("quiz_question_grades", $questiongrade)) {
- return false;
+ if ($question and $grade) {
+ unset($questiongrade);
+ $questiongrade->quiz = $quiz->id;
+ $questiongrade->question = $question;
+ $questiongrade->grade = $grade;
+ if (!insert_record("quiz_question_grades", $questiongrade)) {
+ return false;
+ }
}
}
}
if ($quiz->grades) {
foreach ($quiz->grades as $question => $grade) {
- $questiongrade->quiz = $quiz->id;
- $questiongrade->question = $question;
- $questiongrade->grade = $grade;
- if (isset($existing[$question])) {
- if ($existing[$question]->grade != $grade) {
- $questiongrade->id = $existing[$question]->id;
- if (!update_record("quiz_question_grades", $questiongrade)) {
+ if ($question and $grade) {
+ unset($questiongrade);
+ $questiongrade->quiz = $quiz->id;
+ $questiongrade->question = $question;
+ $questiongrade->grade = $grade;
+ if (isset($existing[$question])) {
+ if ($existing[$question]->grade != $grade) {
+ $questiongrade->id = $existing[$question]->id;
+ if (!update_record("quiz_question_grades", $questiongrade)) {
+ return false;
+ }
+ }
+ } else {
+ if (!insert_record("quiz_question_grades", $questiongrade)) {
return false;
}
}
- } else {
- if (!insert_record("quiz_question_grades", $questiongrade)) {
- return false;
- }
}
}
}
}
$categories[$category->id] = $category->name;
}
+ foreach ($categories as $key => $category) {
+ if ($category->publish) {
+ if ($course = get_record_sql("course", "id", $category->course)) {
+ $categories[$key]->name .= " ($course->shortname)";
+ }
+ }
+ }
$strcategory = get_string("category", "quiz");
$strshow = get_string("show", "quiz");
$stredit = get_string("edit");
echo "</TD>";
echo "<TD>".$questions[$qnum]->name."</TD>";
echo "<TD>";
- choose_from_menu($gradesmenu, "q$qnum", $grades[$qnum], "");
+ choose_from_menu($gradesmenu, "q$qnum", (string)$grades[$qnum], "");
echo "<TD>";
echo "<A TITLE=\"$strdelete\" HREF=\"edit.php?delete=$qnum\"><IMG
SRC=\"../../pix/t/delete.gif\" BORDER=0></A> ";
}
echo "<TR><TD COLSPAN=3><TD ALIGN=right>";
echo "<INPUT TYPE=submit VALUE=\"$strsavegrades:\">";
- echo "<INPUT TYPE=hidden NAME=grade VALUE=\"save\">";
+ echo "<INPUT TYPE=hidden NAME=setgrades VALUE=\"save\">";
echo "<TD ALIGN=LEFT BGCOLOR=\"$THEME->cellcontent\">";
echo "<B>$sumgrade</B>";
echo "</TD><TD></TD></TR>";
return;
}
echo "<P><B>$strcategory:</B> $category->name</P>\n";
+ echo "<CENTER>";
echo text_to_html($category->info);
echo "<FORM METHOD=GET ACTION=question.php>";
echo "<INPUT TYPE=hidden NAME=category VALUE=\"$category->id\">";
echo "<INPUT TYPE=submit NAME=new VALUE=\"$strcreatenewquestion\">";
echo "</FORM>";
+ echo "</CENTER>";
if (!$questions = get_records("quiz_questions", "category", $category->id)) {
echo "<P align=center>";
return get_records_sql("SELECT * FROM quiz_attempts WHERE quiz = '$quizid' and user = '$userid' ORDER by attempt ASC");
}
+
+function quiz_get_user_attempts_string($quiz, $attempts, $bestgrade) {
+/// Returns a simple little comma-separated list of all attempts,
+/// with the best grade bolded
+
+ $bestgrade = format_float($bestgrade);
+ foreach ($attempts as $attempt) {
+ $attemptgrade = format_float(($attempt->sumgrades / $quiz->sumgrades) * $quiz->grade);
+ if ($attemptgrade == $bestgrade) {
+ $userattempts[] = "<B>$attemptgrade</B>";
+ } else {
+ $userattempts[] = "$attemptgrade";
+ }
+ }
+ return implode(",", $userattempts);
+}
+
function quiz_get_best_grade($quizid, $userid) {
/// Get the best current grade for a particular user in a quiz
if (!$grade = get_record_sql("SELECT * FROM quiz_grades WHERE quiz = '$quizid' and user = '$userid'")) {
$result->sumgrades = 0;
- global $db;
- $db->debug=true;
-
foreach ($questions as $question) {
if (!$answers = quiz_get_answers($question)) {
error("No answers defined for question id $question->id!");
$result->feedback[$question->id] = $feedback;
}
- $result->percentage = ($result->sumgrades / $quiz->sumgrades);
- $result->grade = $result->percentage * $quiz->grade;
+ $fraction = (float)($result->sumgrades / $quiz->sumgrades);
+ $result->percentage = format_float($fraction * 100.0);
+ $result->grade = format_float($fraction * $quiz->grade);
return $result;
}
<TD align=right><P><B><? print_string("choice", "quiz") ?> 1:</B></P></TD>\r
<TD>\r
<INPUT type="text" name="answer[]" size=50 value="<? p($answers[0]->answer) ?>"> \r
- <? print_string("grade", "quiz");\r
+ <? print_string("grade");\r
echo ": ";\r
choose_from_menu($gradeoptionsfull, "fraction[]", $answers[0]->fraction, ""); ?>\r
<BR>\r
<TD align=right><P><B><? print_string("choice", "quiz") ?> 2:</B></P></TD>\r
<TD>\r
<INPUT type="text" name="answer[]" size=50 value="<? p($answers[1]->answer) ?>"> \r
- <? print_string("grade", "quiz");\r
+ <? print_string("grade");\r
echo ": ";\r
choose_from_menu($gradeoptionsfull, "fraction[]", $answers[1]->fraction, ""); ?>\r
<BR>\r
<TD align=right><P><B><? print_string("choice", "quiz") ?> 3:</B></P></TD>\r
<TD>\r
<INPUT type="text" name="answer[]" size=50 value="<? p($answers[2]->answer) ?>"> \r
- <? print_string("grade", "quiz");\r
+ <? print_string("grade");\r
echo ": ";\r
choose_from_menu($gradeoptionsfull, "fraction[]", $answers[2]->fraction, ""); ?>\r
<BR>\r
<TD align=right><P><B><? print_string("choice", "quiz") ?> 4:</B></P></TD>\r
<TD>\r
<INPUT type="text" name="answer[]" size=50 value="<? p($answers[3]->answer) ?>"> \r
- <? print_string("grade", "quiz");\r
+ <? print_string("grade");\r
echo ": ";\r
choose_from_menu($gradeoptionsfull, "fraction[]", $answers[3]->fraction, ""); ?>\r
<BR>\r
<TD align=right><P><B><? print_string("choice", "quiz") ?> 5:</B></P></TD>\r
<TD>\r
<INPUT type="text" name="answer[]" size=50 value="<? p($answers[4]->answer) ?>"> \r
- <? print_string("grade", "quiz");\r
+ <? print_string("grade");\r
echo ": ";\r
choose_from_menu($gradeoptionsfull, "fraction[]", $answers[4]->fraction, ""); ?>\r
<BR>\r
<TD align=right><P><B><? print_string("choice", "quiz") ?> 6:</B></P></TD>\r
<TD>\r
<INPUT type="text" name="answer[]" size=50 value="<? p($answers[5]->answer) ?>"> \r
- <? print_string("grade", "quiz");\r
+ <? print_string("grade");\r
echo ": ";\r
choose_from_menu($gradeoptionsfull, "fraction[]", $answers[5]->fraction, ""); ?>\r
<BR>\r
$strreport = get_string("report", "quiz");
$strname = get_string("name");
$strattempts = get_string("attempts", "quiz");
- $strgrade = get_string("grade", "quiz");
+ $strgrade = get_string("grade");
print_header("$course->shortname: $quiz->name", "$course->fullname",
"$navigation <A HREF=index.php?id=$course->id>$strquizzes</A>
$picture = print_user_picture($grade->user, $course->id, $grade->picture, false, true);
if ($attempts = quiz_get_user_attempts($quiz->id, $grade->user)) {
- foreach ($attempts as $attempt) {
- $userattempts[] = ($attempt->sumgrades / $quiz->sumgrades) * $quiz->grade;
- }
- $userattempts = implode(",", $userattempts);
+ $userattempts = quiz_get_user_attempts_string($quiz, $attempts, $grade->grade);
}
$table->data[] = array ($picture,
<TD align=right><P><B><? print_string("answer", "quiz") ?> 1:</B></P></TD>\r
<TD>\r
<INPUT type="text" name="answer[]" size=50 value="<? p($answers[0]->answer) ?>"> \r
- <? print_string("grade", "quiz");\r
+ <? print_string("grade");\r
echo ": ";\r
choose_from_menu($gradeoptions, "fraction[]", $answers[0]->fraction,""); ?>\r
<BR>\r
<TD align=right><P><B><? print_string("answer", "quiz") ?> 2:</B></P></TD>\r
<TD>\r
<INPUT type="text" name="answer[]" size=50 value="<? p($answers[1]->answer) ?>"> \r
- <? print_string("grade", "quiz");\r
+ <? print_string("grade");\r
echo ": ";\r
choose_from_menu($gradeoptions, "fraction[]", $answers[1]->fraction,""); ?>\r
<BR>\r
<TD align=right><P><B><? print_string("answer", "quiz") ?> 3:</B></P></TD>\r
<TD>\r
<INPUT type="text" name="answer[]" size=50 value="<? p($answers[2]->answer) ?>"> \r
- <? print_string("grade", "quiz");\r
+ <? print_string("grade");\r
echo ": ";\r
choose_from_menu($gradeoptions, "fraction[]", $answers[2]->fraction,""); ?>\r
<BR>\r
<TD align=right><P><B><? print_string("answer", "quiz") ?> 4:</B></P></TD>\r
<TD>\r
<INPUT type="text" name="answer[]" size=50 value="<? p($answers[3]->answer) ?>"> \r
- <? print_string("grade", "quiz");\r
+ <? print_string("grade");\r
echo ": ";\r
choose_from_menu($gradeoptions, "fraction[]", $answers[3]->fraction,""); ?>\r
<BR>\r
<TD align=right><P><B><? print_string("answer", "quiz") ?> 5:</B></P></TD>\r
<TD>\r
<INPUT type="text" name="answer[]" size=50 value="<? p($answers[4]->answer) ?>"> \r
- <? print_string("grade", "quiz");\r
+ <? print_string("grade");\r
echo ": ";\r
choose_from_menu($gradeoptions, "fraction[]", $answers[4]->fraction,""); ?>\r
<BR>\r
if ($quiz->attempts > 1) {
echo "<P ALIGN=CENTER>".get_string("attemptsallowed", "quiz").": $quiz->attempts</P>";
echo "<P ALIGN=CENTER>".get_string("grademethod", "quiz").": ".$QUIZ_GRADE_METHOD[$quiz->grademethod]."</P>";
+ } else {
+ echo "<BR>";
}
+
+ $strattempt = get_string("attempt", "quiz");
+ $strtime = get_string("time", "quiz");
+ $strgrade = get_string("grade");
+
if ($numattempts) {
- $table->head = array("Attempt", "Time", "Grade");
+ $table->head = array($strattempt, $strtime, "$strgrade / $quiz->grade");
$table->align = array("CENTER", "LEFT", "RIGHT");
foreach ($attempts as $attempt) {
$table->data[] = array( $attempt->attempt,
userdate($attempt->timemodified),
- ($attempt->sumgrades/$quiz->sumgrades)*$quiz->grade );
+ format_float(($attempt->sumgrades/$quiz->sumgrades)*$quiz->grade) );
}
print_table($table);
}
$mygrade = quiz_get_best_grade($quiz->id, $USER->id);
- if ($numattempts < $quiz->attempts or !$quiz->attempts) {
- if ($available) {
- $options["id"] = $cm->id;
- if ($numattempts) {
- print_heading("Your best grade so far is $mygrade / $quiz->grade.");
+ if (!$quiz->questions) {
+ print_heading(get_string("noquestions", "quiz"));
+ } else {
+ if ($numattempts < $quiz->attempts or !$quiz->attempts) {
+ if ($available) {
+ $options["id"] = $cm->id;
+ if ($numattempts) {
+ print_heading("Your best grade so far is $mygrade / $quiz->grade.");
+ }
+ echo "<BR>";
+ echo "<DIV align=CENTER>";
+ print_single_button("attempt.php", $options, $label="Attempt quiz now");
+ echo "</P>";
}
- echo "<BR>";
- echo "<DIV align=CENTER>";
- print_single_button("attempt.php", $options, $label="Attempt quiz now");
- echo "</P>";
+ } else {
+ print_heading(get_string("nomoreattempts", "quiz"));
+ print_heading(get_string("yourfinalgradeis", "quiz", "$mygrade / $quiz->grade"));
}
- } else {
- print_heading(get_string("nomoreattempts", "quiz"));
- print_heading(get_string("yourfinalgradeis", "quiz", "$mygrade / $quiz->grade"));
}