From 24937b2c1eb6dbda830263f8aa4bfbcc33997402 Mon Sep 17 00:00:00 2001 From: Gregory Faller Date: Wed, 17 Dec 2014 14:26:25 +1030 Subject: [PATCH] MDL-48428 mod/assign: Allow Grant extension option in offline assignment --- mod/assign/gradingtable.php | 74 +++++++++---------- .../tests/behat/grant_extension.feature | 62 ++++++++++++++++ 2 files changed, 98 insertions(+), 38 deletions(-) create mode 100644 mod/assign/tests/behat/grant_extension.feature diff --git a/mod/assign/gradingtable.php b/mod/assign/gradingtable.php index 08552f2419a..2a3997b2652 100644 --- a/mod/assign/gradingtable.php +++ b/mod/assign/gradingtable.php @@ -266,13 +266,8 @@ class assign_grading_table extends table_sql implements renderable { } // Submission status. - if ($assignment->is_any_submission_plugin_enabled()) { - $columns[] = 'status'; - $headers[] = get_string('status', 'assign'); - } else if ($this->assignment->get_instance()->markingworkflow) { - $columns[] = 'workflowstatus'; - $headers[] = get_string('status', 'assign'); - } + $columns[] = 'status'; + $headers[] = get_string('status', 'assign'); // Team submission columns. if ($assignment->get_instance()->teamsubmission) { @@ -927,24 +922,27 @@ class assign_grading_table extends table_sql implements renderable { $o .= $this->output->container($lockedstr, 'lockedsubmission'); } - // Add status of "grading", use markflow if enabled. - if ($instance->markingworkflow) { - $o .= $this->col_workflowstatus($row); - } else if ($row->grade !== null && $row->grade >= 0) { - $o .= $this->output->container(get_string('graded', 'assign'), 'submissiongraded'); - } else if (!$timesubmitted) { - $now = time(); - if ($due && ($now > $due)) { - $overduestr = get_string('overdue', 'assign', format_time($now - $due)); - $o .= $this->output->container($overduestr, 'overduesubmission'); + // Add status of "grading" if markflow is not enabled. + if (!$instance->markingworkflow) { + if ($row->grade !== null && $row->grade >= 0) { + $o .= $this->output->container(get_string('graded', 'assign'), 'submissiongraded'); + } else if (!$timesubmitted) { + $now = time(); + if ($due && ($now > $due)) { + $overduestr = get_string('overdue', 'assign', format_time($now - $due)); + $o .= $this->output->container($overduestr, 'overduesubmission'); + } } } + } - if ($row->extensionduedate) { - $userdate = userdate($row->extensionduedate); - $extensionstr = get_string('userextensiondate', 'assign', $userdate); - $o .= $this->output->container($extensionstr, 'extensiondate'); - } + if ($instance->markingworkflow) { + $o .= $this->col_workflowstatus($row); + } + if ($row->extensionduedate) { + $userdate = userdate($row->extensionduedate); + $extensionstr = get_string('userextensiondate', 'assign', $userdate); + $o .= $this->output->container($extensionstr, 'extensiondate'); } if ($this->is_downloading()) { @@ -1037,22 +1035,6 @@ class assign_grading_table extends table_sql implements renderable { } } - if (($this->assignment->get_instance()->duedate || - $this->assignment->get_instance()->cutoffdate) && - $this->hasgrantextension) { - $urlparams = array('id' => $this->assignment->get_course_module()->id, - 'userid'=>$row->id, - 'action'=>'grantextension', - 'sesskey'=>sesskey(), - 'page'=>$this->currpage); - $url = new moodle_url('/mod/assign/view.php', $urlparams); - $description = get_string('grantextension', 'assign'); - $actions['grantextension'] = new action_menu_link_secondary( - $url, - $noimage, - $description - ); - } if ($submissionsopen && $USER->id != $row->id && $caneditsubmission) { @@ -1070,6 +1052,22 @@ class assign_grading_table extends table_sql implements renderable { ); } } + if (($this->assignment->get_instance()->duedate || + $this->assignment->get_instance()->cutoffdate) && + $this->hasgrantextension) { + $urlparams = array('id' => $this->assignment->get_course_module()->id, + 'userid' => $row->id, + 'action' => 'grantextension', + 'sesskey' => sesskey(), + 'page' => $this->currpage); + $url = new moodle_url('/mod/assign/view.php', $urlparams); + $description = get_string('grantextension', 'assign'); + $actions['grantextension'] = new action_menu_link_secondary( + $url, + $noimage, + $description + ); + } if ($row->status == ASSIGN_SUBMISSION_STATUS_SUBMITTED && $this->assignment->get_instance()->submissiondrafts) { $urlparams = array('id' => $this->assignment->get_course_module()->id, diff --git a/mod/assign/tests/behat/grant_extension.feature b/mod/assign/tests/behat/grant_extension.feature new file mode 100644 index 00000000000..3ee706d06ce --- /dev/null +++ b/mod/assign/tests/behat/grant_extension.feature @@ -0,0 +1,62 @@ +@mod @mod_assign +Feature: Grant an extension to an offline student + In order to allow students to have an accurate due date + As a teacher + I need to grant students extensions at any time + + Background: + Given the following "courses" exist: + | fullname | shortname | category | groupmode | + | Course 1 | C1 | 0 | 1 | + And the following "users" exist: + | username | firstname | lastname | email | + | teacher1 | Teacher | 1 | teacher1@asd.com | + | student1 | Student | 1 | student1@asd.com | + | student2 | Student | 2 | student2@asd.com | + And the following "course enrolments" exist: + | user | course | role | + | teacher1 | C1 | editingteacher | + | student1 | C1 | student | + | student2 | C1 | student | + + @javascript + Scenario: Granting an extension to an offline assignment + Given the following "activities" exist: + | activity | course | idnumber | name | intro | assignsubmission_onlinetext_enabled | assignsubmission_file_enabled | duedate | + | assign | C1 | assign1 | Test assignment name | Test assignment description | 0 | 0 | 1388534400 | + And I log in as "teacher1" + And I follow "Course 1" + And I follow "Test assignment name" + When I follow "View/grade all submissions" + And I click on "Edit" "link" in the "Student 1" "table_row" + And I follow "Grant extension" + And I set the field "Enable" to "1" + And I press "Save changes" + Then I should see "Extension granted until:" in the "Student 1" "table_row" + And I log out + And I log in as "student1" + And I follow "Course 1" + And I follow "Test assignment name" + And I should see "Extension due date" + + @javascript @_alert + Scenario: Granting extensions to an offline assignment (batch action) + Given the following "activities" exist: + | activity | course | idnumber | name | intro | assignsubmission_onlinetext_enabled | assignsubmission_file_enabled | duedate | + | assign | C1 | assign1 | Test assignment name | Test assignment description | 0 | 0 | 1388534400 | + And I log in as "teacher1" + And I follow "Course 1" + And I follow "Test assignment name" + When I follow "View/grade all submissions" + And I set the field "selectall" to "1" + And I set the field "operation" to "Grant extension" + And I click on "Go" "button" confirming the dialogue + And I set the field "Enable" to "1" + And I press "Save changes" + Then I should see "Extension granted until:" in the "Student 1" "table_row" + And I should see "Extension granted until:" in the "Student 2" "table_row" + And I log out + And I log in as "student1" + And I follow "Course 1" + And I follow "Test assignment name" + And I should see "Extension due date"