diff --git a/grade/report/grader/lib.php b/grade/report/grader/lib.php index 3902dd4e8c2b1..2da47edd9ff62 100644 --- a/grade/report/grader/lib.php +++ b/grade/report/grader/lib.php @@ -771,8 +771,6 @@ public function get_right_rows(bool $displayaverages) : array { $rows = []; $this->rowcount = 0; - $numusers = count($this->users); - $gradetabindex = 1; $strgrade = get_string('gradenoun'); $this->get_sort_arrows(); @@ -789,14 +787,11 @@ public function get_right_rows(bool $displayaverages) : array { // Preload scale objects for items with a scaleid and initialize tab indices. $scaleslist = []; - $tabindices = []; foreach ($this->gtree->get_items() as $itemid => $item) { if (!empty($item->scaleid)) { $scaleslist[] = $item->scaleid; } - $tabindices[$item->id]['grade'] = $gradetabindex; - $gradetabindex += $numusers * 2; } $cache = \cache::make_from_params(\cache_store::MODE_REQUEST, 'gradereport_grader', 'scales'); @@ -1061,7 +1056,6 @@ public function get_right_rows(bool $displayaverages) : array { $nogradestr = get_string('nooutcome', 'grades'); } $attributes = [ - 'tabindex' => $tabindices[$item->id]['grade'], 'id' => 'grade_' . $userid . '_' . $item->id ]; $gradelabel = $fullname . ' ' . $item->get_name(true); @@ -1093,6 +1087,18 @@ public function get_right_rows(bool $displayaverages) : array { // Value type. if ($quickgrading and $grade->is_editable()) { $context->iseditable = true; + + // Set this input field with type="number" if the decimal separator for current language is set to + // a period. Other decimal separators may not be recognised by browsers yet which may cause issues + // when entering grades. + $decsep = get_string('decsep', 'core_langconfig'); + $context->isnumeric = $decsep === '.'; + // If we're rendering this as a number field, set min/max attributes, if applicable. + if ($context->isnumeric) { + $context->minvalue = $item->grademin ?? null; + $context->maxvalue = $item->grademax ?? null; + } + $value = format_float($gradeval, $decimalpoints); $gradelabel = $fullname . ' ' . $item->get_name(true); @@ -1101,7 +1107,6 @@ public function get_right_rows(bool $displayaverages) : array { $context->value = $value; $context->label = get_string('useractivitygrade', 'gradereport_grader', $gradelabel); $context->title = $strgrade; - $context->tabindex = $tabindices[$item->id]['grade']; $context->extraclasses = 'form-control'; if ($context->statusicons) { $context->extraclasses .= ' statusicons'; diff --git a/grade/templates/cellmenu.mustache b/grade/templates/cellmenu.mustache index f90e516af330a..078357bbd8f0e 100644 --- a/grade/templates/cellmenu.mustache +++ b/grade/templates/cellmenu.mustache @@ -65,12 +65,16 @@ {{/divider1}} {{#ascendingfirstnameurl}} - +
+ {{{ascendingfirstnameurl}}} {{{descendingfirstnameurl}}} - +
+
+ {{{ascendinglastnameurl}}} {{{descendinglastnameurl}}} +
{{/ascendingfirstnameurl}} {{#ascendingurl}} {{{ascendingurl}}} diff --git a/grade/templates/grades/grader/input.mustache b/grade/templates/grades/grader/input.mustache index a090319c179dd..86919297e3d3f 100644 --- a/grade/templates/grades/grader/input.mustache +++ b/grade/templates/grades/grader/input.mustache @@ -31,4 +31,5 @@ } }} - + diff --git a/grade/tests/behat/grade_UI_settings.feature b/grade/tests/behat/grade_UI_settings.feature index 2fc689532d861..f8fbabd49c5a0 100644 --- a/grade/tests/behat/grade_UI_settings.feature +++ b/grade/tests/behat/grade_UI_settings.feature @@ -36,9 +36,9 @@ Feature: Site settings can be used to hide parts of the gradebook UI @javascript Scenario: Disable category overriding - And "tr .course input[type='text']" "css_element" should exist - Then I navigate to "Grades > Grade category settings" in site administration + Given "Student 1 Course total" "field" should exist + And I navigate to "Grades > Grade category settings" in site administration And I set the field "Allow category grades to be manually overridden" to "0" And I press "Save changes" - And I am on the "Course 1" "grades > Grader report > View" page - And "tr .course input[type='text']" "css_element" should not exist + When I am on the "Course 1" "grades > Grader report > View" page + Then "Student 1 Course total" "field" should not exist diff --git a/grade/tests/behat/grade_mingrade.feature b/grade/tests/behat/grade_mingrade.feature index b669c6b43e543..32328fedc83be 100644 --- a/grade/tests/behat/grade_mingrade.feature +++ b/grade/tests/behat/grade_mingrade.feature @@ -19,50 +19,23 @@ Feature: We can use a minimum grade different than zero | student1 | C1 | student | | student2 | C1 | student | And the following "grade categories" exist: - | fullname | course | - | Sub category 1 | C1 | - | Sub category 2 | C1 | + | fullname | course | aggregateonlygraded | + | Sub category 1 | C1 | 0 | + | Sub category 2 | C1 | 0 | + And the following "grade items" exist: + | itemname | grademin | course | + | Manual item 1 | -100 | C1 | + | Manual item 2 | 50 | C1 | + And the following "grade items" exist: + | itemname | grademin | grademax | course | gradecategory | + | Manual item 3 | -100 | 50 | C1 | Sub category 1 | + And the following "grade items" exist: + | itemname | grademin | course | gradecategory | + | Manual item 4 | -100 | C1 | Sub category 1 | + | Manual item 5 | 50 | C1 | Sub category 2 | + | Manual item 6 | 50 | C1 | Sub category 2 | And I log in as "admin" - And I set the following administration settings values: - | grade_aggregations_visible | Mean of grades,Weighted mean of grades,Simple weighted mean of grades,Mean of grades (with extra credits),Median of grades,Lowest grade,Highest grade,Mode of grades,Natural | And I am on the "Course 1" "grades > gradebook setup" page - And I choose the "Add grade item" item in the "Add" action menu - And I set the following fields to these values: - | Item name | Manual item 1 | - | Minimum grade | -100 | - | Grade category | Course 1 | - And I click on "Save" "button" in the "New grade item" "dialogue" - And I choose the "Add grade item" item in the "Add" action menu - And I set the following fields to these values: - | Item name | Manual item 2 | - | Minimum grade | 50 | - | Grade category | Course 1 | - And I click on "Save" "button" in the "New grade item" "dialogue" - And I choose the "Add grade item" item in the "Add" action menu - And I set the following fields to these values: - | Item name | Manual item 3 | - | Maximum grade | 50 | - | Minimum grade | -100 | - | Grade category | Sub category 1 | - And I click on "Save" "button" in the "New grade item" "dialogue" - And I choose the "Add grade item" item in the "Add" action menu - And I set the following fields to these values: - | Item name | Manual item 4 | - | Minimum grade | -100 | - | Grade category | Sub category 1 | - And I click on "Save" "button" in the "New grade item" "dialogue" - And I choose the "Add grade item" item in the "Add" action menu - And I set the following fields to these values: - | Item name | Manual item 5 | - | Minimum grade | 50 | - | Grade category | Sub category 2 | - And I click on "Save" "button" in the "New grade item" "dialogue" - And I choose the "Add grade item" item in the "Add" action menu - And I set the following fields to these values: - | Item name | Manual item 6 | - | Minimum grade | 50 | - | Grade category | Sub category 2 | - And I click on "Save" "button" in the "New grade item" "dialogue" And I navigate to "Setup > Course grade settings" in the course gradebook And I set the field "Show weightings" to "Show" And I set the field "Show contribution to course total" to "Show" @@ -70,13 +43,7 @@ Feature: We can use a minimum grade different than zero @javascript Scenario: Natural aggregation with negative and positive grade - And I navigate to "Setup > Gradebook setup" in the course gradebook - And I set the following settings for grade item "Sub category 1" of type "category" on "setup" page: - | Aggregation | Natural | - | Exclude empty grades | 0 | - And I set the following settings for grade item "Sub category 2" of type "category" on "setup" page: - | Aggregation | Natural | - | Exclude empty grades | 0 | + Given I navigate to "Setup > Gradebook setup" in the course gradebook And I set the following settings for grade item "Course 1" of type "course" on "setup" page: | Aggregation | Natural | | Exclude empty grades | 0 | @@ -89,11 +56,11 @@ Feature: We can use a minimum grade different than zero And I give the grade "50.00" to the user "Student 1" for the grade item "Manual item 5" And I give the grade "75.00" to the user "Student 1" for the grade item "Manual item 6" And I give the grade "0.00" to the user "Student 2" for the grade item "Manual item 1" - And I give the grade "0.00" to the user "Student 2" for the grade item "Manual item 2" + And I give the grade "50.00" to the user "Student 2" for the grade item "Manual item 2" And I give the grade "-10.00" to the user "Student 2" for the grade item "Manual item 3" And I give the grade "50.00" to the user "Student 2" for the grade item "Manual item 4" - And I give the grade "0.00" to the user "Student 2" for the grade item "Manual item 5" - And I give the grade "0.00" to the user "Student 2" for the grade item "Manual item 6" + And I give the grade "50.00" to the user "Student 2" for the grade item "Manual item 5" + And I give the grade "50.00" to the user "Student 2" for the grade item "Manual item 6" And I press "Save changes" And I navigate to "View > User report" in the course gradebook And I click on "Student 1" in the "user" search widget