mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 16:36:37 +02:00
MDL-48634 grades: Add an option to rescale when changing the maxgrade
This commit is contained in:
parent
9d5d9c64ff
commit
d629c601c5
12 changed files with 422 additions and 11 deletions
|
@ -156,6 +156,8 @@ if ($mform->is_cancelled()) {
|
|||
}
|
||||
|
||||
$grade_item = new grade_item(array('id'=>$id, 'courseid'=>$courseid));
|
||||
$oldmin = $grade_item->grademin;
|
||||
$oldmax = $grade_item->grademax;
|
||||
grade_item::set_properties($grade_item, $data);
|
||||
$grade_item->outcomeid = null;
|
||||
|
||||
|
@ -175,6 +177,12 @@ if ($mform->is_cancelled()) {
|
|||
|
||||
} else {
|
||||
$grade_item->update();
|
||||
|
||||
if (!empty($data->rescalegrades)) {
|
||||
$newmin = $grade_item->grademin;
|
||||
$newmax = $grade_item->grademax;
|
||||
$grade_item->rescale_grades_keep_percentage($oldmin, $oldmax, $newmin, $newmax, 'gradebook');
|
||||
}
|
||||
}
|
||||
|
||||
// update hiding flag
|
||||
|
|
|
@ -97,6 +97,10 @@ class edit_item_form extends moodleform {
|
|||
$mform->setType('grademin', PARAM_RAW);
|
||||
}
|
||||
|
||||
$mform->addElement('selectyesno', 'rescalegrades', get_string('modgraderescalegrades', 'grades'));
|
||||
$mform->addHelpButton('rescalegrades', 'modgraderescalegrades', 'grades');
|
||||
$mform->disabledIf('rescalegrades', 'gradetype', 'noteq', GRADE_TYPE_VALUE);
|
||||
|
||||
$mform->addElement('text', 'gradepass', get_string('gradepass', 'grades'));
|
||||
$mform->addHelpButton('gradepass', 'gradepass', 'grades');
|
||||
$mform->disabledIf('gradepass', 'gradetype', 'eq', GRADE_TYPE_NONE);
|
||||
|
@ -269,6 +273,7 @@ class edit_item_form extends moodleform {
|
|||
// the idnumber of grade itemnumber 0 is synced with course_modules
|
||||
$mform->hardFreeze('idnumber');
|
||||
}
|
||||
$mform->removeElement('rescalegrades');
|
||||
//$mform->removeElement('calculation');
|
||||
}
|
||||
}
|
||||
|
@ -342,6 +347,7 @@ class edit_item_form extends moodleform {
|
|||
// all new items are manual, children of course category
|
||||
$mform->removeElement('plusfactor');
|
||||
$mform->removeElement('multfactor');
|
||||
$mform->removeElement('rescalegrades');
|
||||
}
|
||||
|
||||
// no parent header for course category
|
||||
|
@ -353,12 +359,15 @@ class edit_item_form extends moodleform {
|
|||
/// perform extra validation before submission
|
||||
function validation($data, $files) {
|
||||
global $COURSE;
|
||||
$grade_item = false;
|
||||
if ($data['id']) {
|
||||
$grade_item = new grade_item(array('id' => $data['id'], 'courseid' => $data['courseid']));
|
||||
}
|
||||
|
||||
$errors = parent::validation($data, $files);
|
||||
|
||||
if (array_key_exists('idnumber', $data)) {
|
||||
if ($data['id']) {
|
||||
$grade_item = new grade_item(array('id'=>$data['id'], 'courseid'=>$data['courseid']));
|
||||
if ($grade_item) {
|
||||
if ($grade_item->itemtype == 'mod') {
|
||||
$cm = get_coursemodule_from_instance($grade_item->itemmodule, $grade_item->iteminstance, $grade_item->courseid);
|
||||
} else {
|
||||
|
|
76
grade/tests/behat/grade_grade_minmax_change.feature
Normal file
76
grade/tests/behat/grade_grade_minmax_change.feature
Normal file
|
@ -0,0 +1,76 @@
|
|||
@core @core_grades
|
||||
Feature: We can change the maximum and minimum number of points for manual items with existing grades
|
||||
In order to verify existing grades are modified as expected
|
||||
As an teacher
|
||||
I need to modify a grade item with exiting grades
|
||||
I need to ensure existing grades are modified in an expected manner
|
||||
|
||||
Background:
|
||||
Given the following "courses" exist:
|
||||
| fullname | shortname | category | groupmode |
|
||||
| Course 1 | C1 | 0 | 1 |
|
||||
And the following "users" exist:
|
||||
| username | firstname | lastname | email | idnumber |
|
||||
| teacher1 | Teacher | 1 | teacher1@example.com | t1 |
|
||||
| student1 | Student | 1 | student1@example.com | s1 |
|
||||
| student2 | Student | 2 | student2@example.com | s2 |
|
||||
And the following "course enrolments" exist:
|
||||
| user | course | role |
|
||||
| teacher1 | C1 | editingteacher |
|
||||
| student1 | C1 | student |
|
||||
| student2 | C1 | student |
|
||||
And I log in as "teacher1"
|
||||
And I am on site homepage
|
||||
And I follow "Course 1"
|
||||
And I navigate to "Grades" node in "Course administration"
|
||||
And I navigate to "Gradebook setup" node in "Grade administration > Setup"
|
||||
And I press "Add grade item"
|
||||
And I set the following fields to these values:
|
||||
| Item name | Manual item 1 |
|
||||
| Minimum grade | 0 |
|
||||
| Maximum grade | 100 |
|
||||
And I press "Save changes"
|
||||
And I navigate to "Course grade settings" node in "Grade administration > Setup"
|
||||
And I set the field "Show weightings" to "Show"
|
||||
And I set the field "Show contribution to course total" to "Show"
|
||||
And I press "Save changes"
|
||||
|
||||
Scenario: Change maximum number of points on a graded item.
|
||||
And I follow "Course 1"
|
||||
And I navigate to "Grades" node in "Course administration"
|
||||
And I turn editing mode on
|
||||
And I give the grade "10.00" to the user "Student 1" for the grade item "Manual item 1"
|
||||
And I give the grade "8.00" to the user "Student 2" for the grade item "Manual item 1"
|
||||
And I press "Save changes"
|
||||
When I navigate to "Gradebook setup" node in "Grade administration > Setup"
|
||||
And I click on "Edit" "link" in the "Manual item 1" "table_row"
|
||||
And I click on "Edit settings" "link" in the "Manual item 1" "table_row"
|
||||
And I set the following fields to these values:
|
||||
| Maximum grade | 10 |
|
||||
| Rescale existing grades | No |
|
||||
And I press "Save changes"
|
||||
And I follow "User report"
|
||||
And I select "Student 1" from the "Select all or one user" singleselect
|
||||
Then the following should exist in the "user-grade" table:
|
||||
| Grade item | Calculated weight | Grade | Contribution to course total |
|
||||
| Manual item 1 | 100.00 % | 10.00 | 100.00 % |
|
||||
And I select "Student 2" from the "Select all or one user" singleselect
|
||||
And the following should exist in the "user-grade" table:
|
||||
| Grade item | Calculated weight | Grade | Contribution to course total |
|
||||
| Manual item 1 | 100.00 % | 8.00 | 80.00 % |
|
||||
And I navigate to "Gradebook setup" node in "Grade administration > Setup"
|
||||
And I click on "Edit" "link" in the "Manual item 1" "table_row"
|
||||
And I click on "Edit settings" "link" in the "Manual item 1" "table_row"
|
||||
And I set the following fields to these values:
|
||||
| Maximum grade | 20 |
|
||||
| Rescale existing grades | Yes |
|
||||
And I press "Save changes"
|
||||
And I follow "User report"
|
||||
And I select "Student 1" from the "Select all or one user" singleselect
|
||||
And the following should exist in the "user-grade" table:
|
||||
| Grade item | Calculated weight | Grade | Contribution to course total |
|
||||
| Manual item 1 | 100.00 % | 20.00 | 100.00 % |
|
||||
And I select "Student 2" from the "Select all or one user" singleselect
|
||||
And the following should exist in the "user-grade" table:
|
||||
| Grade item | Calculated weight | Grade | Contribution to course total |
|
||||
| Manual item 1 | 100.00 % | 16.00 | 80.00 % |
|
Loading…
Add table
Add a link
Reference in a new issue