MDL-28448 Assign: Add a new capability that lets teachers mess with student submissions.

This commit is contained in:
Damyon Wiese
2014-01-15 12:52:08 +08:00
parent b19608d682
commit 57fbd5f91f
7 changed files with 397 additions and 53 deletions
+31
View File
@@ -962,6 +962,8 @@ class assign_grading_table extends table_sql implements renderable {
* @return string
*/
public function col_userid(stdClass $row) {
global $USER;
$edit = '';
$actions = array();
@@ -978,6 +980,9 @@ class assign_grading_table extends table_sql implements renderable {
}
$actions[$url->out(false)] = $description;
$submissionsopen = $this->assignment->submissions_open($row->id);
$caneditsubmission = $this->assignment->can_edit_submission($row->id, $USER->id);
// Hide for offline assignments.
if ($this->assignment->is_any_submission_plugin_enabled()) {
if (!$row->status ||
@@ -1018,6 +1023,18 @@ class assign_grading_table extends table_sql implements renderable {
$description = get_string('grantextension', 'assign');
$actions[$url->out(false)] = $description;
}
if ($submissionsopen &&
$USER->id != $row->id &&
$caneditsubmission) {
$urlparams = array('id' => $this->assignment->get_course_module()->id,
'userid'=>$row->id,
'action'=>'editsubmission',
'sesskey'=>sesskey(),
'page'=>$this->currpage);
$url = new moodle_url('/mod/assign/view.php', $urlparams);
$description = get_string('editsubmission', 'assign');
$actions[$url->out(false)] = $description;
}
}
if ($row->status == ASSIGN_SUBMISSION_STATUS_SUBMITTED &&
$this->assignment->get_instance()->submissiondrafts) {
@@ -1030,6 +1047,20 @@ class assign_grading_table extends table_sql implements renderable {
$description = get_string('reverttodraftshort', 'assign');
$actions[$url->out(false)] = $description;
}
if ($row->status == ASSIGN_SUBMISSION_STATUS_DRAFT &&
$this->assignment->get_instance()->submissiondrafts &&
$caneditsubmission &&
$submissionsopen &&
$row->id != $USER->id) {
$urlparams = array('id' => $this->assignment->get_course_module()->id,
'userid'=>$row->id,
'action'=>'submitotherforgrading',
'sesskey'=>sesskey(),
'page'=>$this->currpage);
$url = new moodle_url('/mod/assign/view.php', $urlparams);
$description = get_string('submitforgrading', 'assign');
$actions[$url->out(false)] = $description;
}
$ismanual = $this->assignment->get_instance()->attemptreopenmethod == ASSIGN_ATTEMPT_REOPEN_METHOD_MANUAL;
$hassubmission = !empty($row->status);