From f37c83da8dbf1f4974875fc16c27833765072160 Mon Sep 17 00:00:00 2001 From: Michael Hawkins Date: Thu, 11 Mar 2021 14:28:57 +0800 Subject: [PATCH] MDL-71161 mod_url: Display activity completion information --- mod/url/locallib.php | 17 ++- .../behat/url_activity_completion.feature | 118 ++++++++++++++++++ 2 files changed, 133 insertions(+), 2 deletions(-) create mode 100644 mod/url/tests/behat/url_activity_completion.feature diff --git a/mod/url/locallib.php b/mod/url/locallib.php index eb467b91091..8ca4fd26c15 100644 --- a/mod/url/locallib.php +++ b/mod/url/locallib.php @@ -266,10 +266,17 @@ EOF; * @return does not return */ function url_print_workaround($url, $cm, $course) { - global $OUTPUT; + global $OUTPUT, $USER; url_print_header($url, $cm, $course); url_print_heading($url, $cm, $course, true); + + // Display any activity information (eg completion requirements / dates). + $cminfo = cm_info::create($cm); + $completiondetails = \core_completion\cm_completion_details::get_instance($cminfo, $USER->id); + $activitydates = \core\activity_dates::get_dates_for_module($cminfo, $USER->id); + echo $OUTPUT->activity_information($cminfo, $completiondetails, $activitydates); + url_print_intro($url, $cm, $course, true); $fullurl = url_get_full_url($url, $cm, $course); @@ -306,7 +313,7 @@ function url_print_workaround($url, $cm, $course) { * @return does not return */ function url_display_embed($url, $cm, $course) { - global $CFG, $PAGE, $OUTPUT; + global $PAGE, $OUTPUT, $USER; $mimetype = resourcelib_guess_url_mimetype($url->externalurl); $fullurl = url_get_full_url($url, $cm, $course); @@ -339,6 +346,12 @@ function url_display_embed($url, $cm, $course) { url_print_header($url, $cm, $course); url_print_heading($url, $cm, $course); + // Display any activity information (eg completion requirements / dates). + $cminfo = cm_info::create($cm); + $completiondetails = \core_completion\cm_completion_details::get_instance($cminfo, $USER->id); + $activitydates = \core\activity_dates::get_dates_for_module($cminfo, $USER->id); + echo $OUTPUT->activity_information($cminfo, $completiondetails, $activitydates); + echo $code; url_print_intro($url, $cm, $course); diff --git a/mod/url/tests/behat/url_activity_completion.feature b/mod/url/tests/behat/url_activity_completion.feature new file mode 100644 index 00000000000..79a33ae64fc --- /dev/null +++ b/mod/url/tests/behat/url_activity_completion.feature @@ -0,0 +1,118 @@ +@mod @mod_url @core_completion +Feature: View activity completion information in the URL resource + In order to have visibility of URL completion requirements + As a student + I need to be able to view my URL completion progress + + Background: + Given the following "users" exist: + | username | firstname | lastname | email | + | student1 | Vinnie | Student1 | student1@example.com | + | teacher1 | Darrell | Teacher1 | teacher1@example.com | + And the following "courses" exist: + | fullname | shortname | category | + | Course 1 | C1 | 0 | + And the following "course enrolments" exist: + | user | course | role | + | student1 | C1 | student | + | teacher1 | C1 | editingteacher | + And I log in as "teacher1" + And I am on "Course 1" course homepage + And I navigate to "Edit settings" in current page administration + And I expand all fieldsets + And I set the following fields to these values: + | Enable completion tracking | Yes | + | Show completion conditions | Yes | + And I press "Save and display" + + Scenario: View automatic completion items in automatic display mode + Given I am on "Course 1" course homepage with editing mode on + And I add a "URL" to section "1" and I fill the form with: + | Name | Music history | + | External URL | https://moodle.org/ | + | Display | Automatic | + | Completion tracking | Show activity as complete when conditions are met | + | Require view | 1 | + # Teacher view. + And I follow "Music history" + And "Music history" should have the "View" completion condition + And I log out + # Student view. + When I log in as "student1" + And I am on "Course 1" course homepage + And I follow "Music history" + Then the "View" completion condition of "Music history" is displayed as "done" + + Scenario: View automatic completion items in embed display mode + Given I am on "Course 1" course homepage with editing mode on + And I add a "URL" to section "1" and I fill the form with: + | Name | Music history | + | External URL | https://moodle.org/ | + | Display | Embed | + | Completion tracking | Show activity as complete when conditions are met | + | Require view | 1 | + # Teacher view. + And I follow "Music history" + And "Music history" should have the "View" completion condition + And I log out + # Student view. + When I log in as "student1" + And I am on "Course 1" course homepage + And I follow "Music history" + Then the "View" completion condition of "Music history" is displayed as "done" + + Scenario: View automatic completion items in open display mode + Given I am on "Course 1" course homepage with editing mode on + And I add a "URL" to section "1" and I fill the form with: + | Name | Music history | + | External URL | https://moodle.org/ | + | Display | Open | + | Completion tracking | Show activity as complete when conditions are met | + | Require view | 1 | + # Teacher view. + And I follow "Music history" + And "Music history" should have the "View" completion condition + And I log out + # Student view. + When I log in as "student1" + And I am on "Course 1" course homepage + And I follow "Music history" + Then the "View" completion condition of "Music history" is displayed as "done" + + Scenario: View automatic completion items in pop-up display mode + Given I am on "Course 1" course homepage with editing mode on + And I add a "URL" to section "1" and I fill the form with: + | Name | Music history | + | External URL | https://moodle.org/ | + | Display | In pop-up | + | Completion tracking | Show activity as complete when conditions are met | + | Require view | 1 | + # Teacher view. + And I follow "Music history" + And "Music history" should have the "View" completion condition + And I log out + # Student view. + When I log in as "student1" + And I am on "Course 1" course homepage + And I follow "Music history" + Then the "View" completion condition of "Music history" is displayed as "done" + + @javascript + Scenario: Use manual completion + Given I am on "Course 1" course homepage with editing mode on + And I add a "URL" to section "1" and I fill the form with: + | Name | Music history | + | External URL | https://moodle.org/ | + | Display | Automatic | + | Completion tracking | Students can manually mark the activity as completed | + # Teacher view. + And I follow "Music history" + And the manual completion button for "Music history" should be disabled + And I log out + # Student view. + When I log in as "student1" + And I am on "Course 1" course homepage + And I follow "Music history" + Then the manual completion button of "Music history" is displayed as "Mark as done" + And I toggle the manual completion state of "Music history" + And the manual completion button of "Music history" is displayed as "Done"