MDL-82681 mod_assign: Revert improper code removal
The grading_options_form class was deprecated in 4.5, and a temporary copy of this class was introduced to facilitate the migration of its elements across different areas of the submission page, ensuring no breakages if any external code is using this form (MDL-82857). However, the process_save_grading_options() method, which processes data from this form, was modified and this should not have occurred. To maintain proper backward compatibility, a similar approach should be taken by introducing a temporary copy of the method. Both the temporary method and temporary form class should be removed once the migration of elements is complete.
This commit is contained in:
@@ -59,7 +59,7 @@ class grading_options_temp_form extends \moodleform {
|
||||
$mform->setType('id', PARAM_INT);
|
||||
$mform->addElement('hidden', 'userid', $instance['userid']);
|
||||
$mform->setType('userid', PARAM_INT);
|
||||
$mform->addElement('hidden', 'action', 'saveoptions');
|
||||
$mform->addElement('hidden', 'action', 'saveoptionstemp');
|
||||
$mform->setType('action', PARAM_ALPHA);
|
||||
|
||||
// Buttons.
|
||||
|
||||
@@ -638,6 +638,10 @@ class assign {
|
||||
$this->process_save_grading_options();
|
||||
$action = 'redirect';
|
||||
$nextpageparams['action'] = 'grading';
|
||||
} else if ($action == 'saveoptionstemp') {
|
||||
$this->process_save_grading_options_temp();
|
||||
$action = 'redirect';
|
||||
$nextpageparams['action'] = 'grading';
|
||||
} else if ($action == 'saveextension') {
|
||||
$action = 'grantextension';
|
||||
if ($this->process_save_extension($mform)) {
|
||||
@@ -7382,6 +7386,91 @@ class assign {
|
||||
$this->require_view_grades();
|
||||
require_sesskey();
|
||||
|
||||
// Is advanced grading enabled?
|
||||
$gradingmanager = get_grading_manager($this->get_context(), 'mod_assign', 'submissions');
|
||||
$controller = $gradingmanager->get_active_controller();
|
||||
$showquickgrading = empty($controller);
|
||||
if (!is_null($this->context)) {
|
||||
$showonlyactiveenrolopt = has_capability('moodle/course:viewsuspendedusers', $this->context);
|
||||
} else {
|
||||
$showonlyactiveenrolopt = false;
|
||||
}
|
||||
|
||||
$markingallocation = $this->get_instance()->markingworkflow &&
|
||||
$this->get_instance()->markingallocation &&
|
||||
has_capability('mod/assign:manageallocations', $this->context);
|
||||
// Get markers to use in drop lists.
|
||||
$markingallocationoptions = array();
|
||||
if ($markingallocation) {
|
||||
$markingallocationoptions[''] = get_string('filternone', 'assign');
|
||||
$markingallocationoptions[ASSIGN_MARKER_FILTER_NO_MARKER] = get_string('markerfilternomarker', 'assign');
|
||||
list($sort, $params) = users_order_by_sql('u');
|
||||
// Only enrolled users could be assigned as potential markers.
|
||||
$markers = get_enrolled_users($this->context, 'mod/assign:grade', 0, 'u.*', $sort);
|
||||
foreach ($markers as $marker) {
|
||||
$markingallocationoptions[$marker->id] = fullname($marker);
|
||||
}
|
||||
}
|
||||
|
||||
// Get marking states to show in form.
|
||||
$markingworkflowoptions = $this->get_marking_workflow_filters();
|
||||
|
||||
$gradingoptionsparams = [
|
||||
'cm' => $this->get_course_module()->id,
|
||||
'contextid' => $this->context->id,
|
||||
'userid' => $USER->id,
|
||||
'submissionsenabled' => $this->is_any_submission_plugin_enabled(),
|
||||
'showquickgrading' => $showquickgrading,
|
||||
'quickgrading' => false,
|
||||
'markingworkflowopt' => $markingworkflowoptions,
|
||||
'markingallocationopt' => $markingallocationoptions,
|
||||
'showonlyactiveenrolopt' => $showonlyactiveenrolopt,
|
||||
'showonlyactiveenrol' => $this->show_only_active_users(),
|
||||
'downloadasfolders' => get_user_preferences('assign_downloadasfolders', 1)
|
||||
];
|
||||
$mform = new mod_assign_grading_options_form(null, $gradingoptionsparams);
|
||||
if ($formdata = $mform->get_data()) {
|
||||
set_user_preference('assign_perpage', $formdata->perpage);
|
||||
if (isset($formdata->filter)) {
|
||||
set_user_preference('assign_filter', $formdata->filter);
|
||||
}
|
||||
if (isset($formdata->markerfilter)) {
|
||||
set_user_preference('assign_markerfilter', $formdata->markerfilter);
|
||||
}
|
||||
if (isset($formdata->workflowfilter)) {
|
||||
set_user_preference('assign_workflowfilter', $formdata->workflowfilter);
|
||||
}
|
||||
if ($showquickgrading) {
|
||||
set_user_preference('assign_quickgrading', isset($formdata->quickgrading));
|
||||
}
|
||||
if (isset($formdata->downloadasfolders)) {
|
||||
set_user_preference('assign_downloadasfolders', 1); // Enabled.
|
||||
} else {
|
||||
set_user_preference('assign_downloadasfolders', 0); // Disabled.
|
||||
}
|
||||
if (!empty($showonlyactiveenrolopt)) {
|
||||
$showonlyactiveenrol = isset($formdata->showonlyactiveenrol);
|
||||
set_user_preference('grade_report_showonlyactiveenrol', $showonlyactiveenrol);
|
||||
$this->showonlyactiveenrol = $showonlyactiveenrol;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Save grading options.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function process_save_grading_options_temp() {
|
||||
global $USER, $CFG;
|
||||
|
||||
// Include grading options form.
|
||||
require_once($CFG->dirroot . '/mod/assign/gradingoptionsform.php');
|
||||
|
||||
// Need submit permission to submit an assignment.
|
||||
$this->require_view_grades();
|
||||
require_sesskey();
|
||||
|
||||
$gradingoptionsparams = [
|
||||
'cm' => $this->get_course_module()->id,
|
||||
'contextid' => $this->context->id,
|
||||
|
||||
+35
-1
@@ -80,9 +80,43 @@ M.mod_assign.init_grading_table = function(Y) {
|
||||
|
||||
M.mod_assign.init_grading_options = function(Y) {
|
||||
Y.use('node', function(Y) {
|
||||
var paginationelement = Y.one('#id_perpage');
|
||||
paginationelement.on('change', function() {
|
||||
Y.one('form.gradingoptionsform').submit();
|
||||
});
|
||||
var filterelement = Y.one('#id_filter');
|
||||
if (filterelement) {
|
||||
filterelement.on('change', function() {
|
||||
Y.one('form.gradingoptionsform').submit();
|
||||
});
|
||||
}
|
||||
var markerfilterelement = Y.one('#id_markerfilter');
|
||||
if (markerfilterelement) {
|
||||
markerfilterelement.on('change', function() {
|
||||
Y.one('form.gradingoptionsform').submit();
|
||||
});
|
||||
}
|
||||
var workflowfilterelement = Y.one('#id_workflowfilter');
|
||||
if (workflowfilterelement) {
|
||||
workflowfilterelement.on('change', function() {
|
||||
Y.one('form.gradingoptionsform').submit();
|
||||
});
|
||||
}
|
||||
var quickgradingelement = Y.one('#id_quickgrading');
|
||||
if (quickgradingelement) {
|
||||
quickgradingelement.on('change', function() {
|
||||
Y.one('form.gradingoptionsform').submit();
|
||||
});
|
||||
}
|
||||
var showonlyactiveenrolelement = Y.one('#id_showonlyactiveenrol');
|
||||
if (showonlyactiveenrolelement) {
|
||||
showonlyactiveenrolelement.on('change', function() {
|
||||
Y.one('form.gradingoptionsform').submit();
|
||||
});
|
||||
}
|
||||
var downloadasfolderselement = Y.one('#id_downloadasfolders');
|
||||
if (downloadasfolderselement) {
|
||||
downloadasfolderselement.on('change', function(e) {
|
||||
downloadasfolderselement.on('change', function() {
|
||||
Y.one('form.gradingoptionsform').submit();
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user