diff --git a/amd/build/rubric_ranges.min.js b/amd/build/rubric_ranges.min.js new file mode 100644 index 00000000..f263b64b --- /dev/null +++ b/amd/build/rubric_ranges.min.js @@ -0,0 +1,10 @@ +/** + * Modify ranged rubric grading form. + * + * @author Sumaiya Javed .\n\n/**\n * Modify ranged rubric grading form.\n *\n * @author Sumaiya Javed . + +/** + * Modify ranged rubric grading form. + * + * @author Sumaiya Javed stageidentifier; $PAGE->set_url('/mod/coursework/actions/feedbacks/new.php', $urlparams); + // Autopopulate average grade from initial assessors. + if ($coursework && $coursework->is_using_ranged_rubric() && $teacherfeedback->stageidentifier == 'final_agreed_1') { + if (str_contains($coursework->automaticagreementstrategy, 'none')) { + $gdata = []; + $gdata = $coursework->get_advanced_grading_average_grade_range_rubric($teacherfeedback->get_submission()->id); + $PAGE->requires->js_call_amd('mod_coursework/rubric_ranges', 'init', [$gdata]); + } + } + // auto-populate Agreed Feedback with comments from initial marking if ($coursework && $coursework->autopopulatefeedbackcomment_enabled() && $teacherfeedback->stageidentifier == 'final_agreed_1') { // get all initial stages feedbacks for this submission diff --git a/classes/models/coursework.php b/classes/models/coursework.php index 962b6816..ac7b1978 100644 --- a/classes/models/coursework.php +++ b/classes/models/coursework.php @@ -2119,7 +2119,23 @@ public function get_advanced_grading_active_controller() { } /** - * @return grading_manager + * @return bool|gradingform_controller|null + */ + public function get_advanced_grading_average_grade_range_rubric($submissionid) { + global $DB; + if ($submissionid) { + $sql = "SELECT rr.criterionid, ROUND(AVG(rr.levelid)) as avglevel, ROUND(AVG(rr.grade)) as avggrade + FROM {coursework_feedbacks} cf + LEFT JOIN {grading_instances} gi ON cf.id = gi.itemid + LEFT JOIN {gradingform_rubric_ranges_f} rr ON gi.id = rr.instanceid + WHERE cf.submissionid = :submissionid AND cf.stageidentifier NOT LIKE 'final_agreed_1' AND cf.finalised = 1 AND gi.status = 1 + GROUP BY rr.criterionid ORDER BY rr.criterionid "; + return $DB->get_records_sql($sql, ['submissionid' => $submissionid]); + } + } + + /** + * @return \grading_manager */ protected function get_advanced_grading_manager() { return get_grading_manager($this->get_context(), 'mod_coursework', 'submissions'); @@ -2143,6 +2159,15 @@ public function is_using_marking_guide(): bool { return self::get_advanced_grading_method() === 'guide'; } + /** + * Check if ranged rubric is used in the current coursework. + * + * @return bool + */ + public function is_using_ranged_rubric(): bool { + return self::get_advanced_grading_method() === 'rubric_ranges'; + } + /** * Get advanced grading method used in the current coursework. *