From 08f19f4848266bb967de594d23ab8c7cd377d25f Mon Sep 17 00:00:00 2001 From: Aaron Barnes Date: Wed, 11 Apr 2012 18:54:40 +1200 Subject: [PATCH] MDL-32249 completion: Make grade criteria more consistent Also, round course grades and remove hardcoded string. Note: This patch also removes the ability to update the course grade from the completion interface --- course/completion.php | 10 -------- course/completion_form.php | 5 +++- lang/en/completion.php | 4 +++- lib/completion/completion_criteria_grade.php | 25 +++++++++++--------- 4 files changed, 21 insertions(+), 23 deletions(-) diff --git a/course/completion.php b/course/completion.php index 3d4e17b1398..a25c2af30f9 100644 --- a/course/completion.php +++ b/course/completion.php @@ -141,16 +141,6 @@ if ($form->is_cancelled()){ $aggregation->setMethod($data->role_aggregation); $aggregation->save(); - // Update course total passing grade - if (!empty($data->criteria_grade)) { - if ($grade_item = grade_category::fetch_course_category($course->id)->grade_item) { - $grade_item->gradepass = $data->criteria_grade_value; - if (method_exists($grade_item, 'update')) { - $grade_item->update('course/completion.php'); - } - } - } - add_to_log($course->id, 'course', 'completion updated', 'completion.php?id='.$course->id); $url = new moodle_url('/course/view.php', array('id' => $course->id)); diff --git a/course/completion_form.php b/course/completion_form.php index 0a5b543aa1c..951776a198b 100644 --- a/course/completion_form.php +++ b/course/completion_form.php @@ -179,10 +179,13 @@ class course_completion_form extends moodleform { $criteria->config_form_display($mform); // Completion on course grade - $mform->addElement('header', 'grade', get_string('grade')); + $mform->addElement('header', 'grade', get_string('coursegrade', 'completion')); // Grade enable and passing grade $course_grade = $DB->get_field('grade_items', 'gradepass', array('courseid' => $course->id, 'itemtype' => 'course')); + if (!$course_grade) { + $course_grade = '0.00000'; + } $criteria = new completion_criteria_grade($params); $criteria->config_form_display($mform, $course_grade); diff --git a/lang/en/completion.php b/lang/en/completion.php index 0683c79b85b..9a9d10cc373 100644 --- a/lang/en/completion.php +++ b/lang/en/completion.php @@ -110,6 +110,7 @@ $string['courseprerequisites']='Course prerequisites'; $string['coursesavailable']='Courses available'; $string['coursesavailableexplaination']='Course completion criteria must be set for a course to appear in this list'; $string['criteria']='Criteria'; +$string['criteriagradenote'] = 'Please note that updating the required grade here will not update the current course pass grade.'; $string['criteriagroup']='Criteria group'; $string['criteriarequiredall']='All criteria below are required'; $string['criteriarequiredany']='Any criteria below are required'; @@ -124,6 +125,8 @@ $string['datepassed']='Date passed'; $string['daysafterenrolment']='Days after enrolment'; $string['durationafterenrolment']='Duration after enrolment'; $string['fraction']='Fraction'; +$string['gradexrequired']='{$a} required'; +$string['graderequired']='Grade required'; $string['inprogress']='In progress'; $string['manualcompletionby']='Manual completion by'; $string['manualselfcompletion']='Manual self completion'; @@ -136,7 +139,6 @@ $string['nocriteriaset']='No completion criteria set for this course'; $string['notenroled']='You are not enrolled in this course'; $string['notyetstarted']='Not yet started'; $string['overallcriteriaaggregation']='Overall criteria type aggregation'; -$string['passinggrade']='Passing grade'; $string['pending']='Pending'; $string['periodpostenrolment']='Period post enrolment'; $string['prerequisites']='Prerequisites'; diff --git a/lib/completion/completion_criteria_grade.php b/lib/completion/completion_criteria_grade.php index 6bc32ed7236..56a4d0f9f1c 100644 --- a/lib/completion/completion_criteria_grade.php +++ b/lib/completion/completion_criteria_grade.php @@ -62,8 +62,9 @@ class completion_criteria_grade extends completion_criteria { */ public function config_form_display(&$mform, $data = null) { $mform->addElement('checkbox', 'criteria_grade', get_string('enable')); - $mform->addElement('text', 'criteria_grade_value', get_string('passinggrade', 'completion')); + $mform->addElement('text', 'criteria_grade_value', get_string('graderequired', 'completion')); $mform->setDefault('criteria_grade_value', $data); + $mform->addElement('static', 'criteria_grade_value_note', '', get_string('criteriagradenote', 'completion')); if ($this->id) { $mform->setDefault('criteria_grade', 1); @@ -128,7 +129,7 @@ class completion_criteria_grade extends completion_criteria { * @return string */ public function get_title() { - return get_string('grade'); + return get_string('coursegrade', 'completion'); } /** @@ -137,7 +138,8 @@ class completion_criteria_grade extends completion_criteria { * @return string */ public function get_title_detailed() { - return (float) $this->gradepass . '% required'; + $graderequired = round($this->gradepass, 2).'%'; + return get_string('gradexrequired', 'completion', $graderequired); } /** @@ -156,15 +158,16 @@ class completion_criteria_grade extends completion_criteria { * @return string */ public function get_status($completion) { - // Cast as floats to get rid of excess decimal places - $grade = (float) $this->get_grade($completion); - $gradepass = (float) $this->gradepass; + $grade = $this->get_grade($completion); + $graderequired = $this->get_title_detailed(); if ($grade) { - return $grade.'% ('.$gradepass.'% to pass)'; + $grade = round($grade, 2).'%'; } else { - return $gradepass.'% to pass'; + $grade = get_string('nograde'); } + + return $grade.' ('.$graderequired.')'; } /** @@ -231,11 +234,11 @@ class completion_criteria_grade extends completion_criteria { public function get_details($completion) { $details = array(); $details['type'] = get_string('coursegrade', 'completion'); - $details['criteria'] = get_string('passinggrade', 'completion'); - $details['requirement'] = ((float)$this->gradepass).'%'; + $details['criteria'] = get_string('graderequired', 'completion'); + $details['requirement'] = round($this->gradepass, 2).'%'; $details['status'] = ''; - $grade = (float)$this->get_grade($completion); + $grade = round($this->get_grade($completion), 2); if ($grade) { $details['status'] = $grade.'%'; } -- 2.43.0