mirror of
https://github.com/moodle/moodle.git
synced 2025-04-07 17:33:18 +02:00
Merge branch 'MDL-69723-master' of https://github.com/martygilbert/moodle
This commit is contained in:
commit
92fa7e150a
@ -1345,6 +1345,14 @@ class renderer extends \plugin_renderer_base {
|
||||
$info['cmname']);
|
||||
$due = $info['timedue'] ? userdate($info['timedue']) : '-';
|
||||
|
||||
if ($info['cangrade']) {
|
||||
$params['action'] = 'grading';
|
||||
$gradeinfo = \html_writer::link(new \moodle_url('/mod/assign/view.php', $params),
|
||||
get_string('numberofsubmissionsneedgradinglabel', 'assign', $info['gradeinfo']));
|
||||
} else {
|
||||
$gradeinfo = $info['gradeinfo'];
|
||||
}
|
||||
|
||||
$printsection = '';
|
||||
if ($indexsummary->usesections) {
|
||||
if ($info['sectionname'] !== $currentsection) {
|
||||
@ -1359,9 +1367,9 @@ class renderer extends \plugin_renderer_base {
|
||||
}
|
||||
|
||||
if ($indexsummary->usesections) {
|
||||
$row = array($printsection, $link, $due, $info['submissioninfo'], $info['gradeinfo']);
|
||||
$row = [$printsection, $link, $due, $info['submissioninfo'], $gradeinfo];
|
||||
} else {
|
||||
$row = array($link, $due, $info['submissioninfo'], $info['gradeinfo']);
|
||||
$row = [$link, $due, $info['submissioninfo'], $gradeinfo];
|
||||
}
|
||||
$table->data[] = $row;
|
||||
}
|
||||
|
@ -393,6 +393,7 @@ $string['numberofdraftsubmissions'] = 'Drafts';
|
||||
$string['numberofparticipants'] = 'Participants';
|
||||
$string['numberofsubmittedassignments'] = 'Submitted';
|
||||
$string['numberofsubmissionsneedgrading'] = 'Needs grading';
|
||||
$string['numberofsubmissionsneedgradinglabel'] = 'Needs grading: {$a}';
|
||||
$string['numberofteams'] = 'Groups';
|
||||
$string['offline'] = 'No online submissions required';
|
||||
$string['open'] = 'Open';
|
||||
|
@ -3132,10 +3132,9 @@ class assign {
|
||||
$assignment->update_effective_access($USER->id);
|
||||
$timedue = $assignment->get_instance()->duedate;
|
||||
|
||||
if (has_capability('mod/assign:grade', $context)) {
|
||||
$submitted = $assignment->count_submissions_with_status(ASSIGN_SUBMISSION_STATUS_SUBMITTED);
|
||||
|
||||
} else if (has_capability('mod/assign:submit', $context)) {
|
||||
if (has_capability('mod/assign:submit', $context) &&
|
||||
!has_capability('moodle/site:config', $context)) {
|
||||
$cangrade = false;
|
||||
if ($assignment->get_instance()->teamsubmission) {
|
||||
$usersubmission = $assignment->get_group_submission($USER->id, 0, false);
|
||||
} else {
|
||||
@ -3147,17 +3146,22 @@ class assign {
|
||||
} else {
|
||||
$submitted = get_string('submissionstatus_', 'assign');
|
||||
}
|
||||
}
|
||||
$gradinginfo = grade_get_grades($course->id, 'mod', 'assign', $cm->instance, $USER->id);
|
||||
if (isset($gradinginfo->items[0]->grades[$USER->id]) &&
|
||||
!$gradinginfo->items[0]->grades[$USER->id]->hidden ) {
|
||||
$grade = $gradinginfo->items[0]->grades[$USER->id]->str_grade;
|
||||
} else {
|
||||
$grade = '-';
|
||||
|
||||
$gradinginfo = grade_get_grades($course->id, 'mod', 'assign', $cm->instance, $USER->id);
|
||||
if (isset($gradinginfo->items[0]->grades[$USER->id]) &&
|
||||
!$gradinginfo->items[0]->grades[$USER->id]->hidden ) {
|
||||
$grade = $gradinginfo->items[0]->grades[$USER->id]->str_grade;
|
||||
} else {
|
||||
$grade = '-';
|
||||
}
|
||||
} else if (has_capability('mod/assign:grade', $context)) {
|
||||
$submitted = $assignment->count_submissions_with_status(ASSIGN_SUBMISSION_STATUS_SUBMITTED);
|
||||
$grade = $assignment->count_submissions_need_grading();
|
||||
$cangrade = true;
|
||||
}
|
||||
|
||||
$courseindexsummary->add_assign_info($cm->id, $cm->get_formatted_name(), $sectionname, $timedue, $submitted, $grade);
|
||||
|
||||
$courseindexsummary->add_assign_info($cm->id, $cm->get_formatted_name(),
|
||||
$sectionname, $timedue, $submitted, $grade, $cangrade);
|
||||
}
|
||||
|
||||
$o .= $this->get_renderer()->render($courseindexsummary);
|
||||
|
@ -634,14 +634,16 @@ class assign_course_index_summary implements renderable {
|
||||
* @param string $submissioninfo - A string with either the number of submitted assignments, or the
|
||||
* status of the current users submission depending on capabilities.
|
||||
* @param string $gradeinfo - The current users grade if they have been graded and it is not hidden.
|
||||
* @param bool cangrade - Does this user have grade capability?
|
||||
*/
|
||||
public function add_assign_info($cmid, $cmname, $sectionname, $timedue, $submissioninfo, $gradeinfo) {
|
||||
$this->assignments[] = array('cmid'=>$cmid,
|
||||
'cmname'=>$cmname,
|
||||
'sectionname'=>$sectionname,
|
||||
'timedue'=>$timedue,
|
||||
'submissioninfo'=>$submissioninfo,
|
||||
'gradeinfo'=>$gradeinfo);
|
||||
public function add_assign_info($cmid, $cmname, $sectionname, $timedue, $submissioninfo, $gradeinfo, $cangrade = false) {
|
||||
$this->assignments[] = ['cmid' => $cmid,
|
||||
'cmname' => $cmname,
|
||||
'sectionname' => $sectionname,
|
||||
'timedue' => $timedue,
|
||||
'submissioninfo' => $submissioninfo,
|
||||
'gradeinfo' => $gradeinfo,
|
||||
'cangrade' => $cangrade];
|
||||
}
|
||||
|
||||
|
||||
|
@ -4367,4 +4367,57 @@ Anchor link 2:<a title=\"bananas\" href=\"../logo-240x60.gif\">Link text</a>
|
||||
$this->assertNotEmpty($event2);
|
||||
$this->assertSame('This one should be re-created', $event2->description);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test submissions that need grading output after one ungraded submission
|
||||
*/
|
||||
public function test_submissions_need_grading() {
|
||||
global $PAGE;
|
||||
|
||||
$this->resetAfterTest();
|
||||
$course = $this->getDataGenerator()->create_course();
|
||||
$teacher = $this->getDataGenerator()->create_and_enrol($course, 'teacher');
|
||||
$student = $this->getDataGenerator()->create_and_enrol($course, 'student');
|
||||
|
||||
// Setup the assignment.
|
||||
$this->setUser($teacher);
|
||||
$time = time();
|
||||
$assign = $this->create_instance($course, [
|
||||
'assignsubmission_onlinetext_enabled' => 1,
|
||||
]);
|
||||
$PAGE->set_url(new moodle_url('/mod/assign/view.php', [
|
||||
'id' => $assign->get_course_module()->id,
|
||||
'action' => 'grading',
|
||||
]));
|
||||
|
||||
// Check for 0 submissions.
|
||||
$summary = $assign->view('viewcourseindex');
|
||||
|
||||
$this->assertStringContainsString('/mod/assign/view.php?id=' .
|
||||
$assign->get_course_module()->id . '&action=grading">' .
|
||||
get_string('numberofsubmissionsneedgradinglabel', 'assign', 0) . '</a>', $summary);
|
||||
|
||||
// Simulate an assignment submission.
|
||||
$this->setUser($student);
|
||||
$submission = $assign->get_user_submission($student->id, true);
|
||||
$submission->status = ASSIGN_SUBMISSION_STATUS_SUBMITTED;
|
||||
$assign->testable_update_submission($submission, $student->id, true, false);
|
||||
$data = new stdClass();
|
||||
$data->onlinetext_editor = [
|
||||
'itemid' => file_get_unused_draft_itemid(),
|
||||
'text' => 'Submission text',
|
||||
'format' => FORMAT_MOODLE,
|
||||
];
|
||||
$plugin = $assign->get_submission_plugin_by_type('onlinetext');
|
||||
$plugin->save($submission, $data);
|
||||
|
||||
// Check for 1 ungraded submission.
|
||||
$this->setUser($teacher);
|
||||
|
||||
$summary = $assign->view('viewcourseindex');
|
||||
|
||||
$this->assertStringContainsString('/mod/assign/view.php?id=' .
|
||||
$assign->get_course_module()->id . '&action=grading">' .
|
||||
get_string('numberofsubmissionsneedgradinglabel', 'assign', 1) . '</a>', $summary);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user