Merge branch 'MDL-70441-main' of https://github.com/kevpercy/moodle

This commit is contained in:
Ilya Tregubov 2024-05-14 14:09:38 +08:00
commit 8223afd93e
2 changed files with 46 additions and 9 deletions

View File

@ -650,15 +650,20 @@ class assign_grading_table extends table_sql implements renderable {
if ($this->quickgrading && !$gradingdisabled) {
$notmarked = get_string('markingworkflowstatenotmarked', 'assign');
$name = 'quickgrade_' . $row->id . '_workflowstate';
$o .= html_writer::select($workflowstates, $name, $workflowstate, array('' => $notmarked));
// Check if this user is a marker that can't manage allocations and doesn't have the marker column added.
if ($this->assignment->get_instance()->markingworkflow &&
$this->assignment->get_instance()->markingallocation &&
!has_capability('mod/assign:manageallocations', $this->assignment->get_context())) {
if ($workflowstate !== ASSIGN_MARKING_WORKFLOW_STATE_NOTMARKED && !array_key_exists($workflowstate, $workflowstates)) {
$allworkflowstates = $this->assignment->get_all_marking_workflow_states();
$o .= html_writer::div($allworkflowstates[$workflowstate]);
} else {
$o .= html_writer::select($workflowstates, $name, $workflowstate, ['' => $notmarked]);
// Check if this user is a marker that can't manage allocations and doesn't have the marker column added.
if ($this->assignment->get_instance()->markingworkflow &&
$this->assignment->get_instance()->markingallocation &&
!has_capability('mod/assign:manageallocations', $this->assignment->get_context())) {
$name = 'quickgrade_' . $row->id . '_allocatedmarker';
$o .= html_writer::empty_tag('input', array('type' => 'hidden', 'name' => $name,
'value' => $row->allocatedmarker));
$name = 'quickgrade_' . $row->id . '_allocatedmarker';
$o .= html_writer::empty_tag('input', ['type' => 'hidden', 'name' => $name,
'value' => $row->allocatedmarker]);
}
}
} else {
$o .= $this->output->container(get_string('markingworkflowstate' . $workflowstate, 'assign'), $workflowstate);

View File

@ -165,6 +165,9 @@ class assign {
/** @var array of marking workflow states for the current user */
private $markingworkflowstates = null;
/** @var array of all marking workflow states */
private $allmarkingworkflowstates = null;
/** @var bool whether to exclude users with inactive enrolment */
private $showonlyactiveenrol = null;
@ -7891,8 +7894,15 @@ class assign {
if ($this->get_instance()->markingworkflow) {
$states = $this->get_marking_workflow_states_for_current_user();
$options = array('' => get_string('markingworkflowstatenotmarked', 'assign')) + $states;
$mform->addElement('select', 'workflowstate', get_string('markingworkflowstate', 'assign'), $options);
$select = $mform->addElement('select', 'workflowstate', get_string('markingworkflowstate', 'assign'), $options);
$mform->addHelpButton('workflowstate', 'markingworkflowstate', 'assign');
if (isset($data->workflowstate) && !array_key_exists($data->workflowstate, $states)) {
// In a workflow state that user should not be able to change, so freeze workflow selector.
// Have to add the state so it shows in the frozen selector.
$allworkflowstates = $this->get_all_marking_workflow_states();
$select->addOption($allworkflowstates[$data->workflowstate], $data->workflowstate);
$mform->freeze('workflowstate');
}
$gradingstatus = $this->get_grading_status($userid);
if ($gradingstatus != ASSIGN_MARKING_WORKFLOW_STATE_RELEASED) {
if ($grade->grade && $grade->grade != -1) {
@ -9204,6 +9214,28 @@ class assign {
return $this->markingworkflowstates;
}
/**
* Get the list of marking_workflow states.
*
* @return array Array of multiple state => description.
*/
public function get_all_marking_workflow_states(): array {
if (!empty($this->allmarkingworkflowstates)) {
return $this->allmarkingworkflowstates;
}
$this->allmarkingworkflowstates = [
ASSIGN_MARKING_WORKFLOW_STATE_NOTMARKED => get_string('markingworkflowstatenotmarked', 'assign'),
ASSIGN_MARKING_WORKFLOW_STATE_INMARKING => get_string('markingworkflowstateinmarking', 'assign'),
ASSIGN_MARKING_WORKFLOW_STATE_READYFORREVIEW => get_string('markingworkflowstatereadyforreview', 'assign'),
ASSIGN_MARKING_WORKFLOW_STATE_INREVIEW => get_string('markingworkflowstateinreview', 'assign'),
ASSIGN_MARKING_WORKFLOW_STATE_READYFORRELEASE => get_string('markingworkflowstatereadyforrelease', 'assign'),
ASSIGN_MARKING_WORKFLOW_STATE_RELEASED => get_string('markingworkflowstatereleased', 'assign'),
];
return $this->allmarkingworkflowstates;
}
/**
* Check is only active users in course should be shown.
*