From fe5ca8e76897d14cc178cf5fdfe65bbca7fecbcb Mon Sep 17 00:00:00 2001 From: Jake Dallimore Date: Wed, 10 Jun 2020 12:21:51 +0800 Subject: [PATCH] MDL-68210 overrides: allow copy and delete of inactive overrides This brings lesson and assign in line with the expected behaviour already implemented in quiz. When an override is inactive, all controls are shown. --- mod/assign/overrides.php | 20 +++++++-------- .../tests/behat/assign_user_override.feature | 25 +++++++++++++++++++ mod/lesson/overrides.php | 20 +++++++-------- .../tests/behat/lesson_user_override.feature | 22 +++++++++++++++- .../tests/behat/quiz_user_override.feature | 5 +++- 5 files changed, 68 insertions(+), 24 deletions(-) diff --git a/mod/assign/overrides.php b/mod/assign/overrides.php index 1125b734f05..effc9df7e19 100644 --- a/mod/assign/overrides.php +++ b/mod/assign/overrides.php @@ -201,17 +201,15 @@ foreach ($overrides as $override) { // Icons. $iconstr = ''; - if ($active) { - // Edit. - $editurlstr = $overrideediturl->out(true, array('id' => $override->id)); - $iconstr = '' . - $OUTPUT->pix_icon('t/edit', get_string('edit')) . ' '; - // Duplicate. - $copyurlstr = $overrideediturl->out(true, - array('id' => $override->id, 'action' => 'duplicate')); - $iconstr .= '' . - $OUTPUT->pix_icon('t/copy', get_string('copy')) . ' '; - } + // Edit. + $editurlstr = $overrideediturl->out(true, array('id' => $override->id)); + $iconstr = '' . + $OUTPUT->pix_icon('t/edit', get_string('edit')) . ' '; + // Duplicate. + $copyurlstr = $overrideediturl->out(true, + array('id' => $override->id, 'action' => 'duplicate')); + $iconstr .= '' . + $OUTPUT->pix_icon('t/copy', get_string('copy')) . ' '; // Delete. $deleteurlstr = $overridedeleteurl->out(true, array('id' => $override->id, 'sesskey' => sesskey())); diff --git a/mod/assign/tests/behat/assign_user_override.feature b/mod/assign/tests/behat/assign_user_override.feature index ef542ce7e8d..9f1e0394c93 100644 --- a/mod/assign/tests/behat/assign_user_override.feature +++ b/mod/assign/tests/behat/assign_user_override.feature @@ -277,3 +277,28 @@ Feature: Assign user override And I navigate to "User overrides" in current page administration Then I should see "Student1" in the ".generaltable" "css_element" And I should not see "Student2" in the ".generaltable" "css_element" + + @javascript + Scenario: Create a user override when the assignment is not available to the student + Given I log in as "teacher1" + And I am on "Course 1" course homepage with editing mode on + And I follow "Test assignment name" + And I navigate to "Edit settings" in current page administration + And I expand all fieldsets + And I set the field "Availability" to "Hide from students" + And I click on "Save and display" "button" + When I navigate to "User overrides" in current page administration + And I press "Add user override" + And I set the following fields to these values: + | Override user | Student1 | + | id_allowsubmissionsfromdate_enabled | 1 | + | allowsubmissionsfromdate[day] | 1 | + | allowsubmissionsfromdate[month] | January | + | allowsubmissionsfromdate[year] | 2015 | + | allowsubmissionsfromdate[hour] | 08 | + | allowsubmissionsfromdate[minute] | 00 | + And I press "Save" + Then I should see "This override is inactive" + And "Edit" "icon" should exist in the "Sam1 Student1" "table_row" + And "copy" "icon" should exist in the "Sam1 Student1" "table_row" + And "Delete" "icon" should exist in the "Sam1 Student1" "table_row" diff --git a/mod/lesson/overrides.php b/mod/lesson/overrides.php index 657dcfb4b19..9ff3cddc598 100644 --- a/mod/lesson/overrides.php +++ b/mod/lesson/overrides.php @@ -218,17 +218,15 @@ foreach ($overrides as $override) { // Icons. $iconstr = ''; - if ($active) { - // Edit. - $editurlstr = $overrideediturl->out(true, array('id' => $override->id)); - $iconstr = '' . - $OUTPUT->pix_icon('t/edit', get_string('edit')) . ' '; - // Duplicate. - $copyurlstr = $overrideediturl->out(true, - array('id' => $override->id, 'action' => 'duplicate')); - $iconstr .= '' . - $OUTPUT->pix_icon('t/copy', get_string('copy')) . ' '; - } + // Edit. + $editurlstr = $overrideediturl->out(true, array('id' => $override->id)); + $iconstr = '' . + $OUTPUT->pix_icon('t/edit', get_string('edit')) . ' '; + // Duplicate. + $copyurlstr = $overrideediturl->out(true, + array('id' => $override->id, 'action' => 'duplicate')); + $iconstr .= '' . + $OUTPUT->pix_icon('t/copy', get_string('copy')) . ' '; // Delete. $deleteurlstr = $overridedeleteurl->out(true, array('id' => $override->id, 'sesskey' => sesskey())); diff --git a/mod/lesson/tests/behat/lesson_user_override.feature b/mod/lesson/tests/behat/lesson_user_override.feature index e6b9fd0a8dd..fecffd63f23 100644 --- a/mod/lesson/tests/behat/lesson_user_override.feature +++ b/mod/lesson/tests/behat/lesson_user_override.feature @@ -248,7 +248,7 @@ Feature: Lesson user override And I log in as "student2" And I am on "Course 1" course homepage And I follow "Test lesson" - Then I should see "This lesson will be open on Tuesday, 1 January 2030, 8:00" + Then I should see "This lesson will be open on Tuesday, 1 January 2030, 8:00" And I should not see "Cat is an amphibian" And I log out And I log in as "student1" @@ -383,3 +383,23 @@ Feature: Lesson user override And I navigate to "User overrides" in current page administration Then I should see "Student1" in the ".generaltable" "css_element" And I should not see "Student2" in the ".generaltable" "css_element" + + @javascript + Scenario: Create a user override when the lesson is not available to the student + Given I log in as "teacher1" + And I am on "Course 1" course homepage with editing mode on + And I follow "Test lesson name" + And I navigate to "Edit settings" in current page administration + And I expand all fieldsets + And I set the field "Availability" to "Hide from students" + And I click on "Save and display" "button" + When I navigate to "User overrides" in current page administration + And I press "Add user override" + And I set the following fields to these values: + | Override user | Student1 | + | Maximum number of attempts | 2 | + And I press "Save" + Then I should see "This override is inactive" + And "Edit" "icon" should exist in the "Sam1 Student1" "table_row" + And "copy" "icon" should exist in the "Sam1 Student1" "table_row" + And "Delete" "icon" should exist in the "Sam1 Student1" "table_row" diff --git a/mod/quiz/tests/behat/quiz_user_override.feature b/mod/quiz/tests/behat/quiz_user_override.feature index 344488fa7e1..408345d8b22 100644 --- a/mod/quiz/tests/behat/quiz_user_override.feature +++ b/mod/quiz/tests/behat/quiz_user_override.feature @@ -63,7 +63,10 @@ Feature: Quiz user override | Override user | Student1 | | Attempts allowed | 1 | And I press "Save" - Then "Edit" "icon" should exist in the "Student One" "table_row" + Then I should see "This override is inactive" + And "Edit" "icon" should exist in the "Student One" "table_row" + And "copy" "icon" should exist in the "Student One" "table_row" + And "Delete" "icon" should exist in the "Student One" "table_row" Scenario: A teacher without accessallgroups permission should only be able to add user override for users that he/she shares groups with, when the activity's group mode is to "separate groups"