diff --git a/course/format/singleactivity/lib.php b/course/format/singleactivity/lib.php index 6a2dd522006..7d5174744e7 100644 --- a/course/format/singleactivity/lib.php +++ b/course/format/singleactivity/lib.php @@ -167,7 +167,16 @@ class format_singleactivity extends core_courseformat\base { foreach (array_keys($availabletypes) as $activity) { $capability = "mod/{$activity}:addinstance"; if (!has_capability($capability, $testcontext)) { - unset($availabletypes[$activity]); + if (!$this->categoryid) { + unset($availabletypes[$activity]); + } else { + // We do not have a course yet, so we guess if the user will have the capability to add the activity after + // creating the course. + $categorycontext = \context_coursecat::instance($this->categoryid); + if (!guess_if_creator_will_have_course_capability($capability, $categorycontext)) { + unset($availabletypes[$activity]); + } + } } } } diff --git a/course/format/singleactivity/tests/behat/create_course.feature b/course/format/singleactivity/tests/behat/create_course.feature index abce67e9eca..ed56a9005a6 100644 --- a/course/format/singleactivity/tests/behat/create_course.feature +++ b/course/format/singleactivity/tests/behat/create_course.feature @@ -21,7 +21,6 @@ Feature: Courses can be created in Single Activity mode | moodle/course:manageactivities | allow | | moodle/course:viewparticipants | allow | | moodle/role:assign | allow | - | mod/quiz:addinstance | allow | When I log in as "kevin" And I am on site homepage And I press "Add a new course" @@ -31,6 +30,7 @@ Feature: Courses can be created in Single Activity mode | Format | Single activity format | And I press "Update format" Then I should see "Quiz" in the "Type of activity" "field" - And I should not see "Forum" in the "Type of activity" "field" + And I should see "Forum" in the "Type of activity" "field" + And I set the field "Type of activity" to "Quiz" And I press "Save and display" And I should see "Adding a new Quiz"