diff --git a/grade/edit/item_form.php b/grade/edit/item_form.php index 9a588353d98..057b14f3313 100644 --- a/grade/edit/item_form.php +++ b/grade/edit/item_form.php @@ -17,17 +17,20 @@ class edit_item_form extends moodleform { // allow setting of outcomes on module items too $options = array(0=>get_string('usenooutcome', 'grades')); - if ($outcomes = grade_outcome::fetch_all(array('courseid'=>$COURSE->id))) { + + if ($outcomes = grade_outcome::fetch_all(array('courseid'=>$COURSE->id), true)) { foreach ($outcomes as $outcome) { - $options[$scale->id] = $outcome->get_name(); + $options[$outcome->id] = $outcome->get_name(); } } + $mform->addElement('select', 'outcomeid', get_string('outcome', 'grades'), $options); $options = array(GRADE_TYPE_NONE=>get_string('typenone', 'grades'), - GRADE_TYPE_VALUE=>get_string('typevalue', 'grades'), - GRADE_TYPE_SCALE=>get_string('typescale', 'grades'), - GRADE_TYPE_TEXT=>get_string('typetext', 'grades')); + GRADE_TYPE_VALUE=>get_string('typevalue', 'grades'), + GRADE_TYPE_SCALE=>get_string('typescale', 'grades'), + GRADE_TYPE_TEXT=>get_string('typetext', 'grades')); + $mform->addElement('select', 'gradetype', get_string('gradetype', 'grades'), $options); $mform->setDefault('gradetype', GRADE_TYPE_VALUE); diff --git a/grade/report/grader/lib.php b/grade/report/grader/lib.php index 64f58b05d94..b3d6cfb93c1 100644 --- a/grade/report/grader/lib.php +++ b/grade/report/grader/lib.php @@ -783,16 +783,8 @@ class grade_report_grader extends grade_report { } $scaleval = round($this->get_grade_clean($finalavg, $decimalpoints)); - $scales_array = get_records_list('scale', 'id', $item->scaleid); - $scale = $scales_array[$item->scaleid]; - $scales = explode(",", $scale->scale); - - // this could be a 0 when summed and rounded, e.g, 1, no grade, no grade, no grade - if ($scaleval < 1) { - $scaleval = 1; - } - - $gradehtml = $scales[$scaleval-1]; + $scale_object = new grade_scale(array('id' => $item->scaleid), false); + $gradehtml = $scale_object->get_nearest_item($scaleval); $rawvalue = $scaleval; } else { $gradeval = $this->get_grade_clean($sum/$count_array[$item->id], $decimalpoints); diff --git a/grade/report/outcomes/index.php b/grade/report/outcomes/index.php index d662ecbbb5e..17c0d86ef3b 100644 --- a/grade/report/outcomes/index.php +++ b/grade/report/outcomes/index.php @@ -74,6 +74,7 @@ foreach ($outcomes as $outcomeid => $outcome) { $html = '
| ' . get_string('outcomename', 'grades') . ' | '; +$html .= '' . get_string('overallavg', 'grades') . ' | '; $html .= '' . get_string('sitewide', 'grades') . ' | '; $html .= '' . get_string('activities', 'grades') . ' | '; $html .= '' . get_string('average', 'grades') . ' | '; @@ -81,46 +82,55 @@ $html .= '' . get_string('numberofgrades', 'grades') . ' | ' . $outcomedata['outcome']->shortname . " | \n"; + $shortname_html = '
|---|---|---|---|---|---|
| ' . $outcomedata['outcome']->shortname . " | \n"; $sitewide = get_string('no'); if (empty($outcomedata['outcome']->courseid)) { $sitewide = get_string('yes'); } - $html .= '' . $sitewide . " | \n"; + $sitewide_html = '' . $sitewide . " | \n"; + + $outcomedata['outcome']->sum = 0; + $scale = new grade_scale(array('id' => $outcomedata['outcome']->scaleid), false); $print_tr = false; + $items_html = ''; + if (is_array($outcomedata['items'])) { foreach ($outcomedata['items'] as $itemid => $item) { if ($print_tr) { - $html .= '|||
| $itemname | $gradehtml ($item->avg) | $item->count | $itemname | $gradehtml ($item->avg) | $item->count | \n"; $print_tr = true; } } else { - $html .= "- | - | 0 | "; + $items_html .= "- | - | 0 | \n"; } + + // Calculate outcome average + if (is_array($outcomedata['items'])) { + $avg = $outcomedata['outcome']->sum / count($outcomedata['items']); + $avg_html = $scale->get_nearest_item($avg) . " (" . round($avg, 2) . ")\n"; + } else { + $avg_html = ' - '; + } + + $outcomeavg_html = '' . $avg_html . " | \n"; + + $html .= $shortname_html . $outcomeavg_html . $sitewide_html . $items_html; } + $html .= '