From 2c010bbd7b4fc1a8f0c61b836bb433d5e55dce32 Mon Sep 17 00:00:00 2001 From: Amaia Anabitarte Date: Wed, 11 May 2022 23:22:04 +0200 Subject: [PATCH] MDL-74716 course: Add Request a course link to My courses --- my/courses.php | 8 ++++++++ my/templates/dropdown.mustache | 6 +++++- my/tests/behat/my_courses.feature | 28 ++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/my/courses.php b/my/courses.php index c8e3eb51cc2..60489dc0533 100644 --- a/my/courses.php +++ b/my/courses.php @@ -29,6 +29,7 @@ require_once(__DIR__ . '/../config.php'); require_once($CFG->dirroot . '/my/lib.php'); +require_once($CFG->dirroot . '/course/lib.php'); redirect_if_major_upgrade_required(); @@ -78,6 +79,13 @@ if ($coursecat && ($category = core_course_category::get_nearest_editable_subcat // The user has the capability to manage the course category. $coursemanagemenu['manageurl'] = new moodle_url('/course/management.php', ['categoryid' => $category->id]); } +if ($coursecat) { + $category = core_course_category::get_nearest_editable_subcategory($coursecat, ['moodle/course:request']); + if ($category && $category->can_request_course()) { + $coursemanagemenu['courserequesturl'] = new moodle_url('/course/request.php', ['categoryid' => $category->id]); + + } +} if (!empty($coursemanagemenu)) { // Render the course management menu. $PAGE->add_header_action($OUTPUT->render_from_template('my/dropdown', $coursemanagemenu)); diff --git a/my/templates/dropdown.mustache b/my/templates/dropdown.mustache index ada1243be9c..4a75dba9d12 100644 --- a/my/templates/dropdown.mustache +++ b/my/templates/dropdown.mustache @@ -22,7 +22,8 @@ Example context (json): { "newcourseurl": "https://moodle.test/course/edit.php?category=1", - "manageurl": "https://moodle.test/course/management.php?categoryid=1" + "manageurl": "https://moodle.test/course/management.php?categoryid=1", + "courserequesturl": "https://moodle.test/course/request.php?categoryid=1" } }}
@@ -37,5 +38,8 @@ {{#manageurl}} {{#str}}managecourses, core{{/str}} {{/manageurl}} + {{#courserequesturl}} + {{#str}}requestcourse, core{{/str}} + {{/courserequesturl}}
diff --git a/my/tests/behat/my_courses.feature b/my/tests/behat/my_courses.feature index 9cf37ec2170..1b2c3b79355 100644 --- a/my/tests/behat/my_courses.feature +++ b/my/tests/behat/my_courses.feature @@ -111,3 +111,31 @@ Feature: Run tests over my courses. And "Move Course overview block" "button" should not exist in the "Course overview" "block" And I click on "Actions menu" "icon" in the "Course overview" "block" And I should not see "Delete Course overview block" + + @javascript + Scenario: User with creating a course permission can't see the Request course link + Given the following "permission overrides" exist: + | capability | permission | role | contextlevel | reference | + | moodle/course:request | Allow | user | System | | + When I am on the "My courses" page logged in as "admin" + And I click on "Course management options" "link" + And I should see "New course" + Then I should not see "Request a course" + + @javascript + Scenario: User without creating a course but with course request permission could see the Request course link + Given the following "permission overrides" exist: + | capability | permission | role | contextlevel | reference | + | moodle/course:request | Allow | user | System | | + When I am on the "My courses" page logged in as "user1" + And I click on "Course management options" "link" + And I should not see "New course" + Then I should see "Request a course" + And the following config values are set as admin: + | enablecourserequests | 0 | + And I am on the "My courses" page logged in as "user1" + And "Course management options" "link" should not exist + + Scenario: User without creating nor course request permission shouldn't see any Request course link + Given I am on the "My courses" page logged in as "user1" + Then "Course management options" "link" should not exist