From 9e6f39a42a8ef1f21469243f45392c6298d9072c Mon Sep 17 00:00:00 2001 From: rkingdon Date: Fri, 20 Aug 2004 09:08:33 +0000 Subject: [PATCH] Fixed comparison of assessments for error banded and criterion grading. --- mod/exercise/assessments.php | 2 +- mod/exercise/locallib.php | 41 ++++++++++++++++++++++++++---------- mod/exercise/view.php | 5 ++++- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/mod/exercise/assessments.php b/mod/exercise/assessments.php index f93e40afa0..c42d4a11bc 100644 --- a/mod/exercise/assessments.php +++ b/mod/exercise/assessments.php @@ -377,7 +377,7 @@ break; case 3: // criterion grading - for ($j = 100; $j >= 0; $j--) { + for ($j = $exercise->grade; $j >= 0; $j--) { $numbers[$j] = $j; } for ($i=0; $i<$exercise->nelements; $i++) { diff --git a/mod/exercise/locallib.php b/mod/exercise/locallib.php index b7afc9e9b1..2af7c6ad42 100644 --- a/mod/exercise/locallib.php +++ b/mod/exercise/locallib.php @@ -115,11 +115,30 @@ function exercise_compare_assessments($exercise, $assessment1, $assessment2) { } $sumdiffs = 0; $sumweights = 0; - for ($i=0; $i < $exercise->nelements; $i++) { - $diff = ($grades[0][$i] - $grades[1][$i]) * $weight[$i] / $maxscore[$i]; - $sumdiffs += $diff * $diff; // use squared distances - $sumweights += $weight[$i]; - } + switch ($exercise->gradingstrategy) { + case 1 : // accumulative grading and... + case 4 : // ...rubic grading + for ($i=0; $i < $exercise->nelements; $i++) { + $diff = ($grades[0][$i] - $grades[1][$i]) * $weight[$i] / $maxscore[$i]; + $sumdiffs += $diff * $diff; // use squared distances + $sumweights += $weight[$i]; + } + break; + case 2 : // error banded grading + // ignore maxscores here, the grades are either 0 or 1, + for ($i=0; $i < $exercise->nelements; $i++) { + $diff = ($grades[0][$i] - $grades[1][$i]) * $weight[$i]; + $sumdiffs += $diff * $diff; // use squared distances + $sumweights += $weight[$i]; + } + break; + case 3 : // criterion grading + // here we only need to look at the difference between the "zero" grade elements + $diff = ($grades[0][0] - $grades[1][0]) / (count($elementsraw) - 1); + $sumdiffs = $diff * $diff; + $sumweights = 1; + break; + } // convert to a sensible grade (always out of 100) $COMP = (object)$EXERCISE_ASSESSMENT_COMPS[$exercise->assessmentcomps]; $factor = $COMP->value; @@ -1852,7 +1871,7 @@ function exercise_print_assessment_form($exercise, $assessment = false, $allowch .number_format($EXERCISE_EWEIGHTS[$elements[$i]->weight], 2)."\n"; echo "\n"; - echo " cellheading2\" align=\"center\">".get_string("select", "exercise")."\n"; + echo " cellheading2\" align=\"center\">".get_string("select")."\n"; echo " cellheading2\">". get_string("criterion","exercise")."\n"; if (isset($grades[$i])) { @@ -2320,7 +2339,7 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss 0 and the grade is positive @@ -2591,7 +2610,7 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss echo "\n"; echo " cellheading2\"> \n"; echo " cellheading2\">". get_string("criterion","exercise")."\n"; - echo " cellheading2\">".get_string("select", "exercise")."\n"; + echo " cellheading2\">".get_string("select")."\n"; echo " cellheading2\">".get_string("suggestedgrade", "exercise")."\n"; // find which criteria has been selected (saved in the zero element), if any if (isset($grades[0]->grade)) { @@ -2639,7 +2658,7 @@ function exercise_print_teacher_assessment_form($exercise, $assessment, $submiss "

Weight: " .number_format($EXERCISE_EWEIGHTS[$elements[$i]->weight], 2)."\n"; echo "\n"; - echo " cellheading2\" align=\"center\">".get_string("select", "exercise")."\n"; + echo " cellheading2\" align=\"center\">".get_string("select")."\n"; echo " cellheading2\">". get_string("criterion","exercise")."\n"; if (isset($grades[$i])) { $selection = $grades[$i]->grade; diff --git a/mod/exercise/view.php b/mod/exercise/view.php index 0efe73cae5..2413e49d6e 100644 --- a/mod/exercise/view.php +++ b/mod/exercise/view.php @@ -164,7 +164,10 @@ if (exercise_count_teacher_submissions($exercise) == 0) { redirect("view.php?id=$cm->id", get_string("noexercisedescriptionssubmitted", "exercise")); } - else { + elseif (($exercise->gradingstrategy == 3) and ($exercise->nelements ==1 )) { + // only one criterion specified + redirect("view.php?id=$cm->id", get_string("numberofcriterionelements", "exercise")); + } else { set_field("exercise", "phase", 2, "id", "$exercise->id"); add_to_log($course->id, "exercise", "open", "view.php?id=$cm->id", "$exercise->id", $cm->id); redirect("view.php?id=$cm->id", get_string("movingtophase", "exercise", 2)); -- 2.39.5