mirror of
https://github.com/moodle/moodle.git
synced 2025-04-14 13:02:07 +02:00
Merge branch 'MDL-75771-master' of https://github.com/PhMemmel/moodle
This commit is contained in:
commit
aaca32f7e1
@ -1340,13 +1340,18 @@ abstract class base {
|
||||
/**
|
||||
* return true if the course editor must be displayed.
|
||||
*
|
||||
* @param array|null $capabilities array of capabilities a user needs to have to see edit controls in general.
|
||||
* If null or not specified, the user needs to have 'moodle/course:manageactivities'.
|
||||
* @return bool true if edit controls must be displayed
|
||||
*/
|
||||
public function show_editor(): bool {
|
||||
public function show_editor(?array $capabilities = ['moodle/course:manageactivities']): bool {
|
||||
global $PAGE;
|
||||
$course = $this->get_course();
|
||||
$coursecontext = context_course::instance($course->id);
|
||||
return $PAGE->user_is_editing() && has_capability('moodle/course:update', $coursecontext);
|
||||
if ($capabilities === null) {
|
||||
$capabilities = ['moodle/course:manageactivities'];
|
||||
}
|
||||
return $PAGE->user_is_editing() && has_all_capabilities($capabilities, $coursecontext);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -63,7 +63,7 @@ class addsection implements named_templatable, renderable {
|
||||
public function export_for_template(\renderer_base $output): stdClass {
|
||||
|
||||
// If no editor must be displayed, just return an empty structure.
|
||||
if (!$this->format->show_editor()) {
|
||||
if (!$this->format->show_editor(['moodle/course:update'])) {
|
||||
return new stdClass();
|
||||
}
|
||||
|
||||
|
@ -90,10 +90,7 @@ class title extends inplace_editable implements named_templatable, renderable {
|
||||
$this->displayoptions = $this->load_display_options($displayoptions);
|
||||
|
||||
if ($editable === null) {
|
||||
$editable = $format->show_editor() && has_capability(
|
||||
'moodle/course:manageactivities',
|
||||
$mod->context
|
||||
);
|
||||
$editable = $format->show_editor();
|
||||
}
|
||||
$this->editable = $editable;
|
||||
|
||||
|
@ -79,8 +79,6 @@ class frontpagesection implements named_templatable, renderable {
|
||||
global $USER;
|
||||
|
||||
$format = $this->format;
|
||||
$course = $format->get_course();
|
||||
$context = context_course::instance($course->id);
|
||||
$section = $this->section;
|
||||
|
||||
$sectionoutput = new $this->sectionclass($format, $section);
|
||||
@ -94,7 +92,7 @@ class frontpagesection implements named_templatable, renderable {
|
||||
'sections' => [$sectionoutput->export_for_template($output)],
|
||||
];
|
||||
|
||||
if ($format->show_editor() && has_capability('moodle/course:update', $context)) {
|
||||
if ($format->show_editor(['moodle/course:update'])) {
|
||||
$data->showsettings = true;
|
||||
$data->settingsurl = new moodle_url('/course/editsection.php', ['id' => $section->id]);
|
||||
}
|
||||
|
77
course/format/tests/behat/course_manageactivities.feature
Normal file
77
course/format/tests/behat/course_manageactivities.feature
Normal file
@ -0,0 +1,77 @@
|
||||
@core @core_courseformat @show_editor
|
||||
Feature: Verify edit utils availability.
|
||||
In order to edit the course activities
|
||||
As a student with capability 'moodle/course:manageactivities'
|
||||
I need to be able to use the edit utils.
|
||||
|
||||
Background:
|
||||
Given the following "course" exists:
|
||||
| fullname | Course 1 |
|
||||
| shortname | C1 |
|
||||
| category | 0 |
|
||||
| numsections | 3 |
|
||||
And the following "activities" exist:
|
||||
| activity | name | intro | course | idnumber | section |
|
||||
| assign | Activity sample 1 | Test assignment description | C1 | sample1 | 1 |
|
||||
And the following "users" exist:
|
||||
| username | firstname | lastname | email |
|
||||
| teacher1 | Teacher | 1 | teacher1@example.com |
|
||||
| student1 | Student | 1 | student1@example.com |
|
||||
| author1 | Author | 1 | author1@example.com |
|
||||
And the following "roles" exist:
|
||||
| shortname | name | archetype |
|
||||
| author | Author | student |
|
||||
And the following "permission overrides" exist:
|
||||
| capability | permission | role | contextlevel | reference |
|
||||
| moodle/course:manageactivities | Allow | author | Course | C1 |
|
||||
And the following "course enrolments" exist:
|
||||
| user | course | role |
|
||||
| teacher1 | C1 | editingteacher |
|
||||
| author1 | C1 | author |
|
||||
| student1 | C1 | student |
|
||||
|
||||
@javascript
|
||||
Scenario: Edit tools should be available to teachers.
|
||||
Given I log in as "teacher1"
|
||||
When I am on "Course 1" course homepage
|
||||
And I turn editing mode on
|
||||
Then I should see "Add an activity or resource"
|
||||
And I open "Activity sample 1" actions menu
|
||||
And I should see "Edit settings"
|
||||
And ".section_action_menu" "css_element" should exist in the "Topic 1" "section"
|
||||
And I click on ".section_action_menu" "css_element" in the "Topic 1" "section"
|
||||
And I should see "Edit topic"
|
||||
|
||||
@javascript
|
||||
Scenario: Edit mode should not be available to students.
|
||||
Given I log in as "student1"
|
||||
When I am on "Course 1" course homepage
|
||||
Then I should not see "Edit mode"
|
||||
|
||||
@javascript
|
||||
Scenario: Edit tools should be available to students with the capability 'moodle/course:manageactivities',
|
||||
but should not be allowed to add and edit sections without having 'moodle/course:update'
|
||||
Given I log in as "author1"
|
||||
When I am on "Course 1" course homepage
|
||||
And I turn editing mode on
|
||||
Then I should see "Add an activity or resource"
|
||||
And I should not see "Add topic"
|
||||
And I open "Activity sample 1" actions menu
|
||||
And I should see "Edit settings"
|
||||
And ".section_action_menu" "css_element" should not exist in the "Topic 1" "section"
|
||||
|
||||
@javascript
|
||||
Scenario: Section adding should be available to students if they also have the capability 'moodle/course:update'.
|
||||
Given the following "permission overrides" exist:
|
||||
| capability | permission | role | contextlevel | reference |
|
||||
| moodle/course:update | Allow | author | Course | C1 |
|
||||
And I log in as "author1"
|
||||
When I am on "Course 1" course homepage
|
||||
And I turn editing mode on
|
||||
Then I should see "Add an activity or resource"
|
||||
And I should see "Add topic"
|
||||
And I open "Activity sample 1" actions menu
|
||||
And I should see "Edit settings"
|
||||
And ".section_action_menu" "css_element" should exist in the "Topic 1" "section"
|
||||
And I click on ".section_action_menu" "css_element" in the "Topic 1" "section"
|
||||
And I should see "Edit topic"
|
@ -7,7 +7,8 @@ Overview of this plugin type at http://docs.moodle.org/dev/Course_formats
|
||||
the deprecated methods add_section_delete() and add_cm_delete().
|
||||
* The 4th param of the core_courseformat\output\local\content\cm\cmname construct is now deprecated.
|
||||
The page edition is now detected using the course_format\base:show_editor method as the rest of the
|
||||
core_courseformat outputs.
|
||||
core_courseformat outputs. It defaults to checking the capability 'moodle/course:manageactivities'. If different
|
||||
capabilities are needed to check, an array of capabilities can be passed as an optional parameter to the function.
|
||||
|
||||
=== 4.0 ===
|
||||
* New core_courseformat\base::uses_course_index() to define whether the course format uses course index or not.
|
||||
|
Loading…
x
Reference in New Issue
Block a user