mirror of
https://github.com/moodle/moodle.git
synced 2025-03-22 00:20:37 +01:00
MDL-69690 mod_workshop: Fix fieldname for workshop.
This commit is contained in:
parent
cd072308e5
commit
66ad660acc
@ -132,13 +132,20 @@ class component_gradeitems {
|
||||
* @return string The translated field name
|
||||
*/
|
||||
public static function get_field_name_for_itemnumber(string $component, int $itemnumber, string $fieldname): string {
|
||||
$itemname = static::get_itemname_from_itemnumber($component, $itemnumber);
|
||||
|
||||
if ($itemname) {
|
||||
return "{$fieldname}_{$itemname}";
|
||||
$classname = "{$component}\grades\gradeitems";
|
||||
|
||||
if (class_exists($classname) && is_subclass_of($classname, 'core_grades\local\gradeitem\fieldname_mapping')) {
|
||||
$fieldname = $classname::get_field_name_for_itemnumber($component, $itemnumber, $fieldname);
|
||||
} else {
|
||||
$itemname = static::get_itemname_from_itemnumber($component, $itemnumber);
|
||||
|
||||
if ($itemname) {
|
||||
$fieldname .= '_' . $itemname;
|
||||
}
|
||||
}
|
||||
|
||||
return $fieldname;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
48
grade/classes/local/gradeitem/fieldname_mapping.php
Normal file
48
grade/classes/local/gradeitem/fieldname_mapping.php
Normal file
@ -0,0 +1,48 @@
|
||||
<?php
|
||||
// This file is part of Moodle - http://moodle.org/
|
||||
//
|
||||
// Moodle is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// Moodle is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
/**
|
||||
* Grade item, fieldname mapping.
|
||||
*
|
||||
* @package core_grades
|
||||
* @copyright Ilya Tregubov <ilya.a.tregubov@gmail.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
declare(strict_types = 1);
|
||||
|
||||
namespace core_grades\local\gradeitem;
|
||||
|
||||
/**
|
||||
* Grade item, fieldname mapping.
|
||||
*
|
||||
* @package core_grades
|
||||
* @copyright Ilya Tregubov <ilya.a.tregubov@gmail.com>
|
||||
*/
|
||||
interface fieldname_mapping {
|
||||
|
||||
/**
|
||||
* Get the suffixed field name for an activity field mapped from its itemnumber.
|
||||
*
|
||||
* For legacy reasons, the first itemnumber has no suffix on field names.
|
||||
*
|
||||
* @param string $component The component that the grade item belongs to
|
||||
* @param int $itemnumber The grade itemnumber
|
||||
* @param string $fieldname The name of the field to be rewritten
|
||||
* @return string The translated field name
|
||||
*/
|
||||
public static function get_field_name_for_itemnumber(string $component, int $itemnumber, string $fieldname): string;
|
||||
}
|
@ -26,6 +26,8 @@ declare(strict_types = 1);
|
||||
|
||||
namespace mod_workshop\grades;
|
||||
|
||||
use core_grades\component_gradeitems;
|
||||
use core_grades\local\gradeitem\fieldname_mapping;
|
||||
use \core_grades\local\gradeitem\itemnumber_mapping;
|
||||
|
||||
/**
|
||||
@ -35,7 +37,7 @@ use \core_grades\local\gradeitem\itemnumber_mapping;
|
||||
* @copyright Andrew Nicols <andrew@nicols.co.uk>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class gradeitems implements itemnumber_mapping {
|
||||
class gradeitems implements itemnumber_mapping, fieldname_mapping {
|
||||
/**
|
||||
* Return the list of grade item mappings for the workshop.
|
||||
*
|
||||
@ -47,4 +49,24 @@ class gradeitems implements itemnumber_mapping {
|
||||
1 => 'grading',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the suffixed field name for an activity field mapped from its itemnumber.
|
||||
*
|
||||
* For legacy reasons, the first itemnumber has no suffix on field names.
|
||||
*
|
||||
* @param string $component The component that the grade item belongs to
|
||||
* @param int $itemnumber The grade itemnumber
|
||||
* @param string $fieldname The name of the field to be rewritten
|
||||
* @return string The translated field name
|
||||
*/
|
||||
public static function get_field_name_for_itemnumber(string $component, int $itemnumber, string $fieldname): string {
|
||||
$itemname = component_gradeitems::get_itemname_from_itemnumber($component, $itemnumber);
|
||||
|
||||
if ($itemname) {
|
||||
return "{$itemname}{$fieldname}";
|
||||
}
|
||||
|
||||
return $fieldname;
|
||||
}
|
||||
}
|
||||
|
47
mod/workshop/tests/behat/workshop_edit_form.feature
Normal file
47
mod/workshop/tests/behat/workshop_edit_form.feature
Normal file
@ -0,0 +1,47 @@
|
||||
@mod @mod_workshop
|
||||
Feature: Workshop assessment with grade to pass
|
||||
In order to use workshop activity
|
||||
As a teacher
|
||||
I need to be able to setup workshop with require assessment grade and grade to pass
|
||||
|
||||
Background:
|
||||
Given the following "users" exist:
|
||||
| username | firstname | lastname | email |
|
||||
| student1 | Sam1 | Student1 | student1@example.com |
|
||||
| teacher1 | Terry1 | Teacher1 | teacher1@example.com |
|
||||
And the following "courses" exist:
|
||||
| fullname | shortname | format | enablecompletion |
|
||||
| Course1 | c1 | topics | 1 |
|
||||
And the following "course enrolments" exist:
|
||||
| user | course | role |
|
||||
| student1 | c1 | student |
|
||||
| teacher1 | c1 | editingteacher |
|
||||
|
||||
@javascript
|
||||
Scenario: Setup workshop with assessment grade and pass grade set
|
||||
And I log in as "teacher1"
|
||||
And I am on "Course1" course homepage with editing mode on
|
||||
And I add a "Workshop" to section "0"
|
||||
And I expand all fieldsets
|
||||
When I set the following fields to these values:
|
||||
| Workshop name | Test workshop |
|
||||
| Completion tracking | Show activity as complete when conditions are met |
|
||||
| Require grade | Assessment |
|
||||
| completionpassgrade | 1 |
|
||||
And I press "Save and display"
|
||||
And I should see "This activity does not have a valid grade to pass set. It may be set in the Grade section of the activity settings."
|
||||
And I set the field "Assessment grade to pass" to ""
|
||||
And I press "Save and display"
|
||||
And I should see "This activity does not have a valid grade to pass set. It may be set in the Grade section of the activity settings."
|
||||
And I set the field "Assessment grade to pass" to "81"
|
||||
And I press "Save and display"
|
||||
And I should see "The grade to pass can not be greater than the maximum possible grade 20"
|
||||
And I set the field "Assessment grade to pass" to "hello"
|
||||
And I press "Save and display"
|
||||
And I should see "You must enter a number here."
|
||||
And I set the field "Assessment grade to pass" to "12,34"
|
||||
And I press "Save and display"
|
||||
And I should see "You must enter a number here."
|
||||
And I set the field "Assessment grade to pass" to "10"
|
||||
And I press "Save and display"
|
||||
Then I should see "Setup phase" in the "h3#mod_workshop-userplanheading" "css_element"
|
@ -29,7 +29,7 @@
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$version = 2022112800.07; // 20221128 = branching date YYYYMMDD - do not modify!
|
||||
$version = 2022112800.08; // 20221128 = branching date YYYYMMDD - do not modify!
|
||||
// RR = release increments - 00 in DEV branches.
|
||||
// .XX = incremental changes.
|
||||
$release = '4.1+ (Build: 20230105)'; // Human-friendly version name
|
||||
|
Loading…
x
Reference in New Issue
Block a user