From 8d45a9f2a2bcda15819a6fad1e14ea770047f6a6 Mon Sep 17 00:00:00 2001 From: Santosh Nagargoje Date: Sun, 3 Dec 2023 19:27:06 +0530 Subject: [PATCH] MDL-77572 Course: Added fix for section,activity visibility capabilities added fix --- course/format/classes/output/local/content/cm.php | 9 ++++++++- course/format/classes/output/local/content/section.php | 9 +++++++-- course/lib.php | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/course/format/classes/output/local/content/cm.php b/course/format/classes/output/local/content/cm.php index ed237ef40ba..ab1e9390e6e 100644 --- a/course/format/classes/output/local/content/cm.php +++ b/course/format/classes/output/local/content/cm.php @@ -25,6 +25,7 @@ namespace core_courseformat\output\local\content; use cm_info; +use context_course; use core\output\named_templatable; use core_availability\info_module; use core_courseformat\base as course_format; @@ -300,7 +301,13 @@ class cm implements named_templatable, renderable { * @return bool if the cm has editor data */ protected function add_editor_data(stdClass &$data, renderer_base $output): bool { - if (!$this->format->show_editor()) { + $course = $this->format->get_course(); + $coursecontext = context_course::instance($course->id); + $editcaps = []; + if (has_capability('moodle/course:activityvisibility', $coursecontext)) { + $editcaps = ['moodle/course:activityvisibility']; + } + if (!$this->format->show_editor($editcaps)) { return false; } $returnsection = $this->format->get_section_number(); diff --git a/course/format/classes/output/local/content/section.php b/course/format/classes/output/local/content/section.php index 29402de5394..bf61d5a2d06 100644 --- a/course/format/classes/output/local/content/section.php +++ b/course/format/classes/output/local/content/section.php @@ -283,11 +283,16 @@ class section implements named_templatable, renderable { * @return bool if the cm has name data */ protected function add_editor_data(stdClass &$data, renderer_base $output): bool { - if (!$this->format->show_editor()) { + $course = $this->format->get_course(); + $coursecontext = context_course::instance($course->id); + $editcaps = []; + if (has_capability('moodle/course:sectionvisibility', $coursecontext)) { + $editcaps = ['moodle/course:sectionvisibility']; + } + if (!$this->format->show_editor($editcaps)) { return false; } - $course = $this->format->get_course(); if (empty($this->hidecontrols)) { $controlmenu = new $this->controlmenuclass($this->format, $this->section); $data->controlmenu = $controlmenu->export_for_template($output); diff --git a/course/lib.php b/course/lib.php index 72b0b637d16..67c56595351 100644 --- a/course/lib.php +++ b/course/lib.php @@ -1697,7 +1697,7 @@ function course_get_cm_edit_actions(cm_info $mod, $indent = -1, $sr = null) { } // Move (only for component compatible formats). - if ($usecomponents) { + if ($hasmanageactivities && $usecomponents) { $actions['move'] = new action_menu_link_secondary( new moodle_url($baseurl, [ 'sesskey' => sesskey(),